🚀 OctoCoder
OctoCoderは、OctoPack論文に記載されているように、CommitPackFTとOASSTでStarCoderをファインチューニングすることで作成された、155億のパラメータを持つ命令調整モデルです。このモデルは、80以上のプログラミング言語に対応しており、高品質なコード生成を行うことができます。

🚀 クイックスタート
このセクションでは、OctoCoderモデルの概要、使用方法、トレーニング情報、引用方法について説明します。
目次
- モデル概要
- 使用方法
- トレーニング
- 引用
✨ 主な機能
- 多言語対応:80以上のプログラミング言語に対応。
- 高品質なコード生成:CommitPackFTとOASSTでファインチューニングされたモデル。
📚 ドキュメント
モデル概要
OctoCoderは、OctoPack論文に記載されているように、CommitPackFTとOASSTでStarCoderをファインチューニングすることで作成された、15.5Bのパラメータを持つ命令調整モデルです。
使用方法
意図された使用法
モデルは、入力に提供された命令に従います。入力は常に「Question: 」で始め、「Answer:」で終える必要があります。例えば、「Question: Please write a function in Python that performs bubble sort.\n\nAnswer:」のように入力します。
コミュニティタブで生成結果を自由に共有してください!
生成
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/octocoder"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("Question: Please write a function in Python that performs bubble sort.\n\nAnswer:", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
トレーニング
モデル
- アーキテクチャ:マルチクエリアテンションとFill-in-the-Middle目的を持つGPT-2モデル
- ステップ:250kの事前学習と30の命令調整
- 事前学習トークン:1兆の事前学習と2Mの命令調整
- 精度:bfloat16
ハードウェア
- 事前学習:
- GPU:512台のTesla A100
- トレーニング時間:24日
- 命令調整:
- GPU:8台のTesla A100
- トレーニング時間:4時間
ソフトウェア
引用
@article{muennighoff2023octopack,
title={OctoPack: Instruction Tuning Code Large Language Models},
author={Niklas Muennighoff and Qian Liu and Armel Zebaze and Qinkai Zheng and Binyuan Hui and Terry Yue Zhuo and Swayam Singh and Xiangru Tang and Leandro von Werra and Shayne Longpre},
journal={arXiv preprint arXiv:2308.07124},
year={2023}
}
その他の情報
属性 |
詳情 |
パイプラインタグ |
テキスト生成 |
推論 |
有効 |
ライセンス |
bigcode-openrail-m |
データセット |
bigcode/commitpackft、bigcode/oasst-octopack |
評価指標 |
code_eval |
ライブラリ名 |
transformers |
タグ |
コード |
モデルの評価結果は以下の通りです。
タスク |
データセット |
評価指標 |
値 |
検証済み |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize Python) |
pass@1 |
46.2 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize JavaScript) |
pass@1 |
39.2 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize Java) |
pass@1 |
38.2 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize Go) |
pass@1 |
30.4 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize C++) |
pass@1 |
35.6 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize Rust) |
pass@1 |
23.4 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalSynthesize Average) |
pass@1 |
35.5 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix Python) |
pass@1 |
30.4 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix JavaScript) |
pass@1 |
28.4 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix Java) |
pass@1 |
30.6 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix Go) |
pass@1 |
30.2 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix C++) |
pass@1 |
26.1 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix Rust) |
pass@1 |
16.5 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalFix Average) |
pass@1 |
27.0 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain Python) |
pass@1 |
35.1 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain JavaScript) |
pass@1 |
24.5 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain Java) |
pass@1 |
27.3 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain Go) |
pass@1 |
21.1 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain C++) |
pass@1 |
24.1 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain Rust) |
pass@1 |
14.8 |
否 |
テキスト生成 |
bigcode/humanevalpack (HumanEvalExplain Average) |
pass@1 |
24.5 |
否 |