🚀 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: "。