Perencanaan project ML

Merencanakan project ML berbeda dengan merencanakan project software engineering pada umumnya. Project ML bersifat non-linear dan memiliki tingkat ketidakpastian yang beragam. Metode ini memerlukan pendekatan iteratif dan pola pikir eksperimental.

Ketidakpastian proyek

Perencanaan tahap awal bisa jadi sulit karena pendekatan terbaik biasanya tidak terlihat saat memulai proyek. Ketidakpastian yang melekat ini membuat perkiraan {i>timeline <i}menjadi sulit.

Kompetisi Kaggle baru-baru ini menggambarkan ketidakpastian project ML. Dalam beberapa minggu pertama kompetisi, 350 tim berpartisipasi. Beberapa tim dapat meningkatkan kualitas prediksi benchmark dari 35% menjadi 65%. Selama dua minggu berikutnya, jumlah tim yang mengerjakan masalah ini meningkat dari 350 menjadi 1.400. Namun, model terbaik hanya mencapai kualitas prediksi sebesar 68%.

Gambar 3 mengilustrasikan ketidakpastian dalam pengembangan ML dengan menunjukkan peningkatan upaya yang signifikan, tetapi hanya sedikit peningkatan dalam kualitas model.

Gambar menunjukkan jumlah tim yang meningkat dari 350 menjadi 1.400 selama dua minggu, tetapi kualitas model hanya meningkat tiga persen.

Gambar 3. Selama periode dua minggu, jumlah tim yang menangani masalah ini meningkat 4 kali lipat, tetapi kualitas modelnya tetap hampir sama, yang menyoroti kesulitan dalam memperkirakan upaya solusi ML.

Dengan kata lain, lebih dari seribu tim—yang masing-masing bereksperimen dengan berbagai transformasi data, arsitektur, dan hyperparameter—hanya mencapai produksi model dengan kualitas prediksi 68%.

Contoh dari industri menggambarkan non-linearitas project ML, yang mana output-nya tidak proporsional dengan input. Dua tim memerlukan waktu beberapa bulan untuk melatih model agar memiliki kualitas prediksi 90%. Namun, perlu waktu lebih dari lima tahun bagi beberapa tim untuk menyiapkan model untuk diproduksi dengan kualitas prediksi 99,9%.

Contoh-contoh ini menyoroti bahwa ML siap produksi adalah proses eksploratif, yang memerlukan pola pikir ilmiah dan rekayasa.

Pendekatan eksperimental

Pada umumnya, pengembangan ML lebih mirip dengan melakukan eksperimen daripada mempraktikkan software engineering tradisional. ML memerlukan pengujian fitur yang berbeda, mencoba beberapa arsitektur, dan menyesuaikan hyperparameter dengan tepat. Berdasarkan definisinya, eksperimen tidak dijamin akan berhasil. Karena itu, sebaiknya rencanakan menggunakan framework eksperimental.

Mari kita lihat rencana software engineering umum untuk melihat perbedaannya dengan rencana project ML.

Merencanakan proyek rekayasa perangkat lunak

Dalam rencana software engineering umum, Anda menentukan persyaratan, menguraikan komponen, memperkirakan upaya, dan menjadwalkan pekerjaan. Ada jalur yang jelas untuk mencapai solusi. Misalnya, engineer sering kali mengetahui dengan tingkat kepastian yang tinggi tentang tugas yang perlu mereka selesaikan untuk membangun aplikasi yang memenuhi spesifikasi desain.

Ketika memprediksi waktu yang diperlukan untuk menyelesaikan tugas, mereka dapat memperkirakan pekerjaan tersebut berdasarkan proyek serupa. Meskipun tantangan selalu terjadi—seperti dependensi yang tidak diketahui atau perubahan persyaratan—yang dapat membuat perkiraan terkadang sulit, jalur yang jelas untuk solusinya biasanya ada.

Sebaliknya, project ML biasanya tidak memiliki satu jalur yang jelas untuk meraih sukses.

Merencanakan project ML

Untuk sebagian besar project ML, Anda akan menemukan solusi terbaik dengan bereksperimen menggunakan beberapa pendekatan dalam proses uji coba-coba. Anda biasanya tidak akan tahu solusi optimal untuk masalah Anda sebelum mencoba menyelesaikannya. Misalnya, arsitektur solusi yang optimal mungkin berupa model linear sederhana, jaringan neural, atau mungkin pohon keputusan. Hanya dengan mencoba setiap pendekatan, Anda dapat menemukan solusi terbaik.

Ambiguitas ini membuat perencanaan menjadi sulit. Seperti yang telah dibahas sebelumnya, memprediksi upaya yang diperlukan project ML itu sulit. Dengan mencoba memecahkan masalah saja, Anda dapat memperoleh pemahaman yang lebih baik terkait jumlah waktu dan resource yang mungkin diperlukan oleh solusi.

Berikut adalah strategi yang direkomendasikan untuk merencanakan pekerjaan ML:

  • Kotak waktu pekerjaan. Tetapkan jangka waktu yang jelas untuk menyelesaikan tugas atau mencoba solusi tertentu. Misalnya, Anda dapat mengalokasikan dua minggu untuk menentukan apakah Anda bisa mendapatkan akses ke jenis data yang tepat. Jika datanya bisa didapatkan, Anda dapat menetapkan dua minggu lagi untuk melihat apakah model yang sederhana menunjukkan bahwa solusi ML dapat dilakukan. Jika model yang sederhana gagal, Anda dapat menetapkan dua minggu lagi untuk mencoba jaringan neural. Di akhir setiap jangka waktu, Anda akan memiliki lebih banyak informasi untuk menentukan apakah penggunaan resource ke masalah ini akan bermanfaat.

  • Lihat cakupan persyaratan project. Jika solusi ML tampak menjanjikan tetapi bukan merupakan fitur penting untuk produk atau layanan Anda, cakap kembali persyaratannya. Misalnya, saat merencanakan pekerjaan untuk kuartal berikutnya, Anda mungkin berencana mencoba solusi yang sangat sederhana. Kemudian pada kuartal berikutnya, Anda dapat merencanakan untuk memperbaiki solusi secara iteratif. Menerapkan solusi ML dengan melakukan peningkatan inkremental dalam jangka waktu yang lebih lama telah menjadi cara banyak tim mencapai solusi ML yang berdampak.

  • Project magang atau Noogler. Mengarahkan dan memandu peserta magang atau Noogler untuk mencoba solusi ML dapat menjadi cara yang tepat untuk mulai menjelajahi ruang baru dengan hasil yang tidak diketahui. Setelah proyek selesai, Anda akan lebih memahami upaya yang diperlukan oleh solusi ML dan berpotensi menjanjikan untuk dikejar—atau apakah sumber daya harus ditempatkan di tempat lain.

Dengan strategi apa pun, sangat bijak untuk gagal dengan cepat. Upaya mendekati dengan biaya terendah, tetapi berpotensi dengan hasil tertinggi, terlebih dahulu. Jika pendekatan itu berhasil, Anda telah menemukan solusi yang baik. Jika tidak, Anda belum membuang banyak waktu dan sumber daya.

Setelah tim mendapatkan pengalaman dan eksposur terkait cara menjalankan eksperimen, mereka dapat memperkirakan dengan lebih baik upaya yang mungkin diperlukan eksperimen, sehingga perencanaan menjadi lebih dapat diprediksi. Namun, hasil eksperimen hampir selalu tidak diketahui, sehingga jumlah eksperimen yang diperlukan untuk menemukan solusi terbaik tidak dapat diperkirakan sebelumnya.

Pendekatan perencanaan dengan pola pikir eksperimental membantu menyiapkan tim Anda agar sukses. Ketika sebuah pendekatan membawa jalan buntu, alih-alih berkecil hati, anggota tim memahami bahwa itu adalah bagian dari proses dalam menemukan solusi ML. Lebih penting lagi, dengan membahas ketidakpastian dalam pengembangan ML bersama pemangku kepentingan, Anda dapat menetapkan ekspektasi yang lebih realistis.

Perhatikan

Mempelajari cara merencanakan beberapa pendekatan ML kemungkinan memerlukan waktu dan pengalaman. Rencana proyek Anda mungkin memerlukan pembaruan secara berkala. Anggap panduan ini sebagai dokumen dinamis dalam evolusi yang konstan saat tim Anda bereksperimen dengan berbagai pendekatan. Dengan berfokus pada ide-ide utama berikut, Anda akan meningkatkan peluang sukses:

  • Perkirakan biaya dan peluang keberhasilan untuk setiap pendekatan.
  • Cobalah membuat portofolio pendekatan.
  • Identifikasi pelajaran yang didapat dan cobalah untuk meningkatkan sistem satu per satu.
  • Merencanakan kemungkinan kegagalan.

Terkadang pendekatan awal mengarah pada terobosan. Seseorang mungkin menemukan bug dalam pipeline pembuatan data atau pemisahan validasi pelatihan. Dengan perencanaan yang baik dan dokumentasi yang menyeluruh, Anda meningkatkan kemungkinan menemukan model yang dapat menyelesaikan masalah bisnis lebih cepat dari yang diharapkan.