全部产品
Search
文档中心

Platform For AI:Metode Python

更新时间:Jul 02, 2025

Machine Learning Platform for AI (PAI)-Blade menyediakan metode Python yang dapat digunakan untuk mengintegrasikan proses optimasi model ke dalam pipeline. Topik ini menjelaskan secara rinci metode Python, termasuk sintaksis, parameter input, dan respons.

optimalkan

PAI-Blade menyediakan metode optimalkan yang dapat digunakan untuk mengoptimalkan model.

  • Sintaksis

    def optimalkan(
        model: Any,
        optimization_level: str,
        device_type: str,
        config: Optional[Config] = None,
        inputs: Optional[List[str]] = None,
        outputs: Optional[List[str]] = None,
        input_shapes: Optional[List[List[str]]] = None,
        input_ranges: Optional[List[List[str]]] = None,
        test_data: List[Dict[str, np.ndarray]] = [],
        calib_data: List[Dict[str, np.ndarray]] = [],
        custom_ops: List[str] = [],
        verbose: bool = False,
    ) -> Tuple[Any, OptimizeSpec, OptimizeReport]:
        pass
  • Parameter Input

    Parameter

    Tipe

    Diperlukan

    Deskripsi

    Nilai default

    model

    Berbagai tipe

    Ya

    Model yang akan dioptimalkan.

    • Jika model yang akan dioptimalkan adalah model TensorFlow, format berikut didukung:

      • Objek GraphDef.

      • Path file PB GraphDef dengan nama yang diakhiri dengan .pb atau .pbtxt.

      • String yang menentukan direktori file SavedModel.

    • Jika model yang akan dioptimalkan adalah model PyTorch, format berikut didukung:

      • Objek torch.nn.Module.

      • String yang menentukan direktori file torch.nn.Module yang diekspor. Nama file diakhiri dengan .pt.

    N/A

    optimization_level

    STRING

    Ya

    Tingkat optimasi. Nilai valid (tidak peka huruf besar/kecil):

    • o1: optimasi tanpa kehilangan data, seperti penulisan ulang graf dan optimasi kompilasi

    • o2: kuantisasi

    N/A

    device_type

    STRING

    Ya

    Tipe perangkat tempat model dijalankan. Nilai valid (tidak peka huruf besar/kecil):

    • gpu

    • cpu

    • edge (tidak tersedia untuk PyTorch)

    N/A

    inputs

    LIST[STRING]

    Tidak

    Nama node input. Jika Anda tidak menentukan parameter ini, sistem akan secara otomatis melakukan inferensi.

    None

    outputs

    LIST[STRING]

    Tidak

    Nama node output. Jika Anda tidak menentukan parameter ini, sistem akan secara otomatis melakukan inferensi.

    None

    input_shapes

    LIST[LIST[STRING]]

    Tidak

    Kemungkinan bentuk tensor input. Anda dapat menentukan parameter ini untuk meningkatkan efek optimasi dalam skenario tertentu. Jumlah elemen dalam daftar bagian 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']
      ]

    None

    input_ranges

    LIST[LIST[STRING]]

    Tidak

    Rentang nilai tensor input. Jumlah elemen dalam daftar bagian 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]']
      ]

    None

    test_data

    Berbagai tipe

    Tidak

    Data uji yang digunakan untuk kalibrasi kecepatan jalannya model. Tipe data dari data uji bervariasi berdasarkan tipe model.

    • Data uji yang digunakan untuk model TensorFlow terdiri dari beberapa kelompok argumen feed_dict. Tipe data yang sesuai adalah LIST[DICT[STRING, np.ndarray]].

    • Data uji yang digunakan untuk model PyTorch terdiri dari beberapa tuple tensor input. Tipe data yang sesuai adalah LIST[Tuple[torch.tensor, ]].

    []

    calib_data

    Berbagai tipe

    Tidak

    Data kalibrasi yang digunakan untuk mengkuantisasi model. Parameter ini diperlukan jika parameter optimization_level disetel ke o2. Tipe data dari data kalibrasi sama dengan tipe data uji.

    []

    custom_ops

    LIST[STRING]

    Tidak

    Path pustaka operator kustom. Jika model bergantung pada pustaka operator kustom, Anda harus menambahkan path pustaka operator kustom ke daftar.

    []

    verbose

    BOOL

    Tidak

    Menentukan apakah akan menampilkan lebih banyak log. Nilai valid:

    • True: menampilkan lebih banyak log.

    • False: tidak menampilkan lebih banyak log.

    False

    config

    blade.Config

    Tidak

    Konfigurasi lanjutan. Untuk informasi lebih lanjut, lihat tabel berikut yang menjelaskan parameter blade.Config.

    N/A

    Tipe data blade.Config digunakan untuk menyetel parameter lanjutan untuk optimasi. Kode sampel berikut memberikan contoh sintaks konstruktor:

    class Config(ABC):
        def __init__(
            self,
            disable_fp16_accuracy_check: bool = False,
            disable_fp16_perf_check: bool = False,
            enable_static_shape_compilation_opt: bool = False,
            enable_dynamic_shape_compilation_opt: bool = True,
            quant_config: Optional[Dict[str, str]] = None,
        ) -> None:
            pass

    Tabel berikut menjelaskan parameter dalam sintaks.

    Tabel 1. blade.Config

    Parameter

    Diperlukan

    Tipe

    Deskripsi

    Nilai default

    disable_fp16_accuracy_check

    Tidak

    BOOL

    Menentukan apakah akan mengaktifkan verifikasi akurasi dalam optimasi FP16. Nilai valid:

    • False: menonaktifkan verifikasi akurasi.

    • True: mengaktifkan verifikasi akurasi.

    False

    disable_fp16_perf_check

    Tidak

    BOOL

    Menentukan apakah akan mengaktifkan verifikasi performa dalam optimasi FP16. Nilai valid:

    • False: menonaktifkan verifikasi performa.

    • True: mengaktifkan verifikasi performa.

    False

    enable_static_shape_compilation_opt

    Tidak

    BOOL

    Menentukan apakah akan mengaktifkan kompilasi bentuk statis. Nilai valid:

    • False: menonaktifkan kompilasi bentuk statis.

    • True: mengaktifkan kompilasi bentuk statis.

    False

    enable_dynamic_shape_compilation_opt

    Tidak

    BOOL

    Menentukan apakah akan mengaktifkan kompilasi bentuk dinamis. Nilai valid:

    • False: menonaktifkan kompilasi bentuk dinamis.

    • True: mengaktifkan kompilasi bentuk dinamis.

    True

    quant_config

    Tidak

    DICT[STRING, STRING]

    Konfigurasi kuantisasi. Hanya kunci weight_adjustment yang didukung. Kunci tersebut menentukan apakah akan mengurangi kehilangan presisi dengan menyesuaikan parameter model. Nilai valid untuk weight_adjustment:

    • "true": diaktifkan

    • "false": dinonaktifkan

    None

  • Respons

    Tuple yang berisi tiga elemen dikembalikan. Tipe data tuple adalah Tuple[Any, OptimizeSpec, OptimizeReport]. Tabel berikut menjelaskan ketiga elemen tersebut.

    No.

    Elemen

    Tipe

    Deskripsi

    1

    Model yang dioptimalkan

    Berbagai tipe

    Tipe model yang dioptimalkan sama dengan tipe model aslinya. Misalnya, jika Anda menentukan file SavedModel TensorFlow untuk dioptimalkan, objek GraphDef dikembalikan.

    2

    Dependensi eksternal

    OptimizeSpec

    Dependensi eksternal termasuk variabel lingkungan dan cache kompilasi memastikan bahwa hasil optimasi memenuhi harapan Anda. Anda dapat membuat dependensi eksternal efektif dengan menggunakan pernyataan WITH dalam Python. Parameter ini tidak diperlukan dalam SDK.

    3

    Laporan optimasi

    OptimizeReport

    Untuk informasi lebih lanjut, lihat Laporan optimasi.