All Products
Search
Document Center

Platform For AI:Optimalkan model PyTorch

Last Updated:Apr 02, 2026

PAI-Blade mempercepat inferensi model PyTorch dengan menerapkan optimasi spesifik perangkat keras melalui satu panggilan Python. Panduan ini menjelaskan alur kerja optimasi lengkap—mulai dari memuat model hingga mengukur hasilnya—menggunakan model ResNet50 pada GPU NVIDIA Tesla T4 sebagai contoh.

Yang akan Anda pelajari:

  • Cara mengonversi model PyTorch ke format ScriptModule untuk PAI-Blade

  • Cara memanggil blade.optimize serta memahami parameter dan nilai kembalinya

  • Cara membaca laporan optimasi dan mengukur percepatan inferensi

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menginstal paket wheel PyTorch dan PAI-Blade. Lihat Instal PAI-Blade

  • Memiliki model PyTorch yang telah dilatih. Panduan ini menggunakan model ResNet50 publik dari torchvision

Optimalkan model PyTorch

Langkah 1: Impor dependensi

import os
import time
import torch
import torchvision.models as models
import blade

Langkah 2: Muat dan konversi model

PAI-Blade hanya menerima objek torch.jit.ScriptModule—tidak berfungsi dengan model nn.Module standar. Konversi model Anda menggunakan torch.jit.script sebelum diteruskan ke PAI-Blade.

model = models.resnet50().float().cuda()  # Muat model ResNet50.
model = torch.jit.script(model).eval()   # Konversi ke ScriptModule.
dummy = torch.rand(1, 3, 224, 224).cuda() # Buat input uji.

Langkah 3: Jalankan optimasi

Panggil blade.optimize untuk mengoptimalkan model. Metode ini menerima parameter utama berikut:

ParameterDeskripsiNilai dalam contoh ini
modelModel yang akan dioptimalkanmodel (ScriptModule dalam memori)
'o1'Tingkat optimasi. Nilai yang valid: o1 dan o2'o1'
device_typeJenis perangkat untuk inferensi. Nilai yang valid: gpu, cpu'gpu'
test_dataTensor input representatif. Berikan daftar tupel — setiap tupel adalah satu set input[(dummy,)]

Untuk referensi parameter lengkap, lihat Metode Python.

optimized_model, opt_spec, report = blade.optimize(
    model,                 # Model yang akan dioptimalkan.
    'o1',                  # Tingkat optimasi.
    device_type='gpu',     # Jenis perangkat target.
    test_data=[(dummy,)],  # Data input uji.
)

blade.optimize mengembalikan tiga objek:

  • `optimized_model`: Model yang telah dioptimalkan sebagai objek torch.jit.ScriptModule, siap untuk inferensi.

  • `opt_spec`: Dependensi eksternal (konfigurasi, variabel lingkungan, file sumber daya) yang diperlukan untuk mereproduksi optimasi. Gunakan pernyataan with di Python untuk mengaktifkan dependensi ini.

  • `report`: Laporan optimasi, yang dapat langsung Anda cetak. Lihat Laporan optimasi untuk detail setiap bidang.

Optimasi memerlukan waktu. PAI-Blade menjalankan beberapa fase analisis sebelum menghasilkan model yang dioptimalkan. Kemajuan ditampilkan selama proses optimasi berlangsung:

[Progress] 5%, phase: user_test_data_validation.
[Progress] 10%, phase: test_data_deduction.
[Progress] 15%, phase: CombinedSwitch_4.
[Progress] 95%, phase: model_collecting.

Kompilasi ini merupakan biaya satu kali. Setelah optimasi selesai, inferensi dengan optimized_model secara konsisten lebih cepat daripada model aslinya.

Langkah 4: Tinjau laporan optimasi

print("Report: {}".format(report))

Laporan tersebut menunjukkan optimasi apa saja yang diterapkan dan pengaruhnya terhadap latensi. Contoh laporan:

{
  "optimizations": [
    {
      "name": "PtTrtPassFp32",
      "status": "effective",
      "speedup": "1.50",     // Rasio percepatan untuk optimasi ini.
      "pre_run": "5.29 ms",  // Latensi sebelum optimasi.
      "post_run": "3.54 ms"  // Latensi setelah optimasi.
    }
  ],
  "overall": {
    "baseline": "5.30 ms",    // Latensi model asli.
    "optimized": "3.59 ms",   // Latensi model yang dioptimalkan.
    "speedup": "1.48"         // Rasio percepatan end-to-end.
  }
}

Pada contoh ini, percepatan end-to-end adalah 1,48x—model yang dioptimalkan berjalan dalam 3,59 ms dibandingkan 5,30 ms untuk model aslinya. Periksa "status": "effective" untuk mengidentifikasi pass optimasi mana yang memberikan dampak terukur.

Langkah 5: Ukur performa inferensi

Gunakan fungsi berikut untuk mengukur latensi steady-state baik untuk model asli maupun model yang dioptimalkan. 100 eksekusi pertama digunakan untuk pemanasan GPU; 200 eksekusi berikutnya diukur waktunya.

@torch.no_grad()
def benchmark(model, inp):
    for i in range(100):    # Pemanasan.
        model(inp)
    start = time.time()
    for i in range(200):    # Eksekusi yang diukur.
        model(inp)
    elapsed_ms = (time.time() - start) * 1000
    print("Latency: {:.2f}".format(elapsed_ms / 200))

benchmark(model, dummy)           # Model asli.
benchmark(optimized_model, dummy) # Model yang dioptimalkan.

Muat model dari file

Pada contoh di atas, model diberikan sebagai torch.jit.ScriptModule dalam memori. Anda juga dapat memberikan path file ke model yang disimpan dengan torch.jit.save:

optimized_model, opt_spec, report = blade.optimize(
    'path/to/torch_model.pt',  # Path ke file ScriptModule yang disimpan.
    'o1',
    device_type='gpu',
)

Langkah selanjutnya

Setelah optimasi, Anda memiliki tiga opsi untuk menjalankan model:

  • Inferensi Python: Jalankan optimized_model langsung di Python menggunakan API yang sama seperti torch.jit.ScriptModule lainnya.

  • Terapkan sebagai layanan: Terapkan model yang dioptimalkan ke Elastic Algorithm Service (EAS) di Machine Learning Platform for AI (PAI) untuk serving skala produksi.

  • Integrasi C++: Gunakan SDK C++ PAI-Blade untuk menyematkan model yang dioptimalkan ke dalam aplikasi Anda sendiri.

Untuk instruksi penerapan, lihat Gunakan SDK untuk menerapkan model PyTorch guna inferensi.

Catatan: Jika Anda memiliki pertanyaan selama proses optimasi, bergabunglah dengan grup DingTalk untuk pengguna PAI-Blade guna menghubungi dukungan teknis. Untuk mendapatkan akses, lihat Dapatkan token akses.