coreml 推理结果与 cpu 和 gpu 不同

     2023-03-27     263

关键词:

【中文标题】coreml 推理结果与 cpu 和 gpu 不同【英文标题】:coreml inference results are different with cpu and gpu 【发布时间】:2020-05-07 13:27:32 【问题描述】:

操作系统:macos Catalina 10.15.2 xcode: 11.3 coreml3.0

我将相同的模型输入提供给相同的 mlmodel。但是使用 cpu 设备和 gpu 设备的推理结果是不同的。

结果如下,左边文件是使用cpu的推理结果(第二列),右边文件是使用CpuAndGpu的推理结果(第二列)。我用beyond compare来比较两个文件,红色标注的数据就是区别。

有谁知道这个问题以及如何解决它?

enter image description here

【问题讨论】:

【参考方案1】:

这本身不是问题。在 GPU 上使用 16 位浮点数,而在 CPU 上使用 32 位浮点数。 16 位浮点数的精度较低,这解释了您得到的不同结果。

有些数字会稍大一些,有些会稍小一些,但通常这些影响会相互抵消,您不会注意到差异。

(但是,如果您的模型生成图像,您可能会注意到 16 位浮点数提供的较低精度造成的像素伪影。)

【讨论】:

我还有两个问题。首先,我使用 coremltools 对模型进行了 16 位量化。但是在设备上的推理速度并没有提高。只有模型尺寸减小。其次,某些检测模型使用coremltools的16bit量化可能会损失很多精度。但是在设备(gpu-16bit)上运行的模型不会损失精度。那么为什么设备上的 gpu(或 npu)-16bit 比使用 coremltools 的 quantization-16bit 更好呢?他们用来量化 mlmodel 的方法可能不同吗?谢谢@Matthijs Hollemans 量化仅影响权重在模型中的存储方式,而不影响运行时发生的情况。在 GPU/ANE 上,无论权重如何量化(或不量化),网络始终以 16 位浮点数运行。

当应用程序进入后台时,应用程序在前台使用带有 GPU 的 CoreML 无法切换到 CPU

】当应用程序进入后台时,应用程序在前台使用带有GPU的CoreML无法切换到CPU【英文标题】:AppusesCoreMLwithGPUintheforegroundfailstoswitchtoCPUwhenappgoestobackground【发布时间】:2019-07-2303:54:17【问题描述】:我正在使用Swift在iOS应用程序中实... 查看详情

CoreML 模型在 coremltools 和 Xcode 之间产生不同的结果

】CoreML模型在coremltools和Xcode之间产生不同的结果【英文标题】:CoreMLmodelyieldsdifferentresultsbetweencoremltoolsandXcode【发布时间】:2019-09-1913:58:32【问题描述】:我创建了一个基于自定义PyTorchCNN模型的.mlmodel文件,方法是先将PyTorch模... 查看详情

模型训练与推理中为什么需要使用gpu?基本概念梳理

...呢?文章简单梳理了GPU的一些基本概念、GPU在模型训练和推理中的优势、国内外GPU/ASIC芯片的概况。随着AI尤其是ChatGPT的大火,像英伟达、国内的寒武纪等GPU芯片/AI芯片厂商股价也随之大幅攀升。(寒武纪股价)GPU就是我们日常... 查看详情

cpu推理|使用英特尔sapphirerapids加速pytorchtransformers(代码片段)

...倍的加速,取得了近线性的扩展比。本文我们将重点关注推理。使用基于PyTorch的HuggingFacetransformers模型,我们首先在IceLake服务器上分别测量它们在长、短两种文本序列上的性能。然后,我们在SapphireRapids服务器和最新版本的Huggin... 查看详情

CoreML 推理时间是不是会随着迭代而增长?

】CoreML推理时间是不是会随着迭代而增长?【英文标题】:DoesCoreMLinferencetimegrowwithiterations?CoreML推理时间是否会随着迭代而增长?【发布时间】:2020-05-1506:26:24【问题描述】:我必须在Swift中测量我的ML模型的推理时间。为此,... 查看详情

从spir-v到ispc:将gpu计算转化为cpu计算

...扩展,与其他CPU端游戏资产之间进行基于CPU的交互,保证结果的确定性和一致性等等。查看详 查看详情

为啥 CPU(使用 SKLearn)和 GPU(使用 RAPID)上的 RandomForestClassifier 获得不同的分数,非常不同?

...使用SKLearn)和GPU(使用RAPID)上的RandomForestClassifier获得不同的分数,非常不同?【英文标题】:WhyRandomForestClassifieronCPU(usingSKLearn)andonGPU(usingRAPIDs)getdifferentsscores,verydifferent?为什么CPU(使用SKLearn)和GPU(使用RAPID)上的RandomForestCl... 查看详情

详解gpu的内存带宽与cpu的不同

参考技术A在先前的文章中我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。如下表所示(GDDR和HBM都是GPU的显存规格),基本上GPU的内存带宽要比CPU多一个数... 查看详情

能解释一下cpu和gpu的并行运算和串行运算吗

...一个任务,这个任务完成后,才执行下一个任务,而GPU则不同,其设计目标是同一时钟周期内尽可能的完成多的但相对简单的任务,即将任务并列起来,处理方式是很多任务同时一次处理,简单的说就是CPU是全能型的高质量处理... 查看详情

cpu和gpu的区别

...注明出处。CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些 查看详情

pytorch2如何通过算子融合和cpu/gpu代码生成加速深度学习(代码片段)

...器在深度学习中发挥着非常重要的作用,可以提高训练和推理性能,提高能效,并针对多样化的AI加速器硬件。在这篇博文中,我将讨论为PyTorch2.0提供支持的深度学习编译器技术。我将引导您完成编译过程的不同阶段,并通过代... 查看详情

Google colab 上的结果与本地结果不同

】Googlecolab上的结果与本地结果不同【英文标题】:DifferentresultsonGooglecolabthanlocal【发布时间】:2021-06-0109:21:33【问题描述】:我正在训练一个unet模型。我开始用我的电脑训练,但它太慢了,因为它没有用GPU运行。因此,我开始... 查看详情

vray为啥不用gpu渲染

...在相同场景下简单地从一个引擎切换到另一个引擎并比较结果来测试两个V-Ray引擎的性能。这种方法是不准确的。这两个引擎的工作方式和执行方式不同。因此,建议使用针对特定渲染器进行了优化的场景。与CPU相比,使用GPU的... 查看详情

使用 Keras 在 GPU 上进行推理

】使用Keras在GPU上进行推理【英文标题】:InferenceonGPUwithKeras【发布时间】:2020-10-2506:30:10【问题描述】:我正在尝试使用我的RTX2060Super对Keras进行预测。由于某种原因,它似乎在我的CPU上运行。这是我用于调试的测试脚本:import... 查看详情

让gpu跑的更快

...cpu会卡的一比...在云服务中使用GPU是获得低延迟深度学习推理服务最经济的方式。使用GPU的主要瓶颈之一是通过PCIe总线在CPU和GPU内存之间复制数据的速度。对于许多打算用于高分辨率图像和视频处理的深度学习模型来说,简... 查看详情

cpu与gpu区别大揭秘

...成为近些年的热点话题之一。  为什么二者会有如此的不同呢?首先要 查看详情

使用 GPU 而不是 CPU 与 Keras 和 Linux 的 Tensorflow 后端

】使用GPU而不是CPU与Keras和Linux的Tensorflow后端【英文标题】:UsingGPUinsteadofCPUwithKeraswithTensorflowBackendforLinux【发布时间】:2017-10-1104:17:08【问题描述】:我无法让Keras使用GPU版本的Tensorflow而不是CPU。每次我导入keras时,它都会说:&... 查看详情

人脸识别中gpu与cpu两者的区别是啥?

...技术D人脸识别gpu和cpu两者的区别是什么人呢?这肯定是不同的,它的cpu识别是更好的,西皮 查看详情