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は対応するものに変更されます。
エポック、損失、その他の値が画面に表示されると、モデルはトレーニングを開始します
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ファイルがある場合は、モデルの変換が成功したことを意味します。