从零开始用 Python + Ollama 玩转 LLM 微调
想知道怎么让 AI 模型真正为你所用吗?我来分享一下我是怎么从一个一脸懵的新手,在一个周末变成微调大神的!

改变一切的“啊哈!”时刻 💡
想象一下:你想让 ChatGPT 从一堆乱七八糟的 HTML 里提取产品信息,但每次它给你的格式都不一样。有时候是一段话,有时候是项目符号列表,有时候它干脆“忘了”一半数据。听起来是不是很熟悉?
这就是三个月前的我,直到我发现了微调的魔法。相信我,一旦你搞定这个,你再也不会在 prompt 里苦苦哀求 AI 模型“拜托保持一致”了。
微调到底是什么?(厨师类比) 👨🍳
这么想吧:你雇了 Gordon Ramsay(他啥都会做,厨艺超棒),但你需要他学会你奶奶的独家意面秘方。你不用从头教他做饭,只需要给他看 100 份完美菜品的例子。
这就是微调!
-
• Base model = Gordon Ramsay 的通用厨艺
-
• Your training data = 奶奶的菜谱例子
-
• Fine-tuned model = Gordon 现在每次都能做出完美的意面
什么时候需要微调? 🤔
别啥都微调!这就像买辆法拉利去买菜。以下是微调有意义的场景:
-
• 需要严格的格式 — JSON 输出、法律文件、结构化数据
-
• 特定领域的术语 — 医疗报告、法律文件、公司特定术语
-
• 成本优化 — 使用更小、更专用的模型,而不是昂贵的 GPT-4 调用
-
• 隐私顾虑 — 在你自己的服务器上保存敏感数据
快速现实检查:先试试其他方法! ⚡
在开始微调之前,先试试这些:
-
• Prompt engineering(免费,但不稳定)
-
• RAG (Retrieval-Augmented Generation)(即时添加上下文)
-
• Few-shot prompting(在 prompt 里给例子)
如果这些都不行,那就该微调了!
完整的逐步指南 📋
好了,卷起袖子干活吧!我们会用到:
-
• Unsloth(让微调速度快 2 倍,还免费!)
-
• Google Colab(免费 GPU,不需要高端硬件)
-
• Phi-3 Mini(小而强大的基础模型)

步骤 1:收集你的黄金数据集 📊
这可是成败的关键。数据烂,模型就烂,没得商量。
你需要 JSON 格式的输入-输出对。我的 HTML 提取数据看起来是这样的:
[
{
"input":"<div><h2>Product: Gaming Laptop</h2><p>Price: $1299</p><span>Category: Electronics</span><span>Brand: ASUS</span></div>",
"output":{"name":"Gaming Laptop","price":"$1299","category":"Electronics","brand":"ASUS"}
},
{
"input":"<div><h2>Product: Coffee Mug</h2><p>Price: $15</p><span>Category: Kitchen</span><span>Brand: Starbucks</span></div>",
"output":{"name":"Coffee Mug","price":"$15","category":"Kitchen","brand":"Starbucks"}
}
]
Pro tip:先用 20-30 个例子快速测试,然后扩展到 100-500 个以达到生产质量!
步骤 2:设置你的免费 GPU 动力源 ⚡
打开 Google Colab,按照以下步骤操作:
-
1. 创建新 notebook
-
2. 运行时 → 更改运行时类型 → T4 GPU(如果 T4 不可用,选 V100 或 P100)
-
3. 上传你的 JSON 数据集
-
4. 安装魔法材料:
# 这大概需要 2 分钟,泡杯咖啡吧! ☕
!pip install unsloth
# 如果需要最新功能,可以用这个:
# !pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
!pip install --no-deps trl peft accelerate bitsandbytes transformers datasets
验证 GPU 设置:
import torch
print(f"GPU Available: {torch.cuda.is_available()}")
print(f"GPU Name: {torch.cuda.get_device_name(0)}")
# 应该显示:Tesla T4 或类似型号
步骤 3:加载你的基础模型 🤖
是时候唤醒我们的 AI 小助手了:
from unsloth import FastLanguageModel
model_name = "unsloth/phi-3-mini-4k-instruct-bnb-4bit"
max_seq_length = 2048 # 根据你的数据长度调整
dtype = None # 自动检测。Tesla T4, V100 用 Float16,Ampere+ 用 Bfloat16
load_in_4bit = True # 使用 4bit 量化减少内存占用
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_name,
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
)
这会下载模型(5-10 分钟)。正好去吃个小点心! 🍪
步骤 4:把你的数据变成 AI 的“食物” 🍽️
import json
from datasets import Dataset
# 加载你的数据集
withopen("your_dataset.json", "r") as f:
data = json.load(f)
# 使用聊天模板格式化数据
defformat_chat_template(item):
return tokenizer.apply_chat_template(
[
{"role": "user", "content": item['input']},
{"role": "assistant", "content": json.dumps(item['output'])}
],
tokenize=False,
add_generation_prompt=False
)
# 创建训练数据集
formatted_data = [{"text": format_chat_template(item)} for item in data]
dataset = Dataset.from_list(formatted_data)
# 检查数据样子
print("Sample training example:")
print(formatted_data[0]["text"])
步骤 5:添加 LoRA 魔法 ✨
LoRA (Low-Rank Adaptation) 是让微调高效的秘诀。我们不用重新训练整个模型,只加一些小的“适配器”层:
model = FastLanguageModel.get_peft_model(
model,
r=16, # 秩 - 越高参数越多
target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
lora_alpha=16,
lora_dropout=0,
bias="none",
use_gradient_checkpointing="unsloth",
random_state=3407
)
你会看到:“Unsloth: Patched 32 layers with LoRA...” - 这就是成功! 🎉
步骤 6:训练你的定制 AI 🏋️♂️
魔法时刻来了:
from trl import SFTTrainer
from transformers import TrainingArguments
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
dataset_text_field="text",
max_seq_length=max_seq_length,
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=5,
max_steps=60, # 增加步数以训练更多
learning_rate=2e-4,
fp16=not torch.cuda.is_bf16_supported(),
bf16=torch.cuda.is_bf16_supported(),
logging_steps=1,
optim="adamw_8bit", # 如果优化器报错,换成 "adamw_torch"
weight_decay=0.01,
lr_scheduler_type="linear",
seed=3407,
output_dir="outputs",
save_steps=30,
),
)
# 开始训练! 🚀
trainer.train()
看着 loss 下降吧!越低越好。500 个例子大概需要 10-15 分钟。
步骤 7:测试你的成果 🧪
看看它是不是真的好使:
# 切换到推理模式
FastLanguageModel.for_inference(model)
# 测试输入
test_html = "<div><h2>Product: Wireless Headphones</h2><p>Price: $79</p><span>Category: Audio</span><span>Brand: Sony</span></div>"
# 使用聊天模板格式化输入
messages = [{"role": "user", "content": test_html}]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
).to("cuda")
# 生成响应
with torch.no_grad():
outputs = model.generate(
input_ids=inputs,
max_new_tokens=256,
use_cache=True,
temperature=0.1, # 低 temperature = 更一致
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
# 提取新生成的内容(不包括完整对话)
response = tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)
print("Model output:")
print(response.strip())
预期输出:
{"name": "Wireless Headphones", "price": "$79", "category": "Audio", "brand": "Sony"}
如果结果不稳定,就多训练几步!
步骤 8:导出到 Ollama(本地运行!) 💻
这部分超激动人心 —— 在本地、私密地运行你的模型:
# 导出到 GGUF 格式(兼容 Ollama)- 这是 Unsloth 专用的!
model.save_pretrained_gguf(
"fine_tuned_model",
tokenizer,
quantization_method="q4_k_m" # 大小和质量的良好平衡
)
注意:这个 save_pretrained_gguf 函数是 Unsloth 专用的,普通 Hugging Face 模型不能用!
从 Colab 下载文件(右键 → 下载)。这需要 10-20 分钟。
步骤 9:设置 Ollama(你的本地 AI 服务器) 🏠
-
1. 安装 Ollama:访问 ollama.com,下载适合你操作系统的版本
-
2. 创建模型目录:
cd ~/Downloads
mkdir my-fine-tuned-model
mv unsloth.Q4_K_M.gguf my-fine-tuned-model/
cd my-fine-tuned-model
-
3. 创建 Modelfile:
touch Modelfile
nano Modelfile # 或者用其他文本编辑器
Modelfile 内容:
FROM ./unsloth.Q4_K_M.gguf
PARAMETER temperature 0.1
PARAMETER top_p 0.9
PARAMETER stop ["<|endoftext|>"]
TEMPLATE "{{ .Prompt }}"
SYSTEM "You are a specialized HTML data extraction assistant."
-
4. 创建你的 Ollama 模型:
ollama create html-extractor -f Modelfile
步骤 10:享受你的定制 AI! 🎉
ollama run html-extractor
现在粘贴任何 HTML,观看你的模型每次都能提取出完美、一致的 JSON —— 这就是微调的真正魔法!
专业小贴士,省你几小时! ⚡
-
• 从小开始:100 个例子 → 测试 → 如果需要再加
-
• 数据多样性:别只用相似例子,多样性防止过拟合
-
• 保存检查点:设置 save_steps=30,避免进度丢失
-
• 监控 loss:应该稳步下降,如果没有,检查数据
-
• Temperature 很重要:用 0.1-0.3 确保一致输出,0.7+ 适合创意输出
常见陷阱(从我的错误中吸取教训!) 😅
-
• 格式不一致 → 多训练几步或用更好的数据
-
• “幻觉” → 需要更多样化的例子
-
• 内存不足错误 → 减小 batch size 或序列长度
-
• 训练慢 → 用 Unsloth(速度提升 2 倍)并启用 bf16
-
• 模型在 Ollama 加载失败 → 检查 GGUF 文件是否损坏
下一步是什么? 🚀
现在你已经掌握了基础,这里有一些激动人心的方向:
-
• 尝试更大的模型:Llama 3.1 8B 效果更好
-
• 多任务训练:一个模型处理多个提取任务
-
• 高级技术:QLoRA、gradient checkpointing、自定义 loss 函数
-
• 部署:Docker 容器、API 端点、Web 界面
最终思考 💭
微调一开始感觉挺吓人,但一步步拆解后完全可控。最棒的部分?一旦你掌握了这个流程,你就能在一小时内为任何任务微调模型。
不管是提取数据、生成特定格式,还是打造领域专家,微调赋予你的超能力是任何 prompt engineering 都比不上的。
你会先微调什么?在下面留言吧 —— 我很想听听你的项目!
想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?
别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!
👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势
想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:
1. 100+本大模型方向电子书

2. 26 份行业研究报告:覆盖多领域实践与趋势
报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:
- 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
- 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
- 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
- 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。
3. 600+套技术大会 PPT:听行业大咖讲实战
PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

- 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
- 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
- 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
- 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。
二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走
想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位
面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点
针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题
专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:

三、路线必明:AI 大模型学习路线图,1 张图理清核心内容
刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。


四、资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!
更多推荐


所有评论(0)