简单几步微调 Llama 3 大模型
本文介绍如何基于 Google Colab 免费算力,快速完成 Llama 3 大模型的微调。通过配置 Python 环境、加载预训练模型、准备指令数据集,利用 LoRA 技术进行高效微调,最终保存适配器权重并验证推理效果,实现私有化 AI 智能体的构建。
1. 环境准备
首先请准备好 Google 账号和网络环境。本示例基于 Google Colab 的免费 GPU 算力完成。
打开 Colab 链接后,点击 Copy to Drive 将笔记本复制到您的云端硬盘。在弹出的新窗口中,依次运行代码单元格。
安装基础依赖
!pip install transformers peft accelerate bitsandbytes torch datasets trl
等待安装完成后,左侧会出现绿色勾号表示成功。
2. 加载模型与数据
加载 Llama 3 模型
使用 Hugging Face Transformers 库加载 Llama 3 8B Instruct 版本。默认配置下无需修改即可执行。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
use_cache=True
)
准备训练数据集
微调需要指令 - 响应格式的数据。可以使用 JSONL 或 CSV 格式。以下是一个简单的数据集结构示例:
{
"instruction": "请生成斐波那契数列的前 10 项。",
"input": "",
"output": "0, 1, 1, 2, 3, 5, 8, 13, 21, 34"
}
在 Colab 中加载本地或云端的数据集文件。
from datasets import load_dataset
dataset = load_dataset("json", data_files="train.json", split="train")
3. 配置 LoRA 微调参数
LoRA (Low-Rank Adaptation) 是一种高效的微调方法,只需更新少量参数即可适配特定任务。
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
检查当前可用内存及显存使用情况,确保训练过程稳定。
4. 开始训练
使用 SFTTrainer 进行监督微调。设置必要的超参数,如学习率、批次大小和训练步数。
from trl import SFTTrainer
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
fp16=True,
logging_steps=10,
save_strategy="epoch",
optim="paged_adamw_8bit"
)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
tokenizer=tokenizer,
args=training_args,
max_seq_length=512,
packing=False,
)
trainer.train()
训练过程大约需要几分钟到几十分钟,具体取决于数据集规模和 GPU 性能。观察日志输出,确认 Loss 值下降趋势正常。
5. 保存与测试模型
保存 LoRA 权重
训练完成后,将微调后的适配器权重保存到本地。
model.save_pretrained("./lora_model")
tokenizer.save_pretrained("./lora_model")
加载并推理
加载保存的模型进行测试,验证微调效果。
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
lora_model = PeftModel.from_pretrained(base_model, "./lora_model")
prompt = "请解释什么是人工智能?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = lora_model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
支持流式输出模式,可实时查看生成内容。
6. 总结
整个微调流程包括环境搭建、模型加载、数据准备、参数配置、训练执行及结果保存。虽然涉及多个步骤,但通过自动化脚本和云算力支持,即使是初学者也能顺利完成。后续可根据实际需求替换自定义数据集,构建垂直领域的私有化智能体应用。

