Paddle Inference部署推理(二)
二:Paddle Inference推理之保存与加载模型API详解
模型训练后,训练好的模型参数保存在内存中,通常需要使用模型保存(save)功能将其持久化保存到磁盘文件中,并在后续需要训练调优或推理部署时,再加载(load)到内存中运行。详细介绍不同场景下模型保存与加载的方法。
概述
在模型训练过程中,通常会在如下场景中用到模型的保存与加载功能:
训练调优场景:
- 模型训练过程中定期保存模型,以便后续对不同时期的模型恢复训练或进行研究;
- 模型训练完毕,需要保存模型方便进行评估测试;
- 载入预训练模型,并对模型进行微调(fine-tune)。
推理部署场景:
- 模型训练完毕,在云、边、端不同的硬件环境中部署使用,飞桨提供了服务器端部署的 Paddle Inference、移动端/IoT端部署的 Paddle Lite、服务化部署的 Paddle Serving 等,以实现模型的快速部署上线。
针对以上场景,飞桨框架推荐使用的模型保存与加载基础 API 主要包括:
a. paddle.save
源代码:地址
:将对象实例 obj 保存到指定的路径中。
入参和返回值详解:
>>> # example 2: Save multiple state_dict at the same time
>>> import paddle
>>> from paddle import nn
>>> from paddle.optimizer import Adam
>>> layer = paddle.nn.Linear(3, 4)
>>> adam = Adam(learning_rate=0.001, parameters=layer.parameters())
>>> obj = {'model': layer.state_dict(), 'opt': adam.state_dict(), 'epoch': 100}
>>> path = 'example/model.pdparams'
>>> paddle.save(obj, path)
b. paddle. Load
源代码:地址
:从指定路径载入可以在 paddle 中使用的对象实例。
入参和返回值详解:
>>> # example 2: Load multiple state_dict at the same time
>>> import paddle
>>> from paddle import nn
>>> from paddle.optimizer import Adam
>>> layer = paddle.nn.Linear(3, 4)
>>> adam = Adam(learning_rate=0.001, parameters=layer.parameters())
>>> obj = {'model': layer.state_dict(), 'opt': adam.state_dict(), 'epoch': 100}
>>> path = 'example/model.pdparams'
>>> paddle.save(obj, path)
>>> obj_load = paddle.load(path)
c. paddle.jit.save
源代码:地址
:将输入的 Layer 或 function 存储为 paddle.jit.TranslatedLayer 格式的模型,载入后可用于预测推理或者 fine-tune 训练。该接口会将输入 Layer 转写后的模型结构 Program 和所有必要的持久参数变量存储至输入路径 path 。
path 是存储目标的前缀,存储的模型结构 Program 文件的后缀为 .pdmodel ,存储的持久参数变量文件的后缀为 .pdiparams,同时这里也会将一些变量描述信息存储至文件,文件后缀为 .pdiparams.info,这些额外的信息将在 fine-tune 训练中使用。
存储的模型能够被以下 API 完整地载入使用:
- paddle.jit.load
- paddle.static.load_inference_model
- 其他 C++ 预测库 API
入参和返回值详解:
d. paddle.jit.load
源代码:地址
原文地址:https://blog.csdn.net/weixin_46319994/article/details/144008431
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!