Azure DevOps ile MLOps'i ayarlama
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)
Azure Machine Learning, makine öğrenmesi yaşam döngüsünü otomatikleştirmek için Azure DevOps işlem hattıyla tümleştirmenize olanak tanır. Otomatikleştirebileceğiniz işlemlerden bazıları şunlardır:
- Azure Machine Learning altyapısının dağıtımı
- Veri hazırlama (ayıklama, dönüştürme, yükleme işlemleri)
- İsteğe bağlı ölçeği genişletme ve ölçeği artırma ile makine öğrenmesi modellerini eğitin
- Makine öğrenmesi modellerinin genel veya özel web hizmetleri olarak dağıtımı
- Dağıtılan makine öğrenmesi modellerini izleme (performans analizi gibi)
Bu makalede, NYC'de taksi ücretlerini tahmin etmek için doğrusal regresyon çalıştıran uçtan uca mlOps işlem hattı ayarlamak için Azure Machine Learning'i kullanmayı öğreneceksiniz. İşlem hattı, her biri çalışma alanına kaydedilebilen, sürümlendirilebilen ve çeşitli giriş ve çıkışlarla yeniden kullanılabilen farklı işlevler sunan bileşenlerden oluşur. Azure Machine Learning'de mlOps projesini hızlı bir şekilde ayarlamak için MLOps ve AzureMLOps (v2) çözüm hızlandırıcısı için önerilen Azure mimarisini kullanacaksınız.
Bahşiş
Herhangi bir çözüm uygulamadan önce MLOps için önerilen Azure mimarilerinden bazılarını anlamanız önerilir. Belirli bir Makine öğrenmesi projeniz için en iyi mimariyi seçmeniz gerekir.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
- Azure Machine Learning çalışma alanı.
- Yerel makinenizde çalışan Git.
- Azure DevOps'ta bir kuruluş.
- Kaynak depoları ve işlem hatlarını barındıracak Azure DevOps projesi .
- Altyapıyı çalıştırmak için Azure DevOps + Terraform kullanıyorsanız Azure DevOps için Terraform uzantısı
Dekont
Git sürüm 2.27 veya üzeri gereklidir. Git komutunu yükleme hakkında daha fazla bilgi için bkz. https://git-scm.com/downloads İşletim sisteminizi seçin
Önemli
Bu makaledeki CLI komutları Bash kullanılarak test edilmiştir. Farklı bir kabuk kullanıyorsanız hatalarla karşılaşabilirsiniz.
Azure ve DevOps ile kimlik doğrulamayı ayarlama
Azure Machine Learning ile bir MLOps projesi ayarlayabilmeniz için önce Azure DevOps için kimlik doğrulamasını ayarlamanız gerekir.
Hizmet sorumlusu oluşturma
Tanıtım kullanımı için, üzerinde çalışmak istediğiniz ortam sayısına bağlı olarak bir veya iki hizmet ilkesinin oluşturulması gerekir (Geliştirme, Üretim veya Her İkisi). Bu ilkeler aşağıdaki yöntemlerden biri kullanılarak oluşturulabilir:
-
Bahşiş
Cloud Shell'i ilk kez başlattığınızda, Cloud Shell için bir depolama hesabı oluşturmanız istenir.
İstenirse Cloud Shell'de kullanılan ortam olarak Bash'i seçin. Üst gezinti çubuğundaki açılan listede ortamları da değiştirebilirsiniz
Aşağıdaki bash komutlarını bilgisayarınıza kopyalayın ve projectName, subscriptionId ve ortam değişkenlerini projenizin değerleriyle güncelleştirin. Hem Geliştirme hem de Üretim ortamı oluşturuyorsanız her ortam için bu betiği bir kez çalıştırmanız ve her ortam için bir hizmet sorumlusu oluşturmanız gerekir. Bu komut, sağlanan abonelikteki hizmet sorumlusuna Katkıda Bulunan rolü de verir. Bu, Azure DevOps'un bu abonelikteki kaynakları düzgün bir şekilde kullanması için gereklidir.
projectName="<your project name>" roleName="Contributor" subscriptionId="<subscription Id>" environment="<Dev|Prod>" #First letter should be capitalized servicePrincipalName="Azure-ARM-${environment}-${projectName}" # Verify the ID of the active subscription echo "Using subscription ID $subscriptionID" echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionId" az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId echo "Please ensure that the information created here is properly save for future use."
Düzenlenen komutlarınızı Azure Shell'e kopyalayın ve çalıştırın (Ctrl + Shift + v).
Bu komutları çalıştırdıktan sonra hizmet sorumlusuyla ilgili bilgiler sunulur. Bu bilgileri güvenli bir konuma kaydedin; tanıtımda daha sonra Azure DevOps'yi yapılandırmak için kullanılacaktır.
{ "appId": "<application id>", "displayName": "Azure-ARM-dev-Sample_Project_Name", "password": "<password>", "tenant": "<tenant id>" }
Geliştirme ve Üretim ortamları için hizmet sorumluları oluşturuyorsanız 3. Adımı yineleyin. Bu tanıtım için, prod olan tek bir ortam oluşturacağız.
Hizmet sorumluları oluşturulduktan sonra Cloud Shell'i kapatın.
Azure DevOps’u ayarlama
Yeni proje oluştur'u seçin (Bu öğretici için projeyi
mlopsv2
adlandırın).Proje Ayarlar altındaki projede (proje sayfasının sol alt kısmında) Hizmet Bağlan ions'ı seçin.
Hizmet Bağlan Oluştur'u seçin.
Azure Resource Manager'ı seçin, İleri'yi seçin, Hizmet sorumlusu (el ile) seçeneğini belirleyin, İleri'yi seçin ve Kapsam Düzeyi Aboneliği'ni seçin.
- Abonelik Adı - Hizmet sorumlunuzun depolandığı aboneliğin adını kullanın.
- Abonelik Kimliği - 1. Adım girişinde abonelik kimliği olarak kullandığınızı kullanın
subscriptionId
- Hizmet Sorumlusu Kimliği - 1. Adım çıkışını Hizmet Sorumlusu Kimliği olarak kullanın
appId
- Hizmet sorumlusu anahtarı - 1. Adım çıkışını Hizmet Sorumlusu Anahtarı olarak kullanın
password
- Kiracı Kimliği - Kiracı Kimliği olarak 1. Adımdan çıkışını kullanın
tenant
Hizmet bağlantısını Azure-ARM-Prod olarak adlandırın.
Tüm işlem hatlarına erişim izni ver'i ve ardından Doğrula ve Kaydet'i seçin.
Azure DevOps kurulumu başarıyla tamamlandı.
Azure DevOps ile kaynak depo ayarlama
Azure DevOps'ta oluşturduğunuz projeyi açma
Depolar bölümünü açın ve Depoyu İçeri Aktar'ı seçin
URL'yi Kopyala alanına girin https://github.com/Azure/mlops-v2-ado-demo . Sayfanın en altında içeri aktar'ı seçin
Sol gezinti bölmesinin alt kısmındaki Proje ayarlarını açma
Depolar bölümünde Depolar'ı seçin. Önceki adımda oluşturduğunuz depoyu seçin Güvenlik sekmesini seçin
Kullanıcı izinleri bölümünde mlopsv2 Derleme Hizmeti kullanıcısını seçin. İzin Katkıda Bulunma iznini İzin Ver ve Dal oluştur iznini İzin Ver olarak değiştirin.
Sol gezinti bölmesinde İşlem Hatları bölümünü açın ve İşlem Hattı Oluştur düğmesinin yanındaki 3 dikey noktayı seçin. Güvenliği Yönet'i seçin
Kullanıcılar bölümünde projeniz için mlopsv2 Derleme Hizmeti hesabını seçin. Derleme işlem hattını düzenleme iznini İzin Ver olarak değiştirin
Dekont
Bu işlem önkoşul bölümünü tamamlar ve çözüm hızlandırıcısının dağıtımı uygun şekilde gerçekleşebilir.
Azure DevOps aracılığıyla altyapı dağıtma
Bu adım, eğitim işlem hattını önceki adımlarda oluşturulan Azure Machine Learning çalışma alanına dağıtır.
Bahşiş
MLOps v2 depoyu kullanıma alıp altyapıyı dağıtmadan önce çözüm hızlandırıcısının Mimari Desenlerini anladığınızdan emin olun. Örneklerde klasik ML proje türünü kullanacaksınız.
Azure altyapı işlem hattını çalıştırma
deponuza
mlops-v2-ado-demo
gidin ve config-infra-prod.yml dosyasını seçin.Önemli
Deponun ana dalını seçtiğinizden emin olun.
Bu yapılandırma dosyası benzersiz olduğundan emin olmak için ad alanını ve sonek değerlerini yapıtların adlarını kullanır. Yapılandırmadaki aşağıdaki bölümü istediğiniz gibi güncelleştirin.
namespace: [5 max random new letters] postfix: [4 max random new digits] location: eastus
Dekont
CV veya NLP gibi bir Derin Öğrenme iş yükü çalıştırıyorsanız GPU işleminizin dağıtım bölgenizde kullanılabilir olduğundan emin olun.
bu değerleri işlem hattına almak için İşleme ve gönderme kodu'nu seçin.
İşlem Hatları bölümüne gidin
İşlem Hattı Oluştur'u seçin.
Azure Repos Git'i seçin.
Önceki bölümden kopyaladığınız depoyu seçin
mlops-v2-ado-demo
Mevcut Azure Pipelines YAML dosyasını seçin
Dalını
main
ve ardındanmlops/devops-pipelines/cli-ado-deploy-infra.yml
Devam'ı seçin.İşlem hattını çalıştırın; tamamlanması birkaç dakika sürer. İşlem hattı aşağıdaki yapıtları oluşturmalıdır:
- Depolama Hesabı, Kapsayıcı Kayıt Defteri, Uygulama Analizler, Keyvault ve Azure Machine Learning Çalışma Alanı gibi Çalışma Alanınız için Kaynak Grubu.
- Çalışma alanında bir işlem kümesi de oluşturulur.
Şimdi MLOps projenizin altyapısı dağıtıldı.
Dekont
Mevcut depo gerekli konuma taşınamıyor ve yeniden kullanılamıyor uyarıları yoksayılabilir.
Örnek Eğitim ve Dağıtım Senaryosu
Çözüm hızlandırıcısı, NYC'de taksi ücretlerini tahmin etmek için doğrusal regresyon çalıştıran örnek bir uçtan uca makine öğrenmesi işlem hattı için kod ve veriler içerir. İşlem hattı, her biri çalışma alanına kaydedilebilen, sürümlendirilebilen ve çeşitli giriş ve çıkışlarla yeniden kullanılabilen farklı işlevler sunan bileşenlerden oluşur. Görüntü İşleme ve NLP senaryoları için örnek işlem hatlarının ve iş akışlarının farklı adımları ve dağıtım adımları olacaktır.
Bu eğitim işlem hattı aşağıdaki adımları içerir:
Verileri Hazırlama
- Bu bileşen birden çok taksi veri kümesini (sarı ve yeşil) alır, verileri birleştirir/filtreler ve tren/değer ve değerlendirme veri kümelerini hazırlar.
- Giriş: ./data/ altındaki yerel veriler (birden çok .csv dosyası)
- Çıktı: Tek hazırlanmış veri kümesi (.csv) ve eğitme/değer/test veri kümeleri.
Modeli Eğit
- Bu bileşen, eğitim kümesiyle bir Doğrusal Regresör eğiter.
- Giriş: Eğitim veri kümesi
- Çıkış: Eğitilmiş model (turşu biçimi)
Modeli Değerlendir
- Bu bileşen, test kümesindeki taksi ücretlerini tahmin etmek için eğitilen modeli kullanır.
- Giriş: ML modeli ve Test veri kümesi
- Çıkış: Modelin performansı ve dağıtılsa da dağıtılmasa da bir dağıtım bayrağı.
- Bu bileşen, modelin performansını yeni test veri kümesindeki önceki tüm dağıtılan modellerle karşılaştırır ve modeli üretime yükseltip yükseltmemeye karar verir. Modeli üretime yükseltme işlemi, modeli AML çalışma alanına kaydederek gerçekleşir.
Modeli Kaydet
- Bu bileşen, test kümesindeki tahminlerin ne kadar doğru olduğunu temel alarak modeli puanlar.
- Giriş: Eğitilen model ve dağıtım bayrağı.
- Çıkış: Azure Machine Learning'de kayıtlı model.
Model eğitim işlem hattını dağıtma
ADO işlem hatlarına gitme
Yeni İşlem Hattı’nı seçin.
Azure Repos Git'i seçin.
Önceki bölümden kopyaladığınız depoyu seçin
mlopsv2
Mevcut Azure Pipelines YAML dosyasını seçin
Dal olarak seçin
main
ve ardından/mlops/devops-pipelines/deploy-model-training-pipeline.yml
Devam'ı seçin.İşlem hattını kaydetme ve çalıştırma
Dekont
Bu noktada altyapı yapılandırılır ve MLOps Mimarisinin Prototip Oluşturma Döngüsü dağıtılır. eğitilen modelimize üretim aşamasına geçmeye hazırsınız.
Eğitilen modeli dağıtma
Bu senaryo, eğitilmiş bir modeli dağıtmaya yönelik iki yaklaşım için önceden oluşturulmuş iş akışlarını, toplu puanlama veya gerçek zamanlı puanlama için bir uç noktaya model dağıtmayı içerir. Azure ML çalışma alanınızda modelin performansını test etmek için bu iş akışlarından birini veya ikisini birden çalıştırabilirsiniz. BU örnekte gerçek zamanlı puanlama kullanacağız.
ML modeli uç noktasını dağıtma
ADO işlem hatlarına gitme
Yeni İşlem Hattı’nı seçin.
Azure Repos Git'i seçin.
Önceki bölümden kopyaladığınız depoyu seçin
mlopsv2
Mevcut Azure Pipelines YAML dosyasını seçin
Dal olarak seçin
main
ve Yönetilen Çevrimiçi Uç Nokta'yı/mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml
ve ardından Devam'ı seçin.Çevrimiçi uç nokta adlarının benzersiz olması gerekir, bu nedenle başka bir benzersiz adla değiştirin
taxi-online-$(namespace)$(postfix)$(environment)
ve Çalıştır'ı seçin. Başarısız olmazsa varsayılan değeri değiştirmeniz gerekmez.Önemli
Çalıştırma mevcut bir çevrimiçi uç nokta adı nedeniyle başarısız olursa, daha önce açıklandığı gibi işlem hattını yeniden oluşturun ve [uç nokta-adınız]değerini [uç nokta-adınız (rastgele sayı)] olarak değiştirin
Çalıştırma tamamlandığında aşağıdaki görüntüye benzer bir çıkış görürsünüz:
Bu dağıtımı test etmek için AzureML çalışma alanınızdaki Uç Noktalar sekmesine gidin, uç noktayı seçin ve Test Sekmesi'ne tıklayın. Uç noktayı test etmek için konumundaki
/data/taxi-request.json
kopyalanmış depoda bulunan örnek giriş verilerini kullanabilirsiniz.
Kaynakları temizleme
- İşlem hattınızı kullanmaya devam etmeyecekseniz Azure DevOps projenizi silin.
- Azure portalında kaynak grubunuzu ve Azure Machine Learning örneğinizi silin.
Sonraki adımlar
- Python SDK v2'yi yükleme ve ayarlama
- Python CLI v2'yi yükleme ve ayarlama
- GitHub'da Azure MLOps (v2) çözüm hızlandırıcısı
- Machine Learning ile MLOps hakkında eğitim kursu
- Azure Machine Learning ile Azure Pipelines hakkında daha fazla bilgi edinin
- Azure Machine Learning ile GitHub Actions hakkında daha fazla bilgi edinin
- Azure'da MLOps'yi bir Saatten Kısa Sürede Dağıtma - Community MLOps V2 Accelerator videosu