我用MASK-RCNN训练了一个图像分割模型,我现在的目标是使用AWS Lambda进行推断,为此我正在修改Deploy multiple machine learning models for inference on AWS Lambda and Amazon EFS,我的项目树是:

.
├── Dockerfile
├── __init__.py
├── app.py
├── requirements.txt
└── maskrcnn
    ├── config.py
    ├── __init__.py
    ├── m_rcnn.py
    ├── visualize.py
    ├── mask_rcnn_coco.h5
    ├── mask_rcnn_object_0005.h5
    └── model.py

因此,我决定将我的模型加载到maskrcnn目录中,而不是try 将我的模型加载到EFS挂载点,我使用COPY maskrcnn/ ./maskrcnn在Dockerfile中添加了一条COPY语句.

当我在本地调用我的代码时,它可以完美地工作.然而,在部署项目后,它不再起作用.当我try 通过网关API的endint进行推理时,我得到了以下响应:

[ERROR] OSError: [Errno 38] Function not implemented
Traceback (most recent call last):
  File "/var/task/app.py", line 32, in lambda_handler
    r = test_model.detect([image])[0]
  File "/var/task/maskrcnn/model.py", line 2545, in detect
    self.keras_model.predict([molded_images, image_metas, anchors], verbose=0)
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_v1.py", line 988, in predict
    return func.predict(
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_arrays_v1.py", line 703, in predict
    return predict_loop(
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_arrays_v1.py", line 386, in model_iteration
    aggregator.create(batch_outs)
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_utils_v1.py", line 446, in create
    SliceAggregator(self.num_samples, self.batch_size)))
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_utils_v1.py", line 355, in __init__
    self._pool = get_copy_pool()
  File "/var/lang/lib/python3.8/site-packages/tensorflow/python/keras/engine/training_utils_v1.py", line 323, in get_copy_pool
    _COPY_POOL = multiprocessing.pool.ThreadPool(_COPY_THREADS)
  File "/var/lang/lib/python3.8/multiprocessing/pool.py", line 925, in __init__
    Pool.__init__(self, processes, initializer, initargs)
  File "/var/lang/lib/python3.8/multiprocessing/pool.py", line 196, in __init__
    self._change_notifier = self._ctx.SimpleQueue()
  File "/var/lang/lib/python3.8/multiprocessing/context.py", line 113, in SimpleQueue
    return SimpleQueue(ctx=self.get_context())
  File "/var/lang/lib/python3.8/multiprocessing/queues.py", line 336, in __init__
    self._rlock = ctx.Lock()
  File "/var/lang/lib/python3.8/multiprocessing/context.py", line 68, in Lock
    return Lock(ctx=self.get_context())
  File "/var/lang/lib/python3.8/multiprocessing/synchronize.py", line 162, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
  File "/var/lang/lib/python3.8/multiprocessing/synchronize.py", line 57, in __init__
    sl = self._semlock = _multiprocessing.SemLock(

推荐答案

通过在Dockerfile中将python版本从3.8更改为3.7,我能够运行该项目一次.

Python相关问答推荐

仅从风格中获取 colored颜色 循环

如何使用scipy从频谱图中回归多个高斯峰?

如何自动抓取以下CSV

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

pandas DataFrame GroupBy.diff函数的意外输出

点到面的Y距离

Odoo 14 hr. emergency.public内的二进制字段

发生异常:TclMessage命令名称无效.!listbox"

如何让程序打印新段落上的每一行?

Pre—Commit MyPy无法禁用非错误消息

UNIQUE约束失败:customuser. username

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

* 动态地 * 修饰Python中的递归函数

寻找Regex模式返回与我当前函数类似的结果

Flask运行时无法在Python中打印到控制台

如何使用正则表达式修改toml文件中指定字段中的参数值

仅使用预先计算的排序获取排序元素

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

高效生成累积式三角矩阵

用0填充没有覆盖范围的垃圾箱