教程概述
本教程将带你深入了解 Meta AI 的 Segment Anything Model(SAM) 的强大图像分割能力,并重点演示如何通过 OpenVINO NNCF 工具 对其编码器进行 INT8 量化压缩,在几乎不影响模型精度的前提下,显著提升 CPU 端的推理性能、压缩模型体积。内容涵盖量化基础、NNCF 训练后量化(PTQ)模式详解,以及完整的实战步骤,适合有一定深度学习基础的开发者快速上手。
01 前言:什么是 SAM?
“分割一切,大家一起失业!”——这句话在社交媒体上大火,说的正是 Segment Anything Model(简称 SAM)。SAM 是由 Meta AI 推出的强大人工智能图像分割模型,能够自动识别图像中哪些像素属于同一个对象,并对各个对象进行自动风格处理,广泛用于科学图像分析、照片编辑等场景。
SAM 的完整应用由三部分组成:
- 图片编码器模型(encoder)
- 掩码解码(mask decoder)
- 提示编码模型(prompt encoder)
其中,大部分算力负载和推理延迟都集中在图片编码器部分,因此提升编码器的执行效率成为 SAM 落地的关键优化方向之一。本教程将重点演示如何通过 OpenVINO 的 NNCF 模型压缩工具 对编码器进行量化压缩,实现 CPU 侧的性能飞跃。

图:SAM 模型任务 pipeline
02 量化介绍
在实战之前,必须先理解 量化 的概念。量化是指 在不改变模型结构的前提下,将模型参数的表达区间从 FP32 映射到 INT8 或 INT4 范围,用更小的数值位宽表示相同的信息。这样做可以:
- 压缩模型体积,降低内存占用
- 在模型执行时,系统自动调用硬件平台针对低比特数据优化的 指令集或 kernel 函数,大幅提升性能
例如,Intel 的 A VX512 VNNI 扩展指令集将原本需要 3 个时钟周期 才能完成的 INT8 矩阵点乘与加法运算,压缩到 1 个时钟周期;而最新的 AMX 指令集 更是将多个 VNNI 模块堆叠,实现了成倍的性能提升。

图:不同精度数据的表示位宽

图:INT8 矩阵点乘与加法运算指令集优化
