我在通过 python SDK V2 调用 Azure ML Batch 端点时遇到策略错误。谁能解释一下如何解决吗?

问题描述 投票:0回答:2

我正在尝试通过 python sdk v2 调用 azure ml 批处理终点

job = ml_client.batch_endpoints.invoke(
    endpoint_name="test-batch-v2",
    input=my_test_data_input,
    deployment_name="test-deploy1"
)

我遇到以下错误,有人可以解释如何解决这个问题吗?

error_endpoint_invoke

我尝试通过调用 api 创建批量端点部署作业,但失败了

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\azure\ai\ml\_telemetry\activity.py:263, in monitor_with_activity..monitor..wrapper(*args, **kwargs)
    260 @functools.wraps(f)
    261 def wrapper(*args, **kwargs):
    262     with log_activity(logger, activity_name or f.__name__, activity_type, custom_dimensions):
--> 263         return f(*args, **kwargs)

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\azure\ai\ml\operations\_batch_endpoint_operations.py:316, in BatchEndpointOperations.invoke(self, endpoint_name, deployment_name, inputs, **kwargs)
    309     headers[EndpointInvokeFields.MODEL_DEPLOYMENT] = deployment_name
    311 response = self._requests_pipeline.post(
    312     endpoint.properties.scoring_uri,
    313     json=BatchJobResource(properties=batch_job).serialize(),
    314     headers=headers,
    315 )
--> 316 validate_response(response)
    317 batch_job = json.loads(response.text())
    318 return BatchJobResource.deserialize(batch_job)

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\azure\ai\ml\_utils\_endpoint_utils.py:120, in validate_response(response)
    117         r_json = response.json()
    118     except ValueError:
    119         # exception is not in the json format
--> 120         raise Exception(response.content.decode("utf-8"))
    121 failure_msg = r_json.get("error", {}).get("message", response)
    122 error_map = {
    123     401: ClientAuthenticationError,
    124     404: ResourceNotFoundError,
    125     409: ResourceExistsError,
    126 }

Exception: BY_POLICY
endpoint azure-machine-learning-service azureml-python-sdk
2个回答
0
投票

我过去也犯过类似的错误。我无法创建任何类型的端点,因为它被 azure 管理员设置的策略阻止。只需询问具有管理员访问权限的人即可允许创建端点。


-1
投票

错误消息“BY_POLICY”表示批处理端点未配置为允许从您当前的身份进行调用。

批处理端点支持 Azure Active Directory 身份验证或 aad_token。这表示必须向批处理端点 URI 提供有效的 Azure Active Directory 身份验证令牌才能调用批处理端点。

确保使用有效凭据创建 ml_client 对象。 由于您使用的凭据应该具有访问端点的正确权限。

例如,如果您想使用已在 Azure Active Directory 中创建的服务主体执行批量端点。

from azure.ai.ml import MLClient
from azure.identity import EnvironmentCredential

os.environ["AZURE_TENANT_ID"] = "<TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<CLIENT_SECRET>"

subscription_id = "<subscription>"
resource_group = "<resource-group>"
workspace = "<workspace>"

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

您可以参考此文档:批处理端点上的授权,其中提供了有关如何使用不同类型的凭据(用户凭据和托管身份)运行作业的更多详细信息

此外,请按照this文档中提供的示例验证您的批量端点创建。

© www.soinside.com 2019 - 2024. All rights reserved.