断点续训神器:Llama Factory云环境自动保存checkpoint实践

断点续训神器:Llama Factory云环境自动保存checkpoint实践

训练大型语言模型(如72B参数的Qwen或Baichuan)时,最令人头疼的问题莫过于云实例突然被回收,导致训练进度全部丢失。本文将介绍如何利用Llama Factory框架在云环境中实现自动保存checkpoint,确保训练进度可随时恢复。

这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含该镜像的预置环境,可快速部署验证。Llama Factory是一个专为大模型微调设计的开源框架,支持全参数微调、LoRA等多种方法,特别适合在云环境中进行长时间训练任务。

为什么需要断点续训功能

训练72B级别的大模型往往需要数天甚至数周时间,而云实例可能因各种原因(如计费周期、维护回收)被中断。传统的手动保存方式存在几个痛点:

  • 忘记保存导致进度丢失
  • 保存间隔过长,恢复后仍需重复计算
  • 检查点文件管理混乱

Llama Factory通过以下机制解决这些问题:

  • 自动定时保存训练状态
  • 支持从任意检查点恢复训练
  • 优化检查点存储策略,平衡IO开销和安全性

环境准备与资源配置

在开始之前,我们需要确保环境满足大模型训练的基本要求。以72B模型全参数微调为例:

  • GPU建议配置:
  • 至少8张A800/A100 80G显卡
  • 启用NVLink提升多卡通信效率
  • 存储空间:
  • 原始模型约需140GB空间
  • 每个检查点约需50-100GB空间
  • 建议预留1TB以上存储

启动训练前,建议运行以下命令检查环境:

nvidia-smi # 查看GPU状态 df -h # 查看磁盘空间 free -h # 查看内存情况 

配置自动保存checkpoint

Llama Factory的自动保存功能主要通过配置文件实现。以下是关键参数设置:

  1. 创建或修改train_config.yaml文件:
training: save_steps: 500 # 每500步保存一次 save_total_limit: 5 # 最多保留5个检查点 save_safetensors: true # 使用安全格式保存 output_dir: "./checkpoints" # 保存路径 deepspeed: stage: 3 offload_optimizer: true offload_param: true 
  1. 启动训练时指定配置文件:
python src/train_bash.py \ --config train_config.yaml \ --model_name_or_path Qwen/Qwen-72B \ --data_path dataset.json \ --bf16 true \ --deepspeed ds_z3_config.json 
提示:save_steps值需要根据实际训练速度调整。对于72B模型,建议设置为500-1000步,避免频繁IO影响训练效率。

从检查点恢复训练

当训练意外中断后,恢复训练非常简单:

  1. 查找最新的检查点:
ls -lt checkpoints | head # 查看检查点时间戳 
  1. 使用--resume_from_checkpoint参数继续训练:
python src/train_bash.py \ --resume_from_checkpoint checkpoints/checkpoint-1500 \ --config train_config.yaml \ --model_name_or_path Qwen/Qwen-72B \ --data_path dataset.json \ --bf16 true \ --deepspeed ds_z3_config.json 

Llama Factory会自动恢复以下状态: - 模型参数 - 优化器状态 - 学习率调度 - 随机数种子

高级配置与优化建议

检查点存储策略优化

对于长期训练任务,可以考虑以下优化方案:

  • 使用云存储挂载检查点目录,避免本地磁盘空间不足
  • 启用检查点压缩,减少存储占用: yaml training: save_compressed: true # 启用压缩
  • 定期备份重要检查点到持久化存储

显存不足时的解决方案

如果遇到显存不足(OOM)问题,可以尝试:

  1. 调整微调方法:
  2. 使用LoRA代替全参数微调
  3. 尝试QLoRA进一步降低显存需求
  4. 优化训练配置: yaml training: per_device_train_batch_size: 2 # 减小batch size gradient_accumulation_steps: 8 # 增加梯度累积 cutoff_len: 512 # 缩短序列长度
  5. 使用更高效的优化器: yaml optimizer: name: adamw_8bit # 使用8bit优化器

实战经验与常见问题

在72B模型训练过程中,我们总结了以下经验:

  • 稳定性比速度更重要:适当降低batch size可以避免OOM导致的中断
  • 监控是关键:建议使用工具监控显存使用情况,提前预警
  • 测试小模型:先用7B模型验证配置正确性,再扩展到72B

常见问题解决方案:

  1. 恢复训练后loss异常升高:
  2. 检查是否使用了相同的随机种子
  3. 确认数据加载顺序没有改变
  4. 检查点损坏无法加载:
  5. 优先尝试加载上一个检查点
  6. 检查磁盘空间是否充足
  7. 多节点训练同步问题:
  8. 确保所有节点能访问共享存储
  9. 使用分布式文件系统如NFS

总结与下一步探索

通过Llama Factory的自动保存checkpoint功能,我们终于可以安心地进行大规模模型训练了。关键要点包括:

  • 合理配置保存间隔和保留数量
  • 熟悉恢复训练的命令行参数
  • 根据硬件条件优化训练配置

下一步可以尝试:

  • 结合WandB等工具实现训练可视化监控
  • 探索混合精度训练的更多优化可能
  • 测试不同微调方法对模型性能的影响

现在,你可以放心地启动那个72B模型的训练任务了。即使云实例被回收,也能从上次中断的地方继续,不再需要从头开始。祝你的大模型训练之旅顺利!

Read more

WEB 学习框架搭建

WEB 学习框架搭建

WEB 学习框架搭建 (写了几道web题目,都感觉无法下手,后来觉得还是得系统搭建框架学习,如果连基础知识都有很多不明白,光知道各种注入方法也没有什么用,以下为借助AI的学习记录) web应用框架 前端(XSS,CSRF)-后端(SQL,越权,文件上传,文件包含。。。)-数据库 场景:用户在小程序上输入手机号和密码,点击“登录”。 第一步:前端的工作 (用户看得见的部分) 前端负责展示界面、收集数据、调用API、处理响应。 1. 构建界面:画出登录页面,有手机号输入框、密码输入框和“登录”按钮。 2. 监听事件:用户点击“登录”按钮时,前端代码被触发。 3. 收集与校验:前端获取输入框里的手机号和密码,先做基本校验(如手机号格式、密码非空)。 4. 调用API(

一八零、AG-UI:构建AI前端交互的统一协议

一八零、AG-UI:构建AI前端交互的统一协议

AG-UI:构建AI前端交互的统一协议 引言 随着人工智能技术的飞速发展,AI Agent已经从概念走向实际应用。然而,在将这些智能体集成到前端应用中时,开发者面临着一个关键挑战:如何实现AI Agent与用户界面之间的高效、标准化交互? AG-UI(Agent User Interaction Protocol)正是为解决这一痛点而诞生的开源协议。它不仅仅是一个技术规范,更是连接AI智能体与前端应用的桥梁,让开发者能够构建真正智能化的用户体验。它们能够让开发者构建出真正嵌入UI应用、感知上下文、实时协同的智能体,而不仅仅是一个在后台提供文本答案的API服务。 一、AG-UI是什么? 1.1 核心定义 AG-UI(Agent-User Interaction Protocol) 是由CopilotKit团队提出的开源、轻量级协议,专门用于规范AI Agent与前端用户界面之间的通信流程,是一套开源的Agent与UI界面之间的交互协议。它的核心使命是: 标准化前端应用与AI智能体的连接方式,通过开放协议实现通用的AI驱动系统通信。 1.2 协议定位 在AI生态系统中

Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战

Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战 前言 在进行 Flutter for OpenHarmony 开发时,当我们的鸿蒙应用需要充当“控制中心”角色(如控制智能家居、开启本地调试服务或实现 P2P 实时对抗脚本时),如何在端侧直接拉起一个支持 WebSocket 协议的高性能微服务端?shelf_web_socket 是针对 shelf 后端框架封装的一款官方级 WebSocket 处理器。本文将探讨如何在鸿蒙端构建极致、透明的长连接交互引擎。 一、原直观解析 / 概念介绍 1.1 基础原理 该库本质上是一个 shelf 处理函数(Handler)

低门槛实现 AI 文档解析 | TextIn xParse Dify插件使用教程

低门槛实现 AI 文档解析 | TextIn xParse Dify插件使用教程

TextIn xParse Dify插件简介 Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。它结合了后端即服务(BaaS)和LLMOps的理念,为开发者提供了用户友好的界面和强大的工具,有效降低了AI应用开发的门槛。 TextIn xParse是一个端到端文档处理AI基础设施,致力于将非结构化文档高效转化为可查询、可分析的数据资产。 目前TextIn xParse插件已在Dify市场上架,帮助用户搭建工作流,提供强大的文档解析和处理能力。 * Dify官网地址:https://dify.ai/zh * xParse Dify插件下载地址:https://marketplace.dify.ai/plugins/intsig-textin/xparse xParse在Dify中的使用方法 一、xParse Dify插件亮点 * 多种解析引擎支持:支持TextIn自研高性能解析引擎(推荐)、MinerU、PaddleOCR等多种行业内先进的解析引擎,可根据文档类型灵活选择。 * 强大的文档处理能力:支持PDF、Wor