Machine Learning Platform for AI (PAI)-Blade memungkinkan Anda mengoptimalkan model dengan berbagai cara. Cukup instal paket wheel di lingkungan lokal Anda, lalu optimalkan model dengan memanggil metode Python. Topik ini menjelaskan cara mengoptimalkan model PyTorch menggunakan PAI-Blade. Contoh ini menggunakan GPU NVIDIA Tesla T4.
Prasyarat
PyTorch telah diinstal. Paket wheel dari PAI-Blade juga telah diinstal. Untuk informasi lebih lanjut, lihat Instal PAI-Blade.
Model PyTorch telah dilatih. Contoh ini menggunakan model ResNet50 terbuka.
Optimalkan model PyTorch
Impor PAI-Blade dan pustaka dependensi lainnya.
import os import time import torch import torchvision.models as models import bladeMuat model ResNet50 dari pustaka torchvision. PAI-Blade hanya mendukung ScriptModules, sehingga model ResNet50 harus dikonversi menjadi ScriptModule.
model = models.resnet50().float().cuda() # Persiapkan model. model = torch.jit.script(model).eval() # Konversikan model menjadi ScriptModule. dummy = torch.rand(1, 3, 224, 224).cuda() # Buat data uji.Panggil metode
blade.optimizeuntuk mengoptimalkan model ResNet50. Untuk detail parameter, lihat metode Python. Contoh kode berikut menunjukkan cara mengoptimalkan model. Jika Anda memiliki pertanyaan selama proses optimasi, Anda dapat bergabung dengan grup DingTalk pengguna PAI-Blade dan berkonsultasi dengan staf dukungan teknis. Untuk informasi lebih lanjut, lihat Dapatkan Token Akses.optimized_model, opt_spec, report = blade.optimize( model, # Model yang akan dioptimalkan. 'o1', # Tingkat optimasi. Nilai valid: o1 dan o2. device_type='gpu', # Jenis perangkat tempat model dijalankan. Nilai valid: gpu dan cpu. test_data=[(dummy,)], # Data uji. Data uji yang digunakan untuk model PyTorch adalah daftar tupel tensor. )Metode
blade.optimizemengembalikan objek berikut:optimized_model: Model yang telah dioptimalkan. Dalam contoh ini, objek
torch.jit.ScriptModuledikembalikan.opt_spec: Dependensi eksternal yang diperlukan untuk mereproduksi hasil optimasi. Dependensi mencakup informasi konfigurasi, variabel lingkungan, dan file sumber daya. Anda dapat mengeksekusi pernyataan
WITHdalam Python untuk menerapkan dependensi tersebut.report: Laporan optimasi yang dapat ditampilkan langsung. Untuk detail parameter dalam laporan optimasi, lihat Laporan Optimasi.
Selama proses optimasi, kemajuan akan ditampilkan. Contoh kode berikut memberikan ilustrasi:
[Progress] 5%, phase: user_test_data_validation. [Progress] 10%, phase: test_data_deduction. [Progress] 15%, phase: CombinedSwitch_4. [Progress] 95%, phase: model_collecting.Tampilkan laporan optimasi.
print("Report: {}".format(report))Dalam laporan optimasi, Anda dapat melihat item optimasi yang berhasil meningkatkan performa. Contoh kode berikut memberikan ilustrasi:
Report: { // ...... "optimizations": [ { "name": "PtTrtPassFp32", "status": "effective", "speedup": "1.50", // Rasio percepatan. "pre_run": "5.29 ms", // Latensi sebelum percepatan. "post_run": "3.54 ms" // Latensi setelah percepatan. } ], // Hasil optimasi end-to-end. "overall": { "baseline": "5.30 ms", // Latensi model asli. "optimized": "3.59 ms", // Latensi model yang dioptimalkan. "speedup": "1.48" // Rasio percepatan. }, // ...... }Bandingkan kinerja sebelum dan sesudah optimasi model.
@torch.no_grad() def benchmark(model, inp): for i in range(100): model(inp) start = time.time() for i in range(200): model(inp) elapsed_ms = (time.time() - start) * 1000 print("Latency: {:.2f}".format(elapsed_ms / 200)) # Ukur kecepatan model asli. benchmark(model, dummy) # Ukur kecepatan model yang dioptimalkan. benchmark(optimized_model, dummy)
Informasi tambahan
Saat memanggil metode blade.optimize, Anda dapat menentukan model yang akan dioptimalkan untuk parameter model dengan beberapa cara. Untuk mengoptimalkan model PyTorch, gunakan salah satu pendekatan berikut:
Tentukan objek
torch.jit.ScriptModule.Muat objek
torch.jit.ScriptModuledari file model yang disimpan menggunakan metodetorch.jit.save.
Dalam contoh ini, objek torch.jit.ScriptModule di memori ditentukan untuk metode blade.optimize. Contoh kode berikut menunjukkan cara memuat model dari file model:
optimized_model, opt_spec, report = blade.optimize(
'path/to/torch_model.pt',
'o1',
device_type='gpu'
)Apa yang harus dilakukan selanjutnya
Setelah model dioptimalkan menggunakan PAI-Blade, Anda dapat menjalankan model yang dioptimalkan di Python atau menerapkannya sebagai layanan di Elastic Algorithm Service (EAS) dari PAI. PAI-Blade juga menyediakan SDK untuk C++ untuk membantu Anda mengintegrasikan model yang dioptimalkan ke dalam aplikasi Anda sendiri. Untuk informasi lebih lanjut, lihat Gunakan SDK untuk Menerapkan Model PyTorch untuk Inferensi.