又一個不可錯過的編程大模型來了!讓你驚呼“碼農(nóng)人生”不虛此行
繼Stable Diffusion爆火之后,StabilityAI近期又放大招,推出了號稱是革命性的編程大模型StableCode。StableCode是其首款用于編碼的LLM生成式AI產(chǎn)品,該產(chǎn)品旨在幫助程序員完成日常工作。目前已發(fā)布的版本為StableCode-Completion-Alpha-3B,是一個包含30億個參數(shù)的代碼補全模型,針對多種編程語言進行了預訓練,這些編程語言是基于2023年stackoverflow開發(fā)者調(diào)查的最常用語言。
StableCode模型特性StableCode模型的特色在于,能夠理解和處理長篇幅上下文,也就是模型在做決策時,能夠更廣泛地考慮前后相鄰的數(shù)據(jù),也就是具有一次處理更多程序代碼Token的能力,進而提供更精確有用的建議。官方提到,StableCode一次可以處理的程序代碼Token為16000,是此前開源模型的2-4倍,用戶能夠一次處理的文件量,約是5個一般大小的Python文件。

StableCode模型訓練分為三個階段
- 最初Stability AI使用來自BigCode項目的stack-dataset v1.2數(shù)據(jù)集,對基礎(chǔ)模型進行多語言訓練。- 接著針對熱門程序語言,諸如Python、Go、Java、Javascript、C、markdown和C++進行特化訓練,總共使用了5,600億個Token訓練模型。- 基礎(chǔ)模型創(chuàng)建完成后,官方進一步針對特定用途調(diào)校指令模型,以解決復雜的程序開發(fā)任務,在基礎(chǔ)模型上訓練了約12萬個Alpaca格式的程序代碼指令和回應數(shù)據(jù)對。

StableCode如何使用
StableCode模型旨在遵循指令來生成代碼,用于訓練模型的數(shù)據(jù)集采用羊駝格式。16K上下文
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stabilityai/stablecode-completion-alpha-3b")
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stablecode-completion-alpha-3b",
trust_remote_code=True,
torch_dtype="auto",
)
model.cuda()
inputs = tokenizer("import torch\nimport torch.nn as nn", return_tensors="pt").to("cuda")
tokens = model.generate(
**inputs,
max_new_tokens=48,
temperature=0.2, do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
4K上下文
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stabilityai/stablecode-completion-alpha-3b-4k")
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stablecode-completion-alpha-3b-4k",
trust_remote_code=True,
torch_dtype="auto",)
model.cuda()
inputs = tokenizer("import torch\nimport torch.nn as nn", return_tensors="pt").to("cuda")
tokens = model.generate(
**inputs, max_new_tokens=48,
temperature=0.2, do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
下面是一個StableCode利用Pytorch深度學習庫完成一個相對復雜的Python文件展示(灰色文本顯示了StableCode的預測)。