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

Platform For AI:Blade EAS プラグインによるモデルの最適化とデプロイ

最終更新日:Mar 12, 2026

Blade EAS プラグインは、構成ファイルの設定を通じて、EAS サービスのデプロイ時に自動的にモデルを最適化します。

前提条件と制限事項

EAS の TensorFlow および PyTorch プロセッサには、Blade ランタイム SDK が統合されています。これらのプロセッサでデプロイするモデルを最適化するには、EAS サービス構成ファイルを設定してください。

説明

Blade EAS プラグインは、EAS サービスのデプロイ前にモデルを最適化します。最適化に要する時間は、モデルの複雑さに応じて 3~10 分程度です。プラグインは、初回の EAS サービスデプロイ時に 1 回のみ実行されます。その後の水平スケーリング(スケールアウト/スケールイン)では、最適化済みのモデルが使用されます。

Blade EAS プラグインを有効にするには、eascmd クライアントを使用してサービスを作成する場合のみ可能です。eascmd クライアントの構成については、「クライアントのダウンロードと認証」および「コマンドリファレンス」をご参照ください。

Blade EAS プラグインを有効にするには、EAS サービス構成ファイルに plugins フィールドを追加します。詳細については、「plugins フィールド」をご参照ください。以下に Blade EAS プラグインの構成例を示します:

plugins フィールド

Blade EAS プラグインを有効にするには、EAS サービス構成ファイルに plugins フィールドを追加します。このフィールドには、1 個以上の辞書要素からなるリストを指定します。フィールドの詳細については、「サービスの作成」をご参照ください。

各辞書要素には、以下のキーが含まれます:

表 1. plugins のフィールド

キー

必須

説明

command

はい

実行する最適化コマンドです。値の詳細については、「プロセッサとプラグインランタイムイメージの対応関係」をご参照ください。

image

はい

Blade EAS プラグインランタイムイメージのレジストリアドレスです。Blade EAS プラグインは、CPU および GPU(CUDA 10.0)デバイス上で動作する TensorFlow および PyTorch フレームワークをサポートしています。「プロセッサとプラグインランタイムイメージの対応関係」で、プロセッサ名およびプラグインレジストリアドレスをご確認ください。

resource

いいえ

最適化実行用のリソースグループです。これは、サービス記述ファイルの最上位レベルにある resource フィールドとは異なり、EAS サービス用のリソースグループを指定します。

GPU 最適化には必須です。中国 (杭州) および中国 (上海) リージョンでは、T4_8CORE リソースグループを使用します。中国 (上海) リージョンでは、V100_8CORE または P4_8CORE リソースグループもサポートされています。

説明

GPU を使用する場合、Blade EAS プラグインを実行するリソースグループと、EAS サービス用のリソースグループで使用する GPU カードの種類は同一である必要があります。

gpu

いいえ

最適化に使用する GPU の数です。通常は 1 です。

config

いいえ

高度な最適化構成項目です。現在は、1 つのモデルを構成するためのサブキー model_info のみがサポートされています。

キーはモデルファイル名です。値には、PAI-Blade Wheel パッケージの blade.optimize インターフェイスパラメーターと整合する複数の最適化項目を指定できます。「最適化項目一覧」で、サポートされる最適化項目をご確認ください。

表 2. プロセッサとプラグインランタイムイメージの対応関係

デバイスタイプ

キー

CPU

image(Blade EAS プラグインレジストリアドレス)

registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest

command(プラグイン最適化コマンド)

blade --mode eas_plugin --optimize_for cpu

processor

  • TensorFlow プロセッサの場合:tensorflow_cpu_1.15

  • PyTorch プロセッサの場合:pytorch_cpu_1.6

GPU

image(Blade EAS プラグインレジストリアドレス)

  • CUDA 10.0:registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest

  • CUDA 11.0:registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cu110_latest

command(プラグイン最適化コマンド)

blade --mode eas_plugin --optimize_for gpu

processor

  • TensorFlow 1.15(CUDA 10.0)の場合:tensorflow_gpu_1.15

  • Tensorflow 2.4(CUDA 11.0)の場合:tensorflow_gpu_2.4

  • PyTorch 1.6(CUDA 10.0)の場合:pytorch_gpu_1.6

  • PyTorch 1.7(CUDA 11.0)の場合:pytorch_gpu_1.7

表 3. 最適化項目一覧

最適化項目

説明

optimization_level

最適化レベルです。以下の 2 つのレベルが利用可能です:

  • o1:デフォルト。精度損失のない最適化です。ハードウェアに応じて FP32 または FP16 最適化を試行し、精度損失を最小限のしきい値内に抑えます。

  • o2:INT8 量子化を有効化します。INT8 をサポートするハードウェアで使用します。

test_data

テストデータファイルです。オプションです。テストデータファイルは、model_path で指定されたパスまたは圧縮パッケージ内に含める必要があります。特に PyTorch モデルの最適化では、通常のモデル推論用テストデータを提供することを推奨します。テストデータファイルの生成方法については、「最適化の補助データ」をご参照ください。

calibration_dataset

量子化キャリブレーション用データファイルです。オプションです。量子化キャリブレーション用データファイルは、model_path で指定されたパスまたは圧縮パッケージ内に含める必要があります。

指定しない場合、Blade はオンライン INT8 量子化を実行します。指定した場合、Blade はオフライン INT8 量子化を実行します。

キャリブレーションデータは 100 件以上を提供してください。「最適化の補助データ」で、キャリブレーション用データファイルの生成方法をご確認ください。

inputs

文字列のリストです。オプションです。モデルの入力ノード名を指定します。指定しない場合、Blade は上流ノードを持たないノードを入力ノードとして使用します。

PyTorch モデルでは不要です。

outputs

文字列のリストです。オプションです。モデルの出力ノード名を指定します。指定しない場合、Blade は下流ノードを持たないノードを出力ノードとして使用します。

PyTorch モデルでは不要です。

input_shapes

入力テンソルの可能な形状です。特定のシナリオでの最適化品質向上に使用します。内側のリスト要素数は、入力テンソルの数と一致する必要があります。各要素は、'1*512' のような入力形状を表す文字列です。

複数の可能な形状セットを指定する場合は、外側のリストに要素を追加します。たとえば、2 つの入力を持つモデルでは、以下の値例が考えられます:

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

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

input_ranges

各入力テンソルの要素の値範囲です。内側のリスト要素数は、入力テンソルの数と一致する必要があります。各要素は、値範囲を表す文字列です。

値範囲は、実数または文字を含む角括弧で表現します。例:'[1,2]''[0.3,0.9]'、または '[a,f]'

複数の可能な値範囲セットを指定する場合は、外側のリストに要素を追加します。たとえば、2 つの入力を持つモデルでは、以下の値例が考えられます:

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

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

quantization

JSON 辞書です。現在は、weight_adjustment キーのみがサポートされています。このキーは、量子化による精度損失を低減するためにモデルパラメーターを調整するかどうかを示します。サポートされる値は以下のとおりです:

  • "true":このオプションを有効化します。

  • "false":このオプションを無効化します。

最適化の補助データ

O1 最適化レベルでは、test_data を提供することで、より的確な最適化が可能になります。O2 最適化レベルでは、calibration_dataset を提供することで、Blade がオフライン INT8 最適化を実行します。両パラメーターとも、Blade の補助データ形式に準拠している必要があります。TensorFlow および PyTorch の補助データ形式は以下のとおりです:

  • TensorFlow の補助データは、feed dict のリスト形式です。feed dict のキーは文字列、値は numpy ndarray です。補助データファイルは .npy ファイルとして保存します。

  • PyTorch の補助データは、tensor タプルのリスト形式です。.pth ファイルとして保存します。

以下は、TensorFlow 向け補助データファイルを生成するサンプルコードです:

import numpy as np

calib_data = list()
for i in range(10):
    feed_dict = {
        'image_placeholder:0': np.ones((8, 3, 224, 224), dtype=np.float32),
        'threshold_placeholder:0': np.float32(0.5),
    }
    calib_data.append(feed_dict)
np.save("calib_data.npy", calib_data)

以下は、PyTorch 向け補助データファイルを生成するサンプルコードです:

import numpy as np
import torch

calib_data = list()
for i in range(10):
    image = torch.ones(8, 3, 224, 224)
    threshold = torch.tensor(0.5)
    feed_tuple = (image, threshold)
    calib_data.append(feed_tuple)
torch.save(calib_data, 'calib_data.pth')

Blade EAS プラグイン未使用の場合

以下は、Blade EAS プラグインを含まない単純な EAS サービス構成ファイルの例です:

{
  "name": "blade_eas_plugin_test",
  "model_path": "oss://<yourBucket>/<pathToYourModel>/",
  "processor": "tensorflow_cpu_1.15",
  "metadata": {
    "instance": 1,
    "memory": 4000
  },
  "resource": "<yourEASResource>"
}

EAS サービス構成ファイルの各フィールドの詳細については、「サービスの作成」をご参照ください。

サービス構成ファイルを service.json として保存します。以下のコマンドを実行して、CPU 上でデプロイされる TensorFlow 1.15 サービスを作成します:

eascmd create service.json

実行結果の例:

+-------------------+-------------------------------------------------------------------------------------------------+
| Internet Endpoint | http://123456789012****.cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test       |
| Intranet Endpoint | http://123456789012****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test   |
|             Token | owic823JI3kRmMDZlOTQzMTA3ODhmOWIzMmVkZmZmZGQyNmQ1N2M5****                                        |
+-------------------+-------------------------------------------------------------------------------------------------+
[OK] Service is now creating
[OK] Schedule process to node cn-shanghai.i-uf6hv6kfua25q1k8****
[OK] Fetching processor from [http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/release/3.18.0/py3.6.8_cpu_tf1.15.0_torch1.6.0_abiprecxx11/TENSORFLOW_SDK_CPU.d12d3dc-91024d0-1.15.0-Linux.tar.gz]
[OK] Successfully downloaded all artifacts
[OK] Building image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Pushing image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Successfully pushed image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Successfully created ingress
[OK] Successfully synchronized resources
[OK] Waiting [Total: 1, Pending: 1, Running: 0]
[OK] Running [Total: 1, Pending: 0, Running: 1]
[OK] Service is running

基本構成

Blade EAS プラグインを有効にするには、EAS サービス構成ファイルに plugins フィールドを追加します。このフィールドはリストです。以下の例では、Blade 最適化プラグイン用の辞書要素が 1 つ含まれています:

{
  "name": "blade_eas_plugin_test",
  "model_path": "oss://<yourBucket>/<pathToYourModel>/",
  "processor": "tensorflow_cpu_1.15",
  "metadata": {
    "instance": 1,
    "memory": 4000
  },
  "plugins": [
      {
          "command": "blade --mode eas_plugin --optimize_for cpu",
          "image": "registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest"
      }
  ],
  "resource": "<yourEASResource>"
}

この例では、plugins を除く他のフィールドは、PAI-EAS サービス構成ファイルの形式に従っています。詳細については、「サービスの作成」をご参照ください。plugins リスト内の辞書要素には、以下の 2 つのキーがあります:

  • command:実行する最適化コマンドです。--mode eas_plugin は EAS プラグイン最適化パターンを示します。--optimize_for cpu は CPU 推論最適化を示します。

  • image:Blade EAS プラグインランタイムイメージのレジストリアドレスです。すべての CPU 最適化では、ランタイムイメージ registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest を使用します。

この例では、テストデータなしで CPU デバイス上での最適化構成を完了しています。service1.json としてサービス構成ファイルを保存し、eascmd クライアントツールの create コマンドを使用してサービスを作成します:

eascmd create service1.json

実行結果の例:

+-------------------+-------------------------------------------------------------------------------------------------+
| Internet Endpoint | http://123456789012****.cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test       |
| Intranet Endpoint | http://123456789012****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test   |
|             Token | owic823JI3kRmMDZlOTQzMTA3ODhmOWIzMmVkZmZmZGQyNmQ1N2M5****                                       |
+-------------------+-------------------------------------------------------------------------------------------------+
[OK] Service is now creating
[OK] Fetching processor from [http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/release/3.18.0/py3.6.8_cpu_tf1.15.0_torch1.6.0_abiprecxx11/TENSORFLOW_SDK_CPU.d12d3dc-91024d0-1.15.0-Linux.tar.gz]
[OK] Successfully downloaded all artifacts
[OK] Executing plugin eas-plugin-73d70d54: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest
[OK] Building image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Pushing image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Successfully pushed image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Successfully created ingress
[OK] Successfully patch resources
[OK] Waiting [Total: 1, Pending: 1, Running: 0]
[OK] Running [Total: 1, Pending: 0, Running: 1]
[OK] Service is running

Blade EAS プラグイン未使用の構成と比較すると、ログに Blade 最適化の実行成功を示す追加の行が表示されます:

[OK] Executing plugin eas-plugin-73d70d54: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest

高度な構成

より多くのモデル情報を提供することで、最適化の精度および加速率が向上します。以下の例は、追加の最適化パラメーターを含む GPU サービス記述ファイルです:

{
    "name": "blade_eas_plugin_test",
    "metadata": {
        "cpu": 4,
        "gpu": 1,
        "instance": 1,
        "memory": 4096,
        "cuda": "10.0"
    },
    "model_path": "oss://<yourBucket>/<pathToYourModel>/",
    "plugins": [
        {
            "command": "blade --mode eas_plugin --optimize_for gpu",
            "image": "registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest",
            "resource": "T4_8CORE",
            "gpu": 1,
            "config": {
                "model_info": {
                    "frozen.pb": {
                        "optimization_level": "o1",
                        "inputs": [
                            "input_ids_a_1"
                        ],
                        "outputs": [
                            "l2_normalize"
                        ],
                        "test_data": "test_len9240_bc1.npy"
                    }
                }
            }
        }
    ],
    "processor": "tensorflow_gpu_1.15",
    "resource": "<yourEASResource>"
}

この例では、plugins を除く他のフィールドは、EAS サービス構成ファイルの形式に従っています。詳細については、「サービスの作成」および「plugins のフィールド」をご参照ください。frozen.pb はモデルファイル名であり、frozen.pb ファイル内の TensorFlow モデルを最適化することを意味します。

サービス構成ファイルを service2.json として保存し、eascmd クライアントツールの create コマンドを使用してサービスを作成します:

eascmd create service2.json

実行結果の例:

+-------------------+-------------------------------------------------------------------------------------------------+
| Internet Endpoint | http://123456789012****cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test      |
| Intranet Endpoint | http://123456789012****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/blade_eas_plugin_test  |
|             Token | owic823JI3kRmMDZlOTQzMTA3ODhmOWIzMmVkZmZmZGQyNmQ1N2M5****                                        |
+-------------------+-------------------------------------------------------------------------------------------------+
[OK] Service is now creating
[OK] Schedule process to node cn-shanghai.i-uf642ocg20xinsme****
[OK] Downloading oss file: oss://blade-qa/test_assets/tf_security_textcnn/
[OK] Fetching processor from [http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/release/3.18.0/py3.6.8_cu100_tf1.15.0_torch1.6.0_abiprecxx11/TENSORFLOW_SDK_GPU.d12d3dc-91024d0-1.15.0-Linux.tar.gz]
[OK] Successfully downloaded all artifacts
[OK] Executing plugin eas-plugin-7126ee68: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest
[OK] Building image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Pushing image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Successfully pushed image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Successfully created ingress
[OK] Successfully synchronized resources
[OK] Waiting [Total: 1, Pending: 1, Running: 0]
[OK] Running [Total: 1, Pending: 0, Running: 1]
[OK] Service is running

Blade EAS プラグイン未使用の構成と比較すると、ログに Blade 最適化の実行成功を示す追加のエントリが表示されます:

[OK] Executing plugin eas-plugin-7126ee68: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest