Share via


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

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:

  1. Azure Cloud Shell'i başlatın.

    Bahşiş

    Cloud Shell'i ilk kez başlattığınızda, Cloud Shell için bir depolama hesabı oluşturmanız istenir.

  2. İstenirse Cloud Shell'de kullanılan ortam olarak Bash'i seçin. Üst gezinti çubuğundaki açılan listede ortamları da değiştirebilirsiniz

    Screenshot of the cloud shell environment dropdown.

  3. 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."
    
  4. Düzenlenen komutlarınızı Azure Shell'e kopyalayın ve çalıştırın (Ctrl + Shift + v).

  5. 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>"
    }
    
  6. 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.

  7. Hizmet sorumluları oluşturulduktan sonra Cloud Shell'i kapatın.

Azure DevOps’u ayarlama

  1. Azure DevOps'a gidin.

  2. Yeni proje oluştur'u seçin (Bu öğretici için projeyi mlopsv2 adlandırın).

    Screenshot of ADO Project.

  3. Proje Ayarlar altındaki projede (proje sayfasının sol alt kısmında) Hizmet Bağlan ions'ı seçin.

  4. Hizmet Bağlan Oluştur'u seçin.

    Screenshot of ADO New Service connection button.

  5. 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
  6. Hizmet bağlantısını Azure-ARM-Prod olarak adlandırın.

  7. 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

  1. Azure DevOps'ta oluşturduğunuz projeyi açma

  2. Depolar bölümünü açın ve Depoyu İçeri Aktar'ı seçin

    Screenshot of Azure DevOps import repo first time.

  3. URL'yi Kopyala alanına girin https://github.com/Azure/mlops-v2-ado-demo . Sayfanın en altında içeri aktar'ı seçin

    Screenshot of Azure DevOps import MLOps demo repo.

  4. Sol gezinti bölmesinin alt kısmındaki Proje ayarlarını açma

  5. Depolar bölümünde Depolar'ı seçin. Önceki adımda oluşturduğunuz depoyu seçin Güvenlik sekmesini seçin

  6. 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. Screenshot of Azure DevOps permissions.

  7. 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

    Screenshot of Pipeline security.

  8. 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

    Screenshot of Add security.

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

  1. deponuza mlops-v2-ado-demogidin ve config-infra-prod.yml dosyasını seçin.

    Önemli

    Deponun ana dalını seçtiğinizden emin olun.

    Screenshot of Repo in ADO.

    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.

  2. bu değerleri işlem hattına almak için İşleme ve gönderme kodu'nu seçin.

  3. İşlem Hatları bölümüne gidin

    Screenshot of ADO Pipelines.

  4. İşlem Hattı Oluştur'u seçin.

  5. Azure Repos Git'i seçin.

    Screenshot of ADO Where's your code.

  6. Önceki bölümden kopyaladığınız depoyu seçin mlops-v2-ado-demo

  7. Mevcut Azure Pipelines YAML dosyasını seçin

    Screenshot of Azure DevOps Pipeline page on configure step.

  8. Dalını main ve ardından mlops/devops-pipelines/cli-ado-deploy-infra.ymlDevam'ı seçin.

  9. İş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.
  10. Şimdi MLOps projenizin altyapısı dağıtıldı. Screenshot of ADO Infra Pipeline screen.

    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

  1. ADO işlem hatlarına gitme

    Screenshot of ADO Pipelines.

  2. Yeni İşlem Hattı’nı seçin.

    Screenshot of ADO New Pipeline button.

  3. Azure Repos Git'i seçin.

    Screenshot of ADO Where's your code.

  4. Önceki bölümden kopyaladığınız depoyu seçin mlopsv2

  5. Mevcut Azure Pipelines YAML dosyasını seçin

    Screenshot of ADO Pipeline page on configure step.

  6. Dal olarak seçin main ve ardından /mlops/devops-pipelines/deploy-model-training-pipeline.ymlDevam'ı seçin.

  7. İş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

  1. ADO işlem hatlarına gitme

    Screenshot of ADO Pipelines.

  2. Yeni İşlem Hattı’nı seçin.

    Screenshot of ADO New Pipeline button for endpoint.

  3. Azure Repos Git'i seçin.

    Screenshot of ADO Where's your code.

  4. Önceki bölümden kopyaladığınız depoyu seçin mlopsv2

  5. Mevcut Azure Pipelines YAML dosyasını seçin

    Screenshot of Azure DevOps Pipeline page on configure step.

  6. 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.

  7. Ç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.

    Screenshot of Azure DevOps batch deploy script.

    Ö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

  8. Çalıştırma tamamlandığında aşağıdaki görüntüye benzer bir çıkış görürsünüz:

    Screenshot of ADO Pipeline batch run result page.

  9. 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

  1. İşlem hattınızı kullanmaya devam etmeyecekseniz Azure DevOps projenizi silin.
  2. Azure portalında kaynak grubunuzu ve Azure Machine Learning örneğinizi silin.

Sonraki adımlar