Makine öğrenimi geliştirmeyi deneyen herkes bunun ne kadar zor olduğunu anlıyor. Yazılım geliştirmedeki standart sorunların yanı sıra, makine öğrenimi (ML) geliştirme, bir dizi ek engeli de beraberinde getirir.
Veri hazırlamadan model eğitimine kadar makine öğrenimi yaşam döngüsünün her aşamasında yardımcı olacak yüzlerce açık kaynak aracı mevcuttur.
Geleneksel yazılım geliştirmeden farklı olarak, ekipler her adım için bir araç seçtiğinde, ML ile genellikle sonuçları iyileştirip iyileştirmediğini görmek için mevcut her aracı (örneğin algoritma) keşfetmek istersiniz.
Sonuç olarak, makine öğrenimi geliştiricileri yüzlerce kitaplık kullanmalı ve üretmelidir.
Makine öğrenimi algoritmaları binlerce özelleştirilebilir parametre içerir ve ister tek başınıza ister ekip halinde çalışın, bir model oluşturmak için her bir deneye hangi parametrelerin, kodun ve verilerin girdiğini belirlemek zordur.
Uygun izleme olmadan, ekipler genellikle aynı kodu tekrar işlemek için mücadele eder. İster eğitim kodunuzu üretim kullanımı için bir mühendise aktaran bir veri bilimcisi olun, ister bir sorunu teşhis etmek için önceki çalışmanıza geri dönüyor olun, makine öğrenimi iş akışının adımlarını geri almak çok önemlidir.
Kullanılması gereken çok sayıda dağıtım yöntemi ve ortamı (örneğin, REST sunumu, toplu çıkarım veya mobil uygulamalar) nedeniyle bir modeli üretime taşımak zor olabilir. Modelleri herhangi bir kitaplıktan bu araçlardan herhangi birine taşımak için ortak bir yöntem yoktur ve bu nedenle her yeni dağıtım bir risk getirir.
Bu sorunlar nedeniyle, makine öğrenimi geliştirmenin, geleneksel yazılım geliştirme kadar istikrarlı, öngörülebilir ve yaygın olarak kullanılan hale gelmesi için önemli ölçüde iyileştirilmesi gerektiği açıktır.
Makine Öğrenimi Zorlukları
- Çok sayıda farklı araç var. Veri hazırlamadan model eğitimine kadar makine öğrenimi yaşam döngüsünün her aşamasında yardımcı olacak yüzlerce yazılım çözümü mevcuttur. Ayrıca, geleneksel yazılım geliştirmeden farklı olarak, ekipler makine öğreniminde (ML) her adım için bir araç seçtiğinde, sonuçları iyileştirip iyileştirmediğini görmek için genellikle mevcut her aracı (örneğin algoritma) keşfetmek istersiniz. Sonuç olarak, makine öğrenimi geliştiricileri yüzlerce kitaplık kullanmalı ve üretmelidir.
- Deneyleri takip etmek zor. Makine öğrenimi algoritmaları binlerce özelleştirilebilir parametre içerir ve ister tek başınıza ister ekip halinde çalışın, bir model oluşturmak için her bir deneye hangi parametrelerin, kodun ve verilerin girdiğini belirlemek zordur.
- Makine öğrenimini uygulamak zordur. Kullanılması gereken çok sayıda dağıtım yöntemi ve ortamı (örneğin, REST sunumu, toplu çıkarım veya mobil uygulamalar) nedeniyle bir modeli üretime taşımak zor olabilir. Modelleri herhangi bir kitaplıktan bu araçlardan herhangi birine taşımak için ortak bir yöntem yoktur. Bu nedenle, her yeni dağıtım bir risk getirir.
Nedir ML akışı?
MLflow, makine öğrenimi yaşam döngüsü için açık kaynaklı bir platformdur. Mevcut altyapı ve makine öğrenimi algoritmalarının sistemle kolayca entegre edilmesini sağlayan birçok temel soyutlama öneren açık bir arayüz konseptine dayanmaktadır.
Bu, MLflow'u kullanmak isteyen ancak desteklenmeyen bir çerçeve kullanan bir geliştiriciyseniz, açık arabirim tasarımının bu çerçeveyi entegre etmeyi ve platformla çalışmaya başlamayı nispeten basit hale getirdiği anlamına gelir. Pratikte bu, MLflow'un herhangi bir makine öğrenme kütüphane veya dil.
Ayrıca MLflow, tekrarlanabilirliği destekler; bu, aynı eğitim veya üretim makine öğrenimi kodunun, ister bulutta, ister yerel bir iş istasyonunda veya bir not defterinde, ortamdan bağımsız olarak aynı sonuçlarla çalıştırılmasının amaçlandığı anlamına gelir.
Son olarak, MLflow ölçeklenebilirlik için tasarlanmıştır, bu nedenle küçük bir veri bilimci ekibinin yanı sıra yüzlerce makine öğrenimi uygulayıcısı olan büyük bir şirket tarafından kullanılabilir.
MLflow, herhangi bir makine öğrenimi kitaplığı, algoritma, dağıtım aracı veya dil ile uyumludur. Ayrıca aşağıdaki avantajlara sahiptir:
- Herhangi bir bulut hizmetiyle çalışacak şekilde tasarlanmıştır.
- Apache Spark ile çok büyük verilere ölçeklenir.
- MLflow, Apache Spark dahil olmak üzere çeşitli açık kaynaklı makine öğrenimi çerçeveleriyle uyumludur. TensorFlow, ve SciKit-Öğren.
Zaten kodunuz varsa, onunla MLflow kullanılabilir. Hatta çerçevenizi ve modellerinizi işletmeler arasında paylaşabilirsiniz, çünkü açık kaynak.
MLflow Bileşenleri: Nasıl çalışırlar?
MLflow, deneme, yeniden üretilebilirlik, dağıtım ve tek bir model kayıt defterini içeren ML yaşam döngüsünü yönetmek için ücretsiz ve açık kaynaklı bir platformdur. Şu anda MLflow'un dört bileşeni vardır:
1. MLflow Takibi
MLflow Tracking ile başlayacağım. MLflow, merkezi bir eğitim meta veri izleme havuzuna bağlı çeşitli temel kavramların toplanmasını destekler. İlk kavram, model performansını etkileyen kritik hiperparametreler veya konfigürasyon düğmeleri topluluğudur. MLflow'un API'lerini ve merkezi bir izleme hizmetini kullanmak, bunların hepsini koruyabilir.
Kullanıcılar ayrıca makine öğrenimi modellerinin başarısı hakkında fikir edinmek için performans verilerini kaydedebilir. Ayrıca, tekrarlanabilirlik için MLflow, kullanıcıların bir model oluşturmak için kullanılan belirli kaynak kodunun yanı sıra, Git ile sıkı bir şekilde bütünleşerek her modeli belirli bir işleme karmasına bağlamak için kullanılan belirli kaynak kodunu günlüğe kaydetmesine olanak tanır.
MLflow, eğitim, test verileri ve yeniden üretilebilirlik için modellerin kendileri de dahil olmak üzere herhangi bir rastgele dosya olan yapıtları günlüğe kaydetmek için kullanılabilir.
Bu, bir modeli henüz eğitmiş bir geliştiriciysem, onu merkezi izleme hizmetine devam ettirebilirim ve meslektaşlarımdan biri onu daha sonra yükleyebilir ve belirli bir ihtiyacı karşılamak için bu modeli eğitmeye ve denemeye veya üretmeye devam edebilir. .
Makine öğrenimi kodunuzu yürütürken ve ardından sonuçları görüntülerken izleme, parametreleri, kod sürümlerini, ölçümleri ve çıktı dosyalarını günlüğe kaydetmenize olanak tanıyan bir API'dir. Diğer dillerin yanı sıra Python, R ve Java ile yazılmıştır. Bunun üzerine uygulamalar oluşturmak için kullanılabilecek bir REST API olarak da erişilebilir.
Ana Özellikler
- Birçok geliştirici, arka uç ve yapay depolamanın diskteki bir dizini paylaştığı yerel bilgisayarlarında MLflow kullanır.
- Birçok kullanıcı, yerel bilgisayarlarında MLflow'u çalıştırmak için SQLAlchemy uyumlu bir veritabanı olan SQLite'ı da kullanır.
- MLflow ayrıca dağıtılmış mimarileri de destekler. İzleme sunucusu, arka uç deposu ve yapıt deposunun tümü bunlarda farklı sunucularda barındırılır.
- Çalıştırma bir MLflow Projesi tarafından başlatıldıysa, git commit karması kullanıldı. MLflow Python, R, Java ve REST API'leri, çalıştırılacak verileri günlüğe kaydetmek için kullanılabilir.
Daha fazla bilgi için, resmi kontrol edebilirsiniz belgeleme.
2. MLFlow Projeleri
İzleme bileşenlerini inceledikten sonra, yürütme bağlamından bağımsız olarak model eğitim oturumları için tekrarlanabilir bir paketleme yapısı olan MLflow projelerinden bahsetmek istiyorum.
İşletmeler çok çeşitli makine öğrenimi eğitim teknolojileri kullanır, ancak bu eğitim araçlarını çeşitli bağlamlarda da kullanırlar. Örneğin, eğitim kodlarını bulutta, yerel bir bilgisayarda veya bir dizüstü bilgisayarda yürütüyor olabilirler.
Bu, makine öğrenimi sonuçlarının tekrarlanmasının zor olması sorununa yol açar. Çoğu zaman, aynı aynı eğitim kodu, iki ayrı konumda yürütülmez veya aynı sonuçları vermez.
MLflow tarafından sağlanan çözüm, tüm makine öğrenimi eğitim kodunun yanı sıra sürüm kitaplığı bağımlılıklarını, ayarlarını ve eğitim ve test verilerini içeren bağımsız bir eğitim kodu proje tanımıdır.
MLflow, bir makine öğrenimi eğitim süreci için tüm gereksinimleri açık bir şekilde tanımlayarak yürütme bağlamlarında tekrarlanabilirlik sağlar. Bunu, tüm bu kitaplıkları kurarak ve kodun çalıştığı aynı sistem durumunu gerçekleştirerek gerçekleştirir.
MLflow projesi bir dizinden başka bir şey değildir. Bu isteğe bağlı yapılandırma dosyasının yanı sıra eğitim kodunu, kitaplık bağımlılık tanımını ve eğitim oturumu için gerekli olan diğer verileri içeren bir dizindir.
Bu kütüphane gereksinimleri çeşitli şekillerde tanımlanabilir. Kullanıcılar, örneğin, eğitim kodu kitaplığı gereksinimlerini listelemek için YAML biçimli bir anakonda ortam belirtimi sağlayabilir. MLflow, eğitim kodunu kapsayıcı içinde yürütür. Böyle bir durumda bir Docker konteyneri de içerebilirler.
Son olarak, MLflow, Python ve Java API'lerinin yanı sıra bu projeleri çalıştırmak için bir komut satırı arabirimine (CLI) sahiptir. Bu projeler, kullanıcının yerel sisteminde ve Databricks iş planlayıcı ve Kubernetes gibi çeşitli uzak ayarlarda çalıştırılabilir. MLflow projeleri, veri bilimi kodunu çoğunlukla standartlara dayalı olarak tekrarlanabilir ve yeniden kullanılabilir bir şekilde paketlemenize olanak tanır.
Projeler bileşeni, projeleri yönetmek için bir API'nin yanı sıra komut satırı yardımcı programlarını içerir. Bu yetenekler, makine öğrenimi süreçleri oluşturmak için projelerin birbirine zincirlenebilmesini garanti eder.
Ana Özellikler
- MLflow, Docker kapsayıcı ortamı, Conda ortamı ve sistem ortamı dahil olmak üzere proje ortamlarını destekler.
- Herhangi bir Git deposu veya yerel dizin, bir MLflow projesi olarak düşünülebilir; varsayılan olarak; herhangi bir kabuğu kullanabilirsiniz veya Python komut dosyası dizinde proje giriş noktası olarak.
- Java kitaplıkları gibi Python dışı bağımlılıklar, Docker kapsayıcıları kullanılarak yakalanabilir.
- YAML sözdiziminde bir metin dosyası olan projenin kök dizinine bir proje dosyası ekleyerek bir MLflow Projesi üzerinde daha fazla kontrol sahibi olabilirsiniz.
Daha fazla bilgi için, resmi kontrol edebilirsiniz belgeleme.
3. MLflow Modelleri
Şimdi, çok çeşitli üretim bağlamlarını destekleyen genel amaçlı bir model formatı olan MLflow modellerini tartışmak istiyorum. MLflow modellerinin nedeni artık projelerdekine oldukça benzer.
Yine, modellerin çok çeşitli araçlar kullanılarak oluşturulabileceğini, ancak eğitim ortamlarının aksine çok çeşitli durumlarda üretilebileceğini veya konuşlandırılabileceğini görüyoruz.
Bu ayarlar, Kubernetes veya Amazon SageMaker gibi gerçek zamanlı sunum araçlarının yanı sıra Spark gibi akış ve toplu puanlamaya yönelik araçları içerir. Ayrıca bazı işletmeler, modelleri önceden yapılandırılmış bir bulut örneğinde çalışan RESTful web hizmeti olarak dağıtmayı seçebilir.
Bir proje gibi bir MLflow modeli bir dizin yapısıdır. Bir yapılandırma dosyası ve bu sefer eğitim kodu yerine serileştirilmiş bir model yapıtı içerir. Aynı zamanda bir proje olarak tekrarlanabilirlik için bu bağımlılık setini de içerir. Bu sefer, bir Conda ortamı bağlamında değerlendirme bağımlılıklarını inceleyeceğiz.
Ek olarak, MLflow, bir dizi popüler çerçeveden MLflow formatında modelleri seri hale getirmek için model oluşturma araçları içerir. Son olarak, MLflow, herhangi bir MLflow modelini bir dizi hizmete bağlamak ve üretmek için dağıtımlar, API'ler ekler ve bu API'lere Python, Java, R ve bir CLI biçiminde erişilebilir.
Modeller, çıkarım sunucuları gibi aşağı akış araçları tarafından kullanılabilen ve anlaşılabilen paketleme modelleri için standart bir yapıya sahip bir bileşendir. veri tuğlaları toplu çıkarım platformu. Bu bileşen, bir modeli üretim için paketlerken saatlerce ısmarlama kod tasarrufu sağlar.
MLflow Modeli, makine öğrenimi modellerini "tatlar" olarak bilinen çeşitli biçimlerde paketlemek için bir standarttır. MLflow, çeşitli model türlerini dağıtmanıza yardımcı olacak birçok araç sağlar. Her MLflow Modeli, isteğe bağlı dosyaların yanı sıra, içinde kullanılabileceği tatların bir listesini içeren bir ML model tanımlayıcı dosyası içeren bir dizin olarak tutulur.
Ana Özellikler
- MLflow'un tüm yerleşik dağıtım araçları, modelin bir Python işlevi olarak nasıl çalıştırılacağını açıklayan bir "Python işlevi" türü gibi birden çok "standart" tat sunar.
- Her MLflow Modeli, rasgele dosyalar içeren bir dizinin yanı sıra, dizinin çok sayıda çeşidini tanımlayan dizinin kökündeki bir ML model dosyasından oluşur.
- Bir modeli depolarken, MLflow, modelin bağımlılıklarını içeren bir Conda ortam parametresi belirtmenize olanak tanır. Conda ortamı belirtilmezse, modelin tadına dayalı varsayılan bir ortam oluşturulur. Bundan sonra Conda ortamı conda.yaml içinde depolanır.
Daha fazla bilgi için, resmi kontrol edebilirsiniz belgeleme.
4. MLflow Model Kaydı
Model kayıt defteri, öğrenilmiş makine öğrenimi (ML) modelleri için bir havuzdur. Model Registry, API'lerden ve bir takım olarak çeşitli aşamalarda modelleri korumak için kullanılan web tabanlı bir uygulamadan oluşur. Model Lineage, Model Versioning, Easy Stage Transition ve Annotation, Model Registry'de bulunan özelliklerden sadece birkaçıdır.
Bir model kaydı, modellerin kendilerine ek olarak, modeli oluşturmak için kullanılan veriler ve eğitim görevleri hakkında bilgi (meta veriler) içerir. Makine öğrenimi modelleri için köken oluşturmak için bu gerekli girdileri takip etmek çok önemlidir. Bu bağlamda, bir model kayıt defteri, geleneksel yazılımlarınkine benzer şekilde çalışır. sürüm kontrolü sistemler (örn. Git, SVN) ve yapı havuzları (örn. Artifactory, PyPI).
Model Kaydı, veri bilimcilerin ve makine öğrenimi mühendislerinin diğer ekiplerle işbirliği için modellerini yayınlamalarına, test etmelerine, izlemelerine, yönetmelerine ve dağıtmalarına olanak tanıyan bir çerçevedir. Esasen, model kaydı, test aşamanızı tamamladığınızda ve bulgularınızı ekip ve paydaşlarla paylaşmaya hazır olduğunuzda kullanılır.
MLflow Model Registry, modellerinizi ve yaşam sürelerini merkezi bir konumdan yönetmek için bir API ve bir kullanıcı arabirimi sağlar. Model kökeni, model sürümü oluşturma, ek açıklamalar ve aşama geçişlerinin tümü kayıt defteri aracılığıyla kullanılabilir.
MLflow'da kayıtlı bir model, benzersiz bir ada ve meta verilere, model sürümlerine, geçiş aşamalarına ve model kökenine sahip olandır. Kayıtlı bir modelde bir veya daha fazla model sürümü bulunabilir. Yeni bir model, kayıt defterine kaydedildiğinde sürüm 1 olarak kabul edilir. Aşağıdaki sürüm, aynı ada sahip herhangi bir yeni modele eklenir.
İstediğiniz zaman herhangi bir model sürümüne bir adım atayabilirsiniz. Ancak aşamalar, hazırlama, üretim ve arşivleme gibi resmi olarak belirlenmiş MLflow aşamaları altında atanmalıdır. Bir model versiyonu bir aşamadan diğerine geçebilir.
MLflow, hem üst düzey modele hem de her belirli sürüme açıklama eklemek için işaretlemeyi kullanmanıza olanak tanır. Algoritma açıklamaları, metodoloji ve kullanılan veri kümeleri gibi diğer ilgili bilgilerin yanı sıra açıklamaları da dahil edebilirsiniz.
Ana Özellikler
- Kendi MLflow sunucunuzu barındırırken kullanıcı arabirimi veya API aracılığıyla model kayıt defterine erişmek için veritabanı destekli bir arka uç deposu kullanmanız gerekir.
- Model Kaydı'na ayrıca MLflow model çeşidi veya MLflow İstemci İzleme API arabirimi aracılığıyla erişilebilir. Örneğin, bir MLflow deneme çalıştırması sırasında veya tüm deneme çalıştırmalarınızdan sonra bir model kaydedebilirsiniz.
- Herkes modellerini MLflow kullanarak eğitmeye başlamaz. Sonuç olarak, MLflow'u kullanmadan önce bazı modelleri eğitmiş olabilirsiniz. Modelleri yeniden eğitmek yerine, saklanan modellerinizi Model Kaydı'na kaydettirmek istiyorsunuz.
Daha fazla bilgi için, resmi kontrol edebilirsiniz belgeleme.
Sonuç
MLflow, mükemmel ve sürekli büyüyen bir ML yaşam döngüsü aracıdır. Mevcut araçlarınızın ve platformlarınızın yanında kullanabilirsiniz.
Python, Java ve R dahil olmak üzere birçok programlama dilini destekler. Kullanıcı dostu tasarımı sayesinde farklı model sürümlerini hızlı bir şekilde izleyebilir, kaydedebilir ve karşılaştırabilirsiniz.
MLflow'u deneyin ve deneyiminizi bize bildirin!
Yorum bırak