如何用llama3模型做微调

AI技术
小华
2026-10-25

下面给你一个从零到可运行的 Llama 3 微调实操指南,涵盖常见方式、环境准备、数据格式、训练示例和注意事项。以 Llama 3 8B 为例(70B 类似但资源要求更高)。

一、Llama 3 微调常见方式

方法显存需求适合场景
全参数微调 (Full FT)非常高(≥80GB×多卡)不推荐个人
LoRA低(24GB 可跑)最常用
QLoRA极低(16–24GB)消费级显卡
Prompt / Instruction Tuning低轻量适配

✅ 推荐:QLoRA + Llama 3 8B

二、环境准备

1. 基础环境

conda create -n llama3 python=3.10
conda activate llama3

2. 安装依赖

pip install torch==2.1.2 transformers==4.41.0 accelerate peft bitsandbytes datasets sentencepiece

3. 模型下载

huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct

⚠️ 需先申请 Llama 3 使用权限

三、数据格式(指令微调)

示例 JSONL

{
"instruction": "将这句话翻译成英文",
"input": "今天天气很好",
"output": "The weather is nice today."
}

或对话格式:

{
"messages": [
{"role": "user", "content": "你是谁?"},
{"role": "assistant", "content": "我是Llama 3微调模型"}
]
}

四、QLoRA 微调示例(核心代码)

1. 加载 4bit 模型

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
import bitsandbytes as bnb
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
load_in_4bit=True,
bnb_4bit_compute_dtype="float16"
)

2. 配置 LoRA

lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj","v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

3. 训练(简化版)

from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
warmup_steps=10,
max_steps=200,
learning_rate=2e-4,
fp16=True,
logging_steps=10,
output_dir="./llama3-lora"
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset
)
trainer.train()

五、推理测试

model.eval()
inputs = tokenizer("你好,你是谁?", return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(out[0]))

六、合并 LoRA(可选)

python -m peft merge_and_unload \
--adapter ./llama3-lora \
--base_model meta-llama/Meta-Llama-3-8B-Instruct \
--output ./llama3-merged

七、显存参考

配置是否可行
3090 / 4090 (24G)✅ QLoRA
A100 40G✅ LoRA
A100 80G✅ 全参

八、常见坑

  • ❌ 直接用 trainer 不量化 → 爆显存
  • ❌ 忘记 eos_token → 不停止生成
  • ✅ 使用 chat_template 效果更好

九、进阶建议

  • 使用 Axolotl / LLaMA-Factory(少写代码)
  • 用 中文指令数据(如 Alpaca-zh)
  • 多轮对话用 messages 格式

如果你愿意,我可以:

  • ✅ 给你 完整可运行训练脚本
  • ✅ 用 LLaMA-Factory 图形化微调
  • ✅ 针对 中文 / 垂直领域 设计数据

你打算用在什么场景?

亿速云提供售前/售后服务

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序