Aracılığıyla paylaş


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

Batch uç noktaları, büyük miktarlarda veri üzerinde uzun toplu işlemler gerçekleştirmenizi sağlar. Veriler, dağınık bölgeler gibi farklı yerlerde bulunabilir. Belirli toplu iş uç noktası türleri de giriş olarak değişmez parametreleri alabilir.

Bu makalede, toplu iş uç noktaları için parametre girişlerini belirtme ve dağıtım işleri oluşturma işlemleri açıklanmaktadır. bu işlem farklı veri türleriyle çalışmayı destekler. Bazı örnekler için bkz . Girişleri ve çıkışları anlama.

Önkoşullar

Toplu iş uç noktasını başarıyla çağırmak ve iş oluşturmak için aşağıdaki önkoşulları tamamladığınızdan emin olun:

  • Toplu iş uç noktası ve dağıtımı. Bu kaynaklara sahip değilseniz 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, belirli gerekli izinleri gözden geçirmek 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. Bir uç noktayı çağırdıktan sonra, Azure Machine Learning belirteçle ilişkilendirilmiş kimlik altında bir toplu dağıtım işi oluşturur. Aşağıdaki yordamlarda açıklandığı gibi çağırma için kendi kimlik bilgilerinizi kullanabilirsiniz.

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

    az login
    

    Farklı kimlik bilgisi türlerini kullanarak toplu dağıtım işlerini başlatma hakkında daha fazla bilgi edinmek için bkz . Farklı kimlik bilgisi türleri 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, işlem kümelerini veri erişimi için 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 denetimi elde etmenizi sağlayan temel alınan verileri okumak için hala kullanılır.

İş oluşturmayla ilgili temel bilgiler

Toplu iş uç noktasından iş oluşturmak için uç noktayı çağırırsınız. Ç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. Dağıtımı aşağıdaki yordamlarla kullanılacak şekilde 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 özelliği şu anda yalnızca İşlem Hattı bileşeni dağıtımlarına sahip toplu uç noktalarda kullanılabilir.

Deneme adını yapılandırma

Deneme adını yapılandırmak için aşağıdaki yordamları kullanın.

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. Dağıtımınızın beklediği girişleri ve çıkışları belirtmek için aynı arabirim 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:

  • Veri girişleri: Belirli bir depolama konumuna veya Azure Machine Learning varlığına yönelik işaretçiler.
  • Değişmez değer girişleri: İşe geçirmek istediğiniz sayılar veya dizeler gibi değişmez değerler.

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ş sayısı Desteklenen giriş türleri Çıkış sayısı 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. Adlar, verileri 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ı her zaman bir giriş ve çıkış gerektirdiğ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şlerini keşfetme

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 edecektir. GA CLIv2 (2.4.0 ve üzeri) veya GA REST API (2022-05-01 ve üzeri) ile oluşturulan batch uç noktaları V1 veri kümesini desteklemez.

Değişmez değer girişlerini keşfetme

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ını keşfetme

Veri çıkışları, toplu işin sonuçlarının yerleştirilmesi gereken konuma başvurur. Her çıkışın tanımlanabilir bir adı vardır ve Azure Machine Learning her adlandırılmış çıkışa otomatik olarak benzersiz bir yol atar. Gerektiği gibi 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 (Azure Datalake 2. Nesil veya ADLS 2. Nesil olarak da bilinir) yazmanız gerekiyorsa, hizmetler tam olarak uyumlu olduğundan depolama hizmetini Azure Blob Depolama veri deposu olarak kaydedebilirsiniz. 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 giriş verilerini kullanma

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 bir toplu iş uç noktası işi çalıştırmak için bu 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)
    
  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ı sunan 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 bağımsız değişkenini --file kullanarak uç nokta çağrınız için ihtiyacınız olan girişleri belirtin.

    inputs.yml

    inputs:
      heart_dataset: azureml:/<datasset_name>@latest
    

    Şu komutu çalıştırın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

Veri depolarından giriş verilerini kullanma

Toplu dağıtım işleri ile Azure Machine Learning kayıtlı veri depolarından verilere doğrudan başvurabilirsiniz. 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')
    

    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 deposu workspaceblobstore olarak adlandırılır. Ç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ükleyin.

    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. Devam etmeden önce bu adımı tamamladığınızdan emin olun.

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

    Dosya yolunu değişkenine INPUT_PATH yerleştirin:

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

    Yol değişkeninin paths veri deposunun kaynak kimliğine nasıl eklendiğine dikkat edin. Bu biçim, izleyen değerin bir yol olduğunu gösterir.

    İpucu

    Girişi belirtmek için biçimini azureml://datastores/<data-store>/paths/<data-path> de kullanabilirsiniz.

  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ı sunan 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 bağımsız değişkenini --file kullanarak uç nokta çağrınız için ihtiyacınız olan girişleri belirtin.

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: azureml://datastores/<data-store>/paths/<data-path>
    

    Şu komutu çalıştırın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Verileriniz bir dosyaysa, bunun yerine girişin türünü kullanın uri_file .

Azure Depolama Hesaplarından giriş verilerini kullanma

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

Depolama hesaplarından veri okumak için ek gerekli yapılandırma hakkında daha fazla bilgi edinmek için bkz . Veri erişimi için işlem kümelerini yapılandırma.

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

    INPUT_DATA Değişkeni ayarlayın:

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

    Verileriniz bir dosyaysa değişkenini aşağıdaki biçimde ayarlayın:

    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ı sunan 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
    

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

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
    

    Şu komutu çalıştırın:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Verileriniz bir dosyaysa, bunun yerine girişin türünü 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

Şu komutu çalıştırın:

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, bu yaklaşım 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. Azure Machine Learning çalışma alanında varsayılan veri depounu kullanarak çıkışı kaydedin. 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')
    

    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:

    OUTPUT_PATH Değişkeni ayarlayın:

    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

    Yol değişkeninin paths veri deposunun kaynak kimliğine nasıl eklendiğine dikkat edin. Bu biçim, izleyen değerin bir yol olduğunu gösterir.

  3. Dağıtımı ç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.path=$INPUT_PATH \
        --set outputs.score.path=$OUTPUT_PATH