Hasty Briefsbeta

双语

Writing an LLM from scratch, part 34a -- building a JAX training loop for an LLM training run

14 hours ago
  • 作者根据Sebastian Raschka的书籍笔记,使用JAX、NNX和Optax从零构建了一个LLM训练循环。
  • 在构建完整LLM之前,使用“A-to-A”模型(恒等映射)测试了训练循环。
  • 主要挑战包括OOM错误、JIT装饰器问题以及学习如何使用JAX进行梯度累积。
  • 梯度累积通过Optax的MultiSteps包装器实现,梯度裁剪使用了clip_by_global_norm。
  • 使用Safetensors和Orbax实现了检查点保存和从检查点恢复,并在学习率提取代码中使用了调度器。
  • 该训练循环在A-to-A任务上实现了110k tokens/秒的吞吐量和0.001的最终损失。
  • 学习率调度使用了Optax的warmup_cosine_decay_schedule,并自动绘制了学习率随时间变化的图表。
  • 下一篇文章将介绍使用该训练框架构建和训练实际的小型LLM。