🚀 StarCoder
StarCoder是一個擁有155億參數的模型,在80多種編程語言的代碼數據上進行訓練。它能根據一定上下文生成代碼片段,藉助特定提示還可成為技術助手,但生成的代碼不一定能正常工作。
🚀 快速開始
你可以在 StarCoder Playground 上體驗該模型。
✨ 主要特性
📦 安裝指南
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoder"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoder"
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]))
📚 詳細文檔
模型概述
StarCoder 模型是具有155億參數的模型,在來自 The Stack (v1.2) 的80多種編程語言上進行訓練,排除了選擇退出請求的數據。該模型使用 Multi Query Attention、8192 個標記的上下文窗口,並在1萬億個標記上使用 Fill-in-the-Middle 目標 進行訓練。
使用說明
預期用途
該模型在 GitHub 代碼上進行訓練,因此它不是一個指令模型,像“編寫一個計算平方根的函數”這樣的命令效果不佳。但是,通過使用 Tech Assistant prompt,可以將其轉變為一個強大的技術助手。
歸屬及其他要求
該模型的預訓練數據集僅過濾了許可性許可證的數據。儘管如此,該模型仍可以逐字生成數據集中的源代碼。代碼的許可證可能要求歸屬和/或其他特定要求,必須予以遵守。我們提供了一個 搜索索引,可用於搜索預訓練數據,以確定生成的代碼來源,併為你的代碼應用適當的歸屬。
侷限性
該模型在80多種編程語言的源代碼上進行訓練。源代碼中主要使用的自然語言是英語,儘管也存在其他語言。因此,該模型能夠在一定上下文下生成代碼片段,但生成的代碼不能保證按預期工作。它可能效率低下、包含錯誤或漏洞。目前,沒有機制來檢測模型先前生成的內容。有關模型侷限性的深入討論,請參閱 論文。
訓練信息
模型信息
- 架構:具有多查詢注意力和 Fill-in-the-Middle 目標的 GPT - 2 模型
- 預訓練步驟:250k
- 預訓練標記:1萬億
- 精度:bfloat16
硬件信息
- GPU:512 個 Tesla A100
- 訓練時間:24 天(320,256 GPU 小時預訓練 + 11,208 GPU 小時 Python 微調)
- 訓練 FLOPS:8.46E+22
軟件信息
🔧 技術細節
該模型使用了 Multi Query Attention 技術,這種技術可以在減少計算量的同時保持模型的性能。同時,它擁有 8192 個標記的上下文窗口,能夠處理更長的輸入序列。在訓練過程中,採用了 Fill-in-the-Middle 目標,使得模型在處理代碼生成任務時更加靈活。
📄 許可證
該模型遵循 BigCode OpenRAIL - M v1 許可協議。你可以在 此處 查看完整協議。
如有與許可協議相關的問題或對使用限制的申訴,請發送郵件至 contact@bigcode-project.org。
📚 引用
@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}
}
📋 信息表格
屬性 |
詳情 |
模型類型 |
具有155億參數,基於GPT - 2架構,使用多查詢注意力和Fill - in - the - Middle目標的代碼生成模型 |
訓練數據 |
來自 The Stack (v1.2) 的80多種編程語言代碼數據,排除選擇退出請求的數據 |
訓練步驟 |
250k |
訓練標記 |
1萬億 |
精度 |
bfloat16 |
硬件 |
512個Tesla A100 GPU,訓練24天(320,256 GPU小時預訓練 + 11,208 GPU小時Python微調) |
軟件 |
編排工具為 Megatron - LM,神經網絡框架為 PyTorch,BP16(如適用)為 apex |
許可證 |
BigCode OpenRAIL - M v1 |