🚀 Phind-CodeLlama-34B-Python-v1
我們在內部的Phind數據集上對CodeLlama-34B和CodeLlama-34B-Python進行了微調,它們在HumanEval上的pass@1分別達到了67.6%和69.5%,而GPT-4的pass@1為67%。我們對數據集應用了OpenAI的去汙染方法,以確保結果的有效性。更多詳細信息可查看我們的博客文章。
✨ 主要特性
- 基於CodeLlama-34B-Python微調,在HumanEval上的pass@1達到69.5%。
- 使用約80k個高質量編程問題及解決方案的專有數據集進行微調。
- 訓練未使用LoRA,採用原生微調方式。
- 運用DeepSpeed ZeRO 3和Flash Attention 2技術,在32塊A100 - 80GB GPU上3小時完成訓練。
📦 安裝指南
確保從主git分支安裝Transformers:
pip install git+https://github.com/huggingface/transformers.git
💻 使用示例
基礎用法
本模型經過一定的指令微調,但未進行對話微調。請勿使用Llama對話標記,只需告知模型你想要的內容,並在任務末尾添加"\n: "。
Write me a linked list implementation: \n
高級用法
重現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-v1"
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=256, 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)
📚 詳細文檔
模型詳情
此模型基於CodeLlama-34B-Python微調,在HumanEval上的pass@1達到69.5%。
數據集詳情
我們在約80k個高質量編程問題及解決方案的專有數據集上進行微調。該數據集由指令 - 答案對組成,而非代碼補全示例,因此在結構上與HumanEval不同。Phind模型訓練了2個週期,總共展示了約160k個示例。未使用LoRA,兩個模型均採用原生微調方式。我們使用DeepSpeed ZeRO 3和Flash Attention 2技術,在32塊A100 - 80GB GPU上3小時完成訓練,序列長度為4096個標記。
訓練詳情
屬性 |
詳情 |
硬件類型 |
32x A100 - 80GB |
使用時長 |
90 GPU小時 |
雲服務提供商 |
AWS |
計算區域 |
us - east - 1 |
🔧 技術細節
本模型經過一定的指令微調,但未進行對話微調。訓練時使用了DeepSpeed ZeRO 3和Flash Attention 2技術,以提高訓練效率。在32塊A100 - 80GB GPU上,3小時即可完成訓練,使用的序列長度為4096個標記。
📄 許可證
本模型使用Llama2許可證。
⚠️ 重要提示
此模型僅經過非常有限的測試,在實際部署之前,應進行額外的安全測試。
💡 使用建議
請勿使用Llama對話標記,只需告知模型你想要的內容,並在任務末尾添加"\n: "。