🚀 StarCoder-3B
StarCoder-3B 是 StarCoderBase 的 30 億參數版本模型,它在 80 多種編程語言的代碼數據上進行訓練,可用於代碼生成等任務。
🚀 快速開始
代碼生成示例
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoderbase-3b"
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]))
填空生成示例
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]))
✨ 主要特性
📦 安裝指南
原文檔未提及安裝相關內容,若要使用該模型,可參考代碼示例中的依賴安裝命令:
pip install -q transformers
📚 詳細文檔
模型概述
StarCoder-3B 是一個具有 30 億參數的模型,在來自 The Stack (v1.2) 的 80 多種編程語言上進行訓練,排除了選擇退出請求的數據。該模型使用 Multi Query Attention、8192 個標記的上下文窗口,並在 1 萬億個標記上使用 Fill-in-the-Middle objective 進行訓練。
預期用途
該模型在 GitHub 代碼上進行訓練,因此它不是一個指令模型,像“編寫一個計算平方根的函數”這樣的命令效果不佳。但是,通過使用 Tech Assistant prompt,可以將其轉變為一個強大的技術助手。
歸屬與其他要求
該模型的預訓練數據集僅篩選了許可寬鬆的代碼。儘管如此,模型仍可能直接從數據集中生成源代碼。代碼的許可證可能要求進行歸屬聲明和/或遵守其他特定要求,必須予以尊重。我們提供了一個 搜索索引,可用於搜索預訓練數據,以確定生成代碼的來源,併為代碼進行適當的歸屬聲明。
侷限性
該模型在 80 多種編程語言的源代碼上進行訓練。源代碼中主要使用的自然語言是英語,儘管也存在其他語言。因此,該模型能夠在一定上下文下生成代碼片段,但生成的代碼不一定能按預期工作。代碼可能效率低下、包含錯誤或漏洞。有關模型侷限性的深入討論,請參閱 相關論文。
訓練信息
模型參數
- 架構:具有多查詢注意力和 Fill-in-the-Middle 目標的 GPT - 2 模型
- 預訓練步數:500k
- 預訓練標記數:1 萬億
- 精度:bfloat16
硬件資源
- GPU:256 個 Tesla A100
- 訓練時間:12 天
軟件環境
🔧 技術細節
該模型採用了一系列先進的技術,如 Multi Query Attention 技術,它能夠提高模型在處理長序列時的效率;使用 8192 個標記的上下文窗口,使得模型能夠在更廣泛的上下文中理解和生成代碼;Fill-in-the-Middle objective 則允許模型在代碼的中間部分進行填空生成,增加了代碼生成的靈活性。這些技術的結合使得 StarCoder-3B 在代碼生成任務中具有較好的表現。
📄 許可證
該模型遵循 BigCode OpenRAIL - M v1 許可協議。你可以在 此處 查看完整協議。
📚 引用
@article{li2023starcoder,
title={StarCoder: may the source be with you!},
author={Raymond Li and Loubna Ben Allal and Yangtian Zi and Niklas Muennighoff and Denis Kocetkov and Chenghao Mou and Marc Marone and Christopher Akiki and Jia Li and Jenny Chim and Qian Liu and Evgenii Zheltonozhskii and Terry Yue Zhuo and Thomas Wang and Olivier Dehaene and Mishig Davaadorj and Joel Lamy-Poirier and João Monteiro and Oleh Shliazhko and Nicolas Gontier and Nicholas Meade and Armel Zebaze and Ming-Ho Yee and Logesh Kumar Umapathi and Jian Zhu and Benjamin Lipkin and Muhtasham Oblokulov and Zhiruo Wang and Rudra Murthy and Jason Stillerman and Siva Sankalp Patel and Dmitry Abulkhanov and Marco Zocca and Manan Dey and Zhihan Zhang and Nour Fahmy and Urvashi Bhattacharyya and Wenhao Yu and Swayam Singh and Sasha Luccioni and Paulo Villegas and Maxim Kunakov and Fedor Zhdanov and Manuel Romero and Tony Lee and Nadav Timor and Jennifer Ding and Claire Schlesinger and Hailey Schoelkopf and Jan Ebert and Tri Dao and Mayank Mishra and Alex Gu and Jennifer Robinson and Carolyn Jane Anderson and Brendan Dolan-Gavitt and Danish Contractor and Siva Reddy and Daniel Fried and Dzmitry Bahdanau and Yacine Jernite and Carlos Muñoz Ferrandis and Sean Hughes and Thomas Wolf and Arjun Guha and Leandro von Werra and Harm de Vries},
year={2023},
eprint={2305.06161},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
⚠️ 重要提示
在使用該模型前,請閱讀 BigCode OpenRAIL - M 許可協議 並接受該協議。
💡 使用建議
該模型不是指令模型,若要讓其成為技術助手,可使用 Tech Assistant prompt。同時,生成的代碼可能存在問題,使用時需進行檢查和調試。