全部产品
Search
文档中心

Platform For AI:Pytorch

更新时间:Jul 06, 2025

Elastic Algorithm Service (EAS) dari Platform Pembelajaran Mesin untuk AI menyediakan prosesor PyTorch bawaan. Anda dapat menggunakan prosesor PyTorch untuk menerapkan model dalam format TorchScript yang didukung oleh PyTorch sebagai layanan model online. Topik ini menjelaskan cara menerapkan dan memanggil layanan model PyTorch.

Versi prosesor PyTorch

Prosesor PyTorch berbeda sesuai dengan versi PyTorch yang digunakan, termasuk versi yang dipercepat GPU dan CPU. Tabel berikut menunjukkan prosesor PyTorch yang tersedia beserta versi PyTorch yang sesuai.

Nama Prosesor

Versi PyTorch

Dukungan untuk akselerasi GPU

pytorch_cpu_1.6

Pytorch 1.6

Tidak

pytorch_cpu_1.7

Pytorch 1.7

Tidak

pytorch_cpu_1.9

Pytorch 1.9

Tidak

pytorch_cpu_1.10

Pytorch 1.10

Tidak

pytorch_gpu_1.6

Pytorch 1.6

Ya

pytorch_gpu_1.7

Pytorch 1.7

Ya

pytorch_gpu_1.9

Pytorch 1.9

Ya

pytorch_gpu_1.10

Pytorch 1.10

Ya

Langkah 1: Terapkan layanan model

Saat menggunakan klien EASCMD untuk menerapkan layanan model PyTorch, atur processor ke salah satu nama prosesor PyTorch yang tersedia. Blok kode berikut menunjukkan contoh file konfigurasi layanan:

{

  "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
  }
}

Untuk informasi lebih lanjut tentang penggunaan klien EASCMD untuk menerapkan layanan model, lihat Terapkan Layanan Model Menggunakan EASCMD.

Anda juga dapat menggunakan konsol untuk menerapkan layanan model PyTorch. Untuk informasi lebih lanjut, lihat Parameter untuk Penyebaran Kustom di Konsol.

Langkah 2: Panggil layanan model

Input dan output layanan model PyTorch berupa buffer protokol, bukan teks biasa. Fitur debugging online hanya mendukung data input dan output dalam teks biasa. Oleh karena itu, fitur debugging online di konsol tidak dapat digunakan untuk memanggil layanan model.

EAS menyediakan SDK EAS untuk berbagai bahasa pemrograman. Data permintaan dan respons serta mekanisme koneksi langsung dan toleransi kesalahan telah dienkapsulasi dalam SDK EAS. Kami merekomendasikan penggunaan SDK EAS untuk membuat dan mengirim permintaan layanan. Blok kode berikut menunjukkan contoh permintaan layanan inferensi:

#!/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))

Untuk informasi lebih lanjut tentang parameter dalam permintaan contoh dan cara memanggil layanan model, lihat SDK untuk Python.

Anda juga dapat membuat permintaan layanan kustom tanpa menggunakan SDK EAS. Untuk informasi lebih lanjut, lihat Sintaks Permintaan.

Sintaks permintaan

Input dan output prosesor PyTorch berupa buffer protokol. Anda dapat menggunakan SDK EAS untuk mengirim permintaan layanan, yang telah dienkapsulasi dalam SDK EAS. Cukup gunakan fungsi yang disediakan oleh SDK EAS untuk membuat permintaan layanan. Anda juga dapat membuat permintaan layanan kustom berdasarkan sintaks berikut tanpa menggunakan SDK EAS. Untuk informasi lebih lanjut, lihat Bangun Permintaan untuk Layanan TensorFlow.

syntax = "proto3";

package pytorch.eas;
option cc_enable_arenas = true;

enum ArrayDataType {
  // Bukan nilai legal untuk DataType. Digunakan untuk menunjukkan bidang DataType
  // belum disetel
  DT_INVALID = 0;

  // Jenis data yang semua perangkat komputasi diharapkan mampu mendukung
  DT_FLOAT = 1;
  DT_DOUBLE = 2;
  DT_INT32 = 3;
  DT_UINT8 = 4;
  DT_INT16 = 5;
  DT_INT8 = 6;
  DT_STRING = 7;
  DT_COMPLEX64 = 8;  // Kompleks presisi tunggal
  DT_INT64 = 9;
  DT_BOOL = 10;
  DT_QINT8 = 11;     // int8 kuantisasi
  DT_QUINT8 = 12;    // uint8 kuantisasi
  DT_QINT32 = 13;    // int32 kuantisasi
  DT_BFLOAT16 = 14;  // Float32 dipotong menjadi 16 bit. Hanya untuk operasi cast
  DT_QINT16 = 15;    // int16 kuantisasi
  DT_QUINT16 = 16;   // uint16 kuantisasi
  DT_UINT16 = 17;
  DT_COMPLEX128 = 18;  // Kompleks presisi ganda
  DT_HALF = 19;
  DT_RESOURCE = 20;
  DT_VARIANT = 21;  // Tipe data C++ arbitrer
}

// Dimensi array
message ArrayShape {
  repeated int64 dim = 1 [packed = true];
}

// Buffer protokol yang mewakili array
message ArrayProto {
  // Tipe Data
  ArrayDataType dtype = 1;

  // Bentuk array.
  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 {

  // Tensor input.
  repeated ArrayProto inputs = 1;

  // Filter output.
  repeated int32 output_filter = 2;
}

// Tanggapan untuk PredictRequest pada eksekusi sukses.
message PredictResponse {
  // Tensor output.
  repeated ArrayProto outputs = 1;
}