yu 新智元報(bào)道
繼文生圖Stable Diffusion、SDXL1.0、語(yǔ)言模型StableLM之后,獨(dú)角獸Stability AI又放大招了。
剛剛,Stability AI宣布推出,首個(gè)用于編碼的生成式AI產(chǎn)品——StableCode。
StableCode提供了三種不同模型:通用基本模型、指令模型,已經(jīng)支持多達(dá)16,000個(gè)token的長(zhǎng)上下文窗口模型。
目前,它能夠支持Python、Go、Java、JavaScript、C、markdown和C++編程語(yǔ)言的開發(fā)。
建在BigCode之上
具體來(lái)講,StableCode通過(guò)使用3種不同的模型,來(lái)幫助程序員們編碼,從而提高效率。
我們都知道,訓(xùn)練任何大模型都依賴于數(shù)據(jù),對(duì)于StableCode,這些數(shù)據(jù)來(lái)自BigCode項(xiàng)目。
其實(shí),使用BigCode作為L(zhǎng)LM生成AI代碼工具的基礎(chǔ)并不是一個(gè)新想法。
5月,HuggingFace和ServiceNow早就推出了向公眾開放的StarCoder LLM,它就是基于BigCode打造的。
基礎(chǔ)模型首先在BigCode的堆棧數(shù)據(jù)集(v1.2)中的各種編程語(yǔ)言上進(jìn)行訓(xùn)練。
Stability AI的首席研究科學(xué)家Nathan Cooper在采訪中表示,StableCode的訓(xùn)練涉及對(duì)BigCode數(shù)據(jù)的重要過(guò)濾和清理。
然后,再使用Python、Go、Java、Javascript、C、markdown和C++等流行語(yǔ)言上進(jìn)行進(jìn)一步訓(xùn)練。
總的來(lái)說(shuō),Stability AI在HPC集群中560億的token上訓(xùn)練了模型。
基礎(chǔ)模型訓(xùn)練完成后,指令模型針對(duì)特定用例進(jìn)行調(diào)整,以幫助解決復(fù)雜的編程任務(wù)。
大約120,000個(gè)以Alpaca格式的代碼指令/響應(yīng)對(duì)在基礎(chǔ)模型上進(jìn)行了訓(xùn)練。
使用StableCode Instruct生成對(duì)給定指令的響應(yīng)代碼
16000上下文,5個(gè)Python文件同編輯
StableCode 是那些希望學(xué)習(xí)更多編碼知識(shí)的人的理想構(gòu)件,而更長(zhǎng)上下文窗口模型則是確保為開發(fā)者提供單行和多行自動(dòng)完成建議的完美助手。
該模型可同時(shí)處理更多代碼(比之前發(fā)布的上下文窗口為16,000個(gè)token的開放模型多2-4 倍)。
這樣,開發(fā)者們可以同時(shí)查看或編輯相當(dāng)于5個(gè)平均大小的Python文件。
Cooper解釋說(shuō),更長(zhǎng)的上下文可以使用更專業(yè)和復(fù)雜的代碼生成提示。這也意味著開發(fā)者們可以讓StableCode查看包含多個(gè)文件的中型代碼庫(kù),以幫助理解和生成新代碼。
StableCode使用Pytorch深度學(xué)習(xí)庫(kù)完成一個(gè)相對(duì)復(fù)雜的python文件(灰色文本顯示StableCode的預(yù)測(cè))
與所有現(xiàn)代生成AI模型一樣,StableCode也是基于Transformer架構(gòu)。
StableCode沒(méi)有使用ALiBi方法來(lái)定位Transformer模型中的輸出,而是使用了一種稱為旋轉(zhuǎn)位置嵌入(RoPE)的方法。
Cooper說(shuō),Transformer模型中的ALiBi方法傾向于更重視當(dāng)前token,而不是過(guò)去的token。
在Stability AI看來(lái),這不是代碼的理想方法,因?yàn)榕c自然語(yǔ)言不同,代碼沒(méi)有一個(gè)帶有開頭、中間和結(jié)尾的固定敘述結(jié)構(gòu)。
代碼函數(shù)可以為應(yīng)用程序流程中的任何點(diǎn)定義。
那么,StableCode與其他模型相比,效果如何?
Stability AI將其與有相似的參數(shù)和訓(xùn)練的token數(shù)量的模型進(jìn)行了比較。其中,使用流行的HumanEval基準(zhǔn),采用標(biāo)準(zhǔn)的pass@1和pass@10指標(biāo)。
StableCode的基準(zhǔn)分?jǐn)?shù)
與類似大小(3B)模型的比較
30億參數(shù)StableCode
StableCode-Instruct-Alpha-3B是一個(gè)30億參數(shù)的純解碼器指調(diào)優(yōu)的代碼模型,預(yù)先在不同的編程語(yǔ)言集上進(jìn)行了訓(xùn)練。
用法
該模型旨在按照指令生成代碼。用于訓(xùn)練模型的數(shù)據(jù)集以Alpaca格式化。使用以下代碼片段開始使用 StableCode-Instruct-Alpha-3B 生成代碼:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('stabilityai/stablecode-instruct-alpha-3b')
model = AutoModelForCausalLM.from_pretrained(
'stabilityai/stablecode-instruct-alpha-3b',
trust_remote_code=True,
torch_dtype='auto',
)
model.cuda()
inputs = tokenizer('###Instruction\nGenerate a python function to find number of CPU cores###Response\n', return_tensors='pt').to('cuda')
tokens = model.generate(
**inputs,
max_new_tokens=48,
temperature=0.2,
do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
模型詳情
- 開發(fā)者:Stability AI
- 模型類型:StableCode-Instruct-Alpha-3B 模型是基于Transformer解碼器架構(gòu)的自回歸語(yǔ)言模型。
模型架構(gòu)
訓(xùn)練
StableCode-Instruct-Alpha-3B是帶有代碼指令數(shù)據(jù)集的StableCode-Completion-Alpha-3B上的指令微調(diào)版本。
https://stability.ai/blog/stablecode-llm-generative-ai-coding
聯(lián)系客服