PaddlePaddle モデルの変換#
このページでは、OpenVINO モデル・トランスフォーメーション API を使用してモデルを PaddlePaddle 形式から OpenVINO IR 形式に変換する一般的な手順を説明します。PaddlePaddle モデルの形式によって手順が異なります。
注
ファイルにシリアル化された PaddlePaddle モデルは、最初に OpenVINO IR を準備しなくても、OpenVINO ランタイム API による openvino.Core.read_model
メソッドまたは openvino.Core.compile_model
メソッドによってロードできます。詳細については、推論の例を参照してください。モデルの読み込みレイテンシーが推論アプリケーションにとって重要である場合は、引き続き openvino.convert_model
を使用することを推奨します。
PaddlePaddle モデルファイルの変換#
PaddlePaddle 推論モデルには、.pdmodel
(モデル構造) と .pdiparams
(モデルの重み) が含まれています。PaddlePaddle 推論モデルをエクスポートする方法の詳細については、PaddlePaddle 推論モデルのエクスポートの中国語ガイドを参照してください。
Hugging Face から PaddlePaddle モデルをダウンロードできます。PaddlePaddle モデルを変換するには、ovc
または openvino.convert_model
を使用して、入力モデル .pdmodel
ファイルへのパスを指定します:
import openvino as ov
ov.convert_model('your_model_file.pdmodel')
ovc your_model_file.pdmodel
例えば、次のコマンドは YOLOv3 PaddlePaddle モデルを OpenVINO IR モデルに変換します。
import openvino as ov
ov.convert_model('yolov3.pdmodel')
ovc yolov3.pdmodel
PaddlePaddle Python モデルの変換#
モデル・トランスフォーメーション API は、ユーザーコード内でファイルに保存することなく、PaddlePaddle モデルを Python で直接渡すことをサポートします。
次の PaddlePaddle モデル・オブジェクト・タイプがサポートされます:
paddle.hapi.model.Model
paddle.fluid.dygraph.layers.Layer
paddle.fluid.executor.Executor
一部の PaddlePaddle モデルでは、以下に示すように、変換に example_input
または output
を必要とする場合があります。
paddle.hapi.model.Model
形式モデルの変換例:import paddle import openvino as ov # paddle.hapi.model.Model 形式のモデルを作成 resnet50 = paddle.vision.models.resnet50() x = paddle.static.InputSpec([1,3,224,224], 'float32', 'x') y = paddle.static.InputSpec([1,1000], 'float32', 'y') model = paddle.Model(resnet50, x, y) # OpenVINO IR 形式に変換 ov_model = ov.convert_model(model) ov.save_model(ov_model, "resnet50.xml")
paddle.fluid.dygraph.layers.Layer
形式モデルの変換例:example_input
は必須ですが、output
はオプションです。example_input
は次の形式を受け入れます:テンソル (
paddle.Tensor
) または InputSpec (paddle.static.input.InputSpec
) を含むlist
import paddle import openvino as ov # paddle.fluid.dygraph.layers.Layer 形式モデルを作成 model = paddle.vision.models.resnet50() x = paddle.rand([1,3,224,224]) # OpenVINO IR 形式に変換 ov_model = ov.convert_model(model, example_input=[x])
paddle.fluid.executor.Executor
形式モデルの変換例:example_input
とoutput
は必須であり、次の形式を受け入れます:変数 (
paddle.static.data
) を含むlist
またはtuple
import paddle import openvino as ov paddle.enable_static() # paddle.fluid.executor.Executor 形式モデルを作成 x = paddle.static.data(name="x", shape=[1,3,224]) y = paddle.static.data(name="y", shape=[1,3,224]) relu = paddle.nn.ReLU() sigmoid = paddle.nn.Sigmoid() y = sigmoid(relu(x)) exe = paddle.static.Executor(paddle.CPUPlace()) exe.run(paddle.static.default_startup_program()) # OpenVINO IR 形式に変換 ov_model = ov.convert_model(exe, example_input=[x], output=[y])
サポートされる PaddlePaddle レイヤー#
サポートされる標準レイヤーのリストについては、サポートされる操作を参照してください。
関連情報#
対話型の Python チュートリアルでその他のモデルの変換例を確認してください。