这是我的代码:
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://{default_bucket}/{prefix}/model.tar.gz
包含:
Contents of the tarball: (I also tried putting requirements.txt in code/ as advised on documentation for pytorch models on tarball structure)
?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
(我什至知道 pandas 是默认安装的,检查 aws 代码)
当我尝试部署时,出现错误,因为 inference.py 在第一行
import dill
表示未找到模块,并且在 Cloudwatch 中我只看到安装了 inference 1.0.0(我认为是我的脚本)。
我知道我可能可以在 inference.py 中创建一个子进程并在那里调用 pip,但我想正确地执行此操作。
您将requirements.txt和inference.py包含在model.tar.gz文件中,但请尝试将这些文件放在“scripts”下(或您想要使用的任何文件),并将路径指定为“source_dir” SKLearnModel 的参数。应自动安装requirements.txt 文件中的依赖项。
有关如何使用source_dir和requirements.txt的示例,请参阅此示例。
model = SKLearnModel(
role=role,
model_data=model_data,
framework_version="1.2-1",
py_version="py3",
source_dir="code",
entry_point="inference.py",
)
在“code/”目录下,可以找到requirements.txt。