我正在尝试这样部署一个模型:
model_alpha = PyTorchModel(
entry_point='inference_alpha.py',
source_dir='code_alpha',
dependencies = ['module_0',
'module_1'],
role=role,
model_data=model_data_alpha,
framework_version="1.7.1",
py_version='py3',
code_location='s3://model',
name='alpha-model',
)
但是它给了我一个错误,文件夹module_0没有找到。我的目录是这样的:
>>> main/code_alpha
>>> |------ inference_alpha.py
>>> |------ module_0
>>> |------ module_1
我正在使用笔记本来部署模型。
predictor_alpha = model_alpha.deploy(
initial_instance_count=1,
instance_type=instance_type,
serializer=JSONSerializer(),
deserializer=JSONDeserializer(),
)
我做错了什么?
在PytorchModel()的文档中,您可以看到这个类是基于FrameworkModel()的,直到通用的Model()。
因此,可以使用参数source_dir
:
到任何其他服务的目录的路径(绝对或相对)源代码代码依赖除了入口点文件。如果不是指定后,使用training中的模型源目录。
基本概念是sourcedir.tar.gz包含你用source_dir指向的文件夹被加载到code_location中,然后你可以在脚本中正常使用它,因为它在该文件夹中作为entry_point运行。
此时,您的脚本变成:model_alpha = PyTorchModel(
entry_point='inference_alpha.py',
source_dir=entire_local_path, # full path to code_alpha dir like /home/ec2-user/SageMaker/code_alpha
role=role,
model_data=model_data_alpha,
framework_version="1.7.1",
py_version='py3',
code_location=upload_location, # where source_dir will be saved as sourcedir.tar.gz
name='alpha-model'
)
在您的推理脚本中,您只需按如下方式导入表单:
from module_0.your_script import your_class, your_func
这个推理适用于所有类型的sagemaker组件。无论是pytorchmodel还是处理器还是训练过程等等…