【昇腾】常用训练框架导出ONNX,(高能)大于2GB的模型如何导出ONNX

虽然大模型兴起后,各种大模型加速方案兴起,但还是有很多小规模(2B以下)的模型基于ONNX方案,特别是传统CV、语音、NLP等场景,也包括Transformer结构的小规模参数模型。基于PyTorch、MindSpore和TensorFlow等框架将模型训练完成后,将模型转成ONNX,部署在中心或者边缘AI产品上。下面就讲下各训练框架训练好的模型如何保存为ONNX文件。由于受protobuf限制,通常只能保存小于2GB的ONNX模型文件。如何解决这个问题呢,今天给出一个方法。

PyTorch导出ONNX

import torch
from torchvision.models import resnet50, ResNet50_Weights

# 构造输入及shape
dummy_input = torch.randn(1, 3, 224, 224)

weights = ResNet50_Weights.DEFAULT
model = resnet50(weights=weights)
model.eval()

input_names = [ "input_data" ] 
output_names = [ "output_data" ]

torch.onnx.export(
        model,                # pytorch网络模型
        dummy_input,          # 
### 如何在昇腾910B上训练扩散模型 #### 准备环境 为了能够在昇腾910B平台上顺利运行并训练扩散模型,需要先配置好开发环境。这包括安装Ascend SDK以及设置必要的依赖库。确保已正确设置了CUDA、cuDNN以及其他相关工具链版本。 #### 数据集准备 对于任何机器学习项目来说,数据都是至关重要的资源之一。针对特定应用场景收集高质量的数据集,并对其进行预处理操作,比如裁剪、缩放图像尺寸等,以便于后续用于训练过程中的输入[^1]。 #### 构建计算图与定义网络结构 采用支持多框架兼容性的文件格式来保存已经训练完成的神经网络权重参数,这样可以在不同平台间轻松迁移模型而无需重新编写代码逻辑。具体到本案例中,则意味着可以利用开源社区提供的成熟解决方案作为起点来进行定制化调整。 #### 修改Pipeline配置 当涉及到具体的硬件适配工作时,可能还需要对原有的推理管道做一些针对性改动。例如,在`pipeline/unet_simple_opencv.pipeline` 文件内找到 `mxpi_tensorinfer0` 组件并将其中关于外部加载模型路径的部分更新为我们本地编译生成的新版OM文件位置 `"modelPath": "model/unet_hw960_bs1.om"` [^2]。 #### 编写训练脚本 最后一步就是实际动手编码实现整个流程了。这里给出一段简单的Python伪代码片段展示如何调用API接口启动一次完整的迭代周期: ```python import mindspore as ms from mindspore import nn, Model # 定义损失函数和优化器 loss_fn = ... optimizer = ... # 创建Model实例 network = DiffusionNetwork() model = Model(network, loss_fn=loss_fn, optimizer=optimizer) # 开始训练循环 for epoch in range(num_epochs): model.train(train_dataset) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值