🚀 Phind-CodeLlama-34B-v2
Phind-CodeLlama-34B-v1を追加の15億トークンの高品質なプログラミング関連データでファインチューニングし、HumanEvalで73.8%のpass@1を達成しました。これは現在のオープンソースモデルの中で最先端の性能です。
🚀 クイックスタート
このモデルを使用するには、まずTransformersをメインのgitブランチからインストールする必要があります。
pip install git+https://github.com/huggingface/transformers.git
✨ 主な機能
- Phind-CodeLlama-34B-v1をファインチューニングし、HumanEvalで73.8% pass@1を達成。
- マルチ言語対応で、Python、C/C++、TypeScript、Javaなどに対応。
- Alpaca/Vicuna形式でインストラクションチューニングされており、使いやすい。
📦 インストール
モデルを使用するために、Transformersをメインのgitブランチからインストールします。
pip install git+https://github.com/huggingface/transformers.git
💻 使用例
基本的な使用法
このモデルはAlpaca/Vicunaのインストラクション形式を受け付けます。
### System Prompt
You are an intelligent programming assistant.
### User Message
Implement a linked list in C++
### Assistant
...
高度な使用法
HumanEvalの結果を再現するには、以下のコードを実行します。
from transformers import AutoTokenizer, LlamaForCausalLM
from human_eval.data import write_jsonl, read_problems
from tqdm import tqdm
model_path = "Phind/Phind-CodeLlama-34B-v2"
model = LlamaForCausalLM.from_pretrained(model_path, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_path)
def generate_one_completion(prompt: str):
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=4096)
generate_ids = model.generate(inputs.input_ids.to("cuda"), max_new_tokens=384, do_sample=True, top_p=0.75, top_k=40, temperature=0.1)
completion = tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
completion = completion.replace(prompt, "").split("\n\n\n")[0]
return completion
problems = read_problems()
num_samples_per_task = 1
samples = [
dict(task_id=task_id, completion=generate_one_completion(problems[task_id]["prompt"]))
for task_id in tqdm(problems)
for _ in range(num_samples_per_task)
]
write_jsonl("samples.jsonl", samples)
📚 ドキュメント
モデルの詳細
このモデルはPhind-CodeLlama-34B-v1からファインチューニングされ、HumanEvalで73.8% pass@1を達成しました。Phind-CodeLlama-34B-v2はマルチ言語対応で、Python、C/C++、TypeScript、Javaなどに対応しています。
データセットの詳細
15億トークンの高品質なプログラミング問題と解決策の独自データセットでファインチューニングしました。このデータセットはコード補完例ではなく、命令と回答のペアで構成されており、HumanEvalとは構造的に異なります。LoRAは使用せず、両方のモデルはネイティブなファインチューニングです。DeepSpeed ZeRO 3とFlash Attention 2を使用して、32台のA100-80GB GPUで15時間でこれらのモデルをトレーニングしました。シーケンス長は4096トークンを使用しました。
🔧 技術詳細
- ハードウェアタイプ: 32x A100-80GB
- 使用時間: 480 GPU時間
- クラウドプロバイダー: AWS
- コンピュートリージョン: us-east-1
📄 ライセンス
このモデルはLlama2のライセンスの下で提供されています。
属性 |
详情 |
モデルタイプ |
Phind-CodeLlama-34B-v2 |
トレーニングデータ |
15億トークンの高品質なプログラミング問題と解決策の独自データセット |
⚠️ 重要提示
このモデルは非常に限られたテストしか行われていません。実際のデプロイ前に追加の安全性テストを行う必要があります。
詳細については、ブログ記事を参照してください。