All Products
Search
Document Center

Platform For AI:Metode Python

Last Updated:Apr 01, 2026

PAI-Blade menyediakan fungsi optimize() yang mengintegrasikan optimasi model langsung ke dalam pipeline Python Anda. Masukkan model TensorFlow atau PyTorch, pilih tingkat optimasi dan perangkat target, lalu dapatkan model yang telah dioptimalkan dan siap untuk inferensi.

optimize

def optimize(
    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

Quick start

Contoh berikut menunjukkan pemanggilan minimal untuk mengoptimalkan TensorFlow SavedModel guna inferensi GPU menggunakan optimasi lossless:

import blade

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",   # path ke direktori TensorFlow SavedModel
    optimization_level="o1",        # optimasi lossless: graph rewriting + compilation
    device_type="gpu",
)

Untuk menggunakan kuantisasi (o2) dengan data kalibrasi:

import blade
import numpy as np

# Siapkan data kalibrasi sebagai daftar argumen feed_dict
calib = [
    {"input": np.random.rand(1, 224, 224, 3).astype(np.float32)},
    {"input": np.random.rand(1, 224, 224, 3).astype(np.float32)},
]

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",
    optimization_level="o2",   # kuantisasi — memerlukan calib_data
    device_type="gpu",
    calib_data=calib,
)

Parameter

Parameter wajib

ParameterTipeDeskripsi
modelMultiple typesModel yang akan dioptimalkan. Lihat Supported model formats.
optimization_levelstringStrategi optimasi. Nilai yang valid (tidak peka huruf besar/kecil): o1, o2. Lihat optimization_level values.
device_typestringPerangkat target. Nilai yang valid (tidak peka huruf besar/kecil): gpu, cpu, edge (hanya untuk TensorFlow).

Parameter opsional

ParameterTipeDefaultDeskripsi
inputslist[string]NoneNama node input. Jika tidak diatur, PAI-Blade akan menginferensinya secara otomatis.
outputslist[string]NoneNama node output. Jika tidak diatur, PAI-Blade akan menginferensinya secara otomatis.
input_shapeslist[list[string]]NoneKemungkinan bentuk tensor input. Meningkatkan optimasi untuk pola bentuk tertentu. Lihat input_shapes format.
input_rangeslist[list[string]]NoneRentang nilai tensor input. Lihat input_shapes format.
test_dataMultiple types[]Data uji yang digunakan untuk mengkalibrasi kecepatan eksekusi model. Tipe data sesuai dengan format calib_data.
calib_dataMultiple types[]Data kalibrasi untuk kuantisasi. Wajib ditentukan saat `optimization_level` bernilai `o2`. Tipe data bergantung pada framework model.
custom_opslist[string][]Path ke pustaka operator kustom. Tambahkan setiap path pustaka jika model bergantung pada operator kustom.
verboseboolFalseAtur ke True untuk mencetak log optimasi terperinci. Berguna untuk mendiagnosis masalah.
configblade.ConfigNonePengaturan optimasi lanjutan. Lihat blade.Config.

Supported model formats

Model TensorFlow menerima:

  • Objek GraphDef

  • Path ke file GraphDef PB (.pb atau .pbtxt)

  • Path ke direktori SavedModel

Model PyTorch menerima:

  • Objek torch.nn.Module

  • Path ke file torch.nn.Module yang diekspor (.pt)

optimization_level values

NilaiStrategiKapan digunakan
o1Optimasi lossless — graph rewriting dan optimasi kompilasiGunakan ketika akurasi harus dipertahankan secara eksak. Tidak memerlukan data kalibrasi. Direkomendasikan sebagai titik awal.
o2KuantisasiGunakan ketika Anda menginginkan percepatan inferensi maksimal. Memerlukan calib_data.
calib_data hanya berlaku ketika optimization_level bernilai o2. Parameter ini tidak berpengaruh untuk o1.

input_shapes and input_ranges format

Kedua parameter menggunakan struktur daftar bersarang yang sama: setiap daftar dalam berisi satu nilai per tensor input, dan daftar luar berisi beberapa kelompok bentuk.

input_shapes — setiap elemen berupa string dalam format "<dim1>*<dim2>*...":

# Model tunggal dengan dua input, satu kelompok bentuk
input_shapes = [["1*512", "3*256"]]

# Model tunggal dengan dua input, tiga kelompok bentuk
input_shapes = [
    ["1*512", "3*256"],
    ["5*512", "9*256"],
    ["10*512", "27*256"],
]

input_ranges — setiap elemen berupa string yang menentukan rentang menggunakan kurung siku, angka real, atau karakter:

# Model tunggal dengan dua input, satu kelompok rentang
input_ranges = [["[0.1,0.4]", "[a,f]"]]

# Model tunggal dengan dua input, tiga kelompok rentang
input_ranges = [
    ["[0.1,0.4]", "[a,f]"],
    ["[1.1,1.4]", "[h,l]"],
    ["[2.1,2.4]", "[n,z]"],
]

calib_data format

Tipe data calib_data (dan test_data) bergantung pada framework model:

FrameworkTipeDeskripsi
TensorFlowlist[dict[string, np.ndarray]]Daftar argumen feed_dict, satu per sampel kalibrasi
PyTorchlist[tuple[torch.tensor, ...]]Daftar tupel tensor input, satu per sampel kalibrasi

Nilai kembali

optimize() mengembalikan tupel yang terdiri dari tiga elemen: Tuple[Any, OptimizeSpec, OptimizeReport].

PosisiElemenTipeDeskripsi
1Model yang dioptimalkanMultiple typesTipe yang sama dengan model input. Misalnya, jika Anda memberikan direktori TensorFlow SavedModel, objek GraphDef akan dikembalikan.
2Ketergantungan eksternalOptimizeSpecVariabel lingkungan dan cache kompilasi yang diperlukan agar optimasi berlaku. Terapkan menggunakan pernyataan WITH di Python. Tidak diperlukan saat menggunakan SDK.
3Laporan optimasiOptimizeReportDetail hasil optimasi. Untuk informasi lebih lanjut, lihat Optimization report.

blade.Config

Gunakan blade.Config untuk menyesuaikan perilaku optimasi lanjutan. Berikan instans ke parameter config pada optimize().

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

Contoh:

import blade

config = blade.Config(
    enable_static_shape_compilation_opt=True,
    quant_config={"weight_adjustment": "true"},
)

optimized_model, opt_spec, opt_report = blade.optimize(
    model="/path/to/saved_model",
    optimization_level="o2",
    device_type="gpu",
    calib_data=calib,
    config=config,
)

Parameter blade.Config

ParameterTipeDefaultDeskripsi
disable_fp16_accuracy_checkboolFalseMenentukan apakah verifikasi akurasi dalam optimasi FP16 diaktifkan. False (default): menonaktifkan verifikasi akurasi. True: mengaktifkan verifikasi akurasi.
disable_fp16_perf_checkboolFalseMenentukan apakah verifikasi performa dalam optimasi FP16 diaktifkan. False (default): menonaktifkan verifikasi performa. True: mengaktifkan verifikasi performa.
enable_static_shape_compilation_optboolFalseMengaktifkan optimasi kompilasi bentuk statis. Atur ke True jika semua bentuk input tetap pada saat inferensi.
enable_dynamic_shape_compilation_optboolTrueMengaktifkan optimasi kompilasi bentuk dinamis. Diaktifkan secara default untuk menangani input dengan panjang variabel.
quant_configdict[string, string]NonePengaturan kuantisasi. Hanya kunci weight_adjustment yang didukung. Atur ke "true" untuk mengurangi kehilangan presisi dengan menyesuaikan parameter model selama kuantisasi, atau "false" untuk menonaktifkannya.