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.
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:
- Klasör () ve Dosya (
uri_folder
uri_file
) gibi Azure Machine Learning veri varlıkları. - Azure Blob Depolama, Azure Data Lake Storage 1. Nesil ve Azure Data Lake Storage 2. Nesil gibi Azure Machine Learning veri depoları.
- Azure Data Lake Storage 1. Nesil, Azure Data Lake Storage 2. Nesil ve Azure Blob Depolama dahil olmak üzere Azure Depolama Hesapları.
- Yerel veri klasörleri/dosyaları (Azure Machine Learning CLI veya Python için Azure Machine Learning SDK'sı). Ancak bu işlem yerel verilerin üzerinde çalıştığınız çalışma alanının varsayılan Azure Machine Learning Veri Deposu'na yüklenmesine neden olur.
Ö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.
İ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
YAML
bir 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
Girişi veya isteği oluşturun:
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 birYAML
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.
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.
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.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.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 birYAML
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.
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"
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 birYAML
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_mode
nası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_dataset
bir giriş de yapılandırılır.
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.
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.Dağıtımı çalıştırın: