すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:Pythonメソッド

最終更新日:Jul 22, 2024

Machine Learning Platform for AI (PAI)-Bladeは、モデル最適化プロセスをパイプラインに統合するために使用できるPythonメソッドを提供します。 このトピックでは、構文、入力パラメーター、レスポンスなど、Pythonメソッドの詳細について説明します。

最適化

PAI-Bladeは、モデルを最適化するために使用できる最適化方法を提供します。

  • 構文

    def optimize(
        model: Any,
        optimization_level: str,
        device_type: str,
        config: Optional[Config] = None,
        inputs: Optional[List[str]] = None,
        outputs: Optional[List[str]] = None,
        input_shapes: Optional[List[List[str]]] = None,
        input_ranges: Optional[List[List[str]]] = None,
        test_data: List[Dict[str, np.ndarray]] = [],
        calib_data: List[Dict[str, np.ndarray]] = [],
        custom_ops: List[str] = [],
        verbose: bool = False,
    ) -> Tuple[Any, OptimizeSpec, OptimizeReport]:
        pass
  • 入力パラメーター

    パラメーター

    データ型

    必須

    説明

    デフォルト値

    モデル

    複数のタイプ

    最適化するモデル。

    • 最適化するモデルがTensorFlowモデルの場合、次の形式がサポートされます。

      • GraphDefオブジェクト。

      • 名前の接尾辞が. pbまたは. pbtxt.

      • SavedModelファイルのディレクトリを指定する文字列。

    • 最適化するモデルがPyTorchモデルの場合、次の形式がサポートされます。

      • torch.nn.Moduleオブジェクト。

      • エクスポートされたtorch.nn.Moduleファイルのディレクトリを指定する文字列。 ファイルの名前の接尾辞は. pt.

    N/A

    optimization_level

    STRING

    最適化レベル。 有効な値 (大文字と小文字を区別しない):

    • o1: グラフ書き換えやコンパイル最適化などのロスレス最適化

    • o2: 量子化

    N/A

    device_type

    STRING

    モデルが実行されるデバイスのタイプ。 有効な値 (大文字と小文字を区別しない):

    • gpu

    • cpu

    • edge (PyTorchでは使用できません)

    N/A

    入力

    リスト [ストリング]

    不可

    入力ノードの名前。 このパラメーターを指定しないと、システムは自動的に推論します。

    None

    出力

    リスト [ストリング]

    不可

    出力ノードの名前。 このパラメーターを指定しないと、システムは自動的に推論します。

    None

    input_shapes

    LIST [リスト [ストリング]]

    不可

    入力テンソルの可能な形状。 このパラメーターを指定すると、特定のシナリオで最適化効果を改善できます。 内部リスト内の要素の数は、モデル内の入力テンソルの数と等しくなければなりません。 各要素は、入力形状を指定する文字列です。 例: '1*512 ' 可能な形状の複数のグループを指定する場合は、外側のリストに要素を追加できます。 たとえば、1つのモデルに可能な形状のグループを指定し、別のモデルに可能な形状の複数のグループを指定する必要があります。 次のサンプルコードに例を示します。

    • [['1*512 ', '3*256']]

    • [
          ['1*512', '3*256'],
          ['5*512', '9*256'],
          ['10*512', '27*256']
      ]

    None

    input_ranges

    LIST [リスト [ストリング]]

    不可

    入力テンソルの値の範囲。 内部リスト内の要素の数は、モデル内の入力テンソルの数と等しくなければなりません。 各要素は、値の範囲を指定する文字列です。

    値の範囲は、括弧 ([]) 、実数、および文字を使用して指定できます。 例: '[1,2]' 、'[0.3,0.9]' 、および '[a,f]' 。 値の範囲の複数のグループを指定する場合は、外側のリストに要素を追加できます。 たとえば、1つのモデルに値範囲のグループを指定し、別のモデルに値範囲の複数のグループを指定する必要があります。 次のサンプルコードに例を示します。

    • [['[0.1,0.4]', '[a,f]']]

    • [
          ['[0.1,0.4]', '[a,f]'],
          ['[1.1,1.4]', '[h,l]'],
          ['[2.1,2.4]', '[n,z]']
      ]

    None

    test_data

    複数のタイプ

    不可

    モデルの実行速度を較正するために使用されるテストデータ。 テストデータのデータ型は、モデルのタイプによって異なります。

    • TensorFlowモデルに使用されるテストデータは、feed_dict引数の複数のグループで構成されます。 対応するデータ型はLIST[DICT[STRING, np.ndarray]] です。

    • PyTorchモデルに使用されるテストデータは、入力テンソルの複数のタプルで構成されます。 対応するデータ型は、LIST[Tuple[torch.tensor, ]] です。

    []

    calib_data

    複数のタイプ

    不可

    モデルを量子化するために使用される校正データ。 このパラメーターは、optimization_levelパラメーターがo2に設定されている場合に必要です。 キャリブレーションデータのデータ型は、テストデータのデータ型と同じである。

    []

    custom_ops

    リスト [ストリング]

    不可

    カスタム演算子ライブラリのパス。 モデルがカスタム演算子ライブラリに依存している場合は、カスタム演算子ライブラリのパスをリストに追加する必要があります。

    []

    verbose

    BOOL

    不可

    ログを表示するかどうかを指定します。 有効な値:

    • True: より多くのログを表示します。

    • False: ログは表示されません。

    False

    config

    blade.Config

    不可

    高度な設定。 詳細については、ブレードのパラメーターについて説明している次の表をご参照ください。

    N/A

    blade.Configデータ型は、最適化の高度なパラメーターを設定するために使用されます。 次のサンプルコードは、コンストラクターの構文の例を示しています。

    class Config(ABC):
        def __init__(
            self,
            disable_fp16_accuracy_check: bool = False,
            disable_fp16_perf_check: bool = False,
            enable_static_shape_compilation_opt: bool = False,
            enable_dynamic_shape_compilation_opt: bool = True,
            quant_config: Optional[Dict[str, str]] = None,
        ) -> None:
            pass

    次の表に、構文のパラメーターを示します。

    表 1. blade.Config

    パラメーター

    必須

    データ型

    説明

    デフォルト値

    disable_fp16_accuracy_check

    不可

    BOOL

    FP16最適化で精度検証を有効にするかどうかを指定します。 有効な値:

    • False: 精度検証を無効にします。

    • True: 精度検証を有効にします。

    False

    disable_fp16_perf_check

    不可

    BOOL

    FP16最適化でパフォーマンス検証を有効にするかどうかを指定します。 有効な値:

    • False: パフォーマンス検証を無効にします。

    • True: パフォーマンス検証を有効にします。

    False

    enable_static_shape_compilation_opt

    不可

    BOOL

    静的シェイプコンパイルを有効にするかどうかを指定します。 有効な値:

    • False: 静的シェイプのコンパイルを無効にします。

    • True: 静的シェイプのコンパイルを有効にします。

    False

    enable_dynamic_shape_compilation_opt

    不可

    BOOL

    動的シェイプコンパイルを有効にするかどうかを指定します。 有効な値:

    • False: 動的シェイプコンパイルを無効にします。

    • True: 動的シェイプコンパイルを有効にします。

    True

    quant_config

    不可

    DICT [ストリング、ストリング]

    量子化構成。 weight_adjustmentキーのみがサポートされています。 キーは、モデルパラメータを調整することによって精度の損失を減らすかどうかを指定します。 weight_adjustmentの有効な値:

    • "true": 有効

    • "false": 無効

    None

  • レスポンス

    3つの要素を含むタプルが返されます。 タプルのデータ型は、タプル [Any, OptimizeSpec, OptimizeReport] である。 次の表に、3つの要素を示します。

    いいえ

    要素

    データ型

    説明

    1

    最適化モデル

    複数のタイプ

    最適化されたモデルのタイプは、元のモデルのタイプと同じです。 たとえば、TensorFlowのSavedModelファイルを最適化するように指定した場合、GraphDefオブジェクトが返されます。

    2

    外部依存関係

    OptimizeSpec

    環境変数やコンパイルキャッシュなどの外部依存関係により、最適化の結果が期待どおりになります。 PythonでWITHステートメントを使用して、外部依存関係を有効にすることができます。 このパラメーターはSDKでは必要ありません。

    3

    最適化レポート

    OptimizeReport

    詳細については、「最適化レポート」をご参照ください。