Üretim Ortamında Machine Learning (CMU dersi)
(mlip-cmu.github.io)- CMU’nun 17-445/17-645/17-745 Machine Learning in Production / AI Engineering Spring 2025 dersi, ML modellerini gerçek dünyada dağıtılıp işletilebilen yazılım ürünlerine dönüştürme sürecini ele alıyor
- Odak noktası, veri bilimciler ile yazılım mühendislerinin birlikte çalışabilmesini sağlayan ortak anlayış; model hatalarını varsayarak gereksinimleri, tasarımı, dağıtımı, işletimi ve kalite güvencesini birbirine bağlıyor
- Ders; hatalı tahminlere hazırlık, MLOps, A/B testleri ve kanarya sürümleri, veri kalitesi, kavram kayması ve geri bildirim döngüsü tespiti, test ve hata ayıklama, adalet, gizlilik ve güvenliği geniş kapsamda ele alıyor
- Öğrenciler, grup projesi olarak 1 milyon kullanıcı ölçeğinde bir film öneri servisi oluşturuyor, dağıtıyor, değerlendiriyor ve bakımını yapıyor; Kafka, Jenkins, Prometheus, Grafana, Docker gibi araçlarla da pratik yapıyor
- Temel ML deneyimi ve programlama becerisi bekleniyor, ancak yazılım mühendisliği deneyimi şart değil; ders materyalleri, ödevler ve ders kitabı açık olduğundan kendi kendine öğrenme ve eğitim materyali olarak kullanılabiliyor
Dersin hedefleri ve hedef kitlesi
- Machine Learning in Production / AI Engineering, ML modelleri veya prompt’larla tahmin üretme aşamasından sonrasını ele alan bir ders
- Modelleri ürüne dönüştürür ve gerçek ortamlara dağıtır
- Kaliteye yönelik güven oluşturur
- Ölçekli biçimde işletir ve bakımını yapar
- Spring 2025 dersi, belirli düzeyde veri bilimi deneyimi olan öğrenciler için tasarlandı
- Örn. ML dersi almış olmak,
sklearnkullanım deneyimi - Temel Python programlama ve Unix shell kullanım becerisi bekleniyor
- Test, gereksinimler, mimari, süreç, ekip deneyimi gibi yazılım mühendisliği geçmişi gerekmiyor
- Örn. ML dersi almış olmak,
- Gelecekte bu dersin en azından her bahar döneminde sunulması planlanıyor; bazı güz dönemlerinde de açılabilir
- Yaz döneminde sunulması planlanmıyor
Açık materyaller ve referans kaynaklar
- Araştırmacılar, eğitimciler ve ilgili okurlar için slaytlar ve ödevler dahil tüm materyaller Creative Commons lisansıyla açık olarak yayımlandı
- CMU MLIP GitHub
- Spring 2025 açık materyalleri course GitHub repository içinde bulunuyor
- Derslerin neredeyse tamamına karşılık gelen bölümleri olan çevrimiçi bir ders kitabı da açık olarak sunuluyor
- Machine Learning in Production textbook
- Bu kitap MIT Press tarafından yayımlanacak; çevrimiçi sürümü Creative Commons lisansıyla sağlanıyor
- Dersin amacı ve ilk tasarımını ele alan makale de birlikte sunuluyor
- Summer 2020 ders kayıtları course page üzerinde bulunuyor, ancak güncel duruma göre biraz eski materyaller
- İlgili araştırmaları bulmak için bir annotated bibliography de sağlanıyor
Üretim ML sistemlerinde ele alınan sorular
-
Hatalı tahminlere hazırlıklı tasarım
- Modelin yanılabileceği durumlarda sistemin nasıl davranması gerektiğini ele alır
- Olası hatalara rağmen güvenlik ve emniyetin nasıl korunacağını ele alır
- Gerçek ortamda çalışan kullanıcı arayüzünü ve tüm sistem tasarımını birlikte inceler
-
Üretime dağıtım ve güncelleme
- Modellerin güvenilir biçimde nasıl dağıtılıp güncelleneceğini ele alır
- Tüm ML pipeline’ının nasıl test edileceğini ele alır
- MLOps araçlarıyla dağıtım sürecini otomatikleştirir ve ölçekler
- A/B testleri ve kanarya sürümleri gibi üretim deneylerini ele alır
- Veri kalitesi sorunları, kavram kayması ve geri bildirim döngüsü tespitini ele alır
-
Ölçeklenebilir ML sistemleri
- Büyük ölçekli eğitim verisi, telemetri verisi ve kullanıcı isteklerini işleyen sistem tasarımlarını ele alır
- Akış işleme, batch işleme, lambda mimarisi ve veri gölü gibi seçenekleri karşılaştırır
-
Test ve hata ayıklama
- Model tahmin kalitesinin üretimde nasıl değerlendirileceğini ele alır
- Yalnızca modeli değil, ML tabanlı tüm sistemi test eder
- Yazılım testi, otomatik test senaryosu üretimi, simülasyon ve sürekli entegrasyondan çıkarılan dersleri ML üretim testlerine uygular
-
Doğruluk dışındaki kalite özellikleri
- Eğitim ve çıkarım gecikmesi, operasyon maliyeti, ölçeklenebilirlik, açıklanabilirlik, adalet, gizlilik, sağlamlık ve güvenliği ele alır
- Çevrimdışı çalışma gerekip gerekmediğini ve model güncelleme sıklığını da dikkate alır
- İş üretim ortamlarında önemli kalite gereksinimlerini belirler, çatışmaları ve ödünleşimleri dengeler
Vaka çalışmaları ve grup projesi
- Derste ele alınan vaka çalışmaları, çeşitli ML tabanlı ürünleri kapsar
- Otomatik konuşma transkripsiyonu
- Web kamerası tabanlı dağıtık kayıp çocuk tespiti
- Artırılmış gerçeklikte anlık çeviri
- Kanser tespiti, düşme tespiti, COVID tanısı gibi tıbbi ve sağlık hizmetleri
- PowerPoint otomatik slayt düzeni
- Yarı otomatik üniversite kabul değerlendirmesi
- Stok yönetimi
- Akıllı çalma listeleri ve film önerileri
- Reklam sahtekârlığı tespiti
- Teslimat robotları ve akıllı sürüş özellikleri
- Genişletilmiş grup projesi, bir film öneri servisi oluşturma, dağıtma, değerlendirme ve bakımını yapma çalışmasıdır
- Bir ölçüde gerçekçi bir “üretim” ortamı varsayılır
- Kullanıcı ölçeği 1 milyon kişidir
Öğrenim çıktıları ve pratik araçlar
- Dersi tamamladıktan sonra öğrencilerin, ML bileşenleri içeren üretim sistemi tasarımında farklı kalite özellikleri arasındaki ödünleşimleri analiz edebilmesi beklenir
- Doğruluğun yanı sıra operasyon maliyeti, gecikme, güncellenebilirlik ve açıklanabilirlik de ele alınır
- ML bileşenlerinin hata yapabilirliğini varsayarak üretim kalitesinde sağlam sistemler gerçekleştirebilmelidirler
- Model eğitimi, serving, versiyonlama ve deneyler için hata toleranslı ve ölçeklenebilir veri altyapısı tasarlayabilmelidirler
- Test otomasyonu ve kalite güvencesi teknikleriyle tüm ML pipeline’ının kalitesi güvence altına alınır
- Veri kalitesi
- Veri drift’i
- Geri bildirim döngüleri
- Model kalitesi
- Üretimde test edilebilir ve izlenebilir sistemler ile sağlam dağıtım pipeline’ları oluşturabilmelidirler
- Güvenlik, emniyet, gizlilik, adalet, kullanılabilirlik gibi sistem düzeyi gereksinimler dikkate alınır
- Aşina olunacak araçlar Apache Kafka, Jenkins, Prometheus, Grafana, Docker ve çeşitli MLOps araçlarıdır
Ders işleyişi ve takvim
- Ders numarası 17-445/17-645/17-745 olup 12 birimlik bir derstir
- Tüm numaralarda ders içeriği aynıdır; ancak PhD düzeyindeki 17-745, iki ödevi zorunlu research project ile değiştirir
- Spring 2025 dersi yüz yüze yürütülür
- Ders: Pazartesi ve Çarşamba 2:00–3:20pm, PH 100
- Lab: Cuma günleri çeşitli saat ve yerlerde yapılır; yalnızca uzaktan katılıma açık lab de vardır
- Ders içeriği son birkaç yılda genel olarak istikrarlı olsa da belirli konular ve araçlar yeni araştırma ve araçlara göre sürekli güncellenir
- Ön takvim değişebilir; dönem içinde talep edilen konular veya öğrenim desteği dikkate alınarak ayarlanabilir
- Ders konularının akışı; modelden yapay zeka tabanlı sisteme geçiş, gereksinim toplama, hatalara hazırlık, model kalitesi, iş birliği, davranış tabanlı model testi, mimari ve tasarım, model dağıtımı, üretim deneyleri, veri kalitesi, pipeline otomasyonu, ölçekleme, operasyon planlama, versiyonlama, kaynak ve tekrarlanabilirlik, teknik borç, etik ve adalet, açıklanabilirlik, güvenlik, emniyet ve gizlilik şeklinde ilerler
Değerlendirme ve ödev politikası
- Ödev teslimi, notlandırma, tartışma, sorular, duyurular ve yardımcı belgeler için Canvas ve Gradescope kullanılır
- Slaytlar ders sayfasında yayımlanır; Slack, ödev ve proje iletişimi için kullanılır
- GitHub, grup çalışmalarını koordine etmek için kullanılır
- Not ağırlıkları şöyledir
- Bireysel ödevler %35
- Grup projesi %30
- Ara sınav %15
- Katılım %5
- Lab %10
- Okuma quiz’leri %5
- Final sınavı yoktur
- Notlandırmada net şartnameler ve puanlama ölçütleri sağlanır; her bölüm geçti/kaldı olarak notlandırılır
- Kısmi puan yoktur
- Bazı ödevlerde küçük miktarda bonus puan vardır
- Harf notu sınırları nispeten yüksek belirlenmiştir
- A+ %99 üzeri
- A %96 üzeri
- A- %94 üzeri
- B+ %91 üzeri
- B %86 üzeri
- B- %82 üzeri
- C %75 üzeri
- D %60 üzeri
Ön bilgi ve derse hazırlık
- Resmî ön koşul yoktur, ancak başarılı olmak için temel ML deneyimi ve temel programlama becerisi beklenir
- ML geçmişi olarak özellik çıkarımı, model kurma ve değerlendirme, öğrenme tekniklerinin ne zaman ve nasıl çalıştığına dair temel anlayış önerilir
- Python ve Jupyter notebook deneyimi faydalıdır
- Uygulamalı projeler, kendi kendine öğrenme veya çevrimiçi dersler de yeterli olabilir
- Anonim ve notlandırılmayan prerequisite knowledge check ile arka plan bilginizi kontrol edebilirsiniz
- Programlama tarafında temel yetkinlik gerekir
- Python gibi bir dilde temel akıcılık
- O dilin kütüphanelerini kurma ve öğrenme becerisi
- Bir Unix makinesine
sshile bağlanıp temel komut satırı işlemlerini yapabilme - Docker gibi yeni araçları kurup öğrenebilme
- Belirli bir programlama dili belirtilmez, ancak neredeyse tüm ekipler ağırlıklı olarak Python kullanır
- Git, Docker, Grafana, Jenkins gibi zorunlu araçlar lab’lerde tanıtılır ve örnekler verilir; öğrencilerin dokümantasyon ve tutorial’ları okuyup kendi başına öğrenmesi beklenir
- Flask gibi kütüphanelerle web servisi yazmanın temel kullanımını kendi kendinize öğrenebilmeniz gerekir
- Yazılım mühendisliği deneyimi ön koşul değildir
- Gereksinim mühendisliği, yazılım tasarımı, yazılım testi, dağıtık sistemler, sürekli dağıtım, ekip yönetimi gibi konular derste ele alınır
Derse katılım, lab’ler ve okumalar
- Dersler yüz yüze yapılır ve derse katılım öğrenme deneyiminin önemli bir parçasıdır
- Ders kayıtları Canvas’ta best effort olarak sağlanır
- Senkron uzaktan ders seçeneği yoktur
- Lab’ler kaydedilmez
- Slack ders içi etkinliklerde de kullanılacağından ders sırasında dizüstü bilgisayar, tablet veya telefondan erişilebilir olmalıdır
- Lab’ler genellikle araçları tanıtır ve bir veya daha fazla net çıktı ister
- Lab ödevi yaklaşık 1 saatlik iş olarak tasarlanır
- Çıktılar o haftaki lab saatinde TA’ya gösterildiğinde geçti/kaldı olarak notlandırılır
- Kod, çalışan demo ve sözlü soru-cevap içerebilir
- Lab’ler düşük baskılı ilk pratik çalışma olarak tasarlanmıştır
- Beklentilerin altında kalınırsa lab süresi içinde düzeltmeye devam edilebilir
- Açık bir gerekçe veya token kullanımı olmadan lab bitiminden sonra teslim kabul edilmez
- Okuma materyali olarak Goeff Hulten’in Building Intelligent Systems: A Guide to Machine Learning Engineering kitabı yaygın biçimde kullanılır
- Kendi ders kitabı Machine Learning in Production her dersle yakından bağlantılıdır, ancak zorunlu okuma bölümleri değil yardımcı okuma olarak belirtilir
- Çoğu ders için okuma ödevi vardır ve Canvas’taki okuma quiz’leri dersten önce teslim edilmelidir
- Quiz, okumayla ilgili 1 açık uçlu sorudan oluşur
- Ciddi katılım olup olmadığı geçti/kaldı olarak değerlendirilir
Ekip çalışması ve teslim esnekliği
- Ekip çalışması dersin zorunlu bir unsurudur
- Grup projesi 3–5 kişilik ekiplerle yürütülür
- Ekipler eğitmen tarafından atanır
- Her ekibe bir TA mentoru atanır
- Ekip ödevlerinde team citizenship ölçütüne göre akran değerlendirmesi uygulanır
- Aktif ve iş birliğine açık ekip üyesi rolü değerlendirilir
- Ekip mentoru her milestone’dan sonra ekiple debriefing yapar ve ekip çalışmasını geliştirme stratejilerini tartışır
- Her öğrenciye dönem boyunca kullanabileceği 8 kişisel token verilir
- 1 token ile bireysel ödev 1 gün geç teslim edilebilir
- 3 token ile bireysel ödev iyileştirilip veya yeniden çalışılıp kısa bir değerlendirme yazısıyla yeniden teslim edilebilir
- 1 token ile okuma quiz’i geç teslim edilebilir veya yeniden teslim edilebilir
- 1 token ile lab geç tamamlanabilir veya yeniden yapılabilir
- Kalan kişisel token’lar dönem sonunda 1 günlük katılım olarak sayılır
- Her ekibe ayrıca 8 ekip token’ı verilir
- Milestone teslim tarihini uzatmak için gün başına 1 token kullanılabilir
- Bir milestone’u değerlendirme yazısıyla yeniden teslim etmek için 3 token kullanılabilir
- Kişisel token’lar ve ekip token’ları birbirinin yerine kullanılamaz
- Token yokken bireysel veya ekip ödevlerinin geç tesliminde, başlamış her gün için %15 kesinti uygulanır
Yapay zeka araçları, iş birliği ve araştırmaya katılım
- Dersin niteliği gereği içerik üreten yapay zeka araçlarının kullanımına kısıtlama getirilmez
- ChatGPT, Bard, Co-Pilot, Stable Diffusion gibi araçlar kullanılabilir
- StackOverflow veya tutorial’lar gibi harici kodların yeniden kullanımı da mümkündür
- Teslimlerin doğruluğu tamamen öğrencinin sorumluluğundadır
- İçerik üretim araçları makul görünen ama yanlış yanıtlar üretebilir; bu tür yanıtlar puan almaz
- Geçerli lisanslara uyum da öğrencinin sorumluluğundadır
- Genel akademik dürüstlük politikaları uygulanır
- Başka öğrencilerin çözümleri kopyalanmamalı veya birlikte yazılmış çözümler alınmamalıdır
- Başka öğrencilerin çözümleri görülmemeli; kendi çözümleri başkasına verilmemeli veya başka öğrencilerin görebileceği bir yere konmamalıdır
- Çözümleri herkese açık GitHub’a koymak da izinli değildir
- Lab’lerde diğer öğrencilerle iş birliği yapılabilir, ancak okuma quiz’leri, ödevler ve sınavlarda iş birliği yapılamaz
- Kopya çekmenin asgari yaptırımı ilgili tüm ödevden 0 puan almaktır; üniversite süreçlerine göre ek disiplin cezaları uygulanabilir
- Derste öğrenci ödevlerini analiz eden akademik araştırmalar da yürütülür
- Katılmamak notu veya CMU akademik geçmişini etkilemez
- Araştırma verilerinde öğrenci notları yer almaz
- Analiz, ders bittikten ve nihai notlar teslim edildikten sonra kimliksizleştirilmiş ve toplulaştırılmış biçimde yapılır
1 yorum
Hacker News yorumları
Materyal kesinlikle pratik. Kafka, Docker, Kubernetes, Jenkins sektör standardı araçların hepsi ve MLOps’a odaklanması da ferahlatıcı
Sadece model yapmakta kalmayıp makine öğrenmesi ile gerçek operasyon sistemleri arasındaki boşluğu ele alan bir ders olması iyi. Açıklanabilirlik, adalet ve izlemeyi de kapsaması hoşuma gidiyor. Ancak uygulamalara bakınca, orta seviye yazılım mühendislerinin ya da hevesli yeni başlayanların öğreticilerle öğrenebileceği çok şey var gibi görünüyor. Git, Flask, konteyner orkestrasyonu faydalı ama üretim ortamını zaten deneyimlemiş biri için epey temel. Dağıtık eğitimde ağ optimizasyonu ya da büyük ölçekli çıkarım operasyonları gibi daha derin konulara daha az giriliyor gibi; bunların grup projesinde ortaya çıkıp çıkmadığını merak ediyorum. Jenkins yaygın kullanılıyor ama CI/CD için GitHub Actions veya ArgoCD gibi daha modern araçları da tanıtmak daha iyi olmaz mı diye düşünüyorum. Kubernetes de şart, ama uç dağıtım veya sunucusuz sistemler için alternatif ve tamamlayıcı araçları da kapsasa daha geleceğe dönük olabilir
Jenkins ile diğer CI/CD çerçeveleri arasında kavramsal olarak büyük bir fark yoksa, popüler olanlardan birini seçip kullanırsın; burada da gerçekten öyle yapılmış gibi görünüyor
20 yıl önce Java ile veritabanı yaparak öğrenirdik ve o zaman da “bir gün kullanımdan kalkacak gibi duran araçlar” kullanırdık. Sadece yeni başlangıç noktası değişmiş oldu
Uygulamalara göz gezdirdim, ilginç görünüyor. LLM deneyimi çok olmayan bir full-stack geliştirici olmama rağmen Git, Flask, Kafka, Kubernetes gibi yarısına zaten aşinayım; diğer yarısı da sadece kod gibi görünüyor
Makine öğrenmesi denince akla gelen karmaşık matematik neredeyse yok. O hâlde MLOps, doktora derecesi olmayan sıradan geliştiricilerin de pratikte erişmesinin zor olmadığı bir alan mı, merak ediyorum
Örneğin simülasyonla büyük miktarda sentetik veri üretmek istiyorsan, önyargısız veri kümesi oluşturmanın kendisinden çok toplu işleme, kodlama formatları, veri yükleme gibi sorunlarla daha fazla ilgilenebilirsin. Veriyi kitle kaynaklı toplaman ve örneklemen gerekiyorsa, rezervuar örnekleme teorisinden ziyade bunu çevrimiçi hızlı işleyen, maliyet ve hesaplamayı verimli kullanan şekilde uygulamak çoğu zaman daha önemlidir
Çoğu şirkette makine öğrenmesi mühendisi, yazılımı ve makine öğrenmesinin bir kısmını anlayan mühendistir; iyi durumda ikisini de iyi bilir, kötü durumda ikisini de bilmez
Bu ders veri kalitesini neredeyse hiç ele almıyor ve ancak 16. bölümde geliyor gibi. Yazarların endüstri deneyiminin ne kadar olduğunu merak ediyorum
Gerçekte zamanın %90’ı veri kalitesi ve veri temizliğine gider
Örneğin benim makine öğrenmesi işlerimin neredeyse tamamı mühendislik simülasyonu regresyonu ve vekil model geliştirme bağlamında; bu yüzden veri kalitesi ya da temizlik neredeyse hiç sorun olmuyor. İşin çoğu veri kümesi üretimi ile model seçimi, eğitimi ve dağıtımı tarafında. İşten işe değişir
Veri boru hattı kaynak üretimi, dönüşüm ve ön işleme aşamalarında katılaşmadan önce bunu kurarsanız, ileride pek çok baş ağrısını azaltabilirsiniz
Öğrenci olmayanların da birlikte takip edebileceği bir yer olup olmadığını merak ediyorum
Herkes kayıt olabiliyor mu, yoksa ülkedeki en üst düzey bilgisayar bilimi programlarından birine kabul edilmek mi gerekiyor, merak ediyorum
İyi görünüyor. LLM Systems dersi de aynı şekilde
Makine öğrenmesi küme altyapısı kurulumuna dair literatür veya ders bilen var mı merak ediyorum. Özellikle depolama altyapısını ölçeklendirme, ağ ve zamanlama yaklaşımlarıyla ilgileniyorum
Depolama, model veya veri saklama içinse S3 gibi nesne depolama ya da EFS, Lustre gibi paylaşımlı ağ dosya sistemleri kullanılabilir. Büyük GPU ağları konusunda kesin bir kaynak pek bilmiyorum. Zamanlama artık fiilen çözülmüş bir probleme yakın; her şey çalışır. Periyodik olarak Docker imajı tabanlı işler çalıştıran kendi koordinatörünüzü yazabilir, mesaj kuyruğu tabanlı bir metadata ve tetikleme sistemi eklerseniz bunu epey hızlı kurabilirsiniz. Airflow veya büyük işler için AWS Batch de olur. Atlanmış olabilecek şey model sunumu. Özellikle öneri sistemlerinde zor ve gecikmeye duyarlı; gecikme sıçramalarına ve trafik artışlarına karşı kırılgan. İyi yazılmış Python kodu bile sınırlara oldukça çabuk dayanabilir
Bu dersin yayımlanmasına sevindim. Christian insan olarak da harika, işleri de iyi. Bu dersin ve kitabın erken hâlini bir ölçüde bildiğim için güçlü şekilde tavsiye edebilirim
Çeşitli ölçeklerde makine öğrenmesi platformları ve sistemleri üzerinde 9,5 yıl çalıştım; materyal iyi görünüyor
Dersin zorluğunu hafife alıyor olabilirim ama giriş dersi gibi geliyor. Model açıklanabilirlik araçlarına kadar çoğu şey oldukça sezgisel görünüyor
Yine de çoğu kullanım senaryosu için sektör standardı araçları kullanmasını iyi buluyorum