为啥在IOS上运行torchscript模型推理会导致线程错误?

Posted

技术标签:

【中文标题】为啥在IOS上运行torchscript模型推理会导致线程错误?【英文标题】:Why Running torchscript model inference on IOS results in threading error?为什么在IOS上运行torchscript模型推理会导致线程错误? 【发布时间】:2021-09-17 14:20:50 【问题描述】:

我一直在尝试将在python上开发的pytorch模型集成到ios中。我看过的例子来自这个github repo。

我在自己的应用程序中使用了相同的 d2go 模型。我注意到的一件事是,如果模型推理代码未包装在 DispatchQueue 全局中,如下所示

DispatchQueue.global().async 
    guard let outputs = self.inferencer.module.detect(image: &pixelBuffer) else 
        return
    

我收到类似Thread 1: EXC_BAD_ACCESS (code=1, address=0x7ffeeb4e0000) 的错误,或者如果我的模型需要很长时间才能运行推理,即使它包含在上面的 dispatchQueue 代码中,我也会收到类似Thread 4: EXC_BAD_ACCESS (code=1, address=0x7ff159bed010) 的错误。

我不确定线程​​在这种情况下是如何工作的。在新的 SwiftUI 框架中按下按钮时,我正在运行代码。

对为什么会发生这种情况有任何直觉吗?我在模拟器上试过以上方法

【问题讨论】:

【参考方案1】:

您可能应该在同一范围内(在调度块内)声明“pixelBuffer”

【讨论】:

不,它也崩溃了。我想知道是不是因为我使用的模型是 78mb 而 d2go 模型只有 2mb 大。

以上是关于为啥在IOS上运行torchscript模型推理会导致线程错误?的主要内容,如果未能解决你的问题,请参考以下文章

模型推理加速系列05: 推理加速格式TorchScript简介及其应用

模型推理加速系列BERT加速方案对比 TorchScript vs. ONNX

模型推理加速系列04:BERT加速方案对比 TorchScript vs. ONNX

Yolov5 Torchscript + Batch + 多GPU推理

pytorch部署torchscript篇

模型推理加速系列06: 基于resnet18加速方案评测