🚀 Phind-CodeLlama-34B-v2
Phind-CodeLlama-34B-v2在Phind-CodeLlama-34B-v1的基礎上,使用額外的15億高質量編程相關數據進行微調,在HumanEval基準測試中達到了73.8%的pass@1準確率,是當前開源模型中的佼佼者。此外,該模型還按照Alpaca/Vicuna格式進行了指令微調,使用起來更加靈活方便。
🚀 快速開始
安裝依賴
確保從主git分支安裝Transformers庫:
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基準測試中達到73.8%的pass@1準確率,展現了出色的代碼生成能力。
- 多語言支持:支持Python、C/C++、TypeScript、Java等多種編程語言。
- 指令微調:按照Alpaca/Vicuna格式進行指令微調,易於使用和控制。
📦 安裝指南
確保從主git分支安裝Transformers庫:
pip install git+https://github.com/huggingface/transformers.git
💻 使用示例
基礎用法
以下是如何使用該模型進行推理的示例:
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個標記。
復現HumanEval結果
要復現我們在HumanEval上的結果,請參考上述“使用示例”中的代碼。
🔧 技術細節
訓練硬件
- 硬件類型:32個A100-80GB GPU
- 使用時長:480 GPU小時
- 雲服務提供商:AWS
- 計算區域:us-east-1
訓練參數
📄 許可證
本模型使用Llama 2許可證。
⚠️ 重要提示
該模型僅經過了非常有限的測試,在實際應用之前,建議進行額外的安全測試。