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]: passParameter 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
.pbatau.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: passTabel 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
WITHdalam Python. Parameter ini tidak diperlukan dalam SDK.3
Laporan optimasi
OptimizeReport
Untuk informasi lebih lanjut, lihat Laporan optimasi.