You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在线端点导入MLClient报错:无法从azure.core.credentials导入TokenCredential

问题分析与解决方案

错误根源:依赖版本不兼容

这个cannot import name TokenCredential错误是因为azure-ai-ml和azure-core的版本不匹配导致的。TokenCredential类在新版azure-core中属于azure.core.credentials模块,但如果azure-core版本过低,或者azure-ai-ml依赖的azure-core版本与当前环境不一致,就会触发这个导入错误。

关键注意点:在线端点里不该用MLClient

必须明确:在线端点的推理代码里不应该使用MLClient。MLClient是用来管理Azure ML工作区资源(比如模型、数据集、端点)的客户端工具,适合在本地脚本、训练流水线中使用。而在线端点是运行推理服务的环境,直接在里面调用MLClient拉取模型和数据资产,不仅会引入不必要的依赖和权限问题,还会降低推理性能。

正确的做法是:

  • 把预训练模型和嵌入向量数据资产打包到部署镜像里,或者通过Azure ML数据集挂载到端点
  • 推理代码直接加载本地/挂载好的模型和数据,不需要通过MLClient远程获取

具体修复步骤

  1. 调整依赖版本
    修改你的endpoint.yml,指定azure-ai-ml和azure-core的兼容版本(如果确实需要在环境里保留azure-ai-ml的话),同时确保azure-identity版本与它们兼容。示例如下:

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.8
      - numpy=1.21.2
      - pip=22.3.1
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - inference-schema[numpy-support]==1.3.0
        - applicationinsights==0.11.10
        - sentence-transformers==2.2.2
        - pytorch-lightning==1.7.6
        - azure-ai-ml==1.10.0
        - azure-core==1.26.0
        - azure-identity==1.12.0
        - azureml-defaults==1.38.0
    

    版本号可根据Azure官方依赖兼容表调整,确保三者版本匹配。

  2. 移除不必要的依赖
    如果你的推理代码不需要MLClient,直接把azure-ai-ml从依赖里删掉,既能避免版本冲突,也能减小镜像体积。

  3. 调整推理逻辑
    把模型和嵌入向量数据提前打包到部署资产中,或者通过Azure ML数据集功能挂载到在线端点,推理时直接加载本地文件,不要用MLClient远程获取。

内容的提问来源于stack exchange,提问作者Mase

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:10:38