欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:CodeGeex論文閱讀

柚子快報激活碼778899分享:CodeGeex論文閱讀

http://yzkb.51969.com/

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》

論文地址:https://arxiv.org/pdf/2303.17568.pdf

代碼地址:https://github.com/THUDM/CodeGe

一、簡介

CodeGeeX,是一個具有130億個參數(shù)的多語言模型,用于代碼生成,在23種編程語言的8500億個token上進行了預(yù)訓(xùn)練。

CodeGeeX的特點

(1)CodeGeeX模型本身以及訓(xùn)練代碼都是開源的,有助于理解和改進預(yù)訓(xùn)練代碼模型。也支持在Ascend和NVIDIAGPUs等不同平臺上推理。

(2)除了代碼生成和代碼補全,也支持代碼解釋和代碼翻譯。

(3)與知名的代碼生成模型相比(CodeGen-16B、GPT-NeoX-20B、InCode-6.7B和GPT-J-6B),CodeGeeX的表現(xiàn)優(yōu)于其他模型。

二、模型

CodeGeeX是一個具有13B個參數(shù)的代碼生成模型,由39層從左到右的transformer decoders和一個top query layer組成。它將文本/代碼tokens作為輸入,并自回歸地輸出下一個標(biāo)記的概率

1、使用Transformer為主干。

與GPT-3Codex類似,CodeGeeX也是生成式預(yù)訓(xùn)練(GPT)架構(gòu),使用純解碼器的GPT架構(gòu),采用自回歸(編程)語言建模。

CodeGeeX的核心架構(gòu)是一個39層的transformer解碼器。在每個transformer層中,應(yīng)用了多頭自注意力機制,然后是MLP層,以及層歸一化和殘差連接。使用類GELU的FastGELU,它在Ascend910AI處理器下效率更高:

2、生成式預(yù)訓(xùn)練。

通過采用GPT范式,在大量未標(biāo)記的代碼數(shù)據(jù)上訓(xùn)練模型。其原理是迭代地將代碼token作為輸入,預(yù)測下一個token,預(yù)測下一個token并與真實的token進行比較。對于長度為n的任意輸入序列?{x1,...xn}?,CodeGeeX的輸出都是下一個token的概率分布

?Θ?表示所有參數(shù),v是詞表大小。通過將預(yù)測token與真實分布進行比較,可以優(yōu)化交叉熵?fù)p失函數(shù):

3、Top Query層和解碼層。

原始的GPT使用pooler函數(shù)來獲得最終的輸出。我們在所有transformer層之上使用一個額外的查詢層,通過attention獲得最終的embedding。top query層的輸入被替換為位置n+1的query embedding。最后的輸出再乘以詞嵌入矩陣的轉(zhuǎn)置,得到輸出概率。對于解碼策略,貪心、溫度采樣、top-k采樣、top-p采樣和beam search。最后,去標(biāo)記化將把選中的tokenID變成一個實際的單詞。

三、預(yù)訓(xùn)練設(shè)置

1、代碼語料庫

訓(xùn)練語料庫包含兩部分。第一部分來自開源代碼數(shù)據(jù)集,Pile和CodeParrot6。選擇了23種流行的編程語言的文件,包括c++,Python,Java,JavaScript,C,Go等。根據(jù)每個文件的后綴和它所屬的存儲庫的主要語言來識別其編程語言。第二部分是直接從GitHub公共存儲庫中抓取的Python、Java和c++的補充數(shù)據(jù)。

將訓(xùn)練數(shù)據(jù)分成長度相等的片段。為了幫助模型區(qū)分多種語言,我們在每個片段之前以[注釋符號]language:[LANG]的形式添加了一個特定于語言的標(biāo)簽,例如#language:Python標(biāo)記。

2、Tokenization

第一步是將代碼片段轉(zhuǎn)換為數(shù)值向量。考慮到代碼數(shù)據(jù)中存在大量自然語言注釋,變量、函數(shù)和類的命名通常是有意義的單詞,將代碼數(shù)據(jù)視為文本數(shù)據(jù)并使用GPT-2 tokenizer,它是一種BPE(Byte Pair Encoding)分詞器,使用固定大小的詞表和可變長度的字符來處理開放詞表問題。初始詞匯表大小為50,000,將多個空格編碼為額外的標(biāo)記,以提高編碼效率。具體來說,L個空格用<|extratoken_X|>表示,其中X=8+L。由于詞匯表包含來自各種自然語言的標(biāo)記,因此它允許CodeGeeX處理除英語以外的其他語言的標(biāo)記,如中文。最終的詞表大學(xué)是v=52,224。經(jīng)過分詞后,任何代碼片段或文本描述都可以轉(zhuǎn)換為整數(shù)向量。

3、詞嵌入和位置嵌入

給定token,下一步是將每個token與單詞嵌入相關(guān)聯(lián)。通過在詞嵌入矩 陣中查找token ID,其中h=5120為隱藏大小,為每個token 獲得一個可學(xué)習(xí)的嵌入。為了獲取位置信息,我們還采用了可學(xué)習(xí)的位置嵌入,將當(dāng)前位置ID從映射到一個可學(xué)習(xí)的嵌入,其中nmax=2048為最大序列長度。然后,添加兩個嵌入以獲得模型的輸入嵌入。最后,整個序列可以轉(zhuǎn)化為輸入嵌入,其中n是輸入序列長度。

四、訓(xùn)練

CodeGeeX在 使 用 Mindspore (v1.7.0)的 Ascend 910AI處 理 器 (32GB)集 群 上 進 行 訓(xùn) 練 。? 整 個 預(yù) 訓(xùn) 練 過 程 在 192個 節(jié) 點 和 1536個 AI處 理 器 上 花 費 了 兩 個 月 的 時 間 , 在 此 期 間 , 模 型 消 耗 了 850B個token, 相 當(dāng) 于5個epochs(213000steps)。為了提高訓(xùn)練效率,采用8路模型并行和192路數(shù)據(jù)并行,并使用ZeRO-2優(yōu)化器來進一步降低顯存消耗。最終,每個節(jié)點上的micro-batch size為16,全局batch size為3072。

使用Adam優(yōu)化器來優(yōu)化loss。模型權(quán)重采用FP16的格式,為了更高的精度和穩(wěn)定性layer-norm和softmax使用FP32。模型占用GPU顯存為27GB。初始學(xué)習(xí)率為1e-4,并應(yīng)用cosine學(xué)習(xí)率衰減:

?

vscode的插件體驗

代碼翻譯功能

1、完全不理解原始代碼的意思,會生成一些毫不相干的代碼:比如生成的print函數(shù),里面是一堆莫名其妙的邏輯

2、輸出的代碼語言也不是kotlin,仍然是Java,可能是代碼樣本數(shù)量少的原因

代碼理解

對于簡單的代碼可以正確的理解

柚子快報激活碼778899分享:CodeGeex論文閱讀

http://yzkb.51969.com/

推薦文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19203003.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄