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