如何修复Azure ML通过ACI部署RandomForest模型时的azureml_run_type_providers加载失败错误
解决Azure ML部署ACI时cryptography版本冲突问题
这是典型的依赖版本冲突导致的问题——你的环境里安装的cryptography是2.9.2版本,但PyJWT的crypto扩展功能要求它至少达到3.3.1版本,直接导致Azure ML加载运行时提供者失败。我给你整理几个实用的解决步骤:
锁定符合要求的依赖版本
不管你用requirements.txt还是conda.yml管理环境,都要明确指定cryptography的最低版本,同时声明PyJWT的crypto依赖:
如果是requirements.txt,添加这两行:cryptography>=3.3.1 PyJWT[crypto]如果是conda配置文件
conda.yml,在dependencies节点补充:- cryptography>=3.3.1 - pip: - PyJWT[crypto]重建Azure ML部署环境
别用之前缓存的旧环境,重新基于更新后的依赖文件定义环境对象:from azureml.core import Environment # 基于conda配置文件创建环境 env = Environment.from_conda_specification(name="rf_deploy_env", file_path="./conda.yml") # 或者基于pip requirements创建 # env = Environment.from_pip_requirements(name="rf_deploy_env", file_path="./requirements.txt")之后用这个新环境重新部署你的RandomForest服务。
本地提前排查依赖冲突
可以在本地先运行pip check命令,排查是否有其他包和cryptography存在版本冲突:pip check如果发现有其他包依赖旧版本的
cryptography,你需要调整这些包的版本,找到能兼容cryptography>=3.3.1的版本组合,避免部署到ACI后再踩坑。基于Azure ML基础镜像覆盖依赖
如果你用的是Azure ML提供的预构建基础镜像(比如sklearn相关镜像),这些镜像可能自带低版本的cryptography,你可以在环境定义里直接覆盖版本:from azureml.core import Environment, Workspace ws = Workspace.from_config() # 加载基础镜像环境 env = Environment.get(workspace=ws, name="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu") # 添加覆盖的依赖 env.python.conda_dependencies.add_pip_package("cryptography>=3.3.1") env.python.conda_dependencies.add_pip_package("PyJWT[crypto]")
另外建议你先在本地创建相同环境测试,确保所有依赖能正常安装且运行无问题,再推送到ACI部署,能节省不少排查时间。
内容的提问来源于stack exchange,提问作者Welfi KHARROUBI
相关产品推荐
相关产品推荐

