🚀 StarCoderPlus
StarCoderPlus是一個強大的語言模型,可處理英文及80多種編程語言。它在英文網頁文本和GitHub代碼數據上進行訓練,能用於代碼生成等任務,其指令調優版本在實際應用中表現出色。
🚀 快速開始
你可以在 StarChat-Beta 中體驗經過指令調優的 StarCoderPlus。
✨ 主要特性
📦 安裝指南
使用以下命令安裝所需庫:
pip install -q transformers
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoderplus"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
高級用法
Fill - in - the - middle
Fill - in - the - middle 使用特殊標記來識別輸入和輸出的前綴/中間/後綴部分:
input_text = "<fim_prefix>def print_hello_world():\n <fim_suffix>\n print('Hello world!')<fim_middle>"
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
歸屬與其他要求
該模型的訓練代碼數據集僅篩選了許可型許可證的數據。不過,模型仍可能直接從數據集中生成源代碼。代碼的許可證可能要求進行歸屬聲明和/或其他特定要求,必須予以遵守。我們提供了一個 搜索索引,可用於搜索預訓練數據,以確定生成的代碼來源,併為你的代碼進行適當的歸屬聲明。
📚 詳細文檔
預期用途
該模型在英文和 GitHub 代碼上進行訓練,因此它 不是 一個指令模型,像“編寫一個計算平方根的函數”這樣的命令效果不佳。然而,StarChat 中的指令調優版本是一個出色的助手。
歡迎在社區標籤中分享你的生成結果!
🔧 技術細節
StarCoderPlus 是在 600B 英文和代碼標記上對 StarCoderBase 進行微調的版本,而 StarCoderBase 是在 1T 代碼標記上進行預訓練的。以下是微調的詳細信息:
- 模型架構:具有多查詢注意力和 Fill - in - the - Middle 目標的 GPT - 2 模型。
- 微調步驟:150k。
- 微調標記數:600B。
- 精度:bfloat16。
- 硬件:使用 512 個 Tesla A100 GPU,訓練時間為 14 天。
- 軟件:編排使用 Megatron - LM,神經網絡使用 PyTorch,BP16(如適用)使用 apex。
📄 許可證
該模型遵循 BigCode OpenRAIL - M v1 許可協議。你可以在 此處 查看完整協議。
⚠️ 重要提示
該模型在網絡上的英文文本和 GitHub 代碼的混合數據上進行訓練,因此在處理非英文文本時可能會遇到限制,並且可能帶有常見的在線刻板印象和偏見。此外,生成的代碼應謹慎使用,因為它可能包含錯誤、低效或潛在的安全漏洞。如需更全面地瞭解基礎模型的代碼限制,請參考 StarCoder 論文。
💡 使用建議
由於該模型不是指令模型,對於指令類任務,建議使用 StarChat 中的指令調優版本。同時,使用生成的代碼時,務必通過 搜索索引 檢查代碼來源,並遵守相應的許可證要求。