我已经成功部署了我的AWS模型。
但是在测试时我遇到了运行时错误:“ 将matplotlib.pyplot导入为plt ”。我认为这是由于我使用的pytorch框架版本(framework_version = 1.2.0)。当我也使用更高版本时,我也面临同样的问题。
PyTorchModel(model_data=model_artifact,
role = role,
framework_version=1.2.0,
entry_point='predict.py',
predictor_cls=ImagePredictor)
当我使用version = 1.0.0时,我还有其他问题。即我无法从子目录导入库,并且部署本身失败。
例如:我在“代码”目录中有一些代码文件。
from Code.CTModel import NetWork ---> **this line will fail as "No module named Code" when i use version=1.0.0**
最终,我想了解如何使用/导入在子目录下编写的库。
答案 0 :(得分:1)
听起来您想将一些其他代码库注入SageMaker PyTorch服务容器。您可能需要深入研究源代码,以了解如何构建PyTorch服务容器以进一步对其进行自定义:https://github.com/aws/sagemaker-pytorch-inference-toolkit,或构建自己的映像。
稍微研究一下源代码,我看到容器启用了导入任意代码的功能,但是只有在启用“多模型模式”时才可以。您可以验证代码是否在模型目录中的“代码”目录下并且是否启用了“多模型模式”吗?
def initialize(self, context):
# Adding the 'code' directory path to sys.path to allow importing user modules when multi-model mode is enabled.
if (not self._initialized) and ENABLE_MULTI_MODEL:
code_dir = os.path.join(context.system_properties.get("model_dir"), 'code')
sys.path.append(code_dir)
self._initialized = True
如果这一切对您来说似乎很复杂,那么您可能需要研究一些标准化的格式来序列化PyTorch模型,例如https://onnx.ai/。如果您想通过contact@modelzoo.dev
与我联系,我很想了解您打算在这里做什么的更多信息。我正在对platform进行Beta测试,该代码可以在一行代码中进行部署,并且很乐意在此处进行测试。
答案 1 :(得分:-1)
让我对查询进行一些高级介绍:source_dir中有predict.py,jupyter笔记本,Code(Direcotry),Evoludation(目录)和其他.py文件。
--Code
--ResNet.py
--Densenet.py
--DataLoader.py
--Evaluation
--Evaluation.py
--predict.py
--CT_Code.ipynb
当我在本地系统中从jupyter Notebook执行预测文件时,所有模块均已正确导入,并且一切正常。但是当我在sagemaker笔记本中部署同样的东西时,遇到了我的问题中提到的问题。(无法从Code目录和一些基本模块(如imageio,PIL,Matplotlib )导入库