🚀 StarCoderPlus
このモデルは、英語と80以上のプログラミング言語で学習された155億パラメータの言語モデルです。StarChat-Beta で、命令調整済みの StarCoderPlus を試すことができます。
🚀 クイックスタート
目次
- モデル概要
- 使用方法
- 制限事項
- 学習方法
- ライセンス
📚 モデル概要
StarCoderPlusは、StarCoderBase を以下のデータセットでファインチューニングしたバージョンです。
これは、英語と80以上のプログラミング言語で学習された15.5Bパラメータの言語モデルです。モデルは Multi Query Attention、8192トークンのコンテキストウィンドウ を使用し、Fill-in-the-Middle objective を用いて1.6兆トークンで学習されました。
💻 使用方法
想定される使用法
このモデルは英語とGitHubのコードで学習されています。したがって、命令モデルではなく、「平方根を計算する関数を書いてください。」のようなコマンドはうまく機能しません。ただし、StarChat の命令調整済みバージョンは、有能なアシスタントとして機能します。
コミュニティタブで生成結果を自由に共有してください!
生成
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)
中抜き生成では、入力と出力のプレフィックス/ミドル/サフィックス部分を識別するために特殊トークンを使用します。
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のコードの混合物で学習されています。したがって、非英語のテキストで動作する際に制限が生じる可能性があり、オンラインで一般的に見られるステレオタイプやバイアスを持つことがあります。
さらに、生成されたコードにはエラー、非効率性、または潜在的な脆弱性が含まれる可能性があるため、注意して使用する必要があります。ベースモデルのコードの制限事項についてより包括的な理解を得るには、StarCoder論文 を参照してください。
🔧 学習方法
StarCoderPlusは、1Tのコードトークンで事前学習されたStarCoderBaseを600Bの英語とコードトークンでファインチューニングしたバージョンです。以下はファインチューニングの詳細です。
モデル
- アーキテクチャ: マルチクエリアテンションと中抜き生成目的を持つGPT - 2モデル
- ファインチューニングステップ: 150k
- ファインチューニングトークン: 600B
- 精度: bfloat16
ハードウェア
- GPU: 512台のTesla A100
- 学習時間: 14日
ソフトウェア
📄 ライセンス
このモデルは、BigCode OpenRAIL - M v1ライセンス契約の下でライセンスされています。完全な契約は こちら で確認できます。