Azure ml studio批处理终结点调用失败

zc0qhyus  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(141)

我在一个批处理端点上部署了一个模型,当我通过GUI创建作业时,它就工作了,通过向导选择输入和输出数据的位置。
我需要从notebook运行它,特别是我看到微软教程建议使用“invoke”方法来调用批处理端点,我是这样做的:

ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

endpoint_name="endpoint-name" 
endpoint = ml_client.batch_endpoints.get(name = "loaded-models-endpoint")

凭证是正确的,通过ml_client我能够检索端点。我继续设置输入对象

data_path_input = "folder/file.parquet"
datastore_input = ml_client.datastores.get(name = "datastorename")
input_data = Input(type=AssetTypes.URI_FILE, path=f"{datastore_input.id}/paths/{data_path_input}")

print(input_data)

结果是
'type ':' uri_folder','path':'datastore_id_path.../paths/fodler/file. parquet'}

job = ml_client.batch_endpoints.invoke(
    endpoint_name = endpoint.name,
    inputs = {"deployement-name" : input_data}
)

ValidationException:输入路径无效
我尝试不使用字典,而是使用简单的输入,因为我在该端点上只有一个部署:

job = ml_client.batch_endpoints.invoke(
    endpoint_name = endpoint.name,
    input = input_data
)

我还尝试直接提供URI到文件:

job = ml_client.batch_endpoints.invoke(
    endpoint_name = endpoint.name,
    input = uri_to_file
)

在这种情况下,它会引起:
JSONDodeError:预期值:第1行第1列(char 0)在处理上述异常时,又发生了一个异常:异常:BY_POLICY

jvidinwx

jvidinwx1#

  • 您提供的输入路径不正确。您可以尝试检查路径是否正确以及文件是否存在于指定位置。此外,您可以尝试使用InputFileDatasetConfig类来创建输入对象,而不是Input类。
  • 您同时使用inputsinput作为参数名。正确的参数名称为inputs(复数)。当向invoke方法传递多个输入或单个输入的字典时,请使用inputs
from azureml.core.dataset import Dataset
from azureml.pipeline.core import PipelineData

ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
endpoint_name = "endpoint-name"
endpoint = ml_client.batch_endpoints.get(name="loaded-models-endpoint")

data_path_input = "folder/file.parquet"
datastore_input = ml_client.datastores.get(name="datastorename")
input_data = Input(type=AssetTypes.URI_FILE, path=f"{datastore_input.id}/paths/{data_path_input}")

inputs = {"deployement-name": input_data}

job = ml_client.batch_endpoints.invoke(endpoint_name=endpoint.name, inputs=inputs)

*BY_POLICY这可能是由于安全策略阻止了请求。您可以尝试检查是否有任何安全策略正在阻止请求。此外,您可以尝试在invoke方法中使用wait_for_completion参数,等待作业完成后再返回。

参考文献:
1.从Azure Data Factory运行批处理终结点

相关问题