第 14 章 · 七年级(初三) 下学期

模型微调与毕业项目

走完大模型最后一公里:LoRA 微调、数据集制作、量化与本地部署、效果评估与对齐,最终完成可演示的大模型产品并毕业答辩。

13 课时 24 个知识点 4 大易错点 3 档分层作业
一年级上一年级下二年级上二年级下三年级上三年级下四年级上四年级下五年级上五年级下六年级上六年级下七年级上七年级下
01

情景导航

用故事和生活类比打开这学期的大门,先「知其所以然」再学语法。

六年长跑的最后一学期。小强要完成大模型的最后拼图:亲手微调一个「说自己的话」的模型,把它量化后装进自己的电脑,然后带着一个完整可演示的大模型产品走上毕业答辩的舞台。从三年级的 print("你好,世界") 到今天的专属大模型——闭环了。

💯生活类比:把新知识挂在旧经验上
🎯

LoRA = 只教选修课

主科(原模型权重)不动,只加一小门课(低秩矩阵),省时省显存。

低秩微调
🗜️

量化 = 压缩行李箱

把大行李箱压成登机箱,东西还是那些东西,体积小一大截。

降精度存储
💾

本地部署 = 自家发电机

不依赖云端,断网也能跑,数据不出门。

离线推理
🎤

毕业答辩 = 首场演唱会

六年所学,一场 showtime:讲清楚、演出来、答得上。

成果展示
核 心 口 诀LoRA低秩省显存,数据格式要干净;
SFT训练看损失,量化部署降门槛;
评估对齐守伦理,答辩台上见真章!
02

知识探究

模型微调与毕业项目 —— 共 13 课时,全部知识点一网打尽。

🎯微调技术(3 课时)
第1课微调入门
🎯 趣味项目:让模型说特定风格📚 教学目标:掌握微调原理、LoRA,在项目实战中巩固运用
微调原理LoRA
PythonLoRA:低成本微调
from peft import LoraConfig, get_peft_model
config = LoraConfig(
    r=8,                            # 低秩矩阵的秩
    target_modules=["q_proj", "v_proj"],  # 只挂注意力层
    lora_alpha=16, lora_dropout=0.05)
model = get_peft_model(base_model, config)
model.print_trainable_parameters()
# 可训练参数只占全模型的不到 1%!
运 行 结 果
trainable params: 1,572,864 || all params: 332,872,704 || trainable%: 0.47
第2课数据准备
🎯 趣味项目:制作训练数据集📚 教学目标:掌握数据格式、清洗、标注,在项目实战中巩固运用
数据格式清洗标注
PythonSFT 数据格式:模型的教材
# train.jsonl —— 每行一个教学案例
{"instruction": "用一句话解释递归",
 "output": "递归就是函数自己调用自己,直到到达出口条件。"}
{"instruction": "把这句话改成文言文:今天天气真好",
 "output": "今日天朗气清,惠风和畅。"}
# 格式统一 + 质量高 + 数量够 → 微调效果好的三要素
运 行 结 果
(教材越干净,学生学得越好)
第3课监督微调SFT
🎯 趣味项目:训练专属模型📚 教学目标:掌握SFT训练流程,在项目实战中巩固运用
SFT训练流程
Python监督微调 SFT:亲手训一个专属模型
# 四步走:
# ① 准备数据:{"instruction":…, "output":…} JSONL(贵精不贵多)
# ② 选底座:Qwen2.5-1.5B(小而美,学生卡也能训)
# ③ LoRA 微调:只训练插进去的小矩阵
from peft import LoraConfig, get_peft_model
cfg = LoraConfig(r=8, target_modules=["q_proj", "v_proj"])
# model = get_peft_model(base, cfg)   # 可训练参数 <1%
print("LoRA r=8:原模型 1.5B 参数,只训约 1200 万")
print("④ 评估:留出 50 条验证集,看答对率")
print("⑤ 导出合并:merge_and_unload() → 部署")
运 行 结 果
LoRA r=8:原模型 1.5B 参数,只训约 1200 万
④ 评估:留出 50 条验证集,看答对率
⑤ 导出合并:merge_and_unload() → 部署
💾部署与评估(4 课时)
第4课量化技术
🎯 趣味项目:低配电脑也能跑大模型📚 教学目标:掌握4bit、8bit量化、推理优化,在项目实战中巩固运用
4bit8bit量化推理优化
Python量化:让低配电脑跑大模型
from transformers import BitsAndBytesConfig
bnb = BitsAndBytesConfig(
    load_in_4bit=True,            # 16bit → 4bit
    bnb_4bit_quant_type="nf4")
# model = AutoModelForCausalLM.from_pretrained(
#     name, quantization_config=bnb)
# 7B 模型显存:14GB → 约 4GB
运 行 结 果
(显存需求直降 4 倍,速度损失很小)
第5课本地部署
🎯 趣味项目:离线运行大模型📚 教学目标:掌握Ollama、本地推理,在项目实战中巩固运用
Ollama本地推理
PythonOllama:本地跑大模型
# 安装后两条命令搞定:
#   ollama pull qwen2:1.5b    # 下载模型
#   ollama run qwen2:1.5b     # 对话!
# 也提供本地 API:
import requests
r = requests.post("http://localhost:11434/api/chat",
    json={"model": "qwen2:1.5b",
          "messages": [{"role":"user","content":"你好"}]})
print(r.json()["message"]["content"])
运 行 结 果
你好!我是运行在你自己电脑上的AI,断网也能用~
第6课模型评估
🎯 趣味项目:训练效果好不好📚 教学目标:掌握评估方法、对比测试,在项目实战中巩固运用
评估方法对比测试
Python模型评估:效果好不好谁说了算
# 自动指标 + 人工评估 双保险
import time
def blind_test(a_out, b_out):
    """盲测:去标签打乱,人投票谁更好"""
    import random
    pair = [("A", a_out), ("B", b_out)]
    random.shuffle(pair)
    return pair
r = blind_test("基础模型答案", "微调后模型答案")
print("打乱后顺序:", [x[0] for x in r], "(评委不知哪个是谁)")
print("指标三件套:任务答对率 / 忠实度 / 风格符合度")
print("警惕:只在自己出的题上测 = 既当运动员又当裁判")
运 行 结 果
打乱后顺序: ['B', 'A'] (评委不知哪个是谁)
指标三件套:任务答对率 / 忠实度 / 风格符合度
警惕:只在自己出的题上测 = 既当运动员又当裁判
第7课对齐技术入门
🎯 趣味项目:让模型更友好📚 教学目标:掌握DPO、RLHF概念,在项目实战中巩固运用
DPORLHF概念
Python对齐:让模型更「懂事」
# RLHF 三步走(概念):
# ① SFT:先学会做事(监督微调)
# ② RM:训练一个"打分员"(奖励模型)
# ③ RL/PPO/DPO:朝着高分方向优化
# DPO 更简单:直接用"好答案 vs 坏答案"
# 的成对数据训练偏好。
print("目标:有帮助 + 诚实 + 无害")
运 行 结 果
目标:有帮助 + 诚实 + 无害
🌐前沿与责任(2 课时)
第8课多模态大模型
🎯 趣味项目:图文生成都能做📚 教学目标:掌握LLaVA、多模态概念,在项目实战中巩固运用
LLaVA多模态概念
Python多模态大模型:看图说话
# LLaVA 思路 = 视觉编码器 + 语言模型
# 图 → ViT 提特征 → 投影到词向量空间
#        ↓
# 和文字一起喂给 LLM → 生成回答
# 用途:图片问答 / 看图写作 / 图文聊天
运 行 结 果
用户:[上传一张猫的照片] 这是什么?
AI:这是一只橘猫,正趴在键盘上睡觉。
第9课AI伦理与安全
🎯 趣味项目:负责任的AI开发📚 教学目标:掌握偏见、隐私、合规,在项目实战中巩固运用
偏见隐私合规
PythonAI 伦理与安全
# 上线前的「三查」:
checks = {
    "偏见查": "是否对某些群体系统性输出刻板印象?",
    "隐私查": "训练数据 / 对话记录有没有个人信息?",
    "合规查": "生成内容有没有违反法规的风险场景?",
}
for k, v in checks.items():
    print(f"{k}:{v}")
print("学生守则:不造谣、不抄袭、不泄露他人数据")
print("工程手段:敏感词过滤 + 输出审核 + 用户举报通道")
运 行 结 果
偏见查: 是否对某些群体系统性输出刻板印象?
隐私查: 训练数据 / 对话记录有没有个人信息?
合规查: 生成内容有没有违反法规的风险场景?
学生守则:不造谣、不抄袭、不泄露他人数据
工程手段:敏感词过滤 + 输出审核 + 用户举报通道
🎓毕业项目(3 课时)
🏆 毕业项目开发毕业项目开发
🎯 趣味项目:完整大模型应用📚 教学目标:掌握从想法到产品全流程,在项目实战中巩固运用
从想法到产品全流程
Python毕业项目:从想法到产品
# 12 课时的成人大片节奏:
stages = [
    ("W1", "选品:真实痛点 + 数据可得 + 两周能做完"),
    ("W2", "MVP:砍到只剩核心功能,先能跑"),
    ("W3", "打磨:错误处理 / 提示词 / 界面细节"),
    ("W4", "发布:部署上线 + 写说明 + 答辩彩排"),
]
for w, task in stages:
    print(f"{w}:{task}")
print("验收:真实用户试用 5 分钟,说得出『真方便』")
运 行 结 果
W1:选品:真实痛点 + 数据可得 + 两周能做完
W2:MVP:砍到只剩核心功能,先能跑
W3:打磨:错误处理 / 提示词 / 界面细节
W4:发布:部署上线 + 写说明 + 答辩彩排
验收:真实用户试用 5 分钟,说得出『真方便』
03

实践应用

每个知识点都要落到能跑、能玩、能演示的作品上。

🏆 期末项目展示你的作品

期末项目是整学期知识点的综合检验场:演讲、演示、问答。学生将独立完成需求拆解 → 功能实现 → 调试打磨 → 上台演示的完整闭环。

💡 验收标准:功能完整可运行、代码结构清晰、能给同学讲明白实现原理。
📊本学期课时一览表(可打印)
课次主题趣味项目知识点
1微调入门让模型说特定风格微调原理、LoRA
2数据准备制作训练数据集数据格式、清洗、标注
3监督微调SFT训练专属模型SFT训练流程
4量化技术低配电脑也能跑大模型4bit/8bit量化、推理优化
5本地部署离线运行大模型Ollama、本地推理
6模型评估训练效果好不好评估方法、对比测试
7对齐技术入门让模型更友好DPO、RLHF概念
8多模态大模型图文生成都能做LLaVA、多模态概念
9AI伦理与安全负责任的AI开发偏见、隐私、合规
10-12毕业项目开发完整大模型应用从想法到产品全流程
13毕业答辩展示你的作品演讲、演示、问答
04

总结提升

把一学期的知识点串成体系,看清来路与去向。

📌知识点体系图
🎯 微调技术
微调原理LoRA数据格式清洗标注SFT训练流程
💾 部署与评估
4bit8bit量化推理优化Ollama本地推理评估方法对比测试DPORLHF概念
🌐 前沿与责任
LLaVA多模态概念偏见隐私合规
🎓 毕业项目
从想法到产品全流程
🔄承上启下

◀ 上一章:七年级 上学期 · AI Agent与应用开发

💪 学完这学期,你将获得

走完大模型最后一公里:LoRA 微调、数据集制作、量化与本地部署、效果评估与对齐,最终完成可演示的大模型产品并毕业答辩。

结业时你将带走:1 个完整大模型产品 + LMCC 认证 + 从想法到上线的全栈能力。

05

学习检测

避开高频易错点,再用速查表把语法焊进肌肉记忆。

易错点 1

训练数据脏乱

✗ 错误写法
格式五花八门
# 模型学了一堆噪声
✓ 正确写法
统一 JSONL 格式
人工抽检 20 条
💡 为什么:微调数据贵精不贵多,脏数据教出的模型一嘴胡话。
易错点 2

LoRA 秩乱设

✗ 错误写法
r = 128  # 过拟合
r = 1   # 学不动
✓ 正确写法
r = 8 或 16 起步
看验证损失再调
💡 为什么:秩越大可学容量越大也越容易过拟合,8/16 是稳妥起点。
易错点 3

推理忘 eval

✗ 错误写法
model.train 模式直接推理
# dropout 还在随机
✓ 正确写法
model.eval()
+ torch.no_grad()
💡 为什么:训练模式和推理模式行为不同,别让模型「边抖边答」。
易错点 4

量化后不测精度

✗ 错误写法
压完直接上线
# 精度掉了不知道
✓ 正确写法
量化前后
跑同一套评估对比
💡 为什么:4bit 压缩有损,任务关键场景必须回归测试。
📋语法速查表
功能写法一句话理解
LoRA 配置LoraConfig(r=8, target_modules=…)只训小矩阵
数据格式{"instruction":…,"output":…} JSONLSFT 标准口粮
训练监控loss 曲线 / 验证损失看曲线防过拟合
4bit 量化BitsAndBytesConfig(load_in_4bit)显存直降 4 倍
本地运行ollama run llama3一条命令本地大模型
评估方法人工盲测 / 对比测试 / 量表打分效果好不好说了算
对齐技术SFT → DPO / RLHF让模型更「懂事」
伦理检查偏见 / 隐私 / 合规 三查负责任的 AI 开发
分 层 作 业

练习作业

按 A / B / C 三档难度自主选择:保底完成 A 组,学有余力挑战 B、C 组。

A组·基础任选其一深入完成
  1. 用自己的话写清 LoRA 微调与全量微调的区别(不超过 200 字)。
  2. 制作 10 条高质量 SFT 训练数据(统一 JSONL 格式)。
  3. 用 ollama 在本地跑起一个小模型并对话。
B组·提高任选其一深入完成
  1. 微调一个「说文言文」风格的模型,对比前后效果。
  2. 量化前后各跑 20 条测试,记录精度与速度变化。
  3. 为自己的模型写一份完整的部署文档。
C组·挑战任选其一深入完成
  1. 完整大模型应用:从需求到上线全流程(毕业项目)。
  2. 毕业答辩:8 分钟演讲 + 现场演示 + 评委问答。
  3. 把六年学习写成一篇技术博客(复盘与展望)。