SWE / MLE / Applied Scientist · ML / System Design

Amazon AWS自定义LLM微调:作业、检查点与租户隔离

设计数据上传、训练调度、失败恢复、模型验收及版本发布的完整闭环。

题目重点:设计数据上传、训练调度、失败恢复、模型验收及版本发布的完整闭环。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 明确设计让用户在AWS上finetune custom LLM,未指定托管产品、模型和GPU规模。练习架构不假定某产品所有限制;用户选择合法base模型及有使用权的数据。
  • 训练是长作业,API提交成功不代表模型可发布。多个租户数据、检查点、凭据和算力配额隔离,费用与预算有上限。

解题路线

  1. 控制面CreateJob校验base version、dataset manifest、训练参数和预算,使用幂等client key生成jobId。状态queued→provisioning→running→evaluating→succeeded/failed/cancelled,worker租约与attempt分开记录。
  2. 数据准备校验格式、去重、敏感字段和训练/验证划分,manifest固定对象版本/hash。训练不能跟随数据路径实时改变,否则失败重启跑的不是同一实验。
  3. 调度器按GPU需求和租户配额选worker;镜像和依赖固定,短期角色只访问指定对象。checkpoint先上传分片再发布完整manifest,半成品不能被下一attempt当完整恢复点。
  4. 恢复同时保存模型/optimizer/scheduler/RNG和数据进度;只恢复权重不等于继续同一训练。分布式进度/随机策略影响是否能精确复现,提前声明容错恢复合同。
  5. 验收看独立验证、任务指标、安全回归和基础能力退化,再写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接口?
✓已复制微信号!