我在一个批处理端点上部署了一个模型,当我通过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
1条答案
按热度按时间jvidinwx1#
InputFileDatasetConfig
类来创建输入对象,而不是Input
类。inputs
和input
作为参数名。正确的参数名称为inputs
(复数)。当向invoke
方法传递多个输入或单个输入的字典时,请使用inputs
。*BY_POLICY这可能是由于安全策略阻止了请求。您可以尝试检查是否有任何安全策略正在阻止请求。此外,您可以尝试在
invoke
方法中使用wait_for_completion
参数,等待作业完成后再返回。参考文献:
1.从Azure Data Factory运行批处理终结点