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

Platform For AI:Python メソッド

最終更新日:Apr 01, 2026

PAI-Blade は、モデル最適化を Python パイプラインに直接統合する optimize() 関数を公開しています。TensorFlow または PyTorch モデルを渡し、最適化レベルとターゲットデバイスを選択すると、推論に対応した最適化済みモデルが返されます。

optimize

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 SavedModel を GPU 推論用に最適化する最小限の呼び出しを示しています。

import blade

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",   # path to a TensorFlow SavedModel directory
    optimization_level="o1",        # lossless optimization: graph rewriting + compilation
    device_type="gpu",
)

キャリブレーションデータとともに量子化 (o2) を使用するには:

import blade
import numpy as np

# Prepare calibration data as a list of feed_dict arguments
calib = [
    {"input": np.random.rand(1, 224, 224, 3).astype(np.float32)},
    {"input": np.random.rand(1, 224, 224, 3).astype(np.float32)},
]

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",
    optimization_level="o2",   # quantization — requires calib_data
    device_type="gpu",
    calib_data=calib,
)

パラメーター

必須パラメーター

パラメータータイプ説明
modelMultiple types最適化するモデルです。「サポートされているモデル形式」をご参照ください。
optimization_levelstring最適化戦略です。有効な値 (大文字と小文字を区別しません): o1o2。「optimization_level の値」をご参照ください。
device_typestringターゲットデバイスです。有効な値 (大文字と小文字を区別しません): gpucpuedge (TensorFlow のみ)。

オプションパラメーター

パラメータータイプデフォルト説明
inputslist[string]None入力ノードの名前です。設定しない場合、PAI-Blade が自動的に推論します。
outputslist[string]None出力ノードの名前です。設定しない場合、PAI-Blade が自動的に推論します。
input_shapeslist[list[string]]None入力テンソルの可能なシェイプです。特定のシェイプパターンに対する最適化を改善します。「input_shapes のフォーマット」をご参照ください。
input_rangeslist[list[string]]None入力テンソルの値の範囲です。「input_shapes のフォーマット」をご参照ください。
test_dataMultiple types[]モデルの実行速度を調整するために使用されるテストデータです。データの型は calib_data のフォーマットと一致します。
calib_dataMultiple types[]量子化のためのキャリブレーションデータです。optimization_level が o2 の場合に必須です。データの型はモデルフレームワークによって異なります。
custom_opslist[string][]カスタム演算子ライブラリへのパスです。モデルがカスタム演算子に依存している場合は、各ライブラリパスを追加します。
verboseboolFalse詳細な最適化ログを出力するには True に設定します。問題の診断に役立ちます。
configblade.ConfigNone高度な最適化設定です。「blade.Config」をご参照ください。

サポートされているモデル形式

TensorFlow モデルは以下を受け入れます。

  • GraphDef オブジェクト

  • GraphDef PB ファイル (.pb または .pbtxt) へのパス

  • SavedModel ディレクトリへのパス

PyTorch モデルは以下を受け入れます。

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

  • エクスポートされた torch.nn.Module ファイル (.pt) へのパス

optimization_level の値

戦略使用する状況
o1ロスレス最適化 — グラフ書き換えとコンパイル最適化精度を正確に維持する必要がある場合に使用します。キャリブレーションデータは不要です。開始点として推奨されます。
o2量子化最大の推論速度向上を望む場合に使用します。calib_data が必要です。
calib_data は、optimization_levelo2 の場合にのみ意味があります。o1 の場合は効果がありません。

input_shapes と input_ranges のフォーマット

両方のパラメーターは同じネストされたリスト構造を使用します。各内部リストは入力テンソルごとに 1 つの値を保持し、外部リストは複数のシェイプグループを保持します。

input_shapes — 各要素は "<dim1>*<dim2>*..." フォーマットの文字列です。

# Single model with two inputs, one shape group
input_shapes = [["1*512", "3*256"]]

# Single model with two inputs, three shape groups
input_shapes = [
    ["1*512", "3*256"],
    ["5*512", "9*256"],
    ["10*512", "27*256"],
]

input_ranges — 各要素は、括弧、実数、または文字を使用して範囲を指定する文字列です。

# Single model with two inputs, one range group
input_ranges = [["[0.1,0.4]", "[a,f]"]]

# Single model with two inputs, three range groups
input_ranges = [
    ["[0.1,0.4]", "[a,f]"],
    ["[1.1,1.4]", "[h,l]"],
    ["[2.1,2.4]", "[n,z]"],
]

calib_data のフォーマット

calib_data (および test_data) のデータの型は、モデルフレームワークによって異なります。

フレームワークタイプ説明
TensorFlowlist[dict[string, np.ndarray]]feed_dict 引数のリストで、キャリブレーションサンプルごとに 1 つです。
PyTorchlist[tuple[torch.tensor, ...]]入力テンソルタプルのリストで、キャリブレーションサンプルごとに 1 つです。

戻り値

optimize() は、Tuple[Any, OptimizeSpec, OptimizeReport] という 3 つの要素のタプルを返します。

位置要素タイプ説明
1最適化されたモデルMultiple types入力モデルと同じタイプです。たとえば、TensorFlow SavedModel ディレクトリを渡すと、GraphDef オブジェクトが返されます。
2外部依存関係OptimizeSpec最適化が効果を発揮するために必要な環境変数とコンパイルキャッシュです。Python の WITH ステートメントを使用して適用します。SDK を使用する場合は不要です。
3最適化レポートOptimizeReport最適化結果の詳細です。詳細については、「最適化レポート」をご参照ください。

blade.Config

blade.Config を使用して、高度な最適化動作を微調整します。optimize()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

例:

import blade

config = blade.Config(
    enable_static_shape_compilation_opt=True,
    quant_config={"weight_adjustment": "true"},
)

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",
    optimization_level="o2",
    device_type="gpu",
    calib_data=calib,
    config=config,
)

blade.Config パラメーター

パラメータータイプデフォルト説明
disable_fp16_accuracy_checkboolFalseFP16 最適化で精度検証を有効にするかどうかを指定します。False (デフォルト): 精度検証を無効にします。True: 精度検証を有効にします。
disable_fp16_perf_checkboolFalseFP16 最適化でパフォーマンス検証を有効にするかどうかを指定します。False (デフォルト): パフォーマンス検証を無効にします。True: パフォーマンス検証を有効にします。
enable_static_shape_compilation_optboolFalse静的シェイプコンパイル最適化を有効にします。すべての入力シェイプが推論時に固定されている場合は True に設定します。
enable_dynamic_shape_compilation_optboolTrue動的シェイプコンパイル最適化を有効にします。可変長入力を処理するために、デフォルトで有効になっています。
quant_configdict[string, string]None量子化設定です。weight_adjustment キーのみがサポートされています。量子化中にモデルパラメーターを調整して精度損失を減らすには "true" に設定し、無効にするには "false" に設定します。