全部产品
Search
文档中心

Platform For AI:Gunakan Plugin EAS Blade untuk mengoptimalkan dan menerapkan model

更新时间:Jul 02, 2025

EAS Plugin adalah mekanisme pra-pemrosesan yang disediakan oleh Elastic Algorithm Service (EAS) dari Machine Learning Platform for AI (PAI). Anda dapat menggunakan EAS Plugin untuk memproses model secara seragam sebelum menerapkannya. Berdasarkan EAS Plugin, PAI meluncurkan Plugin EAS Blade untuk mengoptimalkan model sebelum penerapan. Secara tradisional, Anda dapat menggunakan paket wheel Python PAI-Blade untuk mengoptimalkan model. Jika Anda mengaktifkan Plugin EAS Blade, plugin ini akan otomatis berjalan untuk mengoptimalkan model sebelum diterapkan, mengurangi overhead integrasi PAI-Blade. Topik ini menjelaskan cara mengaktifkan Plugin EAS Blade dengan mengonfigurasi file konfigurasi layanan di EAS sehingga Anda dapat menggunakannya untuk mengoptimalkan dan menerapkan model.

Informasi latar belakang

SDK PAI-Blade terintegrasi ke dalam prosesor TensorFlow dan PyTorch dari EAS. Jika Anda menggunakan prosesor TensorFlow atau PyTorch untuk menerapkan model, Anda dapat mengonfigurasi file konfigurasi layanan untuk mengaktifkan Plugin EAS Blade. Dengan cara ini, Anda dapat menggunakan Plugin EAS Blade untuk mengoptimalkan model.

Catatan

Jika Anda mengaktifkan Plugin EAS Blade, plugin ini akan mengoptimalkan model sebelum diterapkan di EAS. Proses optimasi membutuhkan waktu 3 hingga 10 menit, tergantung pada kompleksitas model. Plugin EAS Blade hanya dijalankan sekali saat Anda menerapkan model di EAS. Operasi penskalaan sumber daya di masa mendatang dilakukan berdasarkan model yang telah dioptimalkan.

Anda hanya dapat mengaktifkan Plugin EAS Blade jika menggunakan klien EASCMD untuk membuat layanan. Untuk informasi lebih lanjut tentang cara mengonfigurasi dan menggunakan klien EASCMD, lihat Unduh Klien EASCMD dan Lengkapi Autentikasi Pengguna dan Jalankan Perintah untuk Menggunakan Klien EASCMD.

Untuk mengaktifkan Plugin EAS Blade, tambahkan parameter plugins ke file konfigurasi layanan. Untuk informasi lebih lanjut tentang parameter plugins, lihat bagian Parameter Plugins dalam topik ini. Topik ini juga menyediakan contoh pengaturan file konfigurasi layanan baik dengan atau tanpa aktivasi Plugin EAS Blade. Untuk detail lebih lanjut, lihat bagian-bagian berikut:

Parameter plugins

Untuk mengaktifkan Plugin EAS Blade, tambahkan parameter plugins ke file konfigurasi layanan. Nilai parameter plugins adalah daftar yang terdiri dari satu atau lebih kamus. Untuk informasi lebih lanjut tentang parameter dalam file konfigurasi layanan, lihat Buat Layanan.

Tabel berikut menjelaskan kunci dari kamus-kamus tersebut.

Tabel 1. Kunci Plugins

Kunci

Diperlukan

Deskripsi

command

Ya

Perintah yang Anda jalankan untuk mengoptimalkan model. Untuk informasi tentang nilai-nilai yang valid, lihat bagian Pemetaan antara nama-nama prosesor dan URL gambar Plugin EAS Blade dalam topik ini.

image

Ya

URL gambar Plugin EAS Blade. Plugin EAS Blade mendukung prosesor TensorFlow dan PyTorch. Plugin ini juga mendukung CPU dan GPU dengan CUDA 10.0. Untuk informasi tentang pemetaan antara nama-nama prosesor dan URL gambar Plugin EAS Blade, lihat bagian Pemetaan antara nama-nama prosesor dan URL gambar Plugin EAS Blade dalam topik ini.

resource

Tidak

Grup sumber daya yang digunakan untuk mengoptimalkan model. Anda harus membedakan parameter ini dari parameter resource di lapisan paling luar file konfigurasi layanan. Parameter resource di lapisan paling luar file konfigurasi layanan menentukan grup sumber daya yang digunakan untuk menjalankan model di EAS.

Parameter ini diperlukan jika Anda ingin mengoptimalkan model pada GPU. Anda dapat menggunakan grup sumber daya T4_8CORE untuk menjalankan Plugin EAS Blade di wilayah China (Hangzhou) dan China (Shanghai). Anda juga dapat menggunakan grup sumber daya V100_8CORE atau P4_8CORE di wilayah China (Shanghai).

Catatan

Jenis GPU dalam grup sumber daya yang digunakan untuk menjalankan Plugin EAS Blade harus sama dengan yang ada di grup sumber daya yang digunakan untuk membuat layanan di EAS.

gpu

Tidak

Jumlah GPU yang digunakan untuk mengoptimalkan model. Dalam banyak kasus, atur parameter ini menjadi 1.

config

Tidak

Item konfigurasi tingkat lanjut untuk optimasi model. Dalam versi ini, hanya parameter model_info yang bersarang di dalam parameter config.

Anda dapat mengatur parameter model_info untuk mengonfigurasi item optimasi untuk satu atau beberapa model. Dalam versi ini, Anda dapat mengonfigurasi item optimasi hanya untuk satu model.

Kunci model adalah nama file model, dan nilainya bisa berupa item optimasi yang berbeda. Item optimasi harus sesuai dengan parameter metode blade.optimize dalam paket wheel PAI-Blade. Untuk informasi lebih lanjut tentang item optimasi yang didukung, lihat bagian Item optimasi dalam topik ini.

Tabel 2. Pemetaan Antara Nama-Nama Prosesor dan URL Gambar Plugin EAS Blade

Jenis perangkat

Kunci

Nilai

CPU

image

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

command

blade --mode eas_plugin --optimize_for cpu

processor

  • Nilai valid jika Anda menggunakan prosesor TensorFlow: tensorflow_cpu_1.15

  • Nilai valid jika Anda menggunakan prosesor PyTorch: pytorch_cpu_1.6

GPU

image

  • Nilai valid jika Anda menggunakan GPU dengan CUDA 10.0: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest

  • Nilai valid jika Anda menggunakan GPU dengan CUDA 11.0: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cu110_latest

command

blade --mode eas_plugin --optimize_for gpu

processor

  • Nilai valid jika Anda menggunakan TensorFlow 1.15 dengan CUDA 10.0: tensorflow_gpu_1.15

  • Nilai valid jika Anda menggunakan TensorFlow 2.4 dengan CUDA 11.0: tensorflow_gpu_2.4

  • Nilai valid jika Anda menggunakan PyTorch 1.6 dengan CUDA 10.0: pytorch_gpu_1.6

  • Nilai valid jika Anda menggunakan PyTorch 1.7 dengan CUDA 11.0: pytorch_gpu_1.7

Tabel 3. Item Optimasi

Item optimasi

Deskripsi

optimization_level

Tingkat optimasi. Nilai valid:

  • o1: menunjukkan optimasi tanpa kehilangan presisi. Anda dapat mengaktifkan optimasi FP32 atau FP16 untuk model yang dioptimalkan berdasarkan perangkat keras yang Anda gunakan untuk menjaga kehilangan presisi tetap di bawah ambang batas minimal. Ini adalah nilai default.

  • o2: menunjukkan kuantisasi INT8. Anda dapat mengatur parameter ini ke o2 jika perangkat keras yang Anda gunakan mendukung INT8.

test_data

Opsional. File data uji. File tersebut harus berada di direktori atau paket kompresi yang ditentukan oleh parameter model_path. Kami sarankan Anda menggunakan set data uji yang dapat digunakan untuk inferensi model, terutama ketika Anda mengoptimalkan model PyTorch. Untuk informasi lebih lanjut tentang cara menghasilkan file data uji, lihat bagian Data tambahan untuk optimasi model dalam topik ini.

calibration_dataset

Opsional. File data kalibrasi yang digunakan untuk mengkuantisasi model. File tersebut harus berada di direktori atau paket kompresi yang ditentukan oleh parameter model_path.

Jika Anda tidak menentukan parameter ini, model dikuantisasi ke INT8 secara online. Jika Anda menentukan parameter ini, model dikuantisasi ke INT8 secara offline.

Kami sarankan Anda menggunakan lebih dari 100 potongan data kalibrasi. Untuk informasi lebih lanjut tentang cara menghasilkan file data kalibrasi yang digunakan untuk mengkuantisasi model, lihat Data tambahan untuk optimasi model.

inputs

Opsional. Nama node input untuk model. Nilainya adalah daftar string. Jika Anda tidak menentukan parameter ini, PAI-Blade menggunakan node yang tidak memiliki node upstream sebagai node input.

Parameter ini tidak diperlukan untuk model PyTorch.

outputs

Opsional. Nama node output untuk model. Nilainya adalah daftar string. Jika Anda tidak menentukan parameter ini, PAI-Blade menggunakan node yang tidak memiliki node downstream sebagai node output.

Parameter ini tidak diperlukan untuk model PyTorch.

input_shapes

Bentuk tensor input yang mungkin. Anda dapat menentukan parameter ini untuk meningkatkan efek optimasi dalam skenario tertentu. Jumlah elemen dalam daftar dalam harus sama dengan jumlah tensor input dalam model. Setiap elemen adalah string yang menentukan bentuk input. Contoh: '1*512'.

Jika Anda ingin menentukan beberapa kelompok bentuk yang mungkin, Anda dapat menambahkan elemen ke daftar luar. Misalnya, Anda perlu menentukan satu kelompok bentuk yang mungkin untuk satu model dan beberapa kelompok bentuk yang mungkin untuk model lain. Kode sampel berikut memberikan contoh:

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

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

input_ranges

Rentang nilai tensor input. Jumlah elemen dalam daftar dalam harus sama dengan jumlah tensor input dalam model. Setiap elemen adalah string yang menentukan rentang nilai.

Rentang nilai dapat ditentukan menggunakan tanda kurung ([]), bilangan real, dan karakter. Contoh: '[1,2]', '[0.3,0.9]', dan '[a,f]'.

Jika Anda ingin menentukan beberapa kelompok rentang nilai, Anda dapat menambahkan elemen ke daftar luar. Misalnya, Anda perlu menentukan satu kelompok rentang nilai untuk satu model dan beberapa kelompok rentang nilai untuk model lain. Kode sampel berikut memberikan contoh:

  • [['[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

Nilai parameter ini adalah kamus JSON. Hanya kunci weight_adjustment yang didukung. Kunci ini menentukan apakah akan mengurangi kehilangan presisi dengan menyesuaikan parameter model. Nilai valid untuk kunci weight_adjustment:

  • "true": menentukan untuk mengurangi kehilangan presisi dengan menyesuaikan parameter model.

  • "false": menentukan untuk tidak mengurangi kehilangan presisi dengan menyesuaikan parameter model.

Data tambahan untuk optimasi model

Jika Anda mengatur tingkat optimasi ke o1, Anda dapat mengatur parameter test_data untuk meningkatkan kinerja optimasi. Jika Anda mengatur tingkat optimasi ke o2, Anda dapat mengatur parameter calibration_dataset untuk mengkuantisasi model ke INT8 secara offline. Nilai yang ditentukan untuk parameter test_data dan calibration_dataset harus mematuhi format data tambahan berikut yang diperlukan oleh PAI-Blade:

  • Data tambahan model TensorFlow harus berupa feed dicts. Kunci setiap feed dict harus berupa string, dan nilainya bertipe numpy.ndarray. Data tambahan model TensorFlow harus disimpan dalam file .npy.

  • Data tambahan model PyTorch harus berupa tupel tensor dan disimpan dalam file .pth.

Kode sampel berikut memberikan contoh cara menghasilkan file data tambahan untuk model 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)

Kode sampel berikut memberikan contoh cara menghasilkan file data tambahan untuk model 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')

Contoh 1: Jangan aktifkan Plugin EAS Blade

Kode sampel berikut memberikan contoh cara mengonfigurasi file konfigurasi layanan tanpa mengaktifkan Plugin EAS Blade:

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

Untuk informasi lebih lanjut tentang parameter dalam file konfigurasi layanan, lihat Buat Layanan.

Simpan file konfigurasi layanan sebagai service.json. Kemudian, jalankan perintah berikut untuk membuat layanan TensorFlow 1.15 yang diterapkan pada CPU:

eascmd create service.json

Output Sampel:

+-------------------+-------------------------------------------------------------------------------------------------+
| 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] Layanan sedang dibuat
[OK] Mengambil prosesor dari [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] Berhasil mengunduh semua artefak
[OK] Membangun image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Berhasil mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117170541
[OK] Berhasil membuat ingress
[OK] Berhasil menyinkronkan sumber daya
[OK] Menunggu [Total: 1, Pending: 1, Running: 0]
[OK] Berjalan [Total: 1, Pending: 0, Running: 1]
[OK] Layanan sedang berjalan

Contoh 2: Aktifkan Plugin EAS Blade untuk melakukan optimasi sederhana

Untuk mengaktifkan Plugin EAS Blade, tambahkan parameter plugins ke file konfigurasi layanan. Nilai parameter plugins adalah daftar yang terdiri dari satu atau lebih kamus. Dalam kode sampel berikut, hanya satu plugin optimasi PAI-Blade yang digunakan, sehingga daftar dalam kode sampel hanya berisi satu kamus.

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

Dalam kode sampel, nilai parameter selain plugins harus mematuhi format data yang diperlukan dalam file konfigurasi layanan. Untuk informasi lebih lanjut, lihat Buat Layanan. Kamus yang ditentukan dalam parameter plugins berisi dua kunci berikut:

  • command: Perintah yang dijalankan untuk mengoptimalkan model. Dalam perintah tersebut, --mode eas_plugin menunjukkan mode optimasi, dan --optimize_for cpu menunjukkan optimasi untuk inferensi model pada CPU.

  • image: URL gambar Plugin EAS Blade. Untuk optimasi model pada CPU, URL gambar adalah registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest.

Contoh ini cocok untuk skenario di mana Anda mengoptimalkan model pada CPU tanpa menyediakan data uji. Simpan file konfigurasi layanan sebagai service1.json. Kemudian, jalankan perintah berikut di klien EASCMD untuk membuat layanan TensorFlow 1.15 yang diterapkan pada CPU:

eascmd create service1.json

Output Sampel:

+-------------------+-------------------------------------------------------------------------------------------------+
| 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] Layanan sedang dibuat
[OK] Mengambil prosesor dari [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] Berhasil mengunduh semua artefak
[OK] Menjalankan plugin eas-plugin-73d70d54: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:cpu_latest
[OK] Membangun image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Berhasil mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117172259
[OK] Berhasil membuat ingress
[OK] Berhasil memperbaiki sumber daya
[OK] Menunggu [Total: 1, Pending: 1, Running: 0]
[OK] Berjalan [Total: 1, Pending: 0, Running: 1]
[OK] Layanan sedang berjalan

Dibandingkan dengan output sampel dalam Contoh 1, output sampel dalam contoh ini berisi baris log tambahan berikut, yang menunjukkan bahwa model dioptimalkan menggunakan Plugin EAS Blade.

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

Contoh 3: Aktifkan Plugin EAS Blade untuk melakukan optimasi rumit

Saat menggunakan Plugin EAS Blade untuk mengoptimalkan model, memberikan lebih banyak informasi tentang model dapat meningkatkan akurasi dan efisiensi optimasi. Kode sampel berikut memberikan contoh file konfigurasi layanan untuk optimasi model pada GPU. Dibandingkan dengan kode sampel dalam contoh sebelumnya, kode sampel ini berisi lebih banyak parameter tentang optimasi model.

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

Dalam kode sampel, nilai parameter selain plugins harus mematuhi format data yang diperlukan dalam file konfigurasi layanan. Untuk informasi lebih lanjut, lihat Buat Layanan. Untuk informasi lebih lanjut tentang kunci parameter plugins, lihat bagian Kunci Plugins dalam topik ini. Dalam kode sampel, frozen.pb adalah nama file model TensorFlow yang akan dioptimalkan.

Simpan file konfigurasi layanan sebagai service2.json. Kemudian, jalankan perintah berikut di klien EASCMD untuk membuat layanan TensorFlow 1.15 yang diterapkan pada GPU:

eascmd create service2.json

Output Sampel:

+-------------------+-------------------------------------------------------------------------------------------------+
| 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] Layanan sedang dibuat
[OK] Menjadwalkan proses ke node cn-shanghai.i-uf642ocg20xinsme****
[OK] Mengunduh file oss: oss://blade-qa/test_assets/tf_security_textcnn/
[OK] Mengambil prosesor dari [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] Berhasil mengunduh semua artefak
[OK] Menjalankan plugin eas-plugin-7126ee68: registry.cn-shanghai.aliyuncs.com/eas/pai-blade-deploy:gpu_latest
[OK] Membangun image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Berhasil mendorong image registry-vpc.cn-shanghai.aliyuncs.com/eas/blade_eas_plugin_test_cn-shanghai:v0.0.1-20211117191732
[OK] Berhasil membuat ingress
[OK] Berhasil menyinkronkan sumber daya
[OK] Menunggu [Total: 1, Pending: 1, Running: 0]
[OK] Berjalan [Total: 1, Pending: 0, Running: 1]
[OK] Layanan sedang berjalan

Dibandingkan dengan output sampel dalam Contoh 1, output sampel dalam contoh ini berisi baris log tambahan berikut, yang menunjukkan bahwa model dioptimalkan menggunakan Plugin EAS Blade.

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