题目重点:设计数据上传、训练调度、失败恢复、模型验收及版本发布的完整闭环。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 明确设计让用户在AWS上finetune custom LLM,未指定托管产品、模型和GPU规模。练习架构不假定某产品所有限制;用户选择合法base模型及有使用权的数据。
- 训练是长作业,API提交成功不代表模型可发布。多个租户数据、检查点、凭据和算力配额隔离,费用与预算有上限。
解题路线
- 控制面CreateJob校验base version、dataset manifest、训练参数和预算,使用幂等client key生成jobId。状态queued→provisioning→running→evaluating→succeeded/failed/cancelled,worker租约与attempt分开记录。
- 数据准备校验格式、去重、敏感字段和训练/验证划分,manifest固定对象版本/hash。训练不能跟随数据路径实时改变,否则失败重启跑的不是同一实验。
- 调度器按GPU需求和租户配额选worker;镜像和依赖固定,短期角色只访问指定对象。checkpoint先上传分片再发布完整manifest,半成品不能被下一attempt当完整恢复点。
- 恢复同时保存模型/optimizer/scheduler/RNG和数据进度;只恢复权重不等于继续同一训练。分布式进度/随机策略影响是否能精确复现,提前声明容错恢复合同。
- 验收看独立验证、任务指标、安全回归和基础能力退化,再写model registry候选版本。发布走灰度和rollback,失败训练不能覆盖当前服务版本;费用按attempt资源时间记账,取消需确认实际资源释放。
手动走一遍
job42的attempt1掉卡,只有checkpoint manifest17完整,attempt2从17恢复;不读取未完成的18分片。模型任务分改善但基础能力回归失败,保留artifact但不自动上线;用户可复现相同manifest和配置。
规模与取舍
全参训练参数/梯度/优化器状态常远超推理权重,LoRA减少可训练状态但仍需base权重/activation。例7B模型BF16仅权重约14GB,不能把14GB当训练总显存。训练耗时与tokens、模型、硬件和并行效率有关,队列时间单独报告。
易错点与追问
容易失分的边界
- API返回jobId就把状态标succeeded。
- checkpoint部分上传可见就恢复。
- 跨租户共用缓存/数据凭据,模型输出可能泄漏。
继续深挖
- 用户取消时正在提交checkpoint,谁决定最终状态?
- 如何支持spot中断且不重复计费或重复发模型版本?
- 全参与adapter训练怎样共享验收与registry接口?
