Dalam ML produksi, tujuannya bukanlah untuk membangun satu model dan men-deploy-nya. Tujuannya adalah membangun pipeline otomatis untuk mengembangkan, menguji, dan men-deploy model dari waktu ke waktu. Mengapa? Seiring dengan perubahan dunia, tren pergeseran data, yang menyebabkan model dalam produksi menjadi usang. Model biasanya perlu dilatih ulang dengan data terbaru agar dapat terus menyajikan prediksi berkualitas tinggi dalam jangka panjang. Dengan kata lain, Anda memerlukan cara untuk mengganti model lama dengan model baru.
Tanpa pipeline, mengganti model yang sudah tidak berlaku adalah proses yang rentan terhadap error. Misalnya, setelah model mulai memberikan prediksi yang buruk, seseorang harus mengumpulkan dan memproses data baru secara manual, melatih model baru, memvalidasi kualitasnya, lalu men-deploy-nya. Pipeline ML mengotomatiskan banyak proses berulang ini, sehingga pengelolaan dan pemeliharaan model menjadi lebih efisien dan andal.
Membangun pipeline
Pipeline ML mengatur langkah-langkah untuk membangun dan men-deploy model ke dalam tugas yang didefinisikan dengan baik. Pipeline memiliki salah satu dari dua fungsi: mengirimkan prediksi atau memperbarui model.
Mengirimkan prediksi
Pipeline penayangan memberikan prediksi. Hal ini mengekspos model Anda ke dunia nyata, sehingga dapat diakses oleh pengguna Anda. Misalnya, saat pengguna menginginkan prediksi—seperti apa cuaca besok, atau berapa menit yang diperlukan untuk melakukan perjalanan ke bandara, atau daftar video yang direkomendasikan—pipeline penayangan menerima dan memproses data pengguna, membuat prediksi, dan kemudian mengirimkannya kepada pengguna.
Mengupdate model
Model cenderung menjadi usang segera setelah diproduksi. Pada intinya, mereka membuat prediksi menggunakan informasi lama. Set data pelatihan mereka merekam keadaan dunia sehari yang lalu, atau dalam beberapa kasus, satu jam yang lalu. Dunia telah berubah: pengguna telah menonton lebih banyak video dan memerlukan daftar rekomendasi baru; hujan menyebabkan traffic menjadi lambat dan pengguna memerlukan perkiraan yang diperbarui untuk waktu kedatangan mereka; tren populer menyebabkan retailer meminta prediksi inventaris terbaru untuk item tertentu.
Biasanya, tim melatih model baru jauh sebelum model produksi menjadi usang. Dalam beberapa kasus, tim melatih dan men-deploy model baru setiap hari dalam siklus deployment dan pelatihan berkelanjutan. Idealnya, pelatihan model baru harus dilakukan jauh sebelum model produksi menjadi usang.
Pipeline berikut bekerja sama untuk melatih model baru:
- Pipeline data. Pipeline data memproses data pengguna untuk membuat set data pelatihan dan pengujian.
- Pipeline pelatihan. Pipeline pelatihan melatih model menggunakan set data pelatihan baru dari pipeline data.
- Pipeline validasi. Pipeline validasi akan memvalidasi model yang dilatih dengan membandingkannya dengan model produksi menggunakan set data pengujian yang dihasilkan oleh pipeline data.
Gambar 4 mengilustrasikan input dan output dari setiap pipeline ML.
pipeline ML
Gambar 4. Pipeline ML mengotomatiskan banyak proses untuk mengembangkan dan memelihara model. Setiap pipeline menampilkan input dan output-nya.
Pada tingkat yang sangat umum, berikut cara pipeline menjaga model baru dalam produksi:
Pertama, model masuk ke produksi, dan pipeline inferensi mulai memberikan prediksi.
Pipeline data akan segera mulai mengumpulkan data untuk membuat set data pelatihan dan pengujian baru.
Berdasarkan jadwal atau pemicu, pipeline pelatihan dan validasi melatih dan memvalidasi model baru menggunakan set data yang dihasilkan oleh pipeline data.
Saat pipeline validasi mengonfirmasi bahwa model baru tidak lebih buruk dari model produksi, model baru akan di-deploy.
Proses ini berulang terus.
penghentian model dan frekuensi pelatihan
Hampir semua model sudah usang. Beberapa model menjadi usang lebih cepat dibandingkan model lainnya. Misalnya, model yang merekomendasikan pakaian biasanya usang dengan cepat karena preferensi konsumen tidak sering berubah. Di sisi lain, model yang mengidentifikasi bunga mungkin tidak akan pernah usang. Karakteristik identifikasi bunga tetap stabil.
Sebagian besar model mulai usang setelah dimasukkan ke dalam produksi. Anda dapat menetapkan frekuensi pelatihan yang mencerminkan sifat data Anda. Jika datanya dinamis, seringlah dilatih. Jika tidak terlalu dinamis, Anda mungkin tidak perlu sering melatihnya.
Latih model sebelum menjadi usang. Pelatihan awal menyediakan buffering untuk mengatasi potensi masalah, misalnya, jika data atau pipeline pelatihan gagal, atau kualitas modelnya buruk.
Praktik terbaik yang direkomendasikan adalah melatih dan men-deploy model baru setiap hari. Sama seperti project software biasa yang memiliki proses build dan rilis harian, pipeline ML untuk pelatihan dan validasi sering kali berfungsi optimal jika dijalankan setiap hari.
Pipeline penayangan
Pipeline penayangan menghasilkan dan memberikan prediksi dengan salah satu dari dua cara: online atau offline.
Prediksi online. Prediksi online terjadi secara real time, biasanya dengan mengirimkan permintaan ke server online dan menampilkan prediksi. Misalnya, saat pengguna menginginkan prediksi, data pengguna tersebut dikirim ke model dan model tersebut menampilkan prediksi. Misalnya, Gmail mengklasifikasikan pesan masuk secara real time menggunakan prediksi online.
Prediksi offline. Prediksi offline telah dihitung sebelumnya dan di-cache. Untuk menampilkan prediksi, aplikasi menemukan prediksi yang di-cache dalam database dan menampilkannya. Misalnya, layanan berbasis langganan mungkin memprediksi rasio churn untuk pelanggannya. Model ini memprediksi kemungkinan terjadinya churn untuk setiap pelanggan dan meng-cache-nya. Saat memerlukan prediksi, misalnya untuk memberikan insentif kepada pengguna yang mungkin akan melakukan churn, aplikasi hanya akan mencari prediksi yang telah dihitung sebelumnya.
Gambar 5 menunjukkan bagaimana prediksi online dan offline dihasilkan dan dikirim.
Prediksi online dan offline
Gambar 5. Prediksi online memberikan prediksi secara real time. Prediksi offline di-cache dan mengamati waktu penayangan.
Prediksi pascapemrosesan
Biasanya, prediksi akan diproses pasca-pemrosesan sebelum dikirimkan. Misalnya, prediksi mungkin diproses setelah pemrosesan untuk menghapus konten negatif atau bias. Hasil klasifikasi mungkin menggunakan twiddling untuk mengurutkan ulang hasil, bukan menampilkan output mentah model. Misalnya, untuk meningkatkan konten yang lebih kredibel, menyajikan keberagaman hasil, mendemosikan hasil tertentu (seperti clickbait), atau menghapus hasil karena alasan hukum.
Gambar 6 menunjukkan pipeline inferensi dan tugas umum yang terlibat dalam memberikan prediksi.
Prediksi pascapemrosesan
Gambar 6. Pipeline penayangan yang menggambarkan tugas umum yang terlibat untuk memberikan prediksi.
Perhatikan bahwa langkah rekayasa fitur biasanya dibangun dalam model dan bukan proses yang terpisah dan berdiri sendiri. Kode pemrosesan data dalam pipeline penayangan sering kali hampir identik dengan kode pemrosesan data yang digunakan pipeline data untuk membuat set data pelatihan dan pengujian.
Penyimpanan aset dan metadata
Pipeline penyaluran harus menggabungkan repositori untuk mencatat prediksi model ke dalam log dan, jika memungkinkan, kebenaran dasar.
Prediksi model logging memungkinkan Anda memantau kualitas model. Dengan menggabungkan prediksi, Anda dapat memantau kualitas umum model dan menentukan apakah kualitasnya mulai menurun. Umumnya, prediksi model produksi harus memiliki rata-rata yang sama dengan label dari set data pelatihan. Untuk mengetahui informasi selengkapnya, lihat bias prediksi.
Merekam kebenaran dasar
Dalam beberapa kasus, kebenaran dasar hanya akan tersedia jauh setelah itu. Misalnya, jika aplikasi cuaca memprediksi cuaca enam minggu ke depan, kebenaran dasar (bagaimana cuaca sebenarnya) tidak akan tersedia selama enam minggu.
Jika memungkinkan, minta pengguna untuk melaporkan kebenaran dasar dengan menambahkan mekanisme masukan ke dalam aplikasi. Gmail secara implisit menangkap masukan pengguna saat pengguna memindahkan email dari kotak masuk mereka ke folder spam. Namun, ini hanya berfungsi jika pengguna mengategorikan email mereka dengan benar. Jika pengguna meninggalkan spam di kotak masuk mereka (karena mereka tahu itu adalah spam dan tidak pernah membukanya), data pelatihan menjadi tidak akurat. Surat tersebut akan diberi label "bukan spam" padahal seharusnya "spam". Dengan kata lain, selalu coba menemukan cara untuk menangkap dan mencatat kebenaran dasar, tetapi waspadai kekurangan yang mungkin ada dalam mekanisme masukan.
Gambar 7 menunjukkan prediksi yang dikirim ke pengguna dan dicatat ke dalam log ke repositori.
Prediksi logging
Gambar 7. Catat prediksi untuk memantau kualitas model.
Data pipeline
Pipeline data menghasilkan set data pelatihan dan pengujian dari data aplikasi. Pipeline pelatihan dan validasi kemudian menggunakan set data untuk melatih dan memvalidasi model baru.
Pipeline data membuat set data pelatihan dan pengujian dengan fitur dan label yang sama yang awalnya digunakan untuk melatih model, tetapi dengan informasi yang lebih baru. Misalnya, aplikasi peta akan menghasilkan set data pelatihan dan pengujian dari waktu perjalanan terkini antar-titik untuk jutaan pengguna, beserta data relevan lainnya, seperti cuaca.
Aplikasi rekomendasi video akan menghasilkan set data pelatihan dan pengujian yang menyertakan video yang diklik pengguna dari daftar yang direkomendasikan (beserta video yang tidak diklik), serta data relevan lainnya, seperti histori tontonan.
Gambar 8 mengilustrasikan pipeline data menggunakan data aplikasi untuk membuat set data pelatihan dan pengujian.
Pipeline data
Gambar 8. Pipeline data memproses data aplikasi untuk membuat set data bagi pipeline pelatihan dan validasi.
Pengumpulan dan pemrosesan data
Tugas untuk mengumpulkan dan memproses data dalam pipeline data mungkin akan berbeda dari fase eksperimen (saat Anda memutuskan bahwa solusi Anda dapat dilakukan):
Pengumpulan data. Selama eksperimen, pengumpulan data biasanya memerlukan akses ke data yang disimpan. Untuk pipeline data, pengumpulan data mungkin memerlukan penemuan dan persetujuan untuk mengakses data log streaming.
Jika memerlukan data yang diberi label oleh manusia (seperti gambar medis), Anda juga memerlukan proses untuk mengumpulkan dan memperbaruinya. Jika Anda memerlukan data berlabel manusia, lihat halaman CrowdCompute.
Pemrosesan data. Selama eksperimen, fitur yang tepat berasal dari penyalinan, penggabungan, dan pengambilan sampel set data eksperimen. Untuk pipeline data, menghasilkan fitur yang sama tersebut mungkin memerlukan proses yang sama sekali berbeda. Namun, pastikan untuk menduplikasi transformasi data dari fase eksperimen dengan menerapkan operasi matematika yang sama pada fitur dan label.
Penyimpanan aset dan metadata
Anda memerlukan proses untuk menyimpan, membuat versi, dan mengelola set data pelatihan dan pengujian. Repositori yang dikontrol versi memberikan manfaat berikut:
Reproduksi. Membuat ulang dan menstandarkan lingkungan pelatihan model serta membandingkan kualitas prediksi di antara berbagai model.
Kepatuhan. Patuhi persyaratan kepatuhan terhadap peraturan untuk audit dan transparansi.
Retensi. Tetapkan nilai retensi data untuk durasi penyimpanan data.
Pengelolaan akses. Kelola siapa yang dapat mengakses data Anda melalui izin yang mendetail.
Integritas data. Lacak dan pahami perubahan pada set data dari waktu ke waktu, sehingga Anda dapat lebih mudah mendiagnosis masalah pada data atau model Anda.
Visibilitas. Memudahkan orang lain untuk menemukan set data dan fitur Anda. Tim lain kemudian dapat menentukan apakah mereka akan berguna untuk tujuan mereka.
Mendokumentasikan data Anda
Dokumentasi yang baik membantu orang lain memahami informasi penting tentang data Anda, seperti jenis, sumber, ukuran, dan metadata penting lainnya. Dalam kebanyakan kasus, mendokumentasikan data Anda dalam dokumen desain atau g3doc sudah cukup. Jika Anda berencana untuk berbagi atau memublikasikan data, gunakan kartu data untuk menyusun informasi. Kartu data memudahkan orang lain untuk menemukan dan memahami {i>dataset<i} Anda.
Pipeline pelatihan dan validasi
Pipeline pelatihan dan validasi menghasilkan model baru untuk menggantikan model produksi sebelum model tersebut usang. Melatih dan memvalidasi model baru secara terus-menerus akan memastikan model terbaik selalu ada dalam produksi.
Pipeline pelatihan menghasilkan model baru dari set data pelatihan, dan pipeline validasi akan membandingkan kualitas model baru dengan model yang diproduksi menggunakan set data pengujian.
Gambar 9 mengilustrasikan pipeline pelatihan menggunakan set data pelatihan untuk melatih model baru.
Pipeline pelatihan
Gambar 9. Pipeline pelatihan melatih model baru menggunakan set data pelatihan terbaru.
Setelah model dilatih, pipeline validasi akan menggunakan set data pengujian untuk membandingkan kualitas model produksi dengan model yang dilatih.
Secara umum, jika model yang dilatih tidak lebih buruk daripada model produksi, model yang dilatih akan mulai diproduksi. Jika model yang dilatih lebih buruk, infrastruktur pemantauan harus membuat pemberitahuan. Model terlatih dengan kualitas prediksi yang lebih buruk dapat menunjukkan potensi masalah pada pipeline validasi atau data. Pendekatan ini berfungsi untuk memastikan model terbaik, yang dilatih dengan data terbaru, selalu dalam produksi.
Penyimpanan aset dan metadata
Model dan metadatanya harus disimpan dalam repositori berversi untuk mengatur dan melacak deployment model. Repositori model memberikan manfaat berikut:
Pelacakan dan evaluasi. Lacak model dalam produksi dan pahami metrik kualitas prediksi dan evaluasinya.
Proses rilis model. Tinjau, setujui, rilis, atau roll back model dengan mudah.
Reproduksi dan proses debug. Memunculkan kembali hasil model dan men-debug masalah secara lebih efektif dengan melacak set data dan dependensi model di seluruh deployment.
Visibilitas. Permudah orang lain untuk menemukan model Anda. Tim lain kemudian dapat menentukan apakah model Anda (atau bagiannya) dapat digunakan untuk tujuannya.
Gambar 10 mengilustrasikan model tervalidasi yang disimpan di repositori model.
Penyimpanan model
Gambar 10. Model yang divalidasi disimpan di repositori model untuk pelacakan dan visibilitas.
Gunakan kartu model untuk mendokumentasikan dan berbagi informasi penting tentang model Anda, seperti tujuan, arsitektur, persyaratan hardware, metrik evaluasi, dll.
Tantangan dalam membangun pipeline
Saat membangun pipeline, Anda mungkin menghadapi tantangan berikut:
Mendapatkan akses ke data yang Anda perlukan. Akses data mungkin memerlukan pembenaran mengapa Anda membutuhkannya. Misalnya, Anda mungkin perlu menjelaskan bagaimana data akan digunakan dan mengklarifikasi bagaimana masalah PII akan diselesaikan. Bersiaplah untuk menunjukkan bukti konsep yang menunjukkan bagaimana model Anda membuat prediksi yang lebih baik dengan akses ke jenis data tertentu.
Mendapatkan fitur yang tepat. Dalam beberapa kasus, fitur yang digunakan dalam fase eksperimen tidak akan tersedia dari data real-time. Oleh karena itu, saat bereksperimen, coba konfirmasi bahwa Anda akan bisa mendapatkan fitur yang sama dalam produksi.
Memahami cara data dikumpulkan dan direpresentasikan. Mempelajari cara data dikumpulkan, siapa yang mengumpulkannya, dan cara pengumpulannya (beserta masalah lainnya) dapat memerlukan waktu dan usaha. Sangat penting untuk memahami data secara menyeluruh. Jangan gunakan data yang tidak Anda yakini untuk melatih model yang mungkin masuk ke produksi.
Memahami konsekuensi antara upaya, biaya, dan kualitas model. Memasukkan fitur baru ke dalam pipeline data dapat memerlukan banyak upaya. Namun, fitur tambahan mungkin hanya sedikit meningkatkan kualitas model. Dalam kasus lain, menambahkan fitur baru mungkin mudah. Namun, resource untuk mendapatkan dan menyimpan fitur mungkin sangat mahal.
Mendapatkan komputasi. Jika Anda memerlukan TPU untuk pelatihan ulang, mungkin akan sulit untuk mendapatkan kuota yang diperlukan. Selain itu, mengelola TPU rumit. Misalnya, beberapa bagian model atau data Anda mungkin perlu didesain khusus untuk TPU dengan memisahkan bagian tersebut di beberapa chip TPU.
Menemukan set data emas yang tepat. Jika data sering berubah, akan sulit untuk mendapatkan set data emas dengan label yang konsisten dan akurat.
Menemukan jenis masalah ini selama eksperimen akan menghemat waktu. Misalnya, Anda tentu tidak ingin mengembangkan fitur dan model terbaik hanya untuk mengetahui bahwa fitur dan model tersebut tidak layak dalam produksi. Oleh karena itu, cobalah untuk mengonfirmasi sedini mungkin bahwa solusi Anda akan berfungsi dalam batasan lingkungan produksi. Lebih baik meluangkan waktu untuk memverifikasi cara kerja solusi daripada perlu kembali ke fase eksperimen karena fase pipeline menemukan masalah yang tidak dapat diatasi.