MLOps Nedir? Yeni Başlayanlar için Bir Rehber
Merhabalar. Bu yazımızda MLOps nedir? sorusunun cevabını arayacağız. MLOps’un açılımı Machine Learning Operations‘dır, odak noktası ise yapay öğrenme modellerinin canlı ortamlarda çalıştırılması sürecidir. MLOps, yazılımların canlı ortamlarda dağıtılması süreçlerine odaklanan abisi DevOps’a benzerlik gösterir ancak kendine özgü farklılıklara sahiptir. Bu farklılıklara ilerleyen kısımlarda değineceğiz.
Neden MLOps gibi birşeye ihtiyaç var?
Yapay öğrenme, veri bilimi ve makine öğrenmesi gibi kavramlar son yıllarda o kadar popüler hale geldi ki döner kesme makinesini bile yapay zekalı döner kesme makinesi diye pazarlar olduk. Gençliğimizde machine learning modeli geliştiriyorum, accuracy buluyorum, derin öğrenme yapıyorum sözleri çok havalıydı; ancak şimdi bu işler biraz sıradanlaştı, artık o eski heyecanı uyandırmıyor. Bir çok şirket tarafından veya Kaggle gibi platformlarda makine öğrenmesi modelleri yarıştırılıyor. Herkes ortalıkta dolaşan veri setleri ile yüksek accuracy’ler, f1’ler, ROC’lar buluyor; master, splinter ünvanları havada uçuşuyor. Bunlar güzel hareketler, bu alana ilgi alakanın da olması güzel. Ancak burada kaçırdığımız bir nokta var. Bu harika, süper, ultra, hiper bilmem ne modellerden kaç tanesi gerçekten bir değer üretiyor ve bir işe yarıyor? Canlı ortamda çalışmıyor ve gerçek bir değer üretmiyorsa o kadar havalı sözlerin pek bir anlamı kalmayacaktır. İş verenlerin de havalı sözlerden daha çok değer yaratan, çalışan ML projelerine ihtiyacı var. Bu noktada İyi Kötü ve Çirkin’den çok sevdiğim bir sahne aklıma geldi. Çirkin, küvet içinde yıkanırken adamın biri elinde silahla geliyor ve işte yakaladım seni, şimdi elimdesin, hep bu anı bekledim, ne yapacaksın, falan fıstık konuşup duruyor. Çirkin de köpüklerin altından silahını çıkarıp adamı indiriyor ve o meşhur sözünü söylüyor:
When you have to shoot, shoot, don’t talk.
Yani bir şey yapacaksan yap, konuşup durma. Özet olarak, şöyle uçan, böyle kaçan modeller yapıyorumdan ziyade modelimizle şu kadar kazanç sağladık, bu kadar fire önledik gibi gerçek fayda sunan sonuçlarla insanların karşısına çıkmalıyız.
İşte MLOps kavramı bu noktada devreye giriyor. MLOps aslında model geliştirme aşamasını da kapsayacak şekilde modelin gerçekten değer üretir hale gelmesiyle ilgili süreci kapsayan bir disiplin. Döner kesme makinesiyle biraz komik bir örnek verdik ama bu aslında bir gerçekliği de yansıtıyor:
Model geliştirme işi emekleme aşamasını çoktan geçti. Zaman, artık ayağa kalkıp yürüme zamanı, yani modellerin canlıda çalışma, janjanlı tabiriyle AI’ları productionize etme zamanı.
Şimdi neden MLOps gibi birşeye ihtiyaç var daha iyi anlamaya çalışalım. Birkaç tane modeli manuel olarak eğitebilir, canlı ortama taşıyabilir, sonuçlarını ve iyi çalışıp çalışmadığını takip edebilirsiniz. Ancak ya bu modeller çoğalırsa? Nasıl takip edeceksiniz? Otomatize etmeniz gerekecek. Peki nasıl yapacaksınız? Veri değişirse ne olacak? Model kötüleşirse ne olacak? Daha bunun gibi bir sürü husus için tedbir almalısınız. Modeller çoğaldıkça bu kadar işi manuel olarak yapmak imkansız hale gelecek ve bu duruma çözüm bulmak için arayışa gireceksiniz. İşte aradığınız bu şeyler neler, bunlarla ilgili en iyi pratikler neler, ne tür araçları kullanabilirim, nasıl bir sistem kurabilirim gibi sorunların cevapları MLOps’ta.
ML modeli içeren projelerin başarıya ulaşma oranı oldukça düşük, [1]‘e göre %22. İnsanlar bunun nedenini araştırıyor ve tartışıyor. Herkesin yüksek başarılı modeller üretmesine rağmen projeler niçin bu kadar başarısız? Cevap aslında basit: Bir ML projesi sadece model geliştirmekten ibaret değil. Yani başarıyı etkileyen başka bir sürü şey var.
Şöyle biraz geri çekilip uzaktan bakarsanız aslında başarılı bir ML projesinde model geliştirmenin yerinin ne kadar olduğunu Şekil-2’den görebilirsiniz. Bu şekil Google MLOps makalesinden[2]. Ortadaki ML code kutucuğu dışında kalan kısımlarda MLOps sürecini işletmek gerekiyor. Bu şekil, başarılı bir ML projesi için neden bir notebooktan çok daha fazlasına ihtiyaç olduğunu görmemizi sağlıyor.
MLOps işlerinden kim sorumludur?
Tamam, güzel, anladık. MLOps’a ihtiyaç var. Ama bu işi kim yapacak? İhaleyi kime yıkacağız?
Bu işi bir kişiye yıkacak olsanız o kişi ML Engineer olur. Ancak bu şirketten şirkete, kurumdan kuruma değişebilir. Ekibi küçük, veri bilimi olgunluk ve farkındalık seviyesi düşük şirketlerde bu rol DevOps Engineer, Datascientist, Data Engineer veya bitirim bir yazılımcıya verilebilir. Aslında iş kim tarafından yapılırsa yapılsın veriden değer elde etme, yapay zeka kullanarak fark yaratma, ürün kalitesini arttırma, daha iyi hizmet verme, operasyonel verimliliği arttırma, karı arttırma vb. beklentiler var olmaya devam edecektir. Bu işlere yeni başlamış farkındalık seviyesi düşük şirketlerde Datascientist’lerin bu işe öncülük etmesi, iş kullanıcılarını ve karar vericileri yönlendirmeleri gerekebilir. Çünkü günün sonunda model deyince, yapay zeka deyince, hadi biz de yapalım deyince akla gelen ilk rol Datascientist olacaktır.
ML Engineer ne iş yapar?
ML engineer geliştirilen modellerin canlı ortamda çalışması için gerekli süreçlerden sorumlu kişidir. Bir ilan çıksaydık ML engineer için sanırım aşağıdakileri yazardık.
- Yapay zeka hizmetlerini entegre eden ve veri bilimi modellerini içeren üretim yazılımı uygulamalarını tasarlama, oluşturma, test etme ve sürdürme konusunda yetkin.
- Güvenlik, ölçeklenebilirlik ve performansla ilgili geliştirme kalıplarını uygulama konusunda deneyimli.
- Modellerin verimli bir şekilde çalışmasını sağlamak için veri mühendisleri ile birlikte çalışabilecek.
- Daha az teknik anlayışa sahip paydaşlar için karmaşık kavramları sindirilebilir bir şekilde özetleyebilecek.
- Modelleri bir hizmet olarak ortaya çıkarmak için ölçeklenebilir çözümler ve RESTful API’ler oluşturabilecek.
- İş sorunlarını çerçevelemek, yenilikçi makine öğrenimi çözümlerini analiz etmek ve önermek için veri bilimcileri ile yakın bir şekilde çalışabilecek.
- X bulutu üzerinde ölçeklenebilir makine öğrenmesi modelleri oluşturacak ve üretecek.
DevOps ile MLOps’un farklılıkları nelerdir?
DevOps, yazılımların daha hızlı, güvenli ve otomatik şekilde derlenmesi, paketlenmesi, test edilmesi ve canlı ortamlarda çalışacak şekilde dağıtımlarının yapılmasını konu alan bir disiplindir. Mikro servis mimarilerinin yaygınlaşmasıyla beraber en küçük geliştirmenin bile canlı ortama otomatik olarak yansıtılmasını sağlayan CI/CD (Continous Integration/Continous Delivery), günümüzde en yaygın DevOps pratiği olarak karşımıza çıkmaktadır. MLOps da aslında hemen hemen aynı işi yapmaya çalışır. Ancak DevOps’tan farklı bazı yönleri vardır. Bunlar;
- Farklılıkların en temelinde modellerin sonsuza kadar aynı başarıyla çalışamaması vardır. Veri değiştikçe model gerçeği temsil etmekten uzaklaşacaktır. Bu yüzden MLOps, DevOps’ta olan süreçlere ilave olarak canlı ortamda çalışan modeli takip etmek zorundadır.
- Bir önceki maddeyle ilgili olarak; modeller zaman zaman yeniden eğitilmek zorundadır. Bunun ne zaman olduğunun algılanması ve otomatik sürece dahil edilmesi gerekir.
- Yeni eğitilen modellerin öncekilerden iyi mi, kötü mü olduğu karşılaştırılabilmelidir.
- Model geliştirme ve canlı ortam arasındaki dil ve framework gibi farklılıklarla ilgilenmek gerekir. Örneğin Python ile geliştirilen modellerin Java web sunucusu üzerinden sunulması.
- Sadece kodların sürümü değil, modellerin de sürümleri, hatta modellerin eğitildiği verilerin sürümleri de tutulmalıdır.
- Model geliştirirken kullanılan veri hazırlık sürecine benzer şekilde canlı ortamda çalışan modele gönderilecek tahmin verisinin de hazırlığı gerekmektedir. Aksi halde model veriyi anlamayacaktır.
- Geliştirme ekiplerinde ağırlıklı olarak model geliştiren veri bilimciler bulunur. Veri bilimci bir yazılım geliştiricisi kadar yazılım mühendisliği bilmeyebilir. DevOps’un kullanıma sunduğu yazılımlar bu konuda daha yetenekli geliştiriciler tarafından yazılır.
- Yazılım geliştirme ve dağıtımı, model geliştime ve dağıtımına göre daha deterministiktir. Modeller çok daha hassastır, altta yatan gerçekliğe (underground truth) çok duyarlıdır.
Drift nedir?
DevOps ve MLOps’un farklılıklarına değindikten sonra burada en temel farklılığı ayrı bir başlık altında değerlendirelim. ML modelleri yazılımlara göre dağıltıldıktan sonra daha fazla bakım ve izlemeye ihtiyaç duyarlar. Bunun da en temel sebebi “drift” tir. MLOps dünyasına özgü bu kavram modellerin performansıyla ilgilidir. Model zamanla düşük performans sergileyebilir ve tahmin isabeti düşebilir. Bu duruma drift denir. Özetle drift, modelin gerçeği temsil etmekten uzaklaşmasıdır. Drift’in iki çeşidi vardır.
Consept drift: Kullandığınız girdi (features) ile hedef değişken arasındaki ilişkinin farklılaşması. Örneğin siz model eğitirken elinizdeki veriler doğrusal bir ilişki gösterirken veri çoğaldıkça bu ilişkinin gerçekten doğrusal olmadığının ortaya çıkması.
Data drift: Modeli eğittiniz verinin üretim mekanizmasının değişmesinden dolayı verinin değişmesi ve dolayısıyla model başarısının düşmesi durumudur. Pandemi sürecindeki tüketici davranışları normale göre değişmiş olabilir, sensör verisi aldığınız cihazda bazı ayarlar yapılmış olabilir vb.
MLOps’un görseli nasıl birşey?
Birçok farklı görsel olmakla birlikte en yaygın olanı ve MLOps’u DevOps üzerinden açıklamaya çalışanı aşağıda Şekil-3’tedir.
Şekil-3’deki kavramlar soldan sağa doğru bize geliştirmeden üretime uzanan safhaları; oklar ve daireler ise bu sürecin devamlı işlemek zorunda olduğunu gösteriyor.
MLOps Olgunluk Seviyeleri (Maturity Levels) nelerdir?
Google[2] DevOps’tan farklı olarak MLOps ile ilgili CI/CD’ye bir de CT eklemiştir. CI: Continous Integration, CD: Continous Delivery CT: Continous Training. ML sisteminin otomasyon derecesine göre de üç olgunluk seviyesi tanımlamışlar. Bunlar;
1. MLOps level 0: Manual process
Bu seviyede otomasyon hiç yok. Ekipte sağlam veri bilimciler bulunabilir, ancak makine öğrenmesi modellerini oluşturma ve dağıtma süreçleri tamamen manueldir. Bu, temel olgunluk düzeyi veya 0 (sıfır) düzeyi olarak kabul edilir.
Öne çıkan özellikleri:
- Veri bilimci, modeli manuel olarak teslim eder.
- Statik çevrimdışı veri seti kullanımı var, manuel veri toplama yapılıyor.
- Manuel model dağıtımı var veya bazen de script ile otomatikleştirilmeye çalışılır.
- Sık sık yeni sürüm yoktur.
- CI/CD yoktur.
- Sadece tahmin hizmeti vardır.
- Performans izleme ve test yoktur.
2. MLOps level 1: ML pipeline automation
Seviye 1’in amacı, ML pipeline’ı otomatikleştirerek modelin sürekli eğitimini gerçekleştirmektir.
- Veri bilimci yanlız çalışmaz veri ve yazılım mühendisleriyle iş birliği içindedir. Model denemeleri daha hızlı ve organizedir.
- Veri toplamak için bir otomasyon sistemi vardır. Kurum/şirket kaynaklarından veri erişimi ile ilgili yöntemler belirlenmiştir, erişimler tanımlanmıştır.
- Model geliştirme aşaması da otomasyona dahil olmuştur. Herşey notebook’lar üzerinde dönmüyordur.
- Canlıda çalışan modeller de otomasyondadır ve otomatik olarak eğitilir.
- Seviye 0’da, eğitilmiş bir modeli canlı ortama dağıtırsınız. Seviye 1’de tamamen pipeline dağıtılır.
3. MLOps level 2: CI/ CD pipeline automation
Canlı ortamda çalışan pipelineların hızlı ve güvenilir bir şekilde güncellenmesi için tam otomatik bir CI/CD sistemine ihtiyaç vardır. Bu otomatikleştirilmiş CI/CD sistemi, veri bilimcilerin özellik mühendisliği, model mimarisi ve hiper parametrelerle ilgili yeni fikirlerini hızla keşfetmesine olanak tanır. Bu fikirleri uygulayabilir ve yeni pipeline bileşenlerini otomatik olarak oluşturabilir, test edebilir ve canlı ortama dağıtabilirler. Yani bu seviye artık tam otomasyon her şeyin en ideal haliyle çalıştığı bir seviye olarak karşımıza çıkar.
MLOps için hangi araçlar var?
MLOps bizzat bir yazılım veya araç değil, elle tutulmaz ancak MLOps işlerini kolaylaştırmak için bazı araçlar mevcuttur. Aslına bakarsanız DevOps için kullanılan araçlar aynı zamanda MLOps için de kullanılabilir. Sadece MLOps’a özgü olanları listelemek gerekirse[3];
MLOps hangi güçlükleri çözmeye çalışır?
Şimdiye kadar MLOps’un DevOps’un ML dünyasındaki kardeşi olduğundan ve bazı farklılıkları olduğundan bahsettik. Peki biraz daha detaylı oarak MLOps ne tür güçlüklerin üstesinden geliyor ondan bahsedelim. Bu güçlükleri biraz da yukarıda bahsettiğimiz araçlar yardımıyla çözmeye çalışıyor, Mlflow özelinde bahsedelim.
- Kendi bilgisayarımda canavar gibi modeller yaratıyorum ama 2 ay önce ne yaptıydım ben? Bir şirkette bir veri bilimci tek başına 3-4 ay içinde bile farklı bir çok model geliştirebilir. Sorarsanız bunlar nerede diye: Laptop içinde biryerde işte 🙂
- 5 ay önce çalıştığınız projeye geri döndünüz. Zamanında ne güzel çalışan kodlarınız şimdi çalışmıyor. O zaman Python 3.5 kullanıyordunuz, tensorflow 1X vardı; şimdi hepsini değiştirdiniz. Ne olacak? Sadece çalışmalar değil ortam bilgileri de dondurulup gerektiğinde aynı ortam kulllabılacak şekilde saklanmalıdır.
- Paketleme ve model dağıtma konusunda standart bir yöntem belirlemezseniz herkes yoğurdunu kafasına göre yer.
- Ekipte şimdiye kadar bir çok veri bilimci onlarca yüzlerce model üretti. Bunlar nerede? Herkesin bilgisayarına mı bakacaksınız. Bunun için modellerin düzgünce istifleneceği merkezi bir depolama sistemine ihtiyaç var.
- Otomasyon ihtiyacı hiç şüphesiz olacaktır. MLOps/DevOps araçları size bu konuda yardmcı olur.
- Bu model ne için yapılmıştı? İş problemi neydi? Kim ve ne zaman yapmıştı? Hiper parametreler neydi? Kodlar neydi? Performans metriği neydi? Açıklaması vs. var mı? şeklinde bir ton sorun karşınıza çıkabilir. Tarihçe tutmalısınız. Projenin ortasında ekipten birileri değişti? Yeni gelen bu bilgileri nereden öğrenecek? Ekip lideri gerektiğinde nereden öğrenecek?
- Modeli Spark ile mi geliştirmiştik? Java ile mi sunacaktık? Telefonda da mı çalışacaktı? Tek bir araç, tüm proje hayat döngüsünü karşılamıyor.
Mlflow açık kaynak kodlu ve güçlü bir topluluğa sahip bir MLOps aracı. Ekip olarak veya bireysel kullanabilirsiniz. Özellikle geliştirilen modellerin otomatik kaydedilmesi, modellerin karşılaştırılabilmesi, kayıt edilerek istenen modelin sunulması çok güzel özelliklerinden. Daha fazla bilgi için sitesini ziyaret edebilirsiniz.
MLOps Öğrenmek için Kaynaklar
Son olarak sizlere tavsiye edebileceğimiz MLOps kaynaklarıyla bitirelim.
Online Eğitimler
Tamamen Türkçe ve özgün içeriklerle hazırlanmış eğitim, bu konuda bir adım önde olmak ve fark yaratmak isteyenler için ideal.
Bu alanda çok popüler bir isim olan Andrew NG de artık modellerin canlı ortamda çalışması gerektiğinin önemini vurgularcasına bir eğitim serisi hazırlamış.
Video Kaynakları
MLOps Community Kanalı
Deployment of Machine Learning Models
Testing and Monitoring Machine Learning Model Deployments
Kitaplar
Practical MLOps: Operationalizing Machine Learning Models
Introducing MLOps: How to Scale Machine Learning in the Enterprise
Engineering MLOps: Rapidly build, test, and manage production-ready machine learning life cycles at scale
Machine Learning Design Patterns: Solutions to Common Challenges in Data Preparation, Model Building, and MLOps
Blog Yazıları/Siteler
Introduction to MLOps
MLOps.community
What is MLOps?
https://ml-ops.org/
MLOps: What It Is, Why It Matters, and How to Implement It
Başka bir yazıda görüşmek dileğiyle hoşçakalın…
Kaynaklar:
- https://info.deeplearning.ai/the-batch-companies-slipping-on-ai-goals-self-training-for-better-vision-muppets-and-models-china-vs-us-only-the-best-examples-proliferating-patents
- https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning
- https://medium.com/illumination/introduction-to-mlops-f877ccf10db1
- https://www.phdata.io/blog/mlops-vs-devops-whats-the-difference/
- Kapak görseli: Lenny Kuhne on Unsplash
Türkçe de çok az bulunan MLOps yazılarından.. hem içerik hem de neden MLOps sorusuna cevabı anlamında zengin. Hiç yorum yapılmaması umarım hiç okunmadığına işaret değildir bu emeğe yazık olur. Coursera’da buna benzer bir içerik takip etmiştim. En az o kadar kaliteli bir yazı olmuş. Elinize sağlık teşekkür ederim.
Hızlı bir başlangıç için gereken herşey yazıda mevcut. Özenerek, tekrara kaçmadan ve etraflıca düşünülerek yazılmış bir makale. Çok teşekkürler.
Elinize sağlık, çok güzel ve anlaşılır. Seviye 1 ileseviye 2 arasındaki farklar biraz daha (örnek vb.) ile açıklanırsa daha iyi olabilirdi, yeni başlayanlar için aradaki farklı anlamak zor.