Azure Machine Learning kullanarak Python modelleri için MLOps

Azure Blob Storage
Azure Container Registry
Azure DevOps
Azure Machine Learning
Azure Pipelines

Bu başvuru mimarisi, Azure DevOps ve Azure Machine Learning kullanarak yapay zeka uygulaması için sürekli tümleştirme (CI), sürekli teslim (CD) ve yeniden eğitme işlem hattı uygulama adımlarını gösterir. Çözüm, scikit-learn diyabet veri kümesini temel alır, ancak tüm yapay zeka senaryolarına ve Jenkins veya Travis gibi diğer popüler derleme sistemlerine kolayca uyarlanabilir.

Bu mimari için bir başvuru uygulaması GitHub'da kullanılabilir.

Mimari

Diagram of the Machine Learning DevOps architecture.

Bu mimarinin bir Visio dosyasını indirin.

İş akışı

Bu mimari aşağıdaki hizmetlerden oluşur:

Azure Pipelines. Bu derleme ve test sistemi Azure DevOps'a dayanır ve derleme ve yayın işlem hatları için kullanılır. Azure Pipelines bu işlem hatlarını görevler olarak adlandırılan mantıksal adımlara böler. Örneğin, Azure CLI görevi Azure kaynaklarıyla çalışmayı kolaylaştırır.

Azure Machine Learning , makine öğrenmesi modellerini büyük ölçekte eğitme, puanlama, dağıtma ve yönetmeye yönelik bir bulut hizmetidir. Bu mimaride bir çalışma alanı, işlem kaynakları, makine öğrenmesi işlem hattı ve puanlama görüntüsü oluşturmak için Azure Machine Learning Python SDK'sı kullanılır. Azure Machine Learning çalışma alanı, makine öğrenmesi modellerini deneme, eğitma ve dağıtma alanı sağlar.

Azure Machine Learning İşlem , otomatik ölçeklendirme, GPU ve CPU düğümü seçenekleriyle isteğe bağlı bir sanal makine kümesidir. Eğitim işi bu kümede yürütülür.

Azure Machine Learning işlem hatları, senaryolar arasında yeniden kullanılabilecek yeniden kullanılabilir makine öğrenmesi iş akışları sağlar. Eğitim, model değerlendirmesi, model kaydı ve görüntü oluşturma, bu kullanım örneği için bu işlem hatları içinde ayrı adımlarda gerçekleşir. İşlem hattı, derleme aşamasının sonunda yayımlanır veya güncelleştirilir ve yeni veri geldiğinde tetiklenir.

Azure Blob Depolama. Blob kapsayıcıları, puanlama hizmetindeki günlükleri depolamak için kullanılır. Bu durumda hem giriş verileri hem de model tahmini toplanır. Bazı dönüştürmelerden sonra bu günlükler modeli yeniden eğitme için kullanılabilir.

Azure Container Registry. Puanlama Python betiği Docker görüntüsü olarak paketlenmiştir ve kayıt defterinde sürümü oluşturulur.

Azure Container Instances. Yayın işlem hattının bir parçası olarak, puanlama web hizmeti görüntüsü Container Instances'a dağıtılarak QA ve hazırlama ortamı taklit edilir ve bu da kapsayıcıyı çalıştırmanın kolay, sunucusuz bir yolunu sağlar.

Azure Kubernetes Service. Puanlama web hizmeti görüntüsü Soru-Cevap ortamında kapsamlı bir şekilde test edildikten sonra, yönetilen bir Kubernetes kümesindeki üretim ortamına dağıtılır.

Azure Uygulaması Analizler. Bu izleme hizmeti, performans anomalilerini algılamak için kullanılır.

MLOps İşlem Hattı

Bu çözüm, yazılım mühendislerine zaten aşina olan araçları kullanarak yapay zeka projesinin çeşitli aşamalarının uçtan uca otomasyonunun gösterilmesini sağlar. Makine öğrenmesi sorununun odağı DevOps işlem hattında tutmak kolaydır. Çözüm, scikit-learn diyabet veri kümesini kullanır ve diyabet olasılığını tahmin etmek için bir sırt doğrusal regresyon modeli oluşturur.

Bu çözüm aşağıdaki üç işlem hattını temel alır:

  • İşlem hattı oluşturma. Kodu oluşturur ve bir test paketi çalıştırır.
  • İşlem hattı yeniden eğitiyor. Modeli bir zamanlamaya göre veya yeni veriler kullanılabilir olduğunda yeniden eğiter.
  • Yayın işlem hattı. Puanlama görüntüsünü kullanıma hazır hale getirme ve farklı ortamlarda güvenli bir şekilde yükseltme.

Sonraki bölümlerde bu işlem hatlarının her biri açıklanmaktadır.

Derleme işlem hattı oluşturma

Kod her iade edildiğinde CI işlem hattı tetiklenir. Kodu oluşturduktan ve bir test paketi çalıştırdıktan sonra güncelleştirilmiş bir Azure Machine Learning işlem hattı yayımlar. Derleme işlem hattı aşağıdaki görevlerden oluşur:

  • Kod kalitesi. Bu testler kodun ekibin standartlarına uygun olmasını sağlar.

  • Birim testi. Bu testler kodun çalıştığından, yeterli kod kapsamına sahip olduğundan ve kararlı olduğundan emin olur.

  • Veri testi. Bu testler, veri örneklerinin beklenen şemaya ve dağıtıma uygun olduğunu doğrular. Bu testi diğer kullanım örnekleri için özelleştirin ve yeni veriler geldikçe tetiklenen ayrı bir veri akıl sağlığı işlem hattı olarak çalıştırın. Örneğin, daha önce test edebilmeniz için veri testi görevini bir veri alma işlem hattına taşıyın.

Dekont

Makine öğrenmesi modellerini eğitmek için kullanılan veriler için DevOps uygulamalarını etkinleştirmeyi düşünmelisiniz, ancak bu makalenin kapsamına alınmamıştır. Veri alımı işlem hattının CI/CD mimarisi ve en iyi yöntemleri hakkında daha fazla bilgi için bkz . Veri alımı işlem hattı için DevOps.

Azure Machine Learning ve Python SDK'sı için altyapı ayarlanırken aşağıdaki tek seferlik görevler gerçekleşir:

  • Azure Machine Learning ile ilgili tüm kaynakları barındıran çalışma alanını oluşturun.
  • Eğitim işini çalıştıran işlem kaynaklarını oluşturun.
  • Güncelleştirilmiş eğitim betiğiyle makine öğrenmesi işlem hattını oluşturun.
  • Eğitim iş akışını yönetmek için makine öğrenmesi işlem hattını REST uç noktası olarak yayımlayın. Sonraki bölümde bu adım açıklanmaktadır.

İşlem hattı yeniden eğitme

Makine öğrenmesi işlem hattı, modeli zaman uyumsuz bir şekilde yeniden eğitme işlemini düzenler. Yeniden eğitme işlemi bir zamanlamaya göre veya yeni veriler kullanılabilir olduğunda, önceki adımdan yayımlanmış işlem hattı REST uç noktası çağrılarak tetiklenebilir.

Bu işlem hattı aşağıdaki adımları kapsar:

  • Modeli eğitin. Eğitim Python betiği, çalıştırma geçmişinde depolanan yeni bir model dosyası almak için Azure Machine Learning İşlem kaynağında yürütülür. Eğitim, yapay zeka projesinde işlem açısından en yoğun görev olduğundan çözüm, Azure Machine Learning İşlem'i kullanır.

  • Modeli değerlendirin. Basit bir değerlendirme testi, yeni modeli mevcut modelle karşılaştırır. Yalnızca yeni model daha iyi olduğunda yükseltilir. Aksi takdirde model kaydedilmez ve işlem hattı iptal edilir.

  • Modeli kaydedin. Yeniden eğitilen model, Azure ML Model kayıt defterine kaydedilir. Bu hizmet, kolayca yeniden üretilebilmeleri için meta veri etiketleriyle birlikte modeller için sürüm denetimi sağlar.

Yayın işlem hattı

Bu işlem hattı, puanlama görüntüsünün nasıl kullanıma hazır hale getirilip farklı ortamlarda güvenli bir şekilde tanıtılmasını gösterir. Bu işlem hattı, soru-cevap ve üretim adlı iki ortam olarak alt bölümlere ayrılır:

Soru-Cevap ortamı

  • Model Yapıtı tetikleyicisi. Yayın işlem hatları her yeni yapıt kullanılabilir olduğunda tetikleniyor. Azure Machine Learning Model Yönetimi'ne kayıtlı yeni bir model, yayın yapıtı olarak değerlendirilir. Bu durumda, her yeni model için bir işlem hattı tetiklendiğinde kaydedilir.

  • Puanlama görüntüsü oluşturun. Kayıtlı model, puanlama betiği ve Python bağımlılıkları (Conda YAML dosyası) ile birlikte bir işlemselleştirme Docker görüntüsüne paketlenir. Görüntünün sürümü, Azure Container Registry aracılığıyla otomatik olarak belirlenir.

  • Kapsayıcı Örneklerine dağıtın. Bu hizmet, üretim dışı bir ortam oluşturmak için kullanılır. Puanlama görüntüsü de burada dağıtılır ve bu çoğunlukla test için kullanılır. Container Instances, Docker görüntüsünü test etmek için kolay ve hızlı bir yol sağlar.

  • Web hizmetini test edin. Basit bir API testi, görüntünün başarıyla dağıtıldığından emin olur.

Üretim ortamı

  • Azure Kubernetes Service'te dağıtma. Bu hizmet, bir puanlama görüntüsünü üretim ortamında uygun ölçekte bir web hizmeti olarak dağıtmak için kullanılır.

  • Web hizmetini test edin. Basit bir API testi, görüntünün başarıyla dağıtıldığından emin olur.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Ölçeklenebilirlik

Azure DevOps üzerindeki bir derleme işlem hattı her büyüklükteki uygulama için ölçeklendirilebilir. Derleme işlem hatları, üzerinde çalıştıkları aracıya bağlı olarak değişen en fazla zaman aşımına sahiptir. Derlemeler şirket içinde barındırılan aracılarda (özel aracılar) sonsuza kadar çalıştırılabilir. Genel bir proje için Microsoft tarafından barındırılan aracılar için derlemeler altı saat boyunca çalıştırılabilir. Özel projeler için sınır 30 dakikadır.

Maksimum zaman aşımını kullanmak için Azure Pipelines YAML dosyanızda aşağıdaki özelliği ayarlayın:

jobs:
- job: <job_name>
  timeoutInMinutes: 0

İdeal olarak, derleme işlem hattınızın hızlı bir şekilde bitmesini ve yalnızca birim testlerini ve diğer testlerin bir alt kümesini yürütmesini sağlayın. Bu, değişiklikleri hızlı bir şekilde doğrulamanıza ve sorun çıkması durumunda bunları düzeltmenize olanak tanır. Çalışma saatleri dışında uzun süre çalışan testler çalıştırın.

Yayın işlem hattı gerçek zamanlı puanlama web hizmeti yayımlar. Soru-Cevap ortamına yönelik bir sürüm, kolaylık sağlamak için Kapsayıcı Örnekleri kullanılarak yapılır, ancak QA/hazırlama ortamında çalışan başka bir Kubernetes kümesi kullanabilirsiniz.

Üretim ortamını Azure Kubernetes Service kümenizin boyutuna göre ölçeklendirin. Kümenin boyutu, dağıtılan puanlama web hizmeti için beklediğiniz yüke bağlıdır. Gerçek zamanlı puanlama mimarileri için aktarım hızı önemli bir iyileştirme ölçümüdür. Derin olmayan öğrenme senaryolarında CPU yükü işlemek için yeterli olmalıdır; ancak derin öğrenme iş yükleri için hız bir performans sorunu olduğunda GPU'lar genellikle CPU'lara kıyasla daha iyi performans sağlar. Azure Kubernetes Service hem CPU hem de GPU düğüm türlerini destekler. Bu nedenle bu çözüm bunu görüntü dağıtımı için kullanır. Daha fazla bilgi için bkz . Derin öğrenme modellerinin dağıtımı için GPU'lar ve CPU'lar.

Azure Machine Learning İşlem kaynağınızdaki düğüm sayısına bağlı olarak yeniden eğitme işlem hattının ölçeğini artırıp küçültün ve kümeyi yönetmek için otomatik ölçeklendirme seçeneğini kullanın. Bu mimaride CPU'lar kullanılır. Derin öğrenme iş yükleri için GPU'lar daha iyi bir seçimdir ve Azure Machine Learning İşlem tarafından desteklenir.

Yönetim

  • Yeniden eğitme işini izleyin. Makine öğrenmesi işlem hatları, bir makine kümesi genelinde yeniden eğitme işlemini düzenler ve bunları izlemek için kolay bir yol sağlar. Azure Machine Learning kullanıcı arabirimini kullanın ve günlükler için işlem hatları bölümüne bakın. Alternatif olarak, bu günlükler bloba da yazılır ve Azure Depolama Gezgini gibi araçlar kullanılarak buradan okunabilir.

  • Günlüğe kaydetme. Azure Machine Learning, makine öğrenmesi yaşam döngüsünün her adımında oturum açmak için kolay bir yol sağlar. Günlükler bir blob kapsayıcısında depolanır. Daha fazla bilgi için bkz . Azure Machine Learning'de günlüğe kaydetmeyi etkinleştirme. Daha zengin izleme için Uygulama Analizler günlükleri kullanacak şekilde yapılandırın.

  • Güvenlik. Tüm gizli diziler ve kimlik bilgileri Azure Key Vault'ta depolanır ve değişken grupları kullanılarak Azure Pipelines'a erişilir.

Maliyet iyileştirme

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.

Azure DevOps, beş adede kadar kullanıcısı olan açık kaynak projeler ve küçük projeler için ücretsizdir . Daha büyük ekipler için kullanıcı sayısına göre bir plan satın alın.

İşlem, bu mimarideki en büyük maliyet sürücüsüdür ve kullanım örneğine bağlı olarak maliyeti değişir. Bu mimaride Azure Machine Learning İşlem kullanılır, ancak diğer seçenekler kullanılabilir. Azure Machine Learning, işlem kümenizi yedekleyecek sanal makinelerin maliyetine ek ücret eklemez. İşlem kümenizi en az 0 düğüme sahip olacak şekilde yapılandırın; böylece kullanılmadığında ölçeği 0 düğüme düşürebilir ve herhangi bir maliyet doğurmayabilir. İşlem maliyeti düğüm türüne, bir dizi düğüme ve sağlama moduna (düşük öncelikli veya ayrılmış) bağlıdır. Azure fiyatlandırma hesaplayıcısını kullanarak Machine Learning ve diğer hizmetlerin maliyetini tahmin edebilirsiniz.

Bu senaryoyu dağıtın

Bu başvuru mimarisini dağıtmak için GitHub deposundaki Başlarken kılavuzunda açıklanan adımları izleyin.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

  • Praneet Singh Solanki | Kıdemli Yazılım Mühendisi

Sonraki adımlar