使用sagemaker.image_uris.retrieve()时遭遇FileNotFoundError求助
修复SageMaker内置算法容器获取失败的问题
错误原因
你遇到的FileNotFoundError是当前安装的SageMaker SDK缺少对应内置算法的镜像配置文件,本质是SDK版本不兼容——要么版本过低,未适配image_uris.retrieve对内置算法的支持;要么版本过高,内置算法的调用逻辑发生了变化。
修复方案
方案1:使用兼容的旧接口获取镜像
get_image_uri是专门用于获取SageMaker内置算法镜像的接口,兼容性更强,代码示例:
import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri region = boto3.Session().region_name # 获取linear-learner的最新版本训练容器 container = get_image_uri(region, "linear-learner", repo_version="latest")
方案2:升级SDK并使用正确参数调用
先升级到最新稳定版SageMaker SDK:
pip install --upgrade sagemaker
升级后,修改代码,指定具体的算法版本(不要用latest,改用官方支持的版本号,比如1),同时明确镜像用途:
import boto3 from sagemaker import image_uris region = boto3.Session().region_name container = image_uris.retrieve( framework="linear-learner", region=region, image_scope="training", # 可选,默认是训练容器,若需推理容器可改为"inference" version="1" )
验证方法
运行代码后,若返回类似763104351884.dkr.ecr.us-east-1.amazonaws.com/linear-learner:1的镜像地址,说明修复成功。
内容的提问来源于stack exchange,提问作者user22012285
相关产品推荐
相关产品推荐

