Aracılığıyla paylaş


Azure Machine Learning dışında modelleri paketleme ve dağıtma (önizleme)

Model paketleri oluşturarak (önizleme) çevrimiçi hizmet için Azure Machine Learning dışında model dağıtabilirsiniz. Azure Machine Learning, bir makine öğrenmesi modelini bir hizmet platformuna dağıtmak için gereken tüm bağımlılıkları toplayan bir model paketi oluşturmanıza olanak tanır. Model paketini çalışma alanları arasında ve hatta Azure Machine Learning'in dışına taşıyabilirsiniz. Model paketleri hakkında daha fazla bilgi edinmek için bkz . Dağıtım (önizleme) için model paketleri.

Önemli

Bu özellik şu anda genel önizlemededir. Bu önizleme sürümü hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için bu sürümü önermeyiz. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir.

Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Bu makalede, bir modeli paketlemeyi ve bir Azure Uygulaması Hizmetine dağıtmayı öğreneceksiniz.

Önkoşullar

Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • 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ı. Yoksa, oluşturmak için Çalışma alanlarını yönetme makalesindeki adımları kullanın.

    Dekont

    Özel bağlantı özellikli çalışma alanları, Azure Machine Learning dışında dağıtım için paketleme modellerini desteklemez.

  • Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için sahip veya katkıda bulunan rolü ya da özel bir rol atanmalıdır. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.

Sisteminizi hazırlama

Sisteminizi hazırlamak için bu adımları izleyin.

  1. Bu makaledeki örnek, azureml-examples deposunda yer alan kod örneklerini temel alır. YAML ve diğer dosyaları kopyalamak/yapıştırmak zorunda kalmadan komutları yerel olarak çalıştırmak için önce depoyu kopyalayın ve ardından dizinleri klasöre değiştirin:

    git clone https://github.com/Azure/azureml-examples --depth 1
    cd azureml-examples/cli
    

    Bu makalede, klasör uç noktaları/online/deploy-with-packages/mlflow-model içindeki örnek kullanılır.

  2. çalışmanızı gerçekleştireceğiniz Azure Machine Learning çalışma alanına Bağlan.

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. Paketler, modelin çalışma alanınıza veya Azure Machine Learning kayıt defterine kaydedilmesini gerektirir. Bu örnekte, depoda modelin yerel bir kopyası vardır, bu nedenle modeli yalnızca çalışma alanında kayıt defterinde yayımlamanız gerekir. Dağıtmaya çalıştığınız model zaten kayıtlıysa bu adımı atlayabilirsiniz.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Azure Uygulaması Hizmetine model paketi dağıtma

Bu bölümde, daha önce kaydedilmiş MLflow modelini paketleyip Azure Uygulaması Hizmeti'ne dağıtacaksınız.

  1. Azure Machine Learning dışında bir model dağıtmak için paket belirtimi oluşturulması gerekir. Azure Machine Learning ile bağlantısı tamamen kesilmiş bir paket oluşturmak için model yapılandırmasında modu belirtin copy . modu, copy pakete paketin içindeki yapıtları kopyalamasını söyler. Aşağıdaki kod, model yapılandırması için kopyalama modunun nasıl belirtileceğini gösterir:

    Paket YAML belirtimi oluşturma:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Bahşiş

    mode özelliği için kullanarak copy model yapılandırmasını belirttiğinizde, tüm model yapıtlarının Azure Machine Learning model kayıt defterinden indirilmesi yerine oluşturulan docker görüntüsünün içine kopyalandığından emin olursunuz ve böylece Azure Machine Learning dışında gerçek taşınabilirlik sağlarsınız. Paket oluştururken tüm seçenekler hakkında tam belirtim için bkz . Paket belirtimi oluşturma.

  2. Paket işlemini başlatın.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Paket işleminin sonucu, Azure Machine Learning'deki bir ortamdır. Bu ortama sahip olmanın avantajı, her ortamın bir dış dağıtımda kullanabileceğiniz karşılık gelen bir docker görüntüsüne sahip olmasıdır. Görüntüler Azure Container Registry'de barındırılır. Aşağıdaki adımlarda, oluşturulan görüntünün adını nasıl edindiğiniz gösterilmektedir:

    1. Azure Machine Learning stüdyosu gidin.

    2. Ortamlar bölümünü seçin.

    3. Özel ortamlar sekmesini seçin.

    4. Yeni oluşturduğunuz paketin adı olan heart-classifier-mlflow-package adlı ortamı arayın.

    5. Azure kapsayıcı kayıt defteri alanındaki değeri kopyalayın.

    A screenshot showing the section where the Azure container registry image name is displayed in Azure Machine Learning studio.

  4. Şimdi bu paketi bir App Service'e dağıtın.

    1. Azure portalına gidin ve yeni bir App Service kaynağı oluşturun.

    2. Oluşturma sihirbazında, kullandığınız aboneliği ve kaynak grubunu seçin.

    3. Örnek ayrıntıları bölümünde uygulamaya bir ad verin.

    4. Yayımla için Docker kapsayıcısını seçin.

    5. İşletim Sistemi için Linux'ı seçin.

      A screenshot showing how to configure the app service to deploy the generated docker container image.

    6. Sayfanın geri kalanını gerektiği gibi yapılandırın ve İleri'yi seçin.

    7. Docker sekmesine gidin.

    8. Seçenekler için Tek Kapsayıcı'yı seçin.

    9. Görüntü Kaynağı için Azure Container Registry'yi seçin.

    10. Azure kapsayıcı kayıt defteri seçeneklerini aşağıdaki gibi yapılandırın:

      1. Kayıt Defteri için Azure Machine Learning çalışma alanıyla ilişkili Azure Container Registry'yi seçin.

      2. Görüntü için bu öğreticinin 3.(e) adımında bulduğunuz görüntüyü seçin.

      3. Etiket için en son'ı seçin.

      A screenshot showing the section Docker of the wizard, where the docker image associated with the package is indicated.

    11. Sihirbazın geri kalanını gerektiği gibi yapılandırın.

    12. Oluştur’u seçin. Model artık oluşturduğunuz App Service'te dağıtılır.

    13. Tahminleri çağırma ve alma şekliniz, kullandığınız çıkarım sunucusuna bağlıdır. Bu örnekte, yolu /scorealtında tahminler oluşturan Azure Machine Learning çıkarım sunucusunu kullandınız. Giriş biçimleri ve özellikleri hakkında daha fazla bilgi için azureml-inference-server-http paketinin ayrıntılarına bakın.

    14. İstek yükünü hazırlayın. Azure Machine Learning çıkarım sunucusuyla dağıtılan bir MLflow modelinin biçimi aşağıdaki gibidir:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Çalışıp çalışmadığını görmek için model dağıtımını test edin.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Sonraki adım