Sistem ML produksi: Pengujian deployment

Anda siap untuk men-deploy model unicorn yang dapat memprediksi kemunculan unicorn! Saat melakukan deployment, pipeline machine learning (ML) Anda harus berjalan, mengupdate, dan ditayangkan tanpa masalah. Jika hanya men-deploy model semudah menekan tombol Deploy besar. Sayangnya, sistem machine learning memerlukan pengujian untuk:

  • Memvalidasi data input.
  • Memvalidasi rekayasa fitur.
  • Memvalidasi kualitas versi model baru.
  • Memvalidasi infrastruktur layanan.
  • Menguji integrasi antarkomponen pipeline.

Banyak software engineer mendukung pengembangan berbasis pengujian (TDD). Dalam TDD, perangkat lunak engineer menulis pengujian sebelum menulis atribut "nyata" pada kode sumber Anda. Namun, TDD bisa sedikit rumit dalam machine learning. Misalnya, sebelum melatih model, Anda tidak dapat menulis pengujian untuk memvalidasi kerugiannya. Sebagai gantinya, Anda harus terlebih dahulu menemukan kerugian yang dapat dicapai selama model pengembangan, dan kemudian menguji versi model baru terhadap kerugian yang dapat dicapai.

Tentang model unicorn

Bagian ini mengacu pada model unicorn. Berikut hal yang perlu Anda ketahui:

Anda menggunakan {i>machine learning<i} untuk membangun model klasifikasi yang memprediksi {i>unicorn<i}. {i>Dataset<i} Anda merinci 10.000 penampilan {i>unicorn<i} dan 10.000 unicorn belum muncul. {i>Dataset<i} berisi lokasi, waktu, elevasi, suhu, kelembapan, tutupan pohon, adanya pelangi, dan beberapa fitur lainnya.

Menguji update model dengan pelatihan yang dapat direproduksi

Mungkin Anda ingin terus meningkatkan kualitas model unicorn Anda. Sebagai contoh, misalkan Anda melakukan beberapa rekayasa fitur tambahan pada fitur tertentu dan kemudian melatih ulang model, dengan harapan mendapatkan hasil yang lebih baik (atau setidaknya sama). Sayangnya, terkadang sulit untuk mereproduksi pelatihan model. Untuk meningkatkan kemampuan reproduksi, ikuti rekomendasi berikut:

  • Secara pasti melakukan seed generator angka acak. Untuk detailnya, lihat pengacakan data pembuatan konten

  • Menginisialisasi komponen model dalam urutan tetap untuk memastikan komponen mendapatkan angka acak yang sama dari generator nomor acak setiap kali dijalankan. Library ML biasanya menangani persyaratan ini secara otomatis.

  • Ambil rata-rata dari beberapa pengoperasian model.

  • Gunakan kontrol versi, bahkan untuk iterasi awal, sehingga Anda dapat menentukan kode dan parameter saat menyelidiki model atau pipeline Anda.

Bahkan setelah mengikuti pedoman ini, sumber nondeterminisme lainnya mungkin masih ada.

Menguji panggilan ke API machine learning

Bagaimana cara menguji update pada panggilan API? Anda bisa melatih ulang model, tapi yang memakan waktu. Sebagai gantinya, tulis pengujian unit untuk menghasilkan data input acak dan menjalankan satu langkah penurunan gradien. Jika langkah ini selesai tanpa maka setiap pembaruan API mungkin belum merusak model Anda.

Menulis pengujian integrasi untuk komponen pipeline

Di pipeline ML, perubahan pada satu komponen dapat menyebabkan error di komponen lainnya komponen. Periksa apakah komponen bekerja sama dengan menulis pengujian integrasi yang menjalankan seluruh pipeline secara menyeluruh.

Selain menjalankan pengujian integrasi secara berkelanjutan, Anda harus menjalankan pengujian integrasi saat mendorong model baru dan versi software baru. Kelambatan dalam menjalankan seluruh pipeline akan membuat pengujian continuous integration lebih sulit. Untuk menjalankan integrasi menguji lebih cepat, melatih subset dari data, atau dengan model yang lebih sederhana. Detail bergantung pada model dan data Anda. Untuk mendapatkan cakupan berkelanjutan, Anda perlu menyesuaikan pengujian yang lebih cepat sehingga dapat dijalankan pada setiap versi model atau perangkat lunak yang baru. Sementara itu, pengujian lambat akan berjalan terus-menerus di latar belakang.

Validasi kualitas model sebelum ditayangkan

Sebelum mengirimkan versi model baru ke produksi, lakukan pengujian dua jenis penurunan kualitas berikut:

  • Degradasi mendadak. {i>Bug<i} dalam versi baru dapat menyebabkan masalah yang kualitasnya lebih rendah. Validasi versi baru dengan memeriksa kualitasnya dengan versi sebelumnya.

  • Degradasi lambat. Pengujian untuk penurunan tiba-tiba mungkin tidak mendeteksi penurunan penurunan kualitas model dalam beberapa versi. Sebagai gantinya, pastikan prediksi model pada set data validasi memenuhi nilai minimum yang tetap. Jika set data validasi menyimpan data langsung, kemudian memperbarui validasi set data Anda dan memastikan model Anda tetap memenuhi nilai minimum kualitas yang sama.

Memvalidasi kompatibilitas infrastruktur model sebelum menayangkan iklan

Jika model Anda diupdate lebih cepat dari server, model Anda mungkin memiliki dependensi perangkat lunak yang berbeda dari server Anda, yang berpotensi menyebabkan ketidakcocokan. Memastikan bahwa operasi yang digunakan oleh model ada di dalam server dengan melakukan staging model dalam versi sandbox dari server.