2 poin oleh GN⁺ 2025-01-29 | 1 komentar | Bagikan ke WhatsApp
  • Mata kuliah 17-445/17-645/17-745 Machine Learning in Production / AI Engineering Spring 2025 dari CMU membahas proses menjadikan model ML sebagai produk perangkat lunak yang dapat di-deploy dan dioperasikan di dunia nyata
  • Intinya adalah pemahaman bersama agar data scientist dan software engineer dapat bekerja bersama, dengan menghubungkan requirement, desain, deployment, operasi, dan quality assurance berdasarkan asumsi bahwa model bisa salah
  • Kuliah ini mencakup secara luas persiapan menghadapi prediksi yang keliru, MLOps, A/B testing dan canary release, deteksi kualitas data, concept drift, dan feedback loop, testing dan debugging, fairness, privasi, serta keselamatan
  • Mahasiswa membangun, men-deploy, mengevaluasi, dan memelihara layanan rekomendasi film berskala 1 juta pengguna sebagai proyek kelompok, serta praktik menggunakan Kafka, Jenkins, Prometheus, Grafana, Docker, dan lainnya
  • Pengalaman ML dasar dan kemampuan pemrograman diharapkan, tetapi pengalaman software engineering tidak wajib; materi kuliah, tugas, dan buku ajar tersedia publik sehingga bisa digunakan untuk belajar mandiri dan materi pendidikan

Tujuan dan sasaran mata kuliah

  • Machine Learning in Production / AI Engineering adalah mata kuliah yang membahas tahap setelah membuat prediksi dengan model ML atau prompt
    • Mengubah model menjadi produk dan men-deploy-nya ke lingkungan nyata
    • Membangun kepercayaan terhadap kualitas
    • Mengoperasikan dan memeliharanya dalam skala besar
  • Mata kuliah Spring 2025 dirancang untuk mahasiswa yang memiliki sejumlah pengalaman data science
    • Contoh: pernah mengambil mata kuliah ML, pengalaman menggunakan sklearn
    • Diharapkan memiliki kemampuan dasar pemrograman Python dan penggunaan Unix shell
    • Latar belakang software engineering seperti testing, requirement, arsitektur, proses, dan pengalaman tim tidak diwajibkan
  • Ke depannya, mata kuliah ini direncanakan ditawarkan setidaknya setiap semester musim semi, dan dapat juga dibuka pada beberapa semester musim gugur
    • Tidak ada rencana penawaran pada semester musim panas

Materi publik dan sumber referensi

Pertanyaan yang dibahas dalam sistem ML produksi

  • Desain untuk mengantisipasi prediksi yang salah

    • Membahas bagaimana sistem harus bekerja bahkan ketika model bisa salah
    • Membahas cara menjaga keselamatan dan keamanan meskipun ada kemungkinan kesalahan
    • Mengkaji antarmuka pengguna dan desain keseluruhan sistem yang berjalan di lingkungan nyata
  • Deployment dan update produksi

    • Membahas cara men-deploy dan memperbarui model secara stabil
    • Membahas cara menguji seluruh pipeline ML
    • Mengotomatiskan dan menskalakan proses deployment dengan tool MLOps
    • Membahas eksperimen produksi seperti A/B testing dan canary release
    • Membahas deteksi masalah kualitas data, concept drift, dan feedback loop
  • Sistem ML yang skalabel

    • Membahas desain sistem untuk memproses data pelatihan skala besar, data telemetri, dan request pengguna
    • Membandingkan opsi seperti stream processing, batch processing, lambda architecture, dan data lake
  • Testing dan debugging

    • Membahas cara mengevaluasi kualitas prediksi model di produksi
    • Menguji bukan hanya model, tetapi seluruh sistem berbasis ML
    • Menerapkan pelajaran dari software testing, pembuatan test case otomatis, simulasi, dan continuous integration pada testing produksi ML
  • Atribut kualitas di luar akurasi

    • Membahas latensi pelatihan dan inferensi, biaya operasional, skalabilitas, explainability, fairness, privasi, robustness, dan keselamatan
    • Juga mempertimbangkan perlu tidaknya operasi offline dan frekuensi update model
    • Mengidentifikasi requirement kualitas yang penting dalam lingkungan produksi bisnis serta menyeimbangkan konflik dan trade-off

Studi kasus dan proyek kelompok

  • Studi kasus yang dibahas dalam kuliah mencakup berbagai produk berbasis ML
    • Transkripsi suara otomatis
    • Deteksi terdistribusi anak hilang berbasis webcam
    • Terjemahan instan augmented reality
    • Layanan medis dan kesehatan seperti deteksi kanker, deteksi jatuh, dan diagnosis COVID
    • Layout slide otomatis di PowerPoint
    • Evaluasi penerimaan universitas semiotomatis
    • Manajemen inventori
    • Smart playlist dan rekomendasi film
    • Deteksi penipuan iklan
    • Robot pengantar dan fitur smart driving
  • Proyek kelompok yang diperluas adalah pekerjaan membangun, men-deploy, mengevaluasi, dan memelihara layanan rekomendasi film
    • Mengasumsikan lingkungan “produksi” yang cukup realistis
    • Skala pengguna adalah 1 juta orang

Hasil belajar dan tool praktik

  • Setelah mengambil mata kuliah ini, mahasiswa diharapkan dapat menganalisis trade-off berbagai atribut kualitas dalam desain sistem produksi yang mencakup komponen ML
    • Di luar akurasi, juga membahas biaya operasional, latensi, kemampuan untuk di-update, dan explainability
  • Mahasiswa diharapkan dapat mengimplementasikan sistem berkualitas produksi yang robust dengan asumsi kemungkinan kesalahan pada komponen ML
  • Mahasiswa diharapkan dapat merancang infrastruktur data yang fault-tolerant dan skalabel untuk pelatihan model, serving, versioning, dan eksperimen
  • Kualitas seluruh pipeline ML dipastikan dengan otomasi testing dan teknik quality assurance
    • Kualitas data
    • Data drift
    • Feedback loop
    • Kualitas model
  • Mahasiswa diharapkan dapat membuat sistem yang dapat diuji dan dimonitor di produksi serta pipeline deployment yang robust
  • Mempertimbangkan requirement tingkat sistem seperti keselamatan, keamanan, privasi, fairness, dan usability
  • Tool yang akan dibiasakan adalah Apache Kafka, Jenkins, Prometheus, Grafana, Docker, dan berbagai tool MLOps

Operasional dan jadwal mata kuliah

  • Nomor mata kuliah adalah 17-445/17-645/17-745 dan bernilai 12 unit
  • Isi mata kuliah sama untuk semua nomor, tetapi 17-745 tingkat PhD mengganti dua tugas dengan research project wajib
  • Kuliah Spring 2025 diselenggarakan secara tatap muka
    • Kuliah: Senin dan Rabu 2:00–3:20pm, PH 100
    • Lab: Jumat pada beberapa slot waktu dan lokasi, dan ada juga lab khusus jarak jauh
  • Isi kuliah secara umum stabil dalam beberapa tahun terakhir, tetapi topik dan tool spesifik terus diperbarui mengikuti riset dan tool baru
  • Jadwal tentatif dapat berubah, dan dapat disesuaikan selama semester untuk mencerminkan topik yang diminta atau dukungan pembelajaran
  • Alur topik kuliah berlanjut dari peralihan dari model ke sistem berbasis AI, pengumpulan requirement, persiapan menghadapi kesalahan, kualitas model, kolaborasi, testing model berbasis perilaku, arsitektur dan desain, deployment model, eksperimen produksi, kualitas data, otomasi pipeline, scaling, perencanaan operasi, versioning, provenance dan reproducibility, technical debt, etika dan fairness, explainability, keselamatan, keamanan dan privasi, dan seterusnya

Penilaian dan kebijakan tugas

  • Pengumpulan tugas, penilaian, diskusi, pertanyaan, pengumuman, dan dokumen pendukung menggunakan Canvas dan Gradescope
  • Slide diposting di halaman mata kuliah, dan Slack digunakan untuk komunikasi terkait PR dan proyek
  • GitHub digunakan untuk koordinasi kerja kelompok
  • Bobot nilai adalah sebagai berikut
    • Tugas individu 35%
    • Proyek kelompok 30%
    • Ujian tengah semester 15%
    • Partisipasi 5%
    • Lab 10%
    • Kuis bacaan 5%
    • Tidak ada ujian akhir
  • Penilaian menyediakan spesifikasi yang jelas dan kriteria skor, dan setiap bagian dinilai lulus/gagal
    • Tidak ada nilai parsial
    • Beberapa tugas memiliki sedikit poin bonus
  • Batas nilai ditetapkan relatif tinggi
    • A+ lebih dari 99%
    • A lebih dari 96%
    • A- lebih dari 94%
    • B+ lebih dari 91%
    • B lebih dari 86%
    • B- lebih dari 82%
    • C lebih dari 75%
    • D lebih dari 60%

Prasyarat pengetahuan dan persiapan mengikuti kuliah

  • Tidak ada prasyarat resmi, tetapi untuk berhasil mengikuti kuliah ini diharapkan memiliki pengalaman ML dasar dan kemampuan pemrograman dasar
  • Untuk latar belakang ML, disarankan memiliki pemahaman dasar tentang feature extraction, pembangunan dan evaluasi model, serta kapan dan bagaimana teknik pelatihan bekerja
    • Pengalaman Python dan Jupyter notebook akan membantu
    • Proyek praktik, belajar mandiri, atau kursus online juga bisa cukup
    • Pengetahuan latar belakang dapat dicek melalui prerequisite knowledge check yang anonim dan tidak dinilai
  • Pemrograman membutuhkan kemahiran dasar
    • Kefasihan dasar dalam bahasa seperti Python
    • Kemampuan menginstal dan mempelajari library untuk bahasa tersebut
    • Kemampuan melakukan koneksi ssh ke mesin Unix dan menjalankan pekerjaan command line dasar
    • Kemampuan menginstal dan mempelajari tool baru seperti Docker
  • Bahasa pemrograman tertentu tidak ditentukan, tetapi hampir semua tim terutama menggunakan Python
  • Tool wajib seperti Git, Docker, Grafana, dan Jenkins akan diperkenalkan dan diberi contoh di lab, dan mahasiswa diharapkan membaca dokumentasi serta tutorial sendiri untuk mempelajarinya
  • Mahasiswa diharapkan dapat mempelajari sendiri penggunaan dasar untuk menulis web service dengan library seperti Flask
  • Pengalaman software engineering bukan prasyarat
    • Topik seperti requirements engineering, software design, software testing, distributed systems, continuous deployment, dan manajemen tim dibahas dalam mata kuliah

Partisipasi kelas, lab, dan bacaan

  • Kuliah berlangsung tatap muka, dan partisipasi kelas merupakan bagian penting dari pengalaman belajar
    • Rekaman kuliah disediakan di Canvas secara best effort
    • Tidak ada opsi kuliah jarak jauh sinkron
    • Lab tidak direkam
  • Slack juga digunakan untuk aktivitas selama kelas, sehingga harus dapat diakses dari laptop, tablet, atau ponsel selama kelas
  • Lab biasanya memperkenalkan tool dan meminta satu atau lebih artefak yang jelas
    • Tugas lab dirancang berdurasi sekitar 1 jam
    • Artefak ditunjukkan kepada TA pada jam lab minggu tersebut dan dinilai lulus/gagal
    • Dapat mencakup kode, demo eksekusi, dan jawaban lisan atas pertanyaan
  • Lab dirancang sebagai praktik awal dengan beban rendah
    • Jika belum memenuhi ekspektasi, mahasiswa dapat terus memperbaikinya selama jam lab
    • Pengumpulan setelah lab berakhir tidak diterima tanpa alasan eksplisit atau penggunaan token
  • Sebagai bahan bacaan, banyak digunakan Building Intelligent Systems: A Guide to Machine Learning Engineering karya Goeff Hulten
  • Buku ajar internal Machine Learning in Production terkait erat dengan setiap kuliah, tetapi diarahkan sebagai bacaan tambahan, bukan bab bacaan wajib
  • Sebagian besar kelas memiliki tugas bacaan, dan kuis bacaan di Canvas harus dikumpulkan sebelum kelas
    • Kuis terdiri dari 1 pertanyaan terbuka terkait bacaan
    • Dinilai lulus/gagal berdasarkan partisipasi yang sungguh-sungguh

Kerja tim dan fleksibilitas pengumpulan

  • Kerja tim adalah elemen wajib dalam mata kuliah
    • Proyek kelompok dikerjakan dalam tim beranggotakan 3–5 orang
    • Tim ditentukan oleh pengajar
    • Setiap tim mendapat mentor TA
  • Untuk tugas tim, evaluasi sejawat berdasarkan kriteria team citizenship diterapkan
    • Mengevaluasi peran sebagai anggota tim yang aktif dan kooperatif
    • Mentor tim melakukan debriefing dengan tim setelah setiap milestone dan mendiskusikan strategi untuk memperbaiki teamwork
  • Setiap mahasiswa menerima 8 token individu yang dapat digunakan selama semester
    • 1 token memungkinkan keterlambatan pengumpulan PR individu selama 1 hari
    • 3 token memungkinkan perbaikan atau pengerjaan ulang PR individu dan pengumpulan ulang dengan refleksi singkat
    • 1 token memungkinkan keterlambatan pengumpulan atau pengumpulan ulang kuis bacaan
    • 1 token memungkinkan penyelesaian terlambat atau pengerjaan ulang lab
    • Token individu yang tersisa dihitung sebagai 1 hari partisipasi pada akhir semester
  • Setiap tim juga menerima 8 token tim secara terpisah
    • Dapat digunakan 1 token per hari untuk memperpanjang deadline milestone
    • 3 token dapat digunakan untuk pengumpulan ulang milestone dengan refleksi
  • Token individu dan token tim tidak dapat saling menggantikan
  • Jika tidak memiliki token, keterlambatan pengumpulan tugas individu atau tim dikenai pengurangan 15% untuk setiap hari yang sudah dimulai

Tool AI, kolaborasi, dan partisipasi riset

  • Sesuai sifat mata kuliah, penggunaan tool AI generatif tidak dibatasi
    • Tool seperti ChatGPT, Bard, Co-Pilot, dan Stable Diffusion dapat digunakan
    • Penggunaan ulang kode eksternal seperti StackOverflow atau tutorial juga diperbolehkan
  • Akurasi submission sepenuhnya menjadi tanggung jawab mahasiswa
    • Tool generatif dapat membuat jawaban yang terlihat masuk akal tetapi salah, dan jawaban seperti itu tidak akan mendapat nilai
    • Kepatuhan terhadap lisensi yang berlaku juga menjadi tanggung jawab mahasiswa
  • Kebijakan integritas akademik umum berlaku
    • Tidak boleh menyalin jawaban mahasiswa lain atau mengambil jawaban yang ditulis bersama
    • Tidak boleh melihat jawaban mahasiswa lain, memberikan jawaban sendiri, atau menaruhnya di tempat yang dapat dilihat mahasiswa lain
    • Mengunggah jawaban ke GitHub publik juga tidak diperbolehkan
  • Di lab, mahasiswa dapat berkolaborasi dengan mahasiswa lain, tetapi tidak boleh berkolaborasi pada kuis bacaan, PR, dan ujian
  • Sanksi minimum untuk kecurangan adalah nilai 0 untuk seluruh tugas terkait, dan sanksi tambahan dapat diberikan sesuai prosedur universitas
  • Dalam mata kuliah ini juga dilakukan penelitian akademik yang menganalisis tugas mahasiswa
    • Tidak berpartisipasi tidak memengaruhi nilai atau riwayat akademik di CMU
    • Data riset tidak mencakup nilai mahasiswa
    • Analisis dilakukan setelah mata kuliah berakhir dan nilai akhir diserahkan, dalam bentuk yang telah dideidentifikasi dan diagregasi

1 komentar

 
GN⁺ 2025-01-29
Komentar Hacker News
  • Materinya jelas praktis. Kafka, Docker, Kubernetes, Jenkins semuanya alat standar industri, dan fokusnya pada MLOps juga terasa segar
    Bagus karena kuliah ini tidak berhenti pada sekadar membuat model, tetapi membahas kesenjangan antara machine learning dan sistem operasional nyata. Saya juga suka karena mencakup explainability, fairness, hingga monitoring. Namun jika melihat praktikumnya, banyak hal tampaknya bisa dipelajari lewat tutorial oleh software engineer tingkat menengah atau pemula yang termotivasi. Git, Flask, dan orkestrasi kontainer memang berguna, tetapi cukup mendasar bagi orang yang sudah pernah menangani lingkungan produksi. Tantangan yang lebih mendalam seperti optimasi jaringan untuk distributed training atau operasi inference skala besar tampaknya kurang dibahas, dan saya penasaran apakah itu muncul di proyek kelompok. Jenkins memang banyak dipakai, tetapi untuk CI/CD rasanya lebih baik juga memperkenalkan alat yang lebih modern seperti GitHub Actions atau ArgoCD. Kubernetes juga penting, tetapi jika turut membahas alat alternatif atau pelengkap untuk edge deployment atau sistem serverless, kuliah ini bisa terasa lebih berorientasi masa depan

    • Sulit juga menyebutnya terlalu pemula. Walaupun masing-masing alat bersifat entry-level, merangkai semuanya agar benar-benar berjalan itu sulit, dan materinya tampak setara tingkat pertengahan hingga akhir sarjana
      Jika secara konsep tidak ada perbedaan besar antara Jenkins dan framework CI/CD lain, cukup pilih salah satu yang populer, dan tampaknya memang itu yang dilakukan
    • Sekarang ini tampaknya sudah menjadi titik masuk mahasiswa tahun pertama ilmu komputer. Mahasiswa zaman sekarang masuk karena ingin mengerjakan machine learning
      Dua puluh tahun lalu, orang belajar dengan membuat database menggunakan Java, dan saat itu pun memakai “alat yang sepertinya suatu hari akan ditinggalkan”. Intinya, titik awalnya saja yang berubah
    • Saya juga penasaran soal kesesuaian jangka panjang alat-alat ini. Suatu saat mungkin akan muncul alat yang bisa menjalankan jaringan saraf apa pun di hardware apa pun, baik di satu mesin lokal maupun di lingkungan cloud terdistribusi
  • Saya melihat sekilas praktikumnya dan terasa menarik. Meski saya full-stack developer yang tidak punya banyak pengalaman LLM, separuhnya seperti Git, Flask, Kafka, Kubernetes sudah cukup familier, dan separuh sisanya juga terlihat seperti kode biasa
    Hampir tidak ada matematika rumit yang biasanya saya bayangkan ketika mendengar machine learning. Jadi saya penasaran, apakah ini berarti MLOps adalah bidang yang sebenarnya tidak terlalu sulit diakses oleh developer umum tanpa gelar PhD?

    • Walau tidak banyak tahu tentang machine learning, Anda bisa melangkah cukup jauh di MLOps. Jika ada senior machine learning engineer di tim, Anda akan membantu mereka melakukan scaling dan membangun sistem
      Misalnya, jika perlu membuat data sintetis dalam jumlah besar lewat simulasi, perhatian Anda bisa lebih banyak tertuju pada batch processing, format encoding, dan ingest data daripada pada pembuatan dataset yang bebas bias itu sendiri. Jika harus mengumpulkan dan mengambil sampel data lewat crowdsourcing, implementasi yang bisa memproses cepat secara online serta memakai biaya dan komputasi secara efisien sering kali lebih penting daripada teori reservoir sampling
    • Benar. Ini pada dasarnya software engineering yang diberi nama terdengar meyakinkan. Klasifikasi pekerjaan ini lebih seperti konsep yang sedikit lebih tertata daripada DevOps
      Di kebanyakan perusahaan, machine learning engineer adalah engineer yang memahami software dan sebagian machine learning; dalam kasus yang baik mereka mahir di keduanya, dalam kasus yang buruk mereka tidak mahir di keduanya
    • Persyaratan PhD biasanya untuk posisi riset sungguhan, atau berfungsi sebagai filter karena perusahaan ingin memperkecil kumpulan pelamar yang terlalu besar
    • Biasanya orang tidak menganggap peran “operasional” membutuhkan gelar PhD
  • Kuliah ini tampaknya hampir tidak membahas kualitas data dan baru muncul di Bab 16. Saya penasaran seberapa banyak pengalaman industri yang dimiliki para penulisnya
    Di dunia nyata, 90% waktu akan dihabiskan untuk kualitas data dan pembersihan data

    • Itu juga bisa dilihat sebagai perhatian terpisah yang tentu sangat penting. Menurut saya lebih baik mengabstraksikannya sebagai satu tahap dalam pipeline, lalu mempelajari perhatian, tantangan, dan metodologinya sendiri secara lebih mendalam
      Misalnya pekerjaan machine learning saya hampir semuanya dalam konteks regresi simulasi rekayasa dan pengembangan surrogate model, sehingga kualitas atau pembersihan data hampir tidak menjadi masalah. Sebagian besar pekerjaan ada pada pembuatan dataset serta pemilihan, pelatihan, dan deployment model. Tergantung pekerjaannya
    • Kualitas data di lapangan adalah masalah yang sangat besar. Saya pernah memimpin upaya membangun sistem lineage dan kualitas di organisasi besar, dan jika ditempelkan belakangan, pekerjaannya menjadi luar biasa besar
      Jika disiapkan sejak awal sebelum pipeline data membeku pada tahap pembuatan sumber, transformasi, dan preprocessing, banyak sakit kepala di kemudian hari bisa dikurangi
  • Saya penasaran apakah ada tempat bagi orang yang bukan mahasiswa untuk ikut mengikuti kuliah ini

  • Saya penasaran apakah siapa saja bisa mendaftar, atau harus diterima di salah satu program ilmu komputer terbaik di dalam negeri

    • Mereka sudah mengunggah catatan kuliah, bab buku, bacaan tambahan, dan tugas
      Kelihatannya bagus. Kursus LLM Systems juga sama
    • Saya yakin bisa. Saya salah satu instruktur kuliah ini
  • Saya penasaran apakah ada yang tahu literatur atau kuliah tentang pembangunan infrastruktur klaster machine learning. Saya terutama tertarik pada scaling infrastruktur storage, networking, dan pendekatan scheduling

    • Tidak ada yang terlalu khusus. Prinsip intinya sama, hanya perlu disesuaikan dengan perubahan beban kerja yang dibawa machine learning
      Untuk storage, jika untuk menyimpan model atau data, bisa memakai object storage seperti S3 atau shared network file system seperti EFS dan Lustre. Untuk networking GPU besar, saya tidak tahu materi yang benar-benar definitif. Scheduling sekarang pada dasarnya hampir menjadi masalah yang sudah terselesaikan, jadi apa pun bisa berjalan. Anda juga bisa membuat koordinator sendiri yang menjalankan job berbasis image Docker secara berkala, lalu menambahkan sistem metadata dan trigger berbasis message queue; itu bisa dibuat cukup cepat. Airflow atau AWS Batch untuk job skala besar juga memungkinkan. Hal yang mungkin terlewat adalah model serving. Terutama pada sistem rekomendasi, ini sulit, sensitif terhadap latensi, serta rentan terhadap lonjakan latensi dan lonjakan trafik. Bahkan kode Python yang ditulis dengan baik pun bisa cukup cepat mencapai batasnya
  • Senang melihat kuliah ini tersedia. Christian adalah orang yang luar biasa dan pekerjaannya juga bagus. Saya cukup mengenal versi awal kuliah dan buku ini, jadi bisa sangat merekomendasikannya

  • Saya sudah 9,5 tahun bekerja di platform dan sistem machine learning pada berbagai skala, dan materinya terlihat bagus

    • Saya penasaran apa rekomendasi Anda untuk backend developer yang biasanya membuat aplikasi REST CRUD dan ingin pindah ke bidang platform machine learning
  • Mungkin saya meremehkan tingkat kesulitan kuliah ini, tetapi terdengar seperti kursus pengantar. Sampai sebelum alat explainability model, sebagian besar tampak cukup intuitif
    Meski begitu, saya menganggap baik bahwa kuliah ini memakai alat standar industri untuk sebagian besar use case