SageMaker的SKLearnModel部署时requirements.txt依赖未安装的问题求助
SageMaker的SKLearnModel部署时requirements.txt依赖未安装的问题求助
大家好,我在使用AWS SageMaker的SKLearnModel部署模型时遇到了依赖安装的问题,想请教下大家怎么解决。
先贴一下我的部署代码:
from sagemaker.sklearn import SKLearnModel role = sagemaker.get_execution_role() model = SKLearnModel( model_data= f"s3://{default_bucket}/{prefix}/model.tar.gz", role=role, entry_point="inference.py", framework_version="1.2-1", py_version="py3", ) predictor = model.deploy( instance_type="ml.c5.large", initial_instance_count=1, container_startup_health_check_timeout=180 )
我上传到S3的model.tar.gz包内容如下(我还参考PyTorch模型的文档试过把requirements.txt放到code/目录里,但也没用):
?rw-r--r-- sagemaker-user/users 4349839 2024-11-29 19:22:21 model.pkl ?rw-r--r-- sagemaker-user/users 24 2024-12-02 14:43:26 inference.py ?rw-r--r-- sagemaker-user/users 44212 2024-11-29 19:23:17 explainer ?rw-r--r-- sagemaker-user/users 24 2024-12-02 14:43:26 requirements.txt
requirements.txt里的内容很简单:
dill pandas joblib
(补充下,我查过AWS的官方代码,知道pandas是容器默认安装的,所以主要问题是dill和joblib没装上)
现在的问题是,当我尝试部署时,inference.py第一行的import dill会报错说找不到这个模块。去CloudWatch日志里看,发现只有inference 1.0.0被安装了——我猜这个应该是指我的脚本本身,而不是依赖包。
我知道可以在inference.py里用subprocess调用pip手动安装依赖,但总觉得这不是规范的做法,想问问大家有没有正确的方式让SageMaker自动安装requirements.txt里的依赖?
备注:内容来源于stack exchange,提问作者Daniele Gentili
相关产品推荐
相关产品推荐

