Aracılığıyla paylaş


Toplu iş uç noktaları için iş ve giriş verileri oluşturma

Toplu iş uç noktaları, büyük miktarlarda veri üzerinde uzun toplu işlemler gerçekleştirmek için kullanılabilir. Bu tür veriler farklı yerlere yerleştirilebilir. Bazı toplu iş uç noktası türleri de giriş olarak değişmez parametreleri alabilir. Bu makale, bu girişlerin nasıl belirtileceğini kapsar.

Önkoşullar

Toplu iş uç noktasını başarıyla çağırmak ve iş oluşturmak için aşağıdakilere sahip olduğunuzdan emin olun:

  • Toplu iş uç noktası ve dağıtımı. Henüz bir tane yoksa bkz . Dağıtım oluşturmak için toplu iş uç noktalarındaki puanlama modellerini dağıtma.

  • Toplu uç nokta dağıtımı çalıştırma izinleri. Dağıtımı çalıştırmak için AzureML Veri Bilimci, Katkıda Bulunan ve Sahip rolleri kullanılabilir. Özel rol tanımları için, gereken belirli izinleri öğrenmek için bkz . Toplu iş uç noktaları üzerinde yetkilendirme.

  • Uç noktayı çağırmak için güvenlik sorumlusunu temsil eden geçerli bir Microsoft Entra Id belirteci. Bu sorumlu bir kullanıcı sorumlusu veya hizmet sorumlusu olabilir. Her durumda, bir uç nokta çağrıldıktan sonra belirteçle ilişkilendirilmiş kimlik altında bir toplu dağıtım işi oluşturulur. Çağırma için kendi kimlik bilgilerinizi aşağıdaki gibi kullanabilirsiniz:

    Etkileşimli veya cihaz kodu kimlik doğrulaması kullanarak oturum açmak için Azure CLI'yi kullanın:

    az login
    

    Farklı kimlik bilgileri türlerini kullanarak toplu dağıtım işlerini başlatma hakkında daha fazla bilgi edinmek için bkz . Farklı kimlik bilgileri kullanarak işleri çalıştırma.

  • Uç noktanın dağıtıldığı işlem kümesinin giriş verilerini okuma erişimi vardır.

    İpucu

    Veri girişi olarak kimlik bilgisi olmayan bir veri deposu veya dış Azure Depolama Hesabı kullanıyorsanız, veri erişimi için işlem kümelerini yapılandırdığınızdan emin olun. İşlem kümesinin yönetilen kimliği, depolama hesabını bağlamak için kullanılır. İşin (çağırıcı) kimliği, ayrıntılı erişim denetimine ulaşmanıza olanak sağlayan temel verileri okumak için hala kullanılır.

İş oluşturmayla ilgili temel bilgiler

Bir toplu iş uç noktasından iş oluşturmak için bunu çağırmanız gerekir. Çağırma işlemi Azure CLI, Python için Azure Machine Learning SDK'sı veya REST API çağrısı kullanılarak yapılabilir. Aşağıdaki örneklerde, işlenmek üzere tek bir giriş veri klasörü alan bir toplu iş uç noktasını çağırmanın temelleri gösterilmektedir. Farklı giriş ve çıkışlara sahip örnekler için bkz. Girişleri ve çıkışları anlama.

invoke Toplu iş uç noktaları altındaki işlemi kullanın:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

Belirli bir dağıtımı çağırma

Batch uç noktaları aynı uç nokta altında birden çok dağıtım barındırabilir. Kullanıcı aksini belirtmediği sürece varsayılan uç nokta kullanılır. Aşağıdaki gibi kullanılan dağıtımı değiştirebilirsiniz:

Bağımsız değişkenini --deployment-name kullanın veya -d dağıtımın adını belirtin:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --deployment-name $DEPLOYMENT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

İş özelliklerini yapılandırma

Oluşturulan işteki bazı özellikleri çağırma zamanında yapılandırabilirsiniz.

Not

İş özelliklerini yapılandırma işlemi şu ana kadar yalnızca İşlem hattı bileşeni dağıtımlarıyla toplu iş uç noktalarında kullanılabilir.

Deneme adını yapılandırma

Denemenin adını belirtmek için bağımsız değişkenini --experiment-name kullanın:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --experiment-name "my-batch-job-experiment" \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

Girişleri ve çıkışları anlama

Toplu iş uç noktaları, tüketicilerin toplu iş oluşturmak için kullanabileceği dayanıklı bir API sağlar. Aynı arabirim, dağıtımınızın beklediği girişleri ve çıkışları belirtmek için kullanılabilir. Uç noktanızın işi gerçekleştirmek için ihtiyaç duyduğu bilgileri geçirmek için girişleri kullanın.

Giriş ve çıkışların toplu iş uç noktalarında nasıl kullanıldığını gösteren diyagram.

Batch uç noktaları iki tür girişi destekler:

Girişlerin ve çıkışların sayısı ve türü, toplu dağıtım türüne bağlıdır. Model dağıtımları her zaman bir veri girişi gerektirir ve bir veri çıkışı üretir. Değişmez değer girişleri desteklenmez. Ancak işlem hattı bileşeni dağıtımları uç noktaları oluşturmak için daha genel bir yapı sağlar ve istediğiniz sayıda giriş (veri ve değişmez değer) ve çıkış belirtmenize olanak sağlar.

Aşağıdaki tabloda toplu dağıtımlar için girişler ve çıkışlar özetlemektedir:

Dağıtım türü Girişin numarası Desteklenen giriş türleri Çıktının numarası Desteklenen çıkış türleri
Model dağıtımı 1 Veri girişleri 1 Veri çıkışları
İşlem hattı bileşeni dağıtımı [0..N] Veri girişleri ve değişmez değer girişleri [0..N] Veri çıkışları

İpucu

Girişler ve çıkışlar her zaman adlandırılır. Bu adlar, bunları tanımlamak ve çağırma sırasında gerçek değeri geçirmek için anahtar görevi görür. Model dağıtımları için her zaman bir giriş ve çıkış gerektiğinden, çağırma sırasında ad yoksayılır. "sales_estimation" gibi kullanım örneğinizi en iyi açıklayan adı atayabilirsiniz.

Veri girişleri

Veri girişleri, verilerin yerleştirildiği bir konuma işaret eden girişlere başvurur. Toplu iş uç noktaları genellikle büyük miktarda veri tükettiğinden, giriş verilerini çağırma isteğinin bir parçası olarak geçiremezsiniz. Bunun yerine, toplu iş uç noktasının verileri aramak için gitmesi gereken konumu belirtirsiniz. Giriş verileri, performansı geliştirmek için hedef işlemde bağlanır ve akışa alınmıştır.

Batch uç noktaları, aşağıdaki depolama seçeneklerinde bulunan dosyaların okunmasını destekler:

Önemli

Kullanımdan kaldırma bildirimi: (V1) türündeki FileDataset veri kümeleri kullanım dışıdır ve gelecekte kullanımdan kaldırılacaktır. Bu işlevi kullanan mevcut toplu iş uç noktaları çalışmaya devam eder, ancak GA CLIv2 (2.4.0 ve üzeri) veya GA REST API (2022-05-01 ve üzeri) ile oluşturulan toplu iş uç noktaları V1 veri kümesini desteklemez.

Değişmez değer girişleri

Değişmez değer girişleri dizeler, sayılar ve boole değerleri gibi çağrı zamanında temsil edilebilen ve çözümlenebilen girişlere başvurur. Genellikle işlem hattı bileşeni dağıtımının bir parçası olarak uç noktanıza parametre geçirmek için değişmez değer girişleri kullanırsınız. Batch uç noktaları aşağıdaki değişmez değer türlerini destekler:

  • string
  • boolean
  • float
  • integer

Değişmez değer girişleri yalnızca işlem hattı bileşeni dağıtımlarında desteklenir. Bunların nasıl belirtileceğini öğrenmek için bkz . Değişmez değer girişleriyle iş oluşturma.

Veri çıkışları

Veri çıkışları, toplu işin sonuçlarının yerleştirilmesi gereken konuma başvurur. Çıkışlar ada göre tanımlanır ve Azure Machine Learning her adlandırılmış çıkışa otomatik olarak benzersiz bir yol atar. Ancak, gerekirse başka bir yol belirtebilirsiniz.

Önemli

Batch uç noktaları yalnızca Azure Blob Depolama veri depolarında çıkış yazmayı destekler. Hiyerarşik ad alanlarının etkin olduğu bir depolama hesabına yazmanız gerekiyorsa (Azure Datalake 2. Nesil veya ADLS 2. Nesil olarak da bilinir), hizmetler tam olarak uyumlu olduğundan bu tür depolama hizmetinin Azure Blob Depolama veri deposu olarak kaydedilebildiğine dikkat edin. Bu şekilde, toplu iş uç noktalarındaki çıkışları ADLS 2. Nesil'e yazabilirsiniz.

Veri girişleriyle iş oluşturma

Aşağıdaki örneklerde iş oluşturma, veri varlıklarından, veri depolarından ve Azure Depolama Hesaplarından veri girişleri alma işlemleri gösterilmektedir.

Veri varlığından veri girişi

Azure Machine Learning veri varlıkları (eski adıyla veri kümeleri), işler için giriş olarak desteklenir. Azure Machine Learning'de kayıtlı bir veri varlığında depolanan verileri kullanarak toplu uç nokta işini çalıştırmak için şu adımları izleyin:

Uyarı

Tablo (MLTable) türünde veri varlıkları şu anda desteklenmemektedir.

  1. İlk olarak veri varlığını oluşturun. Bu veri varlığı, toplu iş uç noktalarını kullanarak paralel olarak işlediğiniz birden çok CSV dosyasını içeren bir klasörden oluşur. Verileriniz zaten bir veri varlığı olarak kayıtlıysa bu adımı atlayabilirsiniz.

    içinde YAMLbir veri varlığı tanımı oluşturun:

    heart-dataset-unlabeled.yml

    $schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
    name: heart-dataset-unlabeled
    description: An unlabeled dataset for heart classification.
    type: uri_folder
    path: heart-classifier-mlflow/data
    

    Ardından veri varlığını oluşturun:

    az ml data create -f heart-dataset-unlabeled.yml
    
  2. Girişi veya isteği oluşturun:

    DATASET_ID=$(az ml data show -n heart-dataset-unlabeled --label latest | jq -r .id)
    

    Not

    Veri varlıkları kimliği gibi /subscriptions/<subscription>/resourcegroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/data/<data-asset>/versions/<version>görünür. Girişi belirtmenin bir yolu olarak da kullanabilirsiniz azureml:/<datasset_name>@latest .

  3. Uç noktayı çalıştırın:

    Girdiyi --set belirtmek için bağımsız değişkenini kullanın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$DATASET_ID
    

    Model dağıtımına hizmet veren bir uç nokta için bağımsız değişkenini --input kullanarak veri girişini belirtebilirsiniz çünkü model dağıtımı her zaman yalnızca bir veri girişi gerektirir.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $DATASET_ID
    

    Bağımsız değişken --set , birden çok giriş belirtildiğinde uzun komutlar üretme eğilimindedir. Böyle durumlarda, girişlerinizi bir YAML dosyaya yerleştirin ve uç nokta çağırmanız için ihtiyacınız olan girişleri belirtmek için kullanın --file .

    inputs.yml

    inputs:
      heart_dataset: azureml:/<datasset_name>@latest
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

Veri depolarından veri girişi

Azure Machine Learning kayıtlı veri depolarından alınan verilere toplu dağıtım işleri tarafından doğrudan başvurulabilir. Bu örnekte, önce Azure Machine Learning çalışma alanında bazı verileri varsayılan veri deposuna yükler ve ardından üzerinde bir toplu dağıtım çalıştırırsınız. Bir veri deposunda depolanan verileri kullanarak toplu uç nokta işini çalıştırmak için bu adımları izleyin.

  1. Azure Machine Learning çalışma alanında varsayılan veri deposuna erişin. Verileriniz farklı bir depodaysa bunun yerine bu depoyı kullanabilirsiniz. Varsayılan veri depoyu kullanmanız gerekmez.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    Not

    Veri depoları kimliği gibi /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>görünür.

    İpucu

    Çalışma alanındaki varsayılan blob veri deposuna workspaceblobstore adı verilir. Çalışma alanınızdaki varsayılan veri deposunun kaynak kimliğini zaten biliyorsanız bu adımı atlayabilirsiniz.

  2. Bazı örnek verileri veri deposuna yüklemeniz gerekir. Bu örnekte, blob depolama hesabındaki klasördeki depoya sdk/python/endpoints/batch/deploy-models/heart-classifier-mlflow/data heart-disease-uci-unlabeled dahil edilen örnek verileri zaten karşıya yüklediğiniz varsayılır. İlerlemeden önce bunu yaptığınızdan emin olun.

  3. Girişi veya isteği oluşturun:

    Dosya yolunu aşağıdaki değişkene yerleştirin:

    DATA_PATH="heart-disease-uci-unlabeled"
    INPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    Not

    Veri deposunun kaynak kimliğine yolun paths nasıl eklendiğini görün ve ardından gelenin içinde bir yol olduğunu belirtin.

    İpucu

    Girişi belirtmenin bir yolu olarak da kullanabilirsiniz azureml://datastores/<data-store>/paths/<data-path> .

  4. Uç noktayı çalıştırın:

    Girdiyi --set belirtmek için bağımsız değişkenini kullanın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_PATH
    

    Model dağıtımına hizmet veren bir uç nokta için bağımsız değişkenini --input kullanarak veri girişini belirtebilirsiniz çünkü model dağıtımı her zaman yalnızca bir veri girişi gerektirir.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_PATH --input-type uri_folder
    

    Bağımsız değişken --set , birden çok giriş belirtildiğinde uzun komutlar üretme eğilimindedir. Böyle durumlarda, girişlerinizi bir YAML dosyaya yerleştirin ve uç nokta çağırmanız için ihtiyacınız olan girişleri belirtmek için kullanın --file .

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: azureml://datastores/<data-store>/paths/<data-path>
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Verileriniz bir dosyaysa, bunun yerine tür olarak kullanın uri_file .

Azure Depolama Hesaplarından veri girişi

Azure Machine Learning toplu uç noktaları, Azure Depolama Hesapları'ndaki bulut konumlarından verileri hem genel hem de özel olarak okuyabilir. Depolama hesabında depolanan verileri kullanarak bir toplu iş uç noktası işi çalıştırmak için aşağıdaki adımları kullanın:

Not

Depolama erişimlerinden verileri başarıyla okumak için gereken ek yapılandırma hakkında daha fazla bilgi edinmek için işlem kümelerini veri erişimi için yapılandırma bölümüne bakın.

  1. Girişi veya isteği oluşturun:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    Verileriniz bir dosyaysa:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
    
  2. Uç noktayı çalıştırın:

    Girdiyi --set belirtmek için bağımsız değişkenini kullanın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_DATA
    

    Model dağıtımına hizmet veren bir uç nokta için bağımsız değişkenini --input kullanarak veri girişini belirtebilirsiniz çünkü model dağıtımı her zaman yalnızca bir veri girişi gerektirir.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_DATA --input-type uri_folder
    

    Bağımsız değişken --set , birden çok giriş belirtildiğinde uzun komutlar üretme eğilimindedir. Böyle durumlarda, girişlerinizi bir YAML dosyaya yerleştirin ve uç nokta çağırmanız için ihtiyacınız olan girişleri belirtmek için kullanın --file .

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Verileriniz bir dosyaysa, bunun yerine tür olarak kullanın uri_file .

Değişmez değer girişleriyle iş oluşturma

İşlem hattı bileşeni dağıtımları değişmez değer girişleri alabilir. Aşağıdaki örnekte değeri olan , türünde bir girişin score_modenasıl belirtilmesi gösterilmektedirappend:string

Girişlerinizi bir YAML dosyaya yerleştirin ve uç nokta çağırmanız için ihtiyacınız olan girişleri belirtmek için kullanın --file .

inputs.yml

inputs:
  score_mode:
    type: string
    default: append
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml

Değeri belirtmek için bağımsız değişkenini --set de kullanabilirsiniz. Ancak, birden çok giriş belirtildiğinde uzun komutlar üretme eğilimindedir:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
    --set inputs.score_mode.type="string" inputs.score_mode.default="append"

Veri çıkışlarıyla iş oluşturma

Aşağıdaki örnekte adlı score çıkışın yerleştirildiği konumun nasıl değiştirileceği gösterilmektedir. Tamlık için, bu örneklerde adlı heart_datasetbir giriş de yapılandırılır.

  1. Çıkışları kaydetmek için Azure Machine Learning çalışma alanında varsayılan veri depoyu kullanın. Blob depolama hesabı olduğu sürece çalışma alanınızdaki diğer veri depolarını kullanabilirsiniz.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    Not

    Veri depoları kimliği gibi /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>görünür.

  2. Veri çıkışı oluşturma:

    DATA_PATH="batch-jobs/my-unique-path"
    OUTPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    Eksiksizlik için bir veri girişi de oluşturun:

    INPUT_PATH="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    Not

    Veri deposunun kaynak kimliğine yolun paths nasıl eklendiğini görün ve ardından gelenin içinde bir yol olduğunu belirtin.

  3. Dağıtımı çalıştırın:

    Girdiyi belirtmek için bağımsız değişkenini --set kullanın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.path=$INPUT_PATH \
        --set outputs.score.path=$OUTPUT_PATH