AWS Lambda-如何将ONNX模型放入AWS层

问题描述

当前,我一直在像这样从S3下载我的ONNX模型:

s3 = boto3.client('s3')
if os.path.isfile('/tmp/model.onnx') != True:
    s3.download_file('test','models/model.onnx','/tmp/model.onnx')
inference_session = onnxruntime.InferenceSession('/tmp/model.onnx')

但是,我想减少必须下载此模型的延迟。为此,我希望将模型保存在AWS Lambda层中。但是,这样做很麻烦。

我尝试这样创建一个ZIP文件

- python
     - model.onnx

,然后像inference_session = onnxruntime.InferenceSession('/opt/model.onnx')一样加载它,但出现“文件不存在”错误。我应该怎么做才能确保可以在/opt/目录中找到该模型?

注意:我的AWS Lambda函数在Python 3.6上运行。

解决方法

您的文件应位于/opt/python/model.onnx中。因此,您应该可以使用以下方法来获取它:

inference_session = onnxruntime.InferenceSession('/opt/python/model.onnx')

如果您不希望文件位于python文件夹中,则不要使用该文件夹创建图层。只需将model.onnx放在zip的根文件夹中,而不要放在python文件夹中即可。