SageMaker重打包推理模型如何避免自动安装requirements.txt依赖?
解决SageMaker模型重打包时自动安装requirements依赖的问题
核心问题
你遇到的问题是SageMaker流水线在创建推理模型时,重打包流程默认使用ml.m5.large实例和scikit-learn:0.23-1-cpu-py3训练镜像(Python 3.7环境),但你的requirements.txt中指定了需要Python 3.8+的依赖版本,导致安装失败。而实际上你只需要把requirements.txt和推理代码一起打包,不需要在重打包阶段安装依赖。
直接解决方案:跳过打包阶段的依赖安装
在创建Model对象时,添加skip_requirements_install=True参数,即可阻止重打包流程尝试安装requirements.txt中的依赖包,仅完成文件打包操作:
pytorch_model = Model( image_uri=inf_img_uri, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, role=role, entry_point='inference.py', sagemaker_session=PipelineSession(), source_dir=os.path.join(LIB_DIR, "test"), # 包含inference.py和requirements.txt name=model_name, skip_requirements_install=True # 关键参数:跳过打包阶段的依赖安装 )
原理说明
- 该参数会让SageMaker仅将
source_dir下的所有文件(包括requirements.txt)打包成tar.gz,不会触发依赖安装流程,避免了旧训练镜像的Python版本不兼容问题。 - 推理阶段,你指定的PyTorch推理镜像(Python 3.8版本)会自动读取
requirements.txt并安装所需依赖,无需手动在inference.py中执行pip install,解决了Batch Inference重复安装的问题。
内容的提问来源于stack exchange,提问作者Giuseppe La Gualano
相关产品推荐
相关产品推荐

