全部产品
Search
文档中心

Platform For AI:Optimalkan model PyTorch

更新时间:Jul 02, 2025

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

  1. Impor PAI-Blade dan pustaka dependensi lainnya.

    import os
    import time
    import torch
    import torchvision.models as models
    import blade
  2. Muat 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.
  3. Panggil metode blade.optimize untuk 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.optimize mengembalikan objek berikut:

    • optimized_model: Model yang telah dioptimalkan. Dalam contoh ini, objek torch.jit.ScriptModule dikembalikan.

    • opt_spec: Dependensi eksternal yang diperlukan untuk mereproduksi hasil optimasi. Dependensi mencakup informasi konfigurasi, variabel lingkungan, dan file sumber daya. Anda dapat mengeksekusi pernyataan WITH dalam 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.
  4. 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.
      },
      // ......
    }
  5. 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.ScriptModule dari file model yang disimpan menggunakan metode torch.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.