Stability AI 進軍編程領域,發布上下文窗口可達1.6 萬token 的工具StableCode


撰文:Sean Michael Kerner

來源:VentureBeat

圖片來源:由無界AI工俱生成

Stability AI 因其Stable Diffusion 文本到圖像生成模型而聞名,但這並不是這家生成式人工智能初創公司有興趣開發的全部。 Stability AI 正在涉足代碼生成領域。

8 月8 日,Stability AI 宣布首次公開發布StableCode,這是其新的開放式大型語言模型(LLM),旨在幫助用戶生成編程語言代碼。 StableCode 有三個不同級別:適用於一般用例的基礎模型、指令模型和可支持多達16000 個token 的長上下文窗口模型。

圖源:Stability AI (Stability AI 與其他具有類似參數數量和訓練過的token 數量的模型的比較。Stability AI 使用流行的HumanEval 基準,採用標準的pass@1 和pass@10 指標。)‌

StableCode 模型得益於來自開源BigCode‌項目的初始編程語言數據集,以及Stability AI 提供的額外過濾和微調。最初,StableCode 將支持Python、Go、Java、JavaScript、C、Markdown 和C++ 編程語言的開發。

Stability AI 研究主管Christian Laforte 在接受VentureBeat 獨家採訪時說:“我們希望利用這種模型做與Stable Diffusion 類似的事情,而後者旨在幫助世界上的每個人成為藝術家。”“我們想用StableCode 模式做同樣的事情:基本上讓任何有好想法的人都能寫出一個程序來解決這個問題。”

StableCode:建立在BigCode 和大創意之上

任何LLM 的訓練都依賴於數據,而對於StableCode 來說,這些數據來自BigCode項目。使用BigCode 作為LLM 生成式人工智能代碼工具的基礎並不是一個新想法。 HuggingFace 和ServiceNow 早在今年5 月就推出了開放式StarCoder LLM‌,其基礎就是BigCode。

Stability AI 首席研究科學家Nathan Cooper 在接受VentureBeat 獨家採訪時解釋說,StableCode 的訓練涉及對BigCode 數據的大量過濾和清理。

“我們很喜歡BigCode,他們在數據治理、模型治理和模型訓練方面做了很多了不起的工作,“Cooper 說。 ”我們採用了他們的數據集,並應用了額外的質量過濾器,還構建了大上下文窗口版本的模型,然後在我們的集群上進行了訓練。”

Cooper 說,除了BigCode 核心模型之外,Stability AI 還執行了許多訓練步驟。這些步驟包括對特定編程語言的連續訓練。根據官網描述,StableCode 在其高性能計算集群上,用5600 億代碼token 對模型進行了訓練。

“它採用了一種與自然語言‌領域非常相似的方法,即首先對通用模型進行預訓練,然後在一組特殊的任務上對其進行微調,在這種情況下就是對語言進行微調。” Cooper 說。

StableCode 更長的token 長度將改變代碼生成的遊戲規則

除了BigCode 基礎之外,StableCode 的長上下文版本還能為用戶帶來帶來顯著的好處。

StableCode 的長上下文窗口版本具有16,000 個token 的上下文窗口,Stability AI 稱這比其他任何模型都要大。 Cooper 解釋說,較長的上下文窗口可以使用更專業、更複雜的代碼生成提示。這也意味著用戶可以讓StableCode 查看包含多個文件的中等規模代碼庫,以幫助理解和生成新代碼。

Cooper 說:“你可以使用這個較長的上下文窗口,讓模型更多地了解你的代碼庫,以及其他文件中定義了哪些功能。”“這樣,當它提出代碼建議時,就能更符合你的代碼庫和需求。”

利用RoPE 更好地生成代碼

與所有現代人工智能生成模型一樣,StableCode 也是基於transformer 神經網絡。

StableCode 沒有使用ALiBi(Attention with Linear Biases)方法來定位transformer 模型中的輸出(StarCoder 在其開放式生成式人工智能編碼模型中使用了這種方法),而是使用了一種稱為RoPE 的方法。

Cooper 說,transformer 模型中的ALiBi 方法傾向於更多地權衡當前的token,而不是過去的token。在他看來,這對代碼來說並不是一種理想的方法,因為與自然語言不同,代碼並沒有一個具有開頭、中間和結尾的固定敘事結構。代碼功能可以為應用流程中的任何一點進行定義。

“我認為,代碼本身並不適合這種權衡現在比過去更重要的想法,所以我們使用……RoPE,[它] 不存在這種偏見。 ”

目前,StableCode 還處於早期階段,首次發布的目標是了解開發人員將如何接受和使用該模型。

Cooper 說:“我們將與社區進行互動和合作,看看他們會提出哪些很酷的方向,並探索生成式開發者空間。”

資訊來源:由0x資訊編譯自8BTC。版權歸作者所有,未經許可,不得轉載

Total
0
Shares
Related Posts