集體出走的Stability AI 發(fā)布全新代碼大模型,3B以下性能最優(yōu),超越Code Llama和DeepSeek-Coder
Stability AI又有新動(dòng)作!程序員又有危機(jī)了?3月26日,Stability AI推出了先進(jìn)的代碼語言模型Stable Code Instruct 3B,該模型是在Stable Code 3B的基礎(chǔ)上進(jìn)行指令調(diào)優(yōu)的Code LM。
Stability AI 表示,Stable Code Instruct 3B 在代碼完成準(zhǔn)確性、對自然語言指令的理解以及處理多種編程語言方面都優(yōu)于同類模型,在 3B 規(guī)模下提供最先進(jìn)的性能,并且性能媲美Codellama 7B Instruct以及DeepSeek-Coder Instruct 1.3B
先讓我們來感受一下Stable Code Instruct 3B的效果吧~
在線試用:
???https://huggingface.co/spaces/stabilityai/stable-code-instruct-3b??Hugging Face地址:
??https://huggingface.co/stabilityai/stable-code-instruct-3b??技術(shù)報(bào)告:
https://static1.squarespace.com/static/6213c340453c3f502425776e/t/6601c5713150412edcd56f8e/1711392114564/Stable_Code_TechReport_release.pdf
從效果圖以及Stability AI的介紹可以看出Stable Code Instruct 3B有以下幾個(gè)功能特點(diǎn):
- 自然語言理解:Stable Code Instruct 3B可以理解以自然語言為主的編程指令,并有效執(zhí)行生成高質(zhì)量代碼。
- 支持多種編程語言:Stable Code Instruct 3B不僅支持Python、Javascript、Java、C、C++和Go等語言,還支持其他廣泛采用的語言如SQL、PHP和Rust
- 多樣化編程任務(wù):Stable Code Instruct 3B不僅精通代碼生成,還擅長FIM(填充中間)任務(wù)、數(shù)據(jù)庫查詢、代碼翻譯、解釋和創(chuàng)作。
- 更強(qiáng)的代碼理解能力:Stable Code Instruct 3B在訓(xùn)練集最初未包括的語言(如Lua)中也能夠表現(xiàn)出較強(qiáng)的測試性能。這種熟練程度可能源于其對底層編碼原理的理解。
讓我們再來看看Stable Code Instruct 3B的實(shí)現(xiàn)方法吧~
方法
訓(xùn)練數(shù)據(jù)
Stable Code Instruct收集了一系列公開訪問的大規(guī)模數(shù)據(jù)源。這些來源包括廣泛的代碼庫、廣泛的技術(shù)文檔集合(例如:readthedocs)、以數(shù)學(xué)為重點(diǎn)的文本和全面的網(wǎng)絡(luò)數(shù)據(jù)集,以在預(yù)訓(xùn)練階段學(xué)習(xí)豐富的內(nèi)部表達(dá),超越單純的代碼理解。模型旨在顯著提升在數(shù)學(xué)理解、邏輯推理和處理軟件開發(fā)相關(guān)的復(fù)雜技術(shù)文本方面的能力。
模型架構(gòu)
Stable Code是建立在Stable LM 3B基礎(chǔ)上構(gòu)建的,并且該模型是一個(gè)causal decoder-only transformer,架構(gòu)上與Llama類似,但和Llama有以下幾點(diǎn)區(qū)別:
- 位置嵌入:采用了旋轉(zhuǎn)位置嵌入(Rotary Position Embeddings),應(yīng)用于頭嵌入維度的前25%,以提高吞吐量
- 歸一化方法:使用了具有學(xué)習(xí)偏置項(xiàng)的LayerNorm進(jìn)行歸一化處理,而不是采用RMSNorm
- 偏置調(diào)整:除了鍵、查詢和值投影的偏差,Stable Code 從前饋網(wǎng)絡(luò)和多頭自注意力層中刪除了所有偏差項(xiàng)
模型訓(xùn)練
- 計(jì)算基礎(chǔ)設(shè)施和設(shè)置
- Stable Code在32個(gè)Amazon P4d實(shí)例上進(jìn)行訓(xùn)練,包含256個(gè)NVIDIA A100 (40GB HBM2) GPUs。采用ZeRO階段1的分布式優(yōu)化方法,消除了對模型分片的需求。
- 采用的全局批量大小為4,194,304個(gè)令牌。在表中的設(shè)置下,設(shè)備的性能達(dá)到大約222 TFLOPs/s,或71.15%的模型浮點(diǎn)操作利用率(MFU)。
- 多階段訓(xùn)練
- 采用了在其他強(qiáng)大的代碼語言模型(如CodeGen、Stable Code Alpha、CodeLLaMA和DeepSeekCoder)中流行的分階段訓(xùn)練方法。
訓(xùn)練分為幾個(gè)階段,包括代碼數(shù)據(jù)預(yù)訓(xùn)練、中間填充(FIM)訓(xùn)練、長上下文持續(xù)訓(xùn)練和指令微調(diào)。
- 模型初始化
- 代碼模型大多遵循兩種主要訓(xùn)練方法之一:使用代碼和相關(guān)文本從頭開始訓(xùn)練的模型(例如,CodeGen、Stable code Alpha、Deepsseek Coder),以及利用基礎(chǔ)語言模型的持續(xù)預(yù)訓(xùn)練的模型。
- 預(yù)訓(xùn)練的語言模型(如Stable LM 3B)初始化的模型往往表現(xiàn)優(yōu)于從頭開始訓(xùn)練的模型。這證實(shí)了自然語言與代碼之間的正面交叉轉(zhuǎn)移可以增強(qiáng)模型的能力。
- 中間填充(FIM)訓(xùn)練
- 為了解決代碼中的左到右因果順序不總是成立的問題(例如,函數(shù)調(diào)用和聲明的順序可以是任意的)
- 將文檔隨機(jī)分為三個(gè)部分:前綴、中間部分和后綴,然后將中間部分移動(dòng)到文檔的末尾。在重新排列之后,遵循相同的自回歸訓(xùn)練過程。
- 在預(yù)訓(xùn)練的兩個(gè)階段中都應(yīng)用了FIM。為了在長上下文訓(xùn)練階段考慮FIM,我們確保只允許在單個(gè)文件的范圍內(nèi)應(yīng)用FIM,以避免引入不現(xiàn)實(shí)的情景到訓(xùn)練目標(biāo)中。
微調(diào)和對齊
在預(yù)訓(xùn)練之后,Stable Code Instruct通過由監(jiān)督微調(diào)(SFT)和直接偏好優(yōu)化(DPO)組成的微調(diào)階段進(jìn)一步提高了模型的對話能力
- 監(jiān)督微調(diào)
- 使用了Hugging Face上公開可用的幾個(gè)數(shù)據(jù)集進(jìn)行SFT微調(diào):OpenHermes、Code Feedback和CodeAlpaca。這些數(shù)據(jù)集合計(jì)提供了大約500,000個(gè)訓(xùn)練樣本。
- SFT模型訓(xùn)練了三個(gè)周期,使用余弦學(xué)習(xí)率調(diào)度器。在達(dá)到5e-5峰值學(xué)習(xí)率之前,實(shí)施了占訓(xùn)練持續(xù)時(shí)間10%的熱身階段。
- 設(shè)置全局批量大小為512個(gè)序列,并將輸入打包成最多4096個(gè)令牌的序列。
- 直接偏好優(yōu)化
- 繼SFT之后,我們應(yīng)用了DPO,這是一種關(guān)鍵技術(shù),對近期高性能模型(如Zephyr-7B、Neural-Chat-7B和Tulu-2-DPO-70B)的成功起到了關(guān)鍵作用。
- 我們整理了大約7,000個(gè)樣本的數(shù)據(jù)集,使用了來自UltraFeedback和Distilabel Capybara DPO-7k Binarized的數(shù)據(jù),并僅保留了與代碼相關(guān)的樣本。
- 為提高模型安全性,我們添加了來自Bai等人的Helpful and Harmless RLFH數(shù)據(jù)集,以及HH-Anthropic數(shù)據(jù)集的無害子集。編譯了大約15,000個(gè)高關(guān)聯(lián)性的安全相關(guān)數(shù)據(jù)點(diǎn)。
結(jié)論
本文介紹了Stable Code Instruct,一種新的代碼語言模型,該模型不僅支持多樣的編程語言,更在3B規(guī)模的模型上提供最先進(jìn)的性能。隨著技術(shù)的進(jìn)步,將會有更多高性能的代碼模型被推出,未來寫代碼的工作是否會變得更加輕松呢?是否程序員就業(yè)會面臨危機(jī)呢?Stable Code Instruct的出現(xiàn)為我們勾勒了一個(gè)充滿無限可能的未來。
本文轉(zhuǎn)載自夕小瑤科技說,作者:蛋糕
原文鏈接:??https://mp.weixin.qq.com/s/BN6MsuOmKWc-HLQhigfkQg??
