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