Model distillation, atau yang sering disebut knowledge distillation, adalah teknik kompresi model pembelajaran mesin di mana informasi (pengetahuan) dari sebuah model besar (disebut teacher) dipindahkan ke model yang lebih kecil (disebut student). Tujuannya agar model student dapat menghasilkan prediksi yang hampir setara dengan teacher namun dengan biaya komputasi, memori, dan energi yang jauh lebih rendah.
Konsep distilasi model pertama kali dipopulerkan oleh Geoffrey Hinton, Oriol Vinyals, dan Jeff Dean dalam makalah Distilling the Knowledge in a Neural Network (2015). Sejak saat itu, teknik ini telah menjadi bagian penting dalam pengembangan AI untuk perangkat edge, mobile, dan sistem dengan sumber daya terbatas.
Langkah pertama adalah melatih sebuah model yang sangat kuat (biasanya jaringan dalam atau transformer besar) pada dataset target. Model ini menjadi sumber pengetahuan .
Alih-alih hanya menggunakan label keras (0 atau 1), teacher menghasilkan probabilitas output (soft targets) dengan suhu (temperature) yang ditingkatkan. Nilai suhu menghaluskan distribusi probabilitas sehingga mengungkapkan informasi tentang kelas kelas yang mirip.
Student dilatih menggunakan kombinasi dua jenis loss:
Bobot pada masing masing loss biasanya diatur dengan faktor sehingga student dapat belajar dari kedua sumber informasi.
Kasus: Sebuah perusahaan ingin men-deploy model klasifikasi gambar pada smartphone. Model awalnya adalah ResNet 101 ( 44 Juta parameter) dengan akurasi 92 %.
Dengan distilasi, mereka melatih MobileNet V2 ( 3,5 Juta parameter) sebagai student menggunakan soft targets dari ResNet 101. Hasilnya: akurasi student naik menjadi 89 % (dari 85 % tanpa distilasi) dengan kecepatan inferensi 5 x lebih cepat.
Berikut contoh singkat menggunakan PyTorch:
import torch import torch.nn as nn import torch.nn.functional as F # Teacher (model besar) teacher = torchvision.models.resnet50(pretrained=True) teacher.eval() # Student (model kecil) student = torchvision.models.mobilenet_v2(pretrained=False) criterion_ce = nn.CrossEntropyLoss() criterion_kd = nn.KLDivLoss(reduction='batchmean') optimizer = torch.optim.Adam(student.parameters(), lr=1e-4) temperature = 4.0 alpha = 0.7 # bobot loss distilasi for images, labels in dataloader: # forward teacher with torch.no_grad(): teacher_logits = teacher(images) # forward student student_logits = student(images) # loss keras loss_ce = criterion_ce(student_logits, labels) # loss distilasi loss_kd = criterion_kd( F.log_softmax(student_logits / temperature, dim=1), F.softmax(teacher_logits / temperature, dim=1) ) * (temperature ** 2) loss = alpha * loss_kd + (1. - alpha) * loss_ce optimizer.zero_grad() loss.backward() optimizer.step()
Model distillation merupakan strategi kuat untuk menciptakan model AI yang ringan namun cerdas. Dengan memanfaatkan soft targets dari model besar, kita dapat melatih model kecil yang hampir setara dalam performa tetapi jauh lebih efisien. Teknik ini sudah terbukti berhasil di bidang visi komputer, pemrosesan bahasa alami, serta aplikasi edge AI. Meskipun ada tantangan dalam implementasi, manfaatnya dalam hal kecepatan, memori, dan biaya menjadikannya pilihan utama bagi pengembang yang ingin membawa kecerdasan buatan ke perangkat dengan sumber daya terbatas.
Untuk informasi lebih lanjut, kunjungi makalah asli Hinton et al. atau sumber-sumber tutorial modern tentang knowledge distillation di situs komunitas seperti PyTorch Tutorials dan TensorFlow Guides.