🚀 StarCoder2
StarCoder2-3Bモデルは、The Stack v2 の17のプログラミング言語でトレーニングされた30億パラメータのモデルです。このモデルは、コード生成などのタスクに役立ちます。
🚀 クイックスタート
インストール
まず、transformers
をソースからインストールします。
pip install git+https://github.com/huggingface/transformers.git
モデルの実行
CPU/GPU/マルチGPUでの実行
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoder2-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]))
>>> print(f"Memory footprint: {model.get_memory_footprint() / 1e6:.2f} MB")
Memory footprint: 12624.81 MB
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
checkpoint = "bigcode/starcoder2-3b"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto", torch_dtype=torch.bfloat16)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
>>> print(f"Memory footprint: {model.get_memory_footprint() / 1e6:.2f} MB")
Memory footprint: 6312.41 MB
bitsandbytes
による量子化バージョン
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
checkpoint = "bigcode/starcoder2-3b"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, quantization_config=quantization_config)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
>>> print(f"Memory footprint: {model.get_memory_footprint() / 1e6:.2f} MB")
Memory footprint: 3434.07 MB
>>> print(f"Memory footprint: {model.get_memory_footprint() / 1e6:.2f} MB")
Memory footprint: 1994.90 MB
✨ 主な機能
📚 ドキュメント
モデル概要
StarCoder2-3Bモデルは、The Stack v2 の17のプログラミング言語でトレーニングされた30億パラメータのモデルです。オプトアウト要求があったデータは除外されています。
使用目的
このモデルは、GitHubのコードや、ArxivやWikipediaなどの追加の選択されたデータソースでトレーニングされています。したがって、これは命令モデルではなく、「平方根を計算する関数を書いてください。」のようなコマンドはうまく機能しません。
帰属とその他の要件
このモデルの事前学習データセットは、許容的なライセンスとライセンスのないコードのみにフィルタリングされています。それにもかかわらず、モデルはデータセットからソースコードを逐語的に生成することができます。コードのライセンスには、帰属やその他の特定の要件が必要になる場合があり、それらを尊重する必要があります。私たちは、生成されたコードがどこから来たかを特定し、コードに適切な帰属を適用するために、事前学習データを検索できる 検索インデックス を提供しています。
制限事項
このモデルは、600以上のプログラミング言語のソースコードでトレーニングされています。ソースの主な言語は英語ですが、他の言語も含まれています。したがって、このモデルはある程度のコンテキストを与えることでコードスニペットを生成することができますが、生成されたコードが意図した通りに動作することは保証されていません。非効率で、バグや脆弱性を含む可能性があります。モデルの制限事項の詳細については、論文 を参照してください。
トレーニング
モデル
- アーキテクチャ: グループ化クエリとスライディングウィンドウアテンションを持つTransformerデコーダとFill-in-the-Middle目的
- 事前学習ステップ: 120万
- 事前学習トークン: 3兆以上
- 精度: bfloat16
ハードウェア
ソフトウェア
📄 ライセンス
このモデルは、BigCode OpenRAIL-M v1ライセンス契約の下でライセンスされています。完全な契約は こちら で確認できます。
📚 引用
@misc{lozhkov2024starcoder,
title={StarCoder 2 and The Stack v2: The Next Generation},
author={Anton Lozhkov and Raymond Li and Loubna Ben Allal and Federico Cassano and Joel Lamy-Poirier and Nouamane Tazi and Ao Tang and Dmytro Pykhtar and Jiawei Liu and Yuxiang Wei and Tianyang Liu and Max Tian and Denis Kocetkov and Arthur Zucker and Younes Belkada and Zijian Wang and Qian Liu and Dmitry Abulkhanov and Indraneil Paul and Zhuang Li and Wen-Ding Li and Megan Risdal and Jia Li and Jian Zhu and Terry Yue Zhuo and Evgenii Zheltonozhskii and Nii Osae Osae Dade and Wenhao Yu and Lucas Krauß and Naman Jain and Yixuan Su and Xuanli He and Manan Dey and Edoardo Abati and Yekun Chai and Niklas Muennighoff and Xiangru Tang and Muhtasham Oblokulov and Christopher Akiki and Marc Marone and Chenghao Mou and Mayank Mishra and Alex Gu and Binyuan Hui and Tri Dao and Armel Zebaze and Olivier Dehaene and Nicolas Patry and Canwen Xu and Julian McAuley and Han Hu and Torsten Scholak and Sebastien Paquet and Jennifer Robinson and Carolyn Jane Anderson and Nicolas Chapados and Mostofa Patwary and Nima Tajbakhsh and Yacine Jernite and Carlos Muñoz Ferrandis and Lingming Zhang and Sean Hughes and Thomas Wolf and Arjun Guha and Leandro von Werra and Harm de Vries},
year={2024},
eprint={2402.19173},
archivePrefix={arXiv},
primaryClass={cs.SE}
}
情報テーブル
属性 |
詳情 |
パイプラインタグ |
テキスト生成 |
推論 |
有効 |
データセット |
bigcode/the-stack-v2-train |
ライセンス |
bigcode-openrail-m |
ライブラリ名 |
transformers |
タグ |
コード |
モデル名 |
starcoder2-3b |
タスクタイプ |
テキスト生成 |
評価データセット |
CruxEval-I、DS-1000、GSM8K (PAL)、HumanEval+、HumanEval、RepoBench-v1.1 |
評価指標 |
pass@1、accuracy、edit-smiliarity |
評価値 |
32.7、25.0、27.7、27.4、31.7、71.19 |