Anda siap untuk men-deploy model unicorn yang memprediksi kemunculan unicorn. Saat di-deploy, pipeline machine learning (ML) Anda akan berjalan, diupdate, dan dilayani tanpa masalah. Seandainya men-deploy model semudah menekan tombol Deploy besar. Sayangnya, sistem machine learning lengkap memerlukan pengujian untuk:
- Memvalidasi data input.
- Memvalidasi rekayasa fitur.
- Memvalidasi kualitas versi model baru.
- Memvalidasi infrastruktur penayangan.
- Menguji integrasi antarkomponen pipeline.
Banyak engineer software lebih menyukai pengembangan berbasis pengujian (TDD). Dalam TDD, engineer software menulis pengujian sebelum menulis kode sumber "sebenarnya". Namun, TDD bisa jadi rumit dalam machine learning. Misalnya, sebelum melatih model, Anda tidak dapat menulis pengujian untuk memvalidasi loss. Sebagai gantinya, Anda harus menemukan kerugian yang dapat dicapai terlebih dahulu selama pengembangan model, lalu kemudian menguji versi model baru terhadap kerugian yang dapat dicapai.
Tentang model unicorn
Bagian ini merujuk pada model unicorn. Berikut hal yang perlu Anda ketahui:
Anda menggunakan machine learning untuk membuat model klasifikasi yang memprediksi tampilan unicorn. Set data Anda menjelaskan 10.000 kemunculan unicorn dan 10.000 kemunculan non-unicorn. Set data berisi lokasi, waktu, ketinggian, suhu, kelembapan, tutupan pohon, keberadaan pelangi, dan beberapa fitur lainnya.
Menguji pembaruan model dengan pelatihan yang dapat direproduksi
Mungkin Anda ingin terus meningkatkan model unicorn. Misalnya, Anda melakukan beberapa rekayasa fitur tambahan pada fitur tertentu, lalu melatih ulang model, dengan harapan mendapatkan hasil yang lebih baik (atau setidaknya sama). Sayangnya, terkadang sulit untuk mereproduksi pelatihan model. Untuk meningkatkan reproduksi, ikuti rekomendasi berikut:
Menetapkan seed secara deterministik ke generator angka acak. Untuk mengetahui detailnya, lihat randomisasi dalam pembuatan data
Lakukan inisialisasi komponen model dalam urutan tetap untuk memastikan komponen mendapatkan angka acak yang sama dari generator angka acak pada setiap operasi. Library ML biasanya menangani persyaratan ini secara otomatis.
Mengambil rata-rata dari beberapa operasi model.
Gunakan kontrol versi, bahkan untuk iterasi awal, sehingga Anda dapat menentukan kode dan parameter saat menyelidiki model atau pipeline.
Meskipun setelah mengikuti panduan ini, sumber nondeterminisme lainnya mungkin masih ada.
Menguji panggilan ke API machine learning
Bagaimana cara menguji update pada panggilan API? Anda dapat melatih ulang model, tetapi proses ini membutuhkan banyak waktu. Sebagai gantinya, tulis pengujian unit untuk menghasilkan data input acak dan menjalankan satu langkah gradien menurun. Jika langkah ini selesai tanpa error, berarti update apa pun pada API mungkin belum merusak model Anda.
Menulis pengujian integrasi untuk komponen pipeline
Dalam pipeline ML, perubahan pada satu komponen dapat menyebabkan error pada komponen lainnya. Pastikan komponen berfungsi bersama dengan menulis pengujian integrasi yang menjalankan seluruh pipeline secara menyeluruh.
Selain menjalankan pengujian integrasi secara terus-menerus, Anda harus menjalankan pengujian integrasi saat mendorong model baru dan versi software baru. Lambatnya menjalankan seluruh pipeline membuat pengujian continuous integration menjadi lebih sulit. Untuk menjalankan pengujian integrasi dengan lebih cepat, berlatihlah pada sebagian data atau dengan model yang lebih sederhana. Detailnya bergantung pada model dan data Anda. Untuk mendapatkan cakupan yang berkelanjutan, Anda harus menyesuaikan pengujian yang lebih cepat agar berjalan dengan setiap versi baru model atau software. Sementara itu, pengujian lambat Anda akan berjalan terus-menerus di latar belakang.
Memvalidasi kualitas model sebelum ditayangkan
Sebelum menerapkan versi model baru ke produksi, uji dua jenis degradasi kualitas berikut:
Degradasi mendadak. Bug dalam versi baru dapat menyebabkan kualitas yang jauh lebih rendah. Validasi versi baru dengan memeriksa kualitasnya terhadap versi sebelumnya.
Degradasi lambat. Pengujian Anda untuk degradasi mendadak mungkin tidak mendeteksi degradasi kualitas model yang lambat di beberapa versi. Sebagai gantinya, pastikan prediksi model Anda pada set data validasi memenuhi nilai minimum tetap. Jika set data validasi Anda menyimpang dari data aktif, perbarui set data validasi dan pastikan model Anda masih memenuhi nilai minimum kualitas yang sama.
Memvalidasi kompatibilitas infrastruktur model sebelum ditayangkan
Jika model Anda diperbarui lebih cepat daripada server, model Anda dapat memiliki dependensi software yang berbeda dari server, yang berpotensi menyebabkan ketidakcocokan. Pastikan operasi yang digunakan oleh model ada di server dengan melakukan staging model di server versi sandbox.