Sagemaker 的 SklearnModelrequirements.txt 未安装

问题描述 投票:0回答:1

这是我的代码:

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,但我想正确地执行此操作。

python amazon-web-services scikit-learn amazon-sagemaker
1个回答
0
投票

您将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。

© www.soinside.com 2019 - 2024. All rights reserved.