---
title: SavedModel模型转换om模型
description: "本章节主要介绍如何使用saved_model2om.py(https://gitee.com/ascend/tools/tree/master/saved_model2om)工具将训练保存的SavedModel模型转换为om模型，在部署TF Serving时使用转换后的om模型可以缩短编译时间，从而提升TF Serving部署性能。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/atlastfserv_26_0012.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/atlastfserv_26_0012.html
indexId: a058205a0a17e0ab73f3a98bf9937c5031df04b01f9b34bc12e2f1595eb94e7b78
---
# SavedModel模型转换om模型

#### 简介

本章节主要介绍如何使用saved_model2om.py(https://gitee.com/ascend/tools/tree/master/saved_model2om)工具将训练保存的SavedModel模型转换为om模型，在部署TF Serving时使用转换后的om模型可以缩短编译时间，从而提升TF Serving部署性能。

使用.om格式的模型进行在线推理时，不支持精度比对中Data Dump功能。


#### 参数说明


**表1 参数说明**

| 参数 | 参数说明 | 取值示例 |
| --- | --- | --- |
| \-\-input\_path | 原始SavedModel模型文件的输入路径。 必选。 | $HOME/inputpath/model |
| \-\-output\_path | 转换成功后生成SavedModel模型文件的输出路径。 必选。 | $HOME/outputpath/model |
| \-\-input\_shape | 输入模型的shape值，格式为"name1:shape;name2:shape;name3:shape"。当设置input\_shape时，shape中未明确定义的维度将会被自动设置为1。 可选。 | input:16,224,224,3 |
| \-\-soc\_version | 输出.om模型的芯片类型。当设置\-\-profiling参数时，无需配置此参数，由当前执行转换的设备决定。 必选。 | Ascendxxx |
| \-\-profiling | 设置此参数时，则会开启AOE调优。（该参数配置后无需再指定job\_type）。 取值为1时，启用子图调优； 取值为2时，启用算子调优。 如需进行子图或者算子调优，则该参数必选。 | 1 |
| \-\-method\_name | 配置TF Serving运行时推理的方法，如果不配置此参数，则会从原始SavedModel模型文件中获取。 可选。 | /tensorflow/serving/predict |
| \-\-new\_input\_nodes | 重新选择输入节点，格式为：算子:类型:算子名;算子:类型:算子名。 可选。 | embedding:DT\_FLOAT:bert/embedding/word\_embeddings:0;add:DT\_INT:bert/embedding/add:0 |
| \-\-new\_output\_nodes | 重新选择输出节点，格式为：算子:算子名。 可选。 | loss:loss/Softmax:0 |
| \-\-output\_type | 指定网络输出数据类型或指定某个输出节点的输出类型，参数的使用方法请参考《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool\_aoe\_0001.html)》或者《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc\_16\_0001.html)》。 可选。 | node1:0:FP16 |
| \-\-input\_fp16\_nodes | 指定输入数据类型为FP16的输入节点名称，参数的使用方法请参考《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool\_aoe\_0001.html)》或者《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc\_16\_0001.html)》。 可选。 | node\_name1;node\_name2 |


该工具同时支持ATC和AOE工具中的参数：

- 设置--profiling参数时请参考《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool_aoe_0001.html)》。
- 未设置--profiling参数时请参考《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc_16_0001.html)》。

该工具暂不支持ATC和AOE工具中的--out_nodes、--is_input_adjust_hw_layout和--is_output_adjust_hw_layout参数，其中--out_nodes参数可使用表1 参数说明中的--new_output_nodes参数进行代替。


#### 执行转换

1. 下载转换工具“saved_model2om.py(https://gitee.com/ascend/tools/tree/master/saved_model2om)”至服务器的任一目录，例如上传到$HOME/tools/目录下，无需安装。
2. 执行以下命令进行转换，具体参数请根据实际修改。

```
python3 saved_model2om.py --input_path "$HOME/inputpath/model" --output_path "$HOME/outputpath/model" --input_shape "input:16,224,224,3" --soc_version "Ascendxxx"
```

--soc_version的取值查询方式：

  - 针对如下产品：在安装AI处理器的服务器执行npu-smi info命令进行查询，获取Name信息。实际配置值为AscendName，例如Name取值为xxxyy，实际配置值为Ascendxxxyy。
    Atlas A2 训练系列产品 / Atlas A2 推理系列产品

    Atlas 推理系列产品

    Atlas 训练系列产品

  - 针对如下产品，在安装AI处理器的服务器执行npu-smi info -t board -iid-cchip_id命令进行查询，获取Chip Name和NPU Name信息，实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx，NPU Name取值为1234，实际配置值为Ascendxxx_1234。其中：

    - id：设备id，通过npu-smi info -l命令查出的NPU ID即为设备id。
    - chip_id：芯片id，通过npu-smi info -m命令查出的Chip ID即为芯片id。
Atlas 350 加速卡
Atlas A3 训练系列产品 / Atlas A3 推理系列产品
如果在转换的过程中需要进行子图或者算子调优，请执行以下命令。

```
python3 saved_model2om.py --input_path "$HOME/inputpath/model" --output_path "$HOME/outputpath/model" --input_shape "input:16,224,224,3" --profiling "
1
"
```

3. 转换成功后，会在指定的output_path下生成用于加载om模型的SavedModel模型文件，文件名格式为{om_name}_load_om_saved_model_{timestamp}。
