TASO mengoptimalkan grafik komputasi model DNN menggunakan transformasi grafik yang dibuat dan diverifikasi secara otomatis. Untuk model DNN arbitrer, TASO menggunakan transformasi grafik yang dihasilkan secara otomatis untuk membangun ruang pencarian besar dari grafik komputasi potensial yang setara dengan model DNN asli. TASO menggunakan algoritma pencarian berbasis biaya untuk menjelajahi ruang angkasa, dan secara otomatis menemukan grafik komputasi yang sangat optimal. TASO mengungguli pengoptimal grafik dalam kerangka pembelajaran mendalam yang ada hingga 3x.
Lihat petunjuk untuk menginstal TASO dari sumber. Kami juga menyediakan gambar buruh pelabuhan bawaan dengan semua dependensi yang sudah diinstal sebelumnya.
TASO dapat secara langsung mengoptimalkan model DNN terlatih apa pun dalam format grafik ONNX, TensorFlow, dan PyTorch. TASO juga menyediakan antarmuka Python untuk mengoptimalkan arsitektur DNN yang berubah-ubah. TASO mendukung ekspor grafik komputasi yang dioptimalkan ke ONNX, yang dapat langsung digunakan sebagai masukan oleh sebagian besar kerangka pembelajaran mendalam yang ada.
TASO dapat secara langsung mengoptimalkan model ONNX yang telah dilatih sebelumnya, dan ini dapat dilakukan hanya dalam beberapa baris kode Python. Cuplikan kode berikut menunjukkan cara memuat model DNN terlatih dari ONNX, mengoptimalkan model, dan menyimpan model yang dioptimalkan ke dalam file ONNX.
import taso
import onnx
old_model = taso . load_onnx ( "/path/to/load/onnx/model" )
taso_graph = taso . optimize ( old_model )
new_model = taso . export_onnx ( taso_graph )
onnx . save ( new_model , "/path/to/save/new/onnx/model" )
Model yang dioptimalkan memiliki akurasi yang sama dengan model asli dan dapat langsung digunakan oleh framework deep learning yang ada. Beberapa file ONNX asli dan dioptimalkan TASO tersedia di folder onnx
.
TASO dapat mengoptimalkan model TensorFlow dengan mengonversi model menjadi ONNX menggunakan tf2onnx.
tf2onnx
dari PyPi sebagai berikut atau dari sumber. pip install -U tf2onnx
tf2onnx
. python -m tf2onnx.convert
--saved-model /path/to/tensorflow/saved/model
--output /path/to/onnx/model/file
PyTorch memiliki dukungan bawaan untuk ONNX sebagai bagian dari paket torch.onnx. TASO dapat langsung mengoptimalkan model PyTorch dalam format ONNX.
TASO juga dapat mengoptimalkan arsitektur DNN arbitrer menggunakan antarmuka TASO Python. Cuplikan kode berikut membuat grafik DNN paling kiri yang digambarkan pada gambar. TASO secara otomatis melakukan serangkaian transformasi non-sepele, dan akhirnya menemukan grafik DNN paling kanan, yang 1,3x lebih cepat pada GPU V100. Contoh DNN lainnya tersedia di folder examples
.
import taso
import onnx
#Build DNN model
graph = taso . new_graph ()
input = graph . new_input ( dims = ( 1 , 128 , 56 , 56 ))
w1 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
w2 = graph . new_weight ( dims = ( 128 , 128 , 1 , 1 ))
w3 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
left = graph . conv2d ( input = input , weight = w1 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
left = graph . conv2d ( input = left , weight = w3 , strides = ( 1 , 1 ), padding = "SAME" )
right = graph . conv2d ( input = input , weight = w2 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
output = graph . add ( left , right )
output = graph . relu ( output )
#Optimize DNN model
new_graph = taso . optimize ( graph )
onnx_model = taso . export_onnx ( new_graph )
onnx . save ( onnx_model , "/path/to/save/new/onnx/model" )
Zhihao Jia, Oded Padon, James Thomas, Todd Warszawski, Matei Zaharia, dan Alex Aiken. TASO: Mengoptimalkan Komputasi Pembelajaran Mendalam dengan Pembuatan Substitusi Grafik Otomatis. Dalam Prosiding Simposium Prinsip Sistem Operasi (SOSP), Ontario, Kanada, Oktober 2019.
Zhihao Jia, James Thomas, Todd Warszawski, Mingyu Gao, Matei Zaharia, dan Alex Aiken. Mengoptimalkan Komputasi DNN dengan Substitusi Grafik Santai. Dalam Prosiding Konferensi Sistem dan Pembelajaran Mesin (SysML), Palo Alto, CA, April 2019.