Bir model eğitiyoruz. Bu basit bir regresyon modeli olabilir, derin öğrenme modeli olabilir veya bir başka mimari olabilir. Modeli eğittikten sonra bazı bilgileri kaydetmek lazım. Modelin kendisini, modelin eğitim sırasındaki doğrulama değerlerini yani eğitim geçmişini, eğitilen model için seçilen parametreleri (öğrenme katsayısı, optimizer, batch, epoch vs) gibi değerleri kaydetmek istiyoruz. Bunu genelde elle yapıyoruz. Ama yapay zeka kütüphaneleri tarafından sunulan kaydetme metotları sadece modelin kendisini veya ağırlıklarını kaydediyor. İsimlendirmeyi biz yapıyoruz, vgg16_512x512_v1 gibi. Bu modeli ne zaman eğittik, hangi veri setiyle eğittik, nasıl eğittik, eğitim süreci nasıl gitti gibi şeyleri daha sonraki tarihlerde elde etmek için bir sürü iş yapmamız gerekiyor. Pickle gibi modüller kullanarak yapabiliyoruz, kendimizce bir takım fonksiyonellikler katarak işin üstesinden gelebiliyoruz. Ama bütün bu işleri yapmak karmaşaya sebep olabiliyor. Bir kere modellerin versiyonlarını takip etmek çok zor. Excelde tutmak gibi çözümler kullanmak sürekli elle veri girişi gerektirdiği için bir yerden sonra yorucu olabiliyor. Kayıtlar dağınık olabiliyor çünkü ana bir dizin belirlenmediğinde, tembellik yapıp deney sonuçlarını deney kodlarının olduğu klasöre kaydedebiliyoruz. Sonra ara ki bulasın aradığın şeyi.
Bu tarz istekler ve ihtiyaçlar, bizi kendi yönetim kütüphanemizi yazmaya kadar götürebiliyor ki ben de öyle bir işe girişecektim ama sonra bu işleri yapan mutlaka vardır diyerek araştırma sürecine girdim ve MLFlow ile karşılaştım. MLFlow bu süreci profesyonel bir şekilde yapıyor. Deneyleri takip etmek için web arayüzü var. PyTorch, Tensorflow, Scikit-Learn kütüphaneleri ile entegre bir şekilde çalışabiliyor. Tensorflow'un kendi içerisinde TensorBoard mekanizması var ama benim gibi birçok kütüphane ile aynı zaman diliminde deneyler yapan birisi için MLFlow bulunmaz bir nimet.
Koca bir kütüphaneyi burada anlatacak değilim. Benim amacım karşılaştığım sorunları çözümlemek üzere giriştiğim süreçte bulduğum çözümü paylaşmak. Nasıl kurulur, nasıl kullanılır, ne gibi faydaları vardır gibi soruların hemen hepsini zaten kendi dökümantasyonunda anlatmışlar. Ancak dökümantasyonda anlatılan lokal server kurma aşamasında dikkat edin sunucuyu hangi dizinde başlatırsanız, MLFlow varsayılan olarak deney verilerini o dizine kaydediyor ve bir sonraki başlangıçta sıfırdan başlıyor çünkü kalıcı dizin belirtilmediği veriler kalıcı olmuyor. Benim gibi balıklama atlamayın diye uyarayım da :d
Bi şukuyu çok görmeyelim! MLFlow GitHub linki
Yorumlar
Yorum Gönder