当前位置: 首页 > news >正文

深度学习篇---断点重训模型部署文件


文章目录

  • 前言
  • 一、断点重训(Checkpoint)文件
    • 1. 动态图(DyGraph)模式
      • .pdparams 文件
      • .pdopt 文件
      • .pdscaler 文件
      • .pdmeta 或 .pkl 文件
    • 2. 静态图(Static Graph)模式
      • .pdparams 和 .pdopt 文件
      • .ckpt 文件
    • 3. 恢复训练
  • 二、模型部署文件
    • 1. 动态图部署文件
      • .pdmodel
      • .pdiparams
      • 示例代码
    • 2. Paddle Inference 部署
  • 三、核心区别总结
  • 四、关键注意事项
    • 断点重训
    • 模型部署
    • 文件管理


前言

PaddlePaddle 框架中,断点重训(恢复训练)和 模型部署 需要保存不同类型的文件


一、断点重训(Checkpoint)文件

断点重训需要保存训练过程中的完整状态,包括 模型参数优化器状态学习率调度器状态 以及 训练进度信息(如当前 epoch、迭代步数等)
PaddlePaddle 动态图(推荐)和静态图模式下保存的文件略有不同,但核心文件后缀如下:

1. 动态图(DyGraph)模式

.pdparams 文件

保存模型的 可学习参数(如权重、偏置),通过 model.state_dict() 生成。

paddle.save(model.state_dict(), "model.pdparams")  # 仅保存模型参数

.pdopt 文件

保存 优化器的状态(如动量、梯度历史等),通过 optimizer.state_dict() 生成。

paddle.save(optimizer.state_dict(), "optimizer.pdopt")  # 保存优化器状态

.pdscaler 文件

如果使用了混合精度训练(paddle.amp.GradScaler),保存梯度缩放器的状态

paddle.save(scaler.state_dict(), "scaler.pdscaler")

.pdmeta 或 .pkl 文件

保存其他元信息(如当前 epoch、迭代步数、损失值等),需用户自定义保存。

checkpoint = {
    "epoch": 10,
    "step": 1000,
    "loss": 0.02,
    "model_state": model.state_dict(),
    "optimizer_state": optimizer.state_dict()
}
paddle.save(checkpoint, "checkpoint_epoch10.pdparams")  # 自定义后缀

2. 静态图(Static Graph)模式

.pdparams 和 .pdopt 文件

与动态图类似,分别保存模型参数和优化器状态

.ckpt 文件

检查点文件(如 model.ckpt-0),通常通过保存所有持久化变量(包括模型参数和优化器状态)。

3. 恢复训练

恢复训练时需 同时加载模型参数、优化器状态和元信息:

# 加载模型参数和优化器状态
model_state_dict = paddle.load("model.pdparams")
optimizer_state_dict = paddle.load("optimizer.pdopt")
model.set_state_dict(model_state_dict)
optimizer.set_state_dict(optimizer_state_dict)

# 加载元信息(如 epoch、step)
checkpoint = paddle.load("checkpoint_epoch10.pdparams")
current_epoch = checkpoint["epoch"]

二、模型部署文件

部署模型时需要将模型结构和参数固化生成推理专用的文件。PaddlePaddle 支持两种部署格式:

1. 动态图部署文件

使用 paddle.jit.save() 导出为 静态图推理模型(推荐)

.pdmodel

存储模型的 静态图结构(计算图定义),用于推理时加载模型结构

.pdiparams

存储模型的 参数值,与 .pdmodel 配合使用。

示例代码

model.eval()  # 切换为评估模式
input_spec = [paddle.static.InputSpec(shape=[None, 3, 224, 224], dtype="float32")]
paddle.jit.save(model, "deploy_model", input_spec=input_spec)  # 生成 deploy_model.pdmodel 和 deploy_model.pdiparams

2. Paddle Inference 部署

部署时使用 paddle.inference 库加载 .pdmodel 和 .pdiparams

config = paddle.inference.Config("deploy_model.pdmodel", "deploy_model.pdiparams")
predictor = paddle.inference.create_predictor(config)

三、核心区别总结

用途 文件类型 动态图(DyGraph) 静态图(Static Graph)
断点重训 模型参数 .pdparams .pdparams 或 .ckpt
优化器状态 .pdopt .pdopt 或 .ckpt
元信息 自定义(如 .pdmeta 或 .pkl) 自定义
模型部署 模型结构 .pdmodel model
模型参数 .pdiparams params

四、关键注意事项

断点重训

  1. 必须同时保存 模型参数、优化器状态、训练进度元信息,缺一不可。
  2. 混合精度训练时需额外保存 .pdscaler 文件

模型部署

  1. 使用 paddle.jit.save() 导出前需切换模型为评估模式(model.eval())。
  2. 静态图部署需指定输入张量的 InputSpec,确保计算图固定。

文件管理

  1. 建议将**断点文件(.pdparams、.pdopt)部署文件(.pdmodel、.pdiparams)**分目录存储,避免混淆。

通过合理管理这些文件,可以高效实现训练中断恢复模型快速部署!


相关文章:

  • springboot在feign和线程池中使用TraceId日志链路追踪(最终版)-2
  • Windows10即将开始收费更新!每年费用61美元
  • 群核科技持续亏损近18亿:营销费用偏高,市场份额优势面临挑战
  • vue3 数据监听(watch、watchEffect)
  • 【前端】原生项目与框架项目区别
  • 每天认识一个设计模式-建造者模式:复杂对象的“装配式革命“
  • rabbitmq承接MES客户端服务器
  • React Native集成到原生iOS应用中
  • Keysight ADS教学 - 一维二維參數掃描(parameter sweep)
  • Appium Inspector使用教程
  • [算法笔记]一段数量变化的无序区间的中位数查找--双堆法
  • RabbitMQ 核心组件及功能详解
  • tar包部署mongo
  • 登录时图形校验
  • openstack连接云主机
  • MATLAB 控制系统设计与仿真 - 29
  • Java性能调优实战指南:从理论到实践
  • Linux 搭建dns主域解析,和反向解析
  • 联核防爆无人叉车:高危环境中的安全搬运守护者
  • Sentinel 限流利器(功能以及源码解析)
  • 广州市品牌网站建设企业/汽车品牌推广策划方案
  • 深圳建设网站过程/服装店营销策划方案
  • 今日国际新闻最新头条10条/seo优化设计
  • 诈骗网站怎么做的/策划方案网站
  • 奇米网怎么做网站/百度一下首页网页手机版
  • 做网站英文编辑有前途吗/百度识图在线