Joshua Alexander Heriyanto, Sarah Hasna Azzahra

Dengan perkembangan deep learning, banyaknya jumlah parameter dan komputasi inference membutuhkan kemampuan hardware yang lebih banyak sehingga muncul tantangan baru dalam model deployment pada perangkat mobile.

Dapatkah anda membuat alat pengecil seperti Doraemon? Tidak peduli seberapa besar modelnya, model akan menjadi lebih kecil dan ringan. Dengan begitu kita tidak terlalu pusing dengan spesifikasi hardware.

Jawabannya adalah: Tentu saja! Anda dapat melakukannya!

Pada umumnya untuk membuat sebuah model reduction tunnel dalam deep learning dan mempercepat model inference deployment, teknik kompresi seperti quantization, pruning, low-rank decomposition, dan knowledge distillation akan digunakan untuk mengurangi jumlah parameter dan komputasi model.

Namun, kompresi model biasanya bukan lossless yang artinya adanya pengorbanan akurasi untuk dapat meningkatkan peningkatkan peforma komputasi. Precision dan performance adalah dua standar pengukuran efektivitas dari inference AI. Oleh karena itu, impementasi algoritma kompresi harus menyeimbangkan antara precision loss dan peningkatan performa.

AMCT: Model Shrink Tunnel

Arsitektur komputasi heterogen Ascend CANN adalah platform utama yang dapat menggabungkan AI framework dan AI hardware serta meningkatkan efisiensi komputasi Ascend AI. CANN membangun model reduction tunnel menggunakan Ascend Model Compression Toolkit.

AMCT adalah sebuah toolkit Python yang mendukung mainstream deep learning framework seperti Caffe/TensorFlow/MindSpore/PyTorch/ONNX dan menyediakan berbagai fungsi kompresi model seperti quantization, tensor decomposition, dan channel sparseness. Jumlah penyimpanan dan kalkulasi model dikurangi secara efektif untuk mendapatkan model precision dan performa inference yang baik.

Dibandingkan dengan platform serupa lainnya, AMCT mendukung model compression features yang lebih komprehensif. Beberapa algoritma kompresi dan model penggabungan hardware digunakan untuk memaksimalkan performa inference dari model deployment pengguna. Training framework yang didukung AMCT juga sangat beragam sehingga dapat mengakomodasi kebutuhan pengguna dari berbagai kelompok dan bidang. Selain itu, AMCT bertujuan untuk meningkatkan pemanfaatan tool dengan mengunakan fitur high level seperti automatic optimization dan automatic supplementation supaya pengguna mendapat lebih banyak keuntungan dengan biaya yang rendah.

Quantization: mengurangi data bit width dengan low-bit compression

Seperti namanya, model quantization berarti sebuah teknik untuk mengubah kalkulasi floating-point menjadi kalkulasi low-specific point. Contohnya, model floating-point 32-bit diubah menjadi model fixed-point 8-bit. Sehingga dapat mengurangi overhead penyimpanan dan kompleksitas komputasi dari model secara efektif yang akhirnya dapat meningkatkan performa model inference.

Algoritma quantization yang umum digunakan meliputi binary quantization, log quantization, dan linear quantization.

Binary quantization,

https://bbs-img.huaweicloud.com/blogs/img/20211102/1635816414380051660.png

Kompresi model yang terlalu drastis dapat membuat performa model meningkat drastis namun memiliki precision loss yang besar juga sehingga lingkup pengaplikasiannya kecil.

Log quantization,

https://bbs-img.huaweicloud.com/blogs/img/20211102/1635816453346094636.png

Penerapan dalam sekala besar tidak dapat dilakukan karena ketergantungan akan unit komputasi dan limitasi peningkatan performa.

AMCT menggunakan linear quantization 8-bit dan 4-bit.

https://bbs-img.huaweicloud.com/blogs/img/20211102/1635816474463098929.png

Biasanya, precision loss 8-bit quantization kecil dan dapat dicapai dengan melakukan quantization setelah training. Sedangkan precision loss 4-bit quantization besar. Saat ini, AMCT hanya mendukung quantitative perception training.

Post-Training quantization (PTQ) melakukan kuantisasi weigths dalam model setelah training dari floating point ke low-bit integer lalu melakukan kalibrasi kuantisasi berdasarkan proses inference dengan menggunakan sebagian kecil data. Dalam 8-bit quantization, tingkat quantization precision dari general network dapat dikurangi dengan melakukan quantization setelah training.

Quantization-Aware Training (QAT) memperkenalkan operasi kuantisasi dalam proses re-training dengan bantuan dataset training lengkap pengguna dan melakukan kuantisasi pseudo (kuantisasi dari kuantisasi terbalik) pada data dan weights dalam forward calculation training, dengan demikian memperkenalkan quantization error loss. Sehingga, kemampuan adaptasi model. Untuk 4-bit quantization atau kurang, dibutuhkan quantization perception training untuk mengurangi quantization precision loss.

Kami menguji performa dan akurasi dari ResNet-50 dan YOLOV3 dengan 8-bit PTQ dan 4-bit QAT pada Ascend AI prosesor.

Precision dari kedua networks memiliki quantization sensitivity yang berbeda. Pada classic CV network, 8-bit quantization precision loss berada di bawah 1% dan 4-bit quantization precision dibawah 2%.

Peningkatan performa tiap model berbeda-beda sesuai dengan struktur dan spesifikasi network masing-masing. Performa ResNet-50 INT8 meningkat 40% dibanding FP16 kemudian untuk INT4 performanya meningkat 40% lagi dibandingkan INT8. Sedangkan pada YOLOv3 mengalami peningkatan sekitar 30%.

Developer dapat dengan mudah melakukan model quantization dengan memanggil API yang telah disediakan oleh AMCT. Secara default, AMCT akan melakukan quantization pada setiap operator yang dapat dikuantisasi pada network (sebagian besar adalah operator convolution class dan matrix multiplication class). Developer juga dapat menentukan secara spesifik quantization layer dan quantization bit width pada setiap layer. Jika precision loss setelah quantization lebih besar dari yang diperkirakan, maka dapat melakukan skip quantization pada beberapa layer untuk mengembalikan nilai precisionnya. Sebagai contoh, biasanya layer head dan tail dalam network memiliki pengaruh yang besar pada precision network. Maka dari itu quantitative rollback sering dilakukan.

Sparse: Weighted pruning untuk mengurangi jumlah parameter model

Banyak percobaan yang menunjukkan bahwa model neural network over-parameter dan banyak parameter yang berulang. Dengan menghilangkan parameter yang “tidak penting” hanya akan berefek sedikit pada hasil akhir model.

Model sparse berarti parameter model akan dihapus untuk mengurangi storage dan kalkulasi overhead dari model. Model sparseness bervariasi dari paling kecil element-wise hingga channel-wise maupun yang lebih besar lagi bergantung pada sparseness granularity. Sparseness granularity meningkat akan menurunkan model precision, namun dapat meningkatkan performa.

Pada gambar diatas, peningkatan granularity ditunjukan dari gambar kiri ke kanan. Namun untuk single weight sparse, weight vector sparse dan single convolutional kernel membutuhkan adaptasi hardware khusus untuk mendapatkan performa atau penyimpanan yang lebih baik.

Namun, filter-level sparsity adalah pilihan yang ideal karena output data channel akan dipotong yang berarti dapat menurunkan spesifikasi yang dibutuhkan model. Sehingga, kenaikan performa didapatkan tanpa harus menggunakan hardware support tertentu. Namun, seperti yang dijelaskan sebelumnya, granularity dari channel sparseness relative besar dan network precision loss juga tinggi. Oleh karena itu biasanya perlu dilakukan fine-tune.

Saat ini, AMCT mendukung channel sparse model compression berbasis re-training.

Channel sparsity digunakan untuk mengurangi jumlah channel dalam network dengan mempertahankan fungsi network. Implementasi dari channel sparseness biasanya meliputi 2 langkah: pertama dilakukan pemilihan channel untuk mendapatkan kombinasi channel yang tepat agar tidak kehilangan informasi, kemudian akan dilakukan rekonstruksi output dengan channel yang telah dipilih sebelumnya.

ResNet-50 network diuji akurasi dan performanya dengan 30% sparse pada prosesor AI Ascend.

Precision loss yang diperoleh ResNet-50 kurang dari 1%. Hasil ini tidak dapat menggambarkan hasil pada network lain karena setiap network akan memiliki hasil yang berbeda-beda.

Sedangkan berikut performa ResNet-50 pada batch-size yang berbeda-beda. Pada batch-size 32, channel sparseness meningkatkan kecepatan inference sebesar 40%.

Developer hanya perlu memanggil API yang disediakan AMCT untuk mengkonfigurasi global sparseness rate yang diinginkan atau sparseness rate pada setiap layer. Maka secara otomatis tool ini dapat membantu menentukan sparse channels dan dengan mudah menyelesaikan tugas ini.

Tensor Decomposition: Pendekatan Low-rank untuk Mengurangi Komputasi Model

Komputasi pada convolutional layer pada convolutional neural network (CNN) memerlukan komputasi terbesar dan semakin besar convolutional kernel yang dipakai semakin besar pula parameter dan komputasinya.

Tensor decomposition adalah metode matematika untuk memecah sebuah convolutional kernel besar menjadi beberapa convolutional kecil dengan pendekatan low-rank kemudian membuat operator convolution dengan jumlah komputasi yang lebih sedikit.

Asumsikan bahwa satu konvolusi 64 x 64 x 3 x 3 dipecah menjadi konvolutsi 32 x 64 x 3 x 1 dan 64 x 32 x 1x 3. Cara ini dapat mengurangi jumlah kalkulasi sebesar 66.7% ([32*64*3*1 + 64*32*1*3] / [64*64*3*3]) dan meningkatkan cost-effective.

Tensor decomposition dalam AMCT memanfaatkan sepenuhnya karakteristik hardware dari prosesor AI Ascend dan memilih konvolusi mana yang dapat memanfaatkan secara penuh kemampuan komputasi prosesor sehingga dapat meminimalkan dampak performa dari operator transport overhead.

Percobaan menunjukkan bahwa tensor decomposition memiliki efek yang signifikan dalam optimisasi kecepatan reasoning prosesor AI Ascend dan ukuran model.

Setelah tensor decomposition dilakukan pada 13 CV network klasik, didapatkan penurunan rata-rata inference time dan ukuran model masing-masing 24.4% dan 38.8%. Sedangkan untuk nilai precision setelah fine-tune hampir sama dengan sebelum dilakukan pemecahan (loss maksimum kurang dari 0.5%)

Dengan API yang telah disediakan AMCT, developer hanya perlu memanggil satu atau dua API (bergantung pada framework yang dipakai) untuk memecah model asli dan melakukan fine-tune.

Penutup

Sebagai platform utama untuk memaksimalkan kekuatan komputasi hardware Ascend, CANN meningkatkan dan menjamin nilai precision dan performa model. CANN selalu berada diperspektif para developer. Melalui teknologi advanced model compression, kami membuat AMCT model compression tool yang dapat mengurangi penggunaan storage dan jumlah kalkulasi dalam model untuk mendapatkan model precision yang baik.

Dengan berkembangnya AI, kami percaya bahwa pengecilan model yang dihasilkan oleh CANN dapat membawa lebih banyak scenario aplikasi dan imaginasi yang lebih luas untuk model AI dengan jumlah parameter dan kalkulasi banyak.