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_inputoutput は必須であり、次の形式を受け入れます:

    変数 (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 チュートリアルでその他のモデルの変換例を確認してください。