[MindSpore2日間トレーニングキャンプ5番目のメモ] MindIR形式モデルのエクスポート

1.MindIRの概要

MindSporeは、統合IRを通じてネットワークの論理構造とオペレーターの属性を定義し、MindIR形式のモデルファイルを
ハードウェアプラットフォームから切り離し、1回のトレーニングで複数の展開を実現します。
MindIRは、MindSporeの統合モデルファイルとして、ネットワーク構造と重みパラメーター値も格納します。同時に、
推論タスクを実行するためのクラウドサービングおよびエンドサイドLiteプラットフォームへのデプロイをサポートします。
同じMindIRファイルは、複数のハードウェア形式の展開をサポートします。-
展開推論の提供
-エンドサイドLite推論展開

第二に、名詞の説明

チェックポイント
•プロトコルバッファ形式は、ネットワーク内のすべてのパラメータ値を格納するために使用されます。
•通常、トレーニングタスクが中断された後にトレーニングを再開するため、またはトレーニング後にタスクを微調整するために使用されます(微調整)。
•MindIR
•フルネームはMindSporeIRであり、グラフ表現に基づくMindSporeの機能的IRであり、スケーラブルなグラフ
構造と演算子のIR表現を定義します。
•異なるバックエンド間のモデルの違いを排除し、通常、ハードウェアプラットフォーム間で推論タスクを実行するために使用されます。
•ONNX
•フルネームはOpenNeural Network Exchangeで、これは機械学習モデルの一般的な表現です。
•通常、異なるフレームワーク間のモデル移行に使用されるか、推論エンジン(TensorRT)で使用されます。
•AIR
•フルネームはAscendIntermediate Representationです。これは、Huaweiによって定義された機械学習用に設計されたオープン
ファイル形式です。
•HuaweiAIプロセッサへの適応性が高く、通常、Ascend310で推論タスクを実行するために使用されます。

3.LeNetネットワークのMindIR形式モデルをエクスポートします

1.チェックポイントを生成するようにLeNetモデルをトレーニングします

LeNetトレーニングコードは、公式のMindSporeコードウェアハウスのmodelzoolのコードを使用します

住所:https//gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet

2.MNISTデータのダウンロードアドレス

1)公式ダウンロードアドレス:http://yann.lecun.com/exdb/mnist/

2)SkyDriveからダウンロード:リンク:https://pan.baidu.com/s/1zX-OwL8bOgq4dhEuaRj2Xg抽出コード:zew6 

MNISTデータセットがダウンロードされたら、コードルートディレクトリに解凍します

3.トレーニングコマンドを実行します

python train.py --data_path ./MNIST_DATA/ --ckpt_path=./checkpoint/ --device_target Ascend
注:モデルのトレーニングにはShengtengプラットフォームを使用しています。トレーニングにCPUまたはGPUを使用している場合、device_targetは対応するものに変更されます。

エポック、損失、その他の値が画面に表示されると、モデルはトレーニングを開始します

4.チェックポイントを取得します

モデルトレーニングパラメーターで指定されたckpt_pathフォルダーにckptファイルが表示されると、トレーニングは成功します。次に、mindir形式に変換するckptファイルを選択できます。ここではcheckpoint_lenet-10_1875.ckptを選択します

5.モデル変換コードを書く

import numpy as np
from mindspore import Tensor, export, load_checkpoint, load_param_into_net
from src.lenet import LeNet5

lenet = LeNet5()
# load the parameter into net
load_checkpoint("./checkpoint/checkpoint_lenet-10_1875.ckpt", net=lenet)  #checkpoint_lenet-10_1875.ckpt更换成对应所需要转换的ckpt文件
input = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32)  #Lenet模型的size为32,1,32,32
export(lenet, Tensor(input), file_name='lenet-10_1875', file_format='MINDIR') #file_name指定转换后文件的文件名

6.モデル変換コードを実行します

python lenet_mindr.py
実行後、コードのルートディレクトリを確認します。前に指定したlenet-10_1875.mindirファイルがある場合は、モデルの変換が成功したことを意味します。

第4に、ResNet50ネットワークのMindIR形式モデルをエクスポートします

1.チェックポイントを生成するようにResNet50ネットワークをトレーニングします

ResNet50モデルトレーニングコードは、公式のMindSporeコードウェアハウスのmodelzooコードを引き続き使用します。リンク:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/resnet

2.Cifar10データセット

ImageNetデータセットは比較的大きいため、トレーニングに時間がかかるため、ここではモデルトレーニングにcifar10データセットを使用します。

1)Cifar10データセットの公式ダウンロード:http://www.cs.toronto.edu/~kriz/cifar.html

2)Baiduネットワークディスクのダウンロード:リンク:https://pan.baidu.com/s/1CpgjFtZk2ZQsr_qUtc6z1g抽出コード:kjhi 

3.トレーニングコマンドを実行します

python train.py --net resnet50 --dataset cifar10 --dataset_path ./data/cifar10-bin/train/  --device_target Ascend
注:モデルのトレーニングにはShengtengプラットフォームを使用しています。トレーニングにCPUまたはGPUを使用している場合、device_targetは対応するものに変更されます。

エポック、損失、その他の値が画面に表示されると、モデルはトレーニングを開始します

resnet50.png

4.チェックポイントを取得します

モデルトレーニングパラメーターで指定されたckpt_pathフォルダーにckptファイルが表示されると、トレーニングは成功します。次に、mindir形式に変換するckptファイルを選択できます。ここではresnet-90_1562.ckptを選択します

5.モデル変換スクリプトを作成します

import numpy as np
from mindspore import Tensor, export, load_checkpoint, load_param_into_net
from src.resnet import resnet50 as ResNet50

resnet = ResNet50()
# load the parameter into net
load_checkpoint("./checkpoint/resnet-90_1562.ckpt", net=resnet)
input = np.random.uniform(0.0, 1.0, size=[32, 3, 224, 224]).astype(np.float32)
export(resnet, Tensor(input), file_name='resnet-90_162', file_format='MINDIR')

6.モデル変換を実行します

python resnet_mindir.py
実行後、コードのルートディレクトリを確認します。前に指定したresnet-90_1562.mindirファイルがある場合は、モデルの変換が成功したことを意味します。

おすすめ

転載: blog.csdn.net/yichao_ding/article/details/113102073