Stability AI發(fā)布全新代碼模型Stable Code 3B!媲美70億Code Llama,沒GPU也能跑
今天,Stability AI發(fā)布了自家在2024年的第一個(gè)模型——Stable Code 3B。
圖片
顧名思義,Stable Code 3B專注于代碼能力,實(shí)際的表現(xiàn)也是非常亮眼。
在僅僅3B參數(shù)的規(guī)模之下,達(dá)到了比肩Code Llama 7B的效果。
圖片
相較于Code Llama 7B,Stable Code 3B的體積減少了60%,但在多種編程語言上保持了相當(dāng)?shù)乃疁?zhǔn),在Python和C++的代碼補(bǔ)全中甚至反超了Code Llama 7B。
另外,由于模型僅有3B大小,Stable Code 3B可以在MacBook Air等普通筆記本電腦上實(shí)時(shí)運(yùn)行,甚至沒有獨(dú)立GPU也可以!
有網(wǎng)友將Stable Code 3B稱為Copilot的離線替代品,并希望能在VS Code上使用它。
圖片
4個(gè)小時(shí)后,有網(wǎng)友發(fā)推表示自己在VS Code上更新了LLama Coder插件,可以支持最新的Stable Code 3B模型。
圖片
「它非常好!它很小,這意味著它可以在任何硬件上運(yùn)行,并且運(yùn)行速度非???。」
圖片
插件地址:https://t.co/Mn7onaDpge
雖然模型名義上叫做Stable Code 3B,但其實(shí)是一個(gè)2.7B 參數(shù)的純解碼器語言模型。
除了模型比較輕量之外,Stable Code 3B還支持高達(dá)100K的上下文大小,可以更方便、更精確地輔助編碼。
另外,模型參考了2023年StackOverflow開發(fā)者調(diào)查中,最受歡迎的18種編程語言,針對(duì)這18種語言進(jìn)行了訓(xùn)練,提供了同等規(guī)模模型中最優(yōu)秀的性能。
- C
- CPP
- Java
- JavaScript
- CSS
- Go
- HTML
- Ruby
- Rust
- Markdown
- Shell
- Php
- Sql
- R
- Typescript
- Python
- Jupyter-Clean
- RestructuredText
在與同量級(jí)的競(jìng)品模型的比較中,Stable Code 3B也幾乎拿到了最好的成績。
圖片
目前,Stable Code 3B已經(jīng)加入了Stability AI的會(huì)員大禮包中,只要不涉及商用,用戶都可以免費(fèi)使用。
圖片
Stable Code 3B
Stability AI從2023年底開始推出更小尺寸、但功能強(qiáng)大的模型,包括StableLM Zephyr 3B等用于文本生成的模型。
Stable Code 3B的前代是Stability AI在8月份發(fā)布的Stable Code Alpha 3B。
Stable Code Alpha 3B使用來自BigCode的堆棧數(shù)據(jù)集(v1.2)來訓(xùn)練基礎(chǔ)模型,并使用Python、Go、Java、Javascript、C、Markdown和C++等流行語言進(jìn)一步訓(xùn)練(共560B代碼token)。
建立基礎(chǔ)模型后,開發(fā)人員針對(duì)特定用例對(duì)指令模型進(jìn)行了調(diào)整,使用大約120000個(gè)Alpaca格式的代碼指令/響應(yīng)來訓(xùn)練模型,以提升解決復(fù)雜編程任務(wù)的能力。
圖片
上圖展示了Stable Code Alpha利用Pytorch庫完成一個(gè)相對(duì)復(fù)雜的python文件,灰色部分為Stable Code的預(yù)測(cè)。
參數(shù)細(xì)節(jié):100K上下文,支持FIM
Stable Code 3B 在256個(gè)英偉達(dá)A100 40GB GPU(AWS P4d實(shí)例)的集群上進(jìn)行訓(xùn)練,
使用ZeRO-1的數(shù)據(jù)并行和張量并行,并依賴FlashAttention以及FlashAttention-2的SwiGLU和Rotary Embedding內(nèi)核。
模型的訓(xùn)練流程由類似于Code Llama的多階段過程。
第一步,以使用自然語言數(shù)據(jù)預(yù)訓(xùn)練的StableLM-3B-4e1t為基礎(chǔ)(使用4萬億個(gè)token訓(xùn)練),對(duì)多個(gè)代碼和代碼相關(guān)數(shù)據(jù)集進(jìn)行無監(jiān)督微調(diào),包括 CommitPack、GitHub Issues、StarCoder和其他數(shù)學(xué)數(shù)據(jù)集。
圖片
模型在上述數(shù)據(jù)集上使用bfloat16進(jìn)行了精確預(yù)訓(xùn)練,并使用AdamW進(jìn)行了優(yōu)化。
第二步,使用16384個(gè)token的更長序列進(jìn)一步微調(diào)模型,同時(shí)與Code Llama類似,使用一種稱為旋轉(zhuǎn)位置嵌入(RoPE)的技術(shù)進(jìn)行優(yōu)化,使上下文大小擴(kuò)展到了100k個(gè)token。
另外,新的Stable Code 3B模型還支持Flash Attention 2。
圖片
作為改進(jìn)版本,Stable Code 3B不僅可以建議新的代碼行,還可以填補(bǔ)現(xiàn)有代碼中較大的缺失部分——稱為中間填充功能(FIM)。
圖片
Stable Code 3B的模型架構(gòu)如下表所示:
圖片
旋轉(zhuǎn)位置嵌入應(yīng)用于前25%的head embedding,以提高模型的吞吐量;
使用GPTNeoX Tokenizer的修改版本——NeoX,并添加特殊token來訓(xùn)練中間填充功能,比如<FIM_PREFIX>、<FIM_SUFFIX>和其他特殊token。
在使用BigCode的評(píng)估工具測(cè)試的多種編程語言的MultiPL-E指標(biāo)上,Stable Code 3B展示了最先進(jìn)的性能。
圖片
上表中,Stable Code 3B與同等規(guī)模的編碼模型進(jìn)行比較,在全部的六種編程語言中,都處于領(lǐng)先。
而相比于體積大2倍多的Code Llama 7B,Stable Code 3B也拿到了3項(xiàng)勝利。
Stability表示將發(fā)布一份完整的技術(shù)報(bào)告,包含更多細(xì)節(jié)和消融實(shí)驗(yàn)等。
代碼生成之戰(zhàn)
目前,AI代碼生成工具的市場(chǎng)競(jìng)爭(zhēng)非常激烈,70億參數(shù)的來自Meta的Code Llama 7B被廣大開發(fā)者所使用。
而在30億參數(shù)這個(gè)量級(jí),StarCoder LLM(由 IBM、HuggingFace和ServiceNow共同開發(fā)的開源項(xiàng)目)廣受歡迎。
從測(cè)試成績上來看,Stability AI的這個(gè)模型要優(yōu)于StarCoder,不知道Stable Code 3B會(huì)給Stability和市場(chǎng)帶來怎樣的變化。
參考資料:
https://stability.ai/news/stable-code-2024-llm-code-completion-release
https://huggingface.co/stabilityai/stable-code-3b