INTERACTIVE ARCHITECTURE

在沙发上训练 AI 模型

SofaGenius 是一个 AI 研究助手 — 你在聊天框里说一句话, 它就帮你跑模型训练、看实验数据、找数据集,全程不需要写一行代码。
这个页面带你看看,这件「躺着就能干」的事情背后到底是怎么运转的。

往下滑,开始探索
ARCHITECTURE

七层技术架构

从你的浏览器到 GPU,一共要穿过七层楼。点击任意一层,看看它在干什么。

👤
你 — 浏览器里的对话
React + TypeScript + Tailwind CSS

你打开网页,看到一个聊天界面。左边是对话区,右边是可视化卡片区。你说一句话,比如「帮我训练一个代码生成模型」,消息就发出去了。

前端用 React 19 写的,部署在 Vercel 上。聊天消息通过 SSE(一种实时推送技术)流式传回来,所以你能看到 Agent 一边思考一边打字。

就像微信聊天,对方正在输入...你能实时看到文字冒出来
🔒
Supabase — 登录 + 记忆
身份验证、对话存储、用户设置

每次你登录,Supabase 帮你验证身份(用 JWT token)。你的对话历史、可视化卡片、W&B / HuggingFace 的密钥,全都存在 Supabase 的 PostgreSQL 数据库里。

这样你关掉浏览器再打开,之前的对话还在。就像 iCloud 自动同步。

Supabase = 你的账号系统 + 云端笔记本
🧠
Claude Agent — 大脑
Anthropic Claude Sonnet · 理解意图、编排任务、调用工具

这是整个系统的大脑。你的消息先经过一个轻量级分类器(Claude Haiku),判断你想干什么:看实验数据?找数据集?还是训练模型?然后把任务分配给对应的专家 Agent。

每个 Agent 手里都有一套「工具」— 比如训练 Agent 可以调用 Modal 的 GPU,数据 Agent 可以用 SQL 查数据集。Agent 会自己决定用哪个工具、传什么参数。

Claude = 一个超级聪明的项目经理,听懂你的需求,然后指挥一群专家去干活
Modal — GPU 算力
按需启动 A100 / H100 / B200 GPU,按秒计费

当 Agent 决定要训练模型,它不是在你的电脑上跑 — 它会叫 Modal 帮忙开一台带超强 GPU 的云服务器。训练跑完,服务器自动关掉,只收你用了多少秒的钱。

一个 sanity check(1 步训练)大概花 $0.01,几秒钟搞定。完整训练可能要 $3-10,跑 1-3 小时。

Modal = 云端的超级电脑,用多少付多少,像打车一样
🔧
训练框架 — Unsloth + TRL
LoRA 微调、GRPO 强化学习

GPU 开好了,但还需要「训练框架」来指挥 GPU 干活。Unsloth 负责加速模型加载和 LoRA 适配,TRL(HuggingFace 的训练库)提供 SFTTrainer 和 GRPOTrainer 来跑不同训练方法。

SofaGenius 支持两种训练方法:SFT(照着标准答案学)和 GRPO(用奖励信号自己找最优解)。两种方法都用 LoRA — LoRA 不是某种训练方法,而是一种省显存的技术,SFT 和 GRPO 都通过 LoRA 来高效地更新模型参数。

LoRA = 在百科全书上贴便利贴(省显存的技术,SFT 和 GRPO 都用它)。SFT = 照着答案抄。GRPO = 做练习题打分。Unsloth = 让贴便利贴的速度快两倍
🤗
HuggingFace — 模型仓库
存储训练好的模型权重 + 训练数据来源

训练完成后,模型的「毕业成果」(权重文件)会上传到 HuggingFace Hub — 这是 AI 界的 GitHub,全世界的研究者都在上面分享模型和数据集。

训练用的数据也是从 HuggingFace 上下载的。SofaGenius 的 Scout Agent 还能帮你在上面搜合适的数据集和模型。

HuggingFace = AI 界的 GitHub,存模型、找数据、分享成果
📊
vLLM + W&B — 推理 & 监控
高性能推理引擎 + 实验追踪看板

vLLM 是一个高性能推理引擎,让训练好的模型跑得飞快,用来做评估和实际部署。

Weights & Biases (W&B) 是实验记录本 — 训练过程中的每一步 loss 值、reward 变化都会实时记录,SofaGenius 的 Training Agent 可以帮你分析这些曲线,发现异常(比如 loss 突然飙升 = 训练炸了)。

vLLM = 让模型回答问题的高速公路。W&B = 训练过程的心电图监护仪
TRAINING JOURNEY

一次训练之旅

就像团队群聊里的协作接力 — 每个服务负责一段,完成后交棒给下一个。

👤
帮我用 lilyzhng/uigen-ui-code-gen 这份数据训练一个代码生成模型,用 GRPO 方法。
↓ 消息到达后端,Orchestrator 开始工作
🧠
Orchestrator (Claude Haiku)
收到。意图分类:launch(训练启动)。交给 Launch Agent 处理。
🧠
Launch Agent (Claude Sonnet)
好的,我来走一遍训练建议流程:
1. GOAL: 训练 UI 代码生成模型
2. QUALITY SIGNAL: 代码完整性、括号配对、交互性都可以量化 → GRPO 可行
3. RECOMMEND: GRPO + task_type=ui_generation
先跑一个 overfit sanity check 验证管道能跑通。

正在调用 propose_training(method="grpo", task_type="ui_generation", run_mode="overfit")
🧠
Launch Agent
✅ 提案卡片已生成:GRPO overfit sanity check,1 步训练,4 个 completion,A100 GPU,预估 $0.01。
需要你点「Approve & Launch」确认。
👤
好,launch it!
↓ Agent 调用 launch_training,Modal 开始干活
Modal
收到!正在启动 A100-80GB GPU...
📦 加载模型:Qwen2.5-Coder-14B
📦 贴上 LoRA 便利贴(rank=32)
📦 加载数据集,准备 4 条训练样本
🔧
Unsloth + TRL (在 GPU 上)
GRPO 训练开始!每步生成 4 个候选回答,用 5 个奖励函数打分:
✅ completeness_reward (代码写完了吗?)
✅ validity_reward (括号配对了吗?)
✅ interactivity_reward (有 useState/onClick 吗?)
✅ quote_balance_reward (引号闭合了吗?)
✅ length_penalty (太短或太长扣分)
📊
Weights & Biases
实验记录中... 项目 grpo-ui-gen
Step 1: reward = 12.5, loss = 0.83
🔗 W&B 链接已就绪
🤗
HuggingFace Hub
模型权重已保存到 checkpoint volume。
(overfit 模式不推送到 Hub,prod 模式才会)
↓ 训练完成,结果传回 Agent
🧠
Launch Agent → 你
✅ GRPO overfit sanity check 完成!跑了 0.3 分钟,final reward = 12.5。管道跑通了。

下一步可以做 exp 模式(50 步 / 100 条数据),验证模型确实在学习。你说一声我就安排。
👤
看看训练曲线长什么样?
🧠
Orchestrator
意图分类:training(实验监控)。交给 Training Agent。
🧠
Training Agent
调用 analyze_run_health()...

💚 状态:healthy,无异常。
reward 从 8.2 上升到 12.5(+52%)。
已生成 W&B Health Card,右边面板可以看到交互式图表。
AGENT SYSTEM

五个 Agent,各有所长

Orchestrator 听懂你的意图后,把任务交给对应的专家。每个 Agent 手里有自己的工具箱。

🧠 Orchestrator
Claude Haiku 快速分类 → 路由到对应 Agent → 注入用户凭据 → 实时 SSE 推送结果
📊
Training Agent
W&B 监控专家。看 loss 曲线、检测训练异常(loss spike / 梯度爆炸 / 过拟合)、对比多次实验。
get_wandb_info list_wandb_runs get_run_metrics analyze_run_health compare_runs
🗃
Data Agent
数据分析师。在 HuggingFace 上搜数据集、用 DuckDB SQL 查数据、算统计量、自动画图、检测和转换数据格式。
search_hf_datasets discover_dataset_schema run_sql_query compute_stats generate_plot_data create_data_card inspect_dataset_format convert_dataset
🔍
Scout Agent
资源搜索员。在 HuggingFace 上搜数据集和模型,给出推荐卡片,还能帮你起草 Twitter/X 发帖文案。
search_hf_datasets search_hf_models create_scout_card create_draft_post_card
🚀
Launch Agent
训练教练。推荐 SFT 还是 GRPO,估算成本,生成训练提案卡片,点批准后在 Modal 上启动 GPU。
propose_training launch_training modify_and_propose
🎯
Evaluation Agent
考官。支持 3 级评估:Agent 级(SWE-bench / GAIA)、基准测试(MMLU / HumanEval)、自定义视觉评估(VLM judge)。
list_evaluations propose_agent_eval propose_benchmark_eval propose_custom_eval modify_eval_config launch_eval get_eval_results
DESIGN DEEP DIVE

训练系统的设计哲学

为什么这样设计?怎么加新功能?这一节给你看看「引擎盖下面」的设计决策。

1

为什么分成 SFT 和 GRPO 两条路线?

不是所有问题都适合同一种训练方法 — 就像不是所有病都吃同一种药

核心区别在于一个问题:你能不能写出代码来自动判断模型的输出好不好?

SFT (监督微调)

  • 需要:一批「问题 + 标准答案」的配对数据
  • 训练方式:让模型照着标准答案学(抄作业)
  • 适合场景:instruction following、text-to-SQL、对话问答
  • 收敛速度:快且稳定,loss 曲线很平滑
  • 成本:~1x(基准价格)
  • 局限:模型只能学到数据里有的东西,不会「创造」

GRPO (强化学习优化)

  • 需要:一批提示词 + 可编程的奖励函数(reward functions)
  • 训练方式:生成多个候选答案,用奖励打分,鼓励高分(做练习题)
  • 适合场景:JSON 生成、工具调用、代码生成 — 能量化评分的
  • 收敛速度:较慢,曲线有噪声,但能发现新解法
  • 成本:~4x(每步要生成 4 个候选 + 打分)
  • 优势:不需要标准答案,奖励函数可以鼓励模型找到「更好的」答案

举个例子:训练模型生成 React UI 代码。SFT 只能学到训练数据里那些 UI 的写法。GRPO 可以用 5 个奖励函数来引导:代码写完了吗?括号配对了吗?有交互逻辑(useState/onClick)吗?引号闭合了吗?长度合适吗?模型可能会发现训练数据里没有的、但奖励更高的写法。

2

Training Advisor — 为什么需要「训练顾问」?

非 ML 用户不知道选 SFT 还是 GRPO,所以 Agent 要帮他们做决定

当你说「帮我训练一个代码生成模型」,Launch Agent 不会直接开始训练。它会先在内部走一遍结构化推理链(Reasoning Chain),像一个资深 ML 工程师一样帮你分析:

1. GOAL
复述目标 — 用户想干什么?「训练一个能生成 React UI 代码的模型」
2. QUALITY SIGNAL
能不能自动打分? — 代码完整性、括号配对、交互性都可以用程序检测 → GRPO 可行。
如果是「写出通顺的文章」这种主观评价 → SFT 更安全。
3. DATA
数据格式匹配吗? — SFT 需要 input/output 配对。GRPO 只需要 prompt(不需要标准答案)。
4. RECOMMEND
给出推荐 + 理由 — 比如「推荐 GRPO,因为代码质量可以量化评分。代价是训练时间约 4 倍,但能发现更优解法。」
5. TEMPLATE
选最接近的模板 — 从已有的 task_type(tool_calling / ui_generation)中选最合适的,自动填充默认参数。

这就像去看医生:你不需要知道该吃什么药,医生会根据你的症状来判断。Training Advisor 把 ML 决策的门槛从「需要了解 SFT/GRPO 的原理」降低到「说一句话描述你想干嘛」。

3

想加新任务?改 3 个地方就行

注册表模式 (Registry Pattern) 让扩展变得像填表一样简单

系统用了一个叫 _GRPO_TASKS 的注册表 — 每种 GRPO 任务只是一个字典,声明 5 个东西:

# backend/modal_app/app.py — 注册表
_GRPO_TASKS = {
  "tool_calling": {
    "prepare_fn": _prepare_hermes_for_grpo,  # 数据预处理
    "reward_funcs": [json_reward, tool_reward, params_reward, hallucination_reward],
    "eval_fn": _run_grpo_quick_eval,  # 评估函数
    "max_completion_length": 512,
    "default_wandb_project": "grpo-tool-calling",
  },
  "ui_generation": {
    "prepare_fn": _prepare_ui_dataset,
    "reward_funcs": [completeness, validity, interactivity, quote_balance, length],
    "eval_fn": _run_ui_quick_eval,
    "max_completion_length": 2048,
    "default_wandb_project": "grpo-ui-gen",
  },
  # 加新任务?在这里加一个 entry 就行 ↓
}

比如你想加一个新任务 "math_reasoning"(训练模型做数学推理),步骤是:

写奖励函数 — 在 backend/modal_app/ 里新建一个文件,定义 reward functions。比如 _answer_correct_reward(答案对不对)、_step_validity_reward(推理过程合法吗)。

注册到 _GRPO_TASKS — 在 app.py 的注册表里加一个 "math_reasoning" entry,指向你刚写的函数。

加默认参数 — 在 modal_launcher.py_GRPO_TASK_DEFAULTS 里加一行:"math_reasoning": {"max_completion_length": 1024, "wandb_project": "grpo-math"}

就这么多。不需要改 Agent 代码、不需要改前端、不需要加新 API。用户说「帮我用 GRPO 训练 math reasoning」,Agent 会自动调用 propose_training(method="grpo", task_type="math_reasoning")

加新 Agent 也一样简单:backend/agents/ 里写一个新文件(定义 SYSTEM_PROMPT + TOOLS),然后在 orchestrator.py_AGENT_MAP 里加一行注册就行。整个系统的扩展点都是字典/注册表,不需要改核心代码。

4

三步走:overfit → exp → prod

每次训练都要经过三个阶段,防止烧钱踩坑

这是一个强制性的安全网。不管 SFT 还是 GRPO,Agent 都会按这个顺序走:

1. Overfit (试跑)
1 步训练,1-4 条数据。
目的:验证管道能跑通,不报错。
耗时:几秒。花费:~$0.01
2. Exp (验证)
50-100 步,100 条数据。
目的:验证模型确实在学习(loss 在下降)。
耗时:几分钟。花费:~$0.50-1.00
3. Prod (正式)
全量数据,完整训练。
目的:得到最终模型,推送到 HuggingFace。
耗时:1-3 小时。花费:~$3-10

每步都需要用户手动批准(Human-in-the-loop),Agent 不会自己跳到下一步。这样你花 $0.01 就能发现配置问题,而不是直接烧 $10 发现数据格式不对。

EVALUATION

三级评估体系

训练完模型不等于完事了 — 你怎么知道它变好了而不是变傻了?评估就是给模型「考试」。

为什么需要评估? 训练只管「教」,评估才管「考」。你训练了一个代码生成模型,loss 下降了,但 loss 低不代表模型真的写得好 — 可能它学会了格式但逻辑全错,或者在训练数据上表现很好但遇到新问题就傻了(过拟合)。 评估帮你回答一个核心问题:模型在真实任务上到底行不行?

TIER 1

Agent 评估

用 Inspect AI 框架,测完整的 Agent 系统

不只测模型本身,而是测「模型 + 工具调用 + 多步推理」的完整 Agent 能力。给 Agent 真实任务(比如修 GitHub 上的 bug),看它能不能搞定。

  • SWE-bench Verified500 题 · ~$40-50
    ⚠ OpenAI 2026.2 报告:59% 的题目测试用例有缺陷,且存在训练数据污染
  • SWE-bench Pro TODOScale AI · 替代 Verified
  • GAIA466 题 · ~$20-25
  • GPQA448 题 · 研究生级科学问答
  • HumanEval164 题 · Python 代码生成
  • MBPP500 题 · 基础编程
  • PostTrainBench28 题 · 训练后能力
TIER 2

标准基准测试

用 lm-eval-harness / lighteval,测模型本身

学术界通用的「标准化考试」。只测模型,不涉及工具调用。结果可以跟其他模型直接对比(排行榜上的分数就是这么来的)。

两个框架可选:

lm-eval-harness — 经典框架,分数可发论文
lighteval — HuggingFace 出品,用 vLLM 加速,跑得更快

  • MMLU14,042 题 · 多领域知识
  • HumanEval164 题 · 代码生成
  • GSM8K1,319 题 · 数学推理
  • HellaSwag10,042 题 · 常识推理
  • TruthfulQA817 题 · 事实准确性
  • ARC Challenge1,172 题 · 科学推理
TIER 3

自定义视觉评估

Playwright 截图 + VLM Judge 打分

标准基准测不了的东西,自己设计考试。比如 UI 代码生成:让模型写一段 React 代码,用 Playwright 浏览器截图,再让 VLM(视觉大模型)做裁判打分。

核心能力:

  • → Base 模型 vs Fine-tuned 模型 对比
  • → VLM 裁判 + 可配置的领域评分维度
  • → Style collapse 检测(模型输出变得千篇一律)
  • → 按意图对齐度、领域适配、美观度分项打分
裁判模型: Google Gemini 3 Pro Preview (via OpenRouter)

Tier 3 自定义评估流程 — VLM 裁判怎么工作?

用一个比考生更聪明的 AI 来当裁判
📄
取测试题
从 HuggingFace 数据集取 N 条 prompt
🧠
两个模型各答一遍
Base 模型和 LoRA 微调后的模型分别生成代码
📷
Playwright 截图
把生成的代码跑在浏览器里,截下页面截图
🔎
VLM 裁判打分
Gemini 看截图 + 代码,按维度评分(1-10 分)
📊
对比结果
Base vs LoRA 分数对比,看是否有提升

为什么用 VLM 当裁判? 因为有些质量维度(「这个 UI 看起来好不好」「布局合不合理」)没法用规则代码判断。 VLM 可以「看」截图,像人类一样评价视觉效果。评分维度可以按领域定制 — 电商网站关注转化率设计,医疗界面关注信息可读性。

训练 + 评估 = 完整闭环

没有评估的训练就像闭着眼睛开车
📄 准备数据
🔧 训练模型
(SFT / GRPO)
🎯 评估效果
(Tier 1/2/3)
✅ 分数达标?
达标 → 发布
↩ 不达标?调参数重新训练,或换更多/更好的数据,再跑一轮
选哪个 Tier? 「我的 Agent 能不能修真实 bug?」→ Tier 1
「我的模型 MMLU 分提升了吗?」→ Tier 2
「我的模型生成的 UI 好看吗?」→ Tier 3
评估工作流 跟训练一样:先提案 → 用户批准 → 再启动。每次评估都需要 GPU(通过 Modal),费用从 $1 到 $50 不等。
结果去哪看? 所有评估结果记录在 W&B 上。Evaluation Agent 用 get_eval_results 工具从 W&B 拉取分数,生成 Eval Card 展示在右侧面板。
SAAS TOOLBOX

SaaS 工具箱

SofaGenius 站在这些服务的肩膀上。免费额度能撑很久,需要升级的时候再花钱。

🧠
Anthropic API
大脑 — 理解你说的话、决定做什么
Claude 是整个系统的智能核心。Haiku 负责快速分类意图(便宜),Sonnet 负责跑 Agent 工具循环(聪明且划算)。所有对话理解、工具调用决策都靠它。
Haiku 4.5
$1 / $5
每百万输入/输出 token
按量付费,无免费额度。一次对话约 $0.01-0.05。用 Batch API 可打 5 折,Prompt Caching 最多省 90%。
Modal
GPU 算力 — 按需启动,按秒计费
SofaGenius 在 Modal 上部署了训练和评估函数。需要 GPU 的时候 Modal 秒级启动一台云服务器,跑完自动关掉。你只为实际用的秒数付费。
免费额度
$30/月
约 12 小时 A100 时间
何时升级:$30 免费额度跑完时。Team 计划 $250/月,适合需要 >10 个并发 GPU 的团队。学术项目可申请 $10,000 免费额度。
🤗
HuggingFace
模型仓库 + 数据集来源
训练数据从这里下载,训练好的模型权重传回这里。就像 AI 界的 GitHub。SofaGenius 的 Scout Agent 会帮你在上面找合适的数据集和预训练模型。
免费版
$0
无限模型/数据集 + 10GB 存储
何时升级:私有模型超过 10GB 或需要更快的推理 API 配额时。团队版 $20/人/月。
🔒
Supabase
用户登录 + 对话存储
管理用户账号(邮箱/OAuth 登录)、存储所有对话历史和卡片数据、保存每个用户的 W&B 和 HuggingFace 密钥。底层是 PostgreSQL 数据库。
免费版
$0
500MB 数据库 + 50K MAU + 2 项目
何时升级:数据库超 500MB、需要 >2 个项目、或者不想被自动休眠。Team $599/月加 SOC2 合规。
📊
Weights & Biases
实验追踪 — 训练过程的心电图
每一步训练的 loss、reward、学习率都会实时记录。SofaGenius 的 Training Agent 会读取这些数据,帮你画图、检测异常(loss 突然飙升 = 训练可能炸了)。
免费版(个人)
$0
无限实验 + 5GB 存储
何时升级:个人免费版完全够用。需要团队协作或私有项目时升 Teams。
Vercel
前端部署 — 网页上线的地方
SofaGenius 的 React 前端部署在 Vercel 上。推代码到 GitHub,Vercel 自动构建和部署。全球 CDN 加速,访问速度快。
Hobby
$0
100GB 流量 + 1M 请求/月
何时升级:Hobby 仅限个人/非商业用途。团队协作或流量超 100GB 时升 Pro。
🚂
Railway
后端部署 — FastAPI 服务器运行的地方
SofaGenius 的 Python 后端(FastAPI)跑在 Railway 上。支持 Docker 部署,自动扩缩容。按实际 CPU + 内存用量计费。
Hobby
$5/月
含 $5 用量 + 5GB 存储
何时升级:$5 的 Hobby 撑轻量使用没问题。流量大了或需要多服务时升 Pro。
🔧
开源三件套
Unsloth + TRL + vLLM — 全部免费
Unsloth — LoRA 微调加速器,省 60% 显存,快 2 倍。负责模型加载、量化和 QLoRA 优化。
TRL — HuggingFace 的训练库,提供 SFTTrainer(监督微调)和 GRPOTrainer(强化学习)。完全免费。
vLLM — 高性能推理引擎,用在评估阶段让模型快速生成回答。完全免费开源 (Apache 2.0)。
全部免费开源
$0
Apache 2.0 许可,唯一成本是 GPU 算力(通过 Modal 支付)
Unsloth Pro(多 GPU、80% 显存节省)需要联系销售。个人项目免费版完全够用。
GLOSSARY

术语翻译站

第一次见到这些词?正常。每个都用人话解释一遍。

概念之间的关系: 微调(Fine-tuning)是总称,SFTGRPO 是两种具体方法。 LoRA 是一种省显存的技术,SFT 和 GRPO 都用它来高效更新参数,训练出来的小参数叫 Adapter。 训练跑在 GPU 上(用 Gradient Checkpointing 省内存),过程中会产生 Loss(两种方法都有)和 Reward(只有 GRPO 有)。 训练完的模型用 vLLM 跑推理。前端通过 SSE 实时看到 Agent 的回复。

训练方法 — 怎么教模型学东西
Fine-tuning (微调)
拿一个已经学过很多知识的大模型,在特定数据上继续训练,让它变成某个领域的专家。这是一个总称 — SFT 和 GRPO 都是微调的具体方法。
🎓 医学生毕业后去心脏科专攻 — 不是从零开始学,而是在已有基础上精进
↓ 子方法: SFT ↓ 子方法: GRPO ↔ 常搭配: LoRA
SFT (Supervised Fine-Tuning)
微调的一种方法。给模型看一堆「问题 + 标准答案」的配对,让它照着学。收敛快、稳定、成本低,是最常见的微调方式。训练过程中只看 Loss(犯错率),没有 Reward。
📝 抄作业 — 老师给了参考答案,你照着写。优点是学得快,缺点是不会超越答案
↑ 属于: Fine-tuning ↔ 对比: GRPO ↔ 搭配: LoRA ↓ 产出指标: Loss
GRPO (Group Relative Policy Optimization)
微调的另一种方法,基于强化学习。给模型出题,让它同时生成多个候选答案(SofaGenius 默认 4 个),然后用 Reward Functions 打分,鼓励高分答案。不需要标准答案,但需要能写出自动打分的代码。成本约 SFT 的 4 倍。
🎯 做练习题 — 没有标准答案,但有老师在旁边说「这个好 +3 分」「那个不行 -1 分」
↑ 属于: Fine-tuning ↔ 对比: SFT ↔ 搭配: LoRA ↓ 产出指标: Loss + Reward
效率技术 — 怎么用更少的资源训练
LoRA (Low-Rank Adaptation)
一种省显存的参数高效微调技术。不是训练方法,而是训练技巧 — 不改动原始大模型的参数(几十 GB),而是在旁边插入一小组新参数(几十 MB)来学新能力。SofaGenius 里 SFT 和 GRPO 都用 LoRA,训练出来的这组小参数叫 Adapter。
📌 在百科全书上贴便利贴 — 不重写整本书,只在需要修改的地方贴上新内容。SFT 在贴,GRPO 也在贴,只是「决定贴什么内容」的方式不同
↔ 服务于: SFT & GRPO ↓ 产物: Adapter ↔ 加速器: Unsloth
Adapter (适配器)
LoRA 训练出来的那一小组新参数文件。体积很小(几十 MB),可以像「插件」一样加载到原模型上。不管是 SFT 还是 GRPO 训练出来的结果,都是一个 Adapter。训练完推送到 HuggingFace Hub 的就是这个文件。
🔌 手机壳 — 不改手机本身,套上不同的壳就能换一个功能
↑ 由 LoRA 产出 ↔ 存储在: HuggingFace Hub ↔ 推理用: vLLM
Gradient Checkpointing
训练时的另一个省内存技巧(跟 LoRA 互补)。不记住所有中间计算结果,需要时重新算一遍,用时间换空间。LoRA 省的是「参数占的内存」,Gradient Checkpointing 省的是「计算过程占的内存」。
💾 不把每步计算都截图保存,而是记住公式,需要时重新算 — 硬盘省了,但多花点时间
↔ 互补: LoRA ↔ 运行在: GPU
训练信号 — 怎么知道模型学得好不好
Training Loss
模型犯错的程度。数字越小,模型学得越好。SFT 和 GRPO 都会产生 loss — 它是最基础的训练信号。训练过程中 loss 应该持续下降;如果突然飙升,说明训练出了问题。
📈 考试扣分 — loss 从 2.1 降到 0.4 意味着从「及格线挣扎」到「优秀」
↔ 通用信号: SFT & GRPO 都有 ↔ 监控者: W&B + Training Agent
Reward (奖励)
只有 GRPO 才有的信号(SFT 没有)。用可编程的函数来评价模型输出的好坏。SofaGenius 里,工具调用任务用 4 个 reward:JSON 合法吗?工具名对吗?参数对吗?有幻觉吗?UI 生成任务用 5 个:代码完整?括号配对?有交互?引号闭合?长度合适?
⭐ 给作文打分 — 不是一个总分,而是分项评分:格式 +1,内容 +1,创意 +1。这也是 GRPO 的核心优势 — 你可以精确定义「好」的标准
↑ 仅用于: GRPO ↔ SFT 对应物: 没有(SFT 只看 Loss)
基础设施 — 跑在什么上面、怎么通信
GPU (A100 / H100 / B200)
图形处理器,在 AI 领域用来做大规模并行运算。所有训练(SFT / GRPO)和评估都跑在 GPU 上。型号越新越快越贵。SofaGenius 通过 Modal 按需租用,不需要自己买。
💻 A100 是轿车,H100 是跑车,B200 是 F1 赛车 — 都能到终点,速度和价格不同
↔ 租用方: Modal ↔ 省内存: LoRA + Gradient Checkpointing
vLLM
高性能推理引擎 — 训练完的模型需要一个引擎来跑「提问→回答」。vLLM 用 PagedAttention 等技术让模型回答得又快又省内存。SofaGenius 在评估阶段用 vLLM 来跑模型推理。
🚀 高速公路 — 训练是「学知识」,推理是「考试答题」,vLLM 让答题速度快 10 倍
↔ 阶段: 训练之后(推理/评估) ↔ 加载: 原模型 + Adapter
SSE (Server-Sent Events)
一种让服务器主动往浏览器推送消息的技术。SofaGenius 用它实现「打字机效果」— Agent 边思考边把文字和卡片推给你,不需要你刷新页面。
💬 就像微信里看到对方「正在输入...」,文字一段一段冒出来
↔ 连接: 前端 ↔ 后端 ↔ 传输内容: 文字 + 卡片 + 工具状态