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

Platform For AI:PyTorch プロセッサー

最終更新日:Mar 05, 2026

Elastic Algorithm Service (EAS) には、標準の PyTorch モデルを TorchScript フォーマットでオンラインサービスとしてデプロイするための組み込み PyTorch プロセッサーが提供されています。本トピックでは、PyTorch モデルサービスのデプロイおよび呼び出し方法について説明します。

PyTorch プロセッサーバージョンガイド

PyTorch は複数のバージョン(GPU 版および CPU 版)をサポートしています。次の表に、各バージョンに対応するプロセッサー名を示します。

プロセッサー名

PyTorch バージョン

GPU 版をサポート

pytorch_cpu_1.6

PyTorch 1.6

いいえ

pytorch_cpu_1.7

PyTorch 1.7

いいえ

pytorch_cpu_1.9

PyTorch 1.9

いいえ

pytorch_cpu_1.10

PyTorch 1.10

いいえ

pytorch_gpu_1.6

PyTorch 1.6

はい

pytorch_gpu_1.7

PyTorch 1.7

はい

pytorch_gpu_1.9

PyTorch 1.9

はい

pytorch_gpu_1.10

PyTorch 1.10

はい

ステップ 1:サービスのデプロイ

eascmd クライアントを使用して PyTorch モデルサービスをデプロイする場合、processor パラメーターを上記の表にある PyTorch プロセッサー名のいずれかに設定します。以下のコードは、サービス構成ファイルのサンプルです。

{

  "name": "pytorch_resnet_example",
  "model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/resnet18.pt",
  "processor": "pytorch_cpu_1.6",
    "metadata": {
    "cpu": 1,
    "instance": 1,
    "memory": 1000
  }
}

クライアントツールを使用したサービスのデプロイ方法の詳細については、「サービスのデプロイ:EASCMD と DSW」をご参照ください。

コンソールを使用して PyTorch モデルサービスをデプロイすることもできます。詳細については、「サービスのデプロイ:コンソール」をご参照ください。

ステップ 2:サービスの呼び出し

PyTorch サービスは、プレーンテキストではなく Protocol Buffers (Protobuf) フォーマットを入出力に使用します。オンラインデバッグ機能はプレーンテキストデータのみをサポートしているため、コンソールのオンラインデバッグ機能は使用できません。

EAS では、さまざまなプログラミング言語向けのソフトウェア開発キット (SDK) が提供されています。これらの SDK はリクエストおよび応答データをカプセル化し、直接接続およびフォールトトレランスのメカニズムを備えています。SDK を使用してリクエストを構築および送信できます。以下のコードは、推論リクエストのサンプルです。

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import TorchRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'pytorch_gpu_wl')
    client.init()

    req = TorchRequest()
    req.add_feed(0, [1, 3, 224, 224], TorchRequest.DT_FLOAT, [1] * 150528)
    # req.add_fetch(0)
    for x in range(0, 10):
        resp = client.predict(req)
        print(resp.get_tensor_shape(0))

コード内のパラメーター設定および呼び出し方法の詳細については、「Python SDK の使用」をご参照ください。

独自にサービスリクエストを構築することも可能です。詳細については、「リクエストフォーマット」をご参照ください。

リクエストフォーマット

PyTorch プロセッサーは、入出力に Protobuf フォーマットを使用します。SDK を使用してリクエストを送信する場合、リクエストはすでにカプセル化されています。SDK が提供する関数をそのまま使用して構築できます。独自にサービスリクエストを構築したい場合は、以下の .proto 定義から必要なコードを生成できます。詳細については、「TensorFlow サービスのリクエスト構築」をご参照ください。

syntax = "proto3";

package pytorch.eas;
option cc_enable_arenas = true;

enum ArrayDataType {
  // DataType の有効な値ではない。DataType フィールドが設定されていないことを示すために使用
  DT_INVALID = 0;

  // すべての計算デバイスがサポートすることが期待されるデータ型
  DT_FLOAT = 1;
  DT_DOUBLE = 2;
  DT_INT32 = 3;
  DT_UINT8 = 4;
  DT_INT16 = 5;
  DT_INT8 = 6;
  DT_STRING = 7;
  DT_COMPLEX64 = 8;  // 単精度複素数
  DT_INT64 = 9;
  DT_BOOL = 10;
  DT_QINT8 = 11;     // 量子化 int8
  DT_QUINT8 = 12;    // 量子化 uint8
  DT_QINT32 = 13;    // 量子化 int32
  DT_BFLOAT16 = 14;  // 16 ビットに切り詰められた Float32。キャスト演算専用
  DT_QINT16 = 15;    // 量子化 int16
  DT_QUINT16 = 16;   // 量子化 uint16
  DT_UINT16 = 17;
  DT_COMPLEX128 = 18;  // 倍精度複素数
  DT_HALF = 19;
  DT_RESOURCE = 20;
  DT_VARIANT = 21;  // 任意の C++ データ型
}

// 配列の次元
message ArrayShape {
  repeated int64 dim = 1 [packed = true];
}

// 配列を表すプロトコルバッファー
message ArrayProto {
  // データ型
  ArrayDataType dtype = 1;

  // 配列の形状
  ArrayShape array_shape = 2;

  // DT_FLOAT
  repeated float float_val = 3 [packed = true];

  // DT_DOUBLE
  repeated double double_val = 4 [packed = true];

  // DT_INT32、DT_INT16、DT_INT8、DT_UINT8
  repeated int32 int_val = 5 [packed = true];

  // DT_STRING
  repeated bytes string_val = 6;

  // DT_INT64
  repeated int64 int64_val = 7 [packed = true];

}


message PredictRequest {

  // 入力テンソル
  repeated ArrayProto inputs = 1;

  // 出力フィルター
  repeated int32 output_filter = 2;
}

// 成功時の PredictRequest の応答
message PredictResponse {
  // 出力テンソル
  repeated ArrayProto outputs = 1;
}