手上有张消费级显卡,想自己训一个 1.5B 的小模型,结果一上手就懵:数据从哪来、要什么格式、显存够不够、全量训还是只调一小部分、训完怎么确认不是训废了。这篇按顺序把这条路径拆成几步,每步给判断标准和要动手做的事,显存和算力这类会变的数,一律指向站内对应页面当时的口径。
手上有张消费级显卡,想自己训一个 1.5B 的小模型,结果一上手就懵:数据从哪来、要什么格式、显存够不够、全量训还是只调一小部分、训完怎么确认不是训废了。这篇按顺序把这条路径拆成几步,每步给判断标准和要动手做的事。
显存和算力这类会随着硬件换代一直变的数,本文一律不写死,只告诉你去站内哪个页面按当时的口径核对。你真正要带走的是顺序感:先算卡够不够,再定数据格式,再选训练路线,最后跑起来看什么。
先算清楚你的卡能不能训,而不是先写代码
训练显存跟推理不是一个量级。推理只放权重和缓存,训练还要放梯度、优化器状态和中间激活,同参数量的训练显存通常是推理的数倍,具体倍数随精度、优化器类型和批大小变。别靠记忆估,先去站内把这张卡按你的模型规模和精度算一遍。
- 算显存账到 /compute/sizing 输入参数量、训练精度和大致批大小,拿到显存估算区间。估出来超过卡容量就别硬上,先换路线。
- 查卡规格与租用价到 /compute/gpus 看你这张卡的显存与算力规格,到 /compute/gpu-rental 看同档卡租用价,用来判断本地训不动时补卡或租卡哪条更划算。
- 定路线1.5B 这个量级,单卡全参数训练的边界很窄。多数人的现实起点是冻结大部分层只训一部分,或者直接走低秩微调那条路。
数据这一步:格式对齐、清洗、留出验证集
先定任务形态再定数据格式:指令跟随要成对的输入输出,纯续写要长文本,分类要带标签。格式没定就去写训练脚本,返工概率极高,因为训练脚本里数据加载那段跟格式是绑死的。
- 收集成文本:先把你能拿到的原始材料堆到一起,别在这一步就纠结格式。
- 统一成一种结构,比如一问一答、或者纯文本块,全篇保持一致。
- 去重去噪:乱码、重复段落、超长行、混进来的导航文字都要清掉。
- 按比例切出验证集,并且单独留一个自测集放你没训过的样本。
样本量别拍脑袋。几百条能看出风格偏好,想改变某类任务的稳定表现通常要更多。具体门槛去 /training 看站内整理的数据规模经验值,别照搬别人博客里的数字。
| 数据问题 | 现场表现 | 先做什么 |
|---|---|---|
| 格式不统一 | 训练损失忽高忽低 | 回数据层统一结构,别调学习率 |
| 重复样本太多 | 验证损失好看但输出死板 | 去重后重切验证集 |
| 没有自测集 | 训完不知道好坏 | 立刻留出一批未参与训练的样本 |
| 序列过长被截断 | 关键内容丢失,答非所问 | 缩短样本或加长序列,二者取一 |
具体怎么做,可以参照 /stacks/fine-tuning 里各服务商公开的数据要求做反向对照——他们要求什么格式,你就照着整理,等于免费拿到一份格式规范。
选路线、定关键参数,别一上来就全量
三条常见路线各有适用面:低秩微调最省显存,适合让模型学风格和固定格式;只训部分层适合数据和算力都不多时;全参数训练效果上限高,但对显存和数据的胃口也大。先用显存估算把不可能的选项筛掉,再在剩下的里选。
- 学习率
- 最影响成败的一个数,过大损失震荡不降,过小几乎不动。
- 批大小
- 受显存限制时用梯度累积凑等效批大小,注意两者要配套调。
- 训练轮数
- 不是越多越好,掉到过拟合就是浪费卡时。
- 序列长度
- 直接吃显存,长文本任务要按最长的样本提前估。
判断训练轮数什么时候该停,依据是验证集表现什么时候开始不升反降。这个训练与验证的分工思路,/training 里有专门的讲解,先看懂再动手,能少跑好几轮冤枉训练。
检查点要按固定间隔存,别等到跑完才发现中间崩了。存的间隔按你单次能接受的时间定——你愿意等一小时看一次结果,就按一小时存一次。
跑起来之后看什么:日志、曲线与验收
先跑一个极小的子集确认流程通不通:脚本不报错、能前向反向、能存下检查点,再放开全量。这样能把配置错误和真训练问题分开,否则你分不清是代码写错了还是模型学不动。
- 看三条线训练损失、验证损失、以及自测集上的实际输出。前两条是参考,第三条才是别人问起来能拿出手的证据。
- 按顺序排查损失不降数据格式与标签错位 → 学习率过大或过小 → 批大小与累积步数不匹配 → 序列被截断丢了关键内容。
- 人眼验收把自测集样本的输入输出逐条看一遍。格式跑偏、答非所问这类问题分数看不出来,人眼一眼就能看出。
训完只看一个分数,等于把判断权交给了一个你还没验证过的指标。
如果你后来想把训练好的模型接出去做推理,本地显存又不够同时跑训练和推理,可以先用 /tools/speed-test 这类工具测一遍推理链路的实际表现,再决定是本地部署还是走中转。成本上本地电费和中转按量计费哪个划算,去 /price-watch 看当时的比价口径。
下一步先把显存估算和卡规格两张表看一遍,再回过头决定训练路线;路线定错了,后面数据清洗和参数调优全是白做。→常见问题
本地显卡显存不够,是不是就训不了 1.5B 了?
通常还有空间,但要改预期。可以降序列长度、走低秩微调、只训部分层、用梯度累积凑等效批大小,这几招都能显著压显存。代价是效果上限和训练时长会受影响。先把你的卡和模型规模丢到 /compute/sizing 算一遍,看差多少再决定是压配置还是租卡。
训练数据要多少条才够?
没有通用数字,跟任务难度和你期望的改变幅度强相关。改风格、统一输出格式,几百到几千条往往就有效果;要让模型学会新的知识或复杂推理,需求会明显上升。别只堆数量,清洗和格式对齐对结果的影响往往比多加一批脏数据更大。
训完效果没变好,是哪里出问题?
按顺序排查:先看数据格式和标签有没有错位,这是最常见也最容易忽略的;再看学习率是不是太大导致震荡;然后确认训练轮数是否过拟合或欠拟合;最后检查评测方式本身是不是不合理,比如拿训练集里的样本当测试。一条条排过去,比盲目重训省时间。