目录

一、 IPEX-LLM 与 OpenVINO 在项目中的使用场景

1. 计算性能优化的需求

2. 选择 IPEX-LLM 与 OpenVINO 的原因

二、IPEX-LLM 技术解析

2.1 IPEX-LLM 概述

2.2 架构与核心技术

2.3 性能与优化

三、OpenVINO 技术解析

3.1 OpenVINO 概述

通过 OpenVINO 模型优化器,开发者可以将这些框架训练的模型转换为 OpenVINO IR(Intermediate Representation,中间表示)格式,从而优化推理速度和跨硬件兼容性。3.2 架构与核心组件

3.3 性能

四、 IPEX-LLM 与 OpenVINO 技术比较

4.1 项目选择

4.2 IPEX-LLM 为什么无法支持 CPU GPU NPU 混合加速

4.3 架构设计对比


一、 IPEX-LLM 与 OpenVINO 在项目中的使用场景


在嵌入生成任务中,模型需要将文本或文档的语义信息转化为高维向量表示,以便用于后续的语义检索、信息检索以及语义匹配等任务。这一过程在 AIPC 等场景中至关重要。然而,随着数据规模的不断增长以及实时交互场景的普及,嵌入生成的延迟和计算效率逐渐成为影响系统整体性能的关键瓶颈。


1. 计算性能优化的需求


为了应对这些挑战,我们希望通过优化推理计算来减少模型推理的延迟、提高吞吐量,从而加快嵌入生成的效率。同时,为了充分利用现有计算资源,我们也希望支持GPU 加速,以利用 GPU 并行计算能力提升大规模推理性能。如果条件允许,我们还希望进一步利用 NPU 进行计算加速,以便在更低功耗、更高效计算的前提下提升推理能力。


2. 选择 IPEX-LLM 与 OpenVINO 的原因


在这样的需求背景下,IPEX-LLM 和 OpenVINO 各有其优势:

  • IPEX-LLM 专注于英特尔架构上的 LLM 训练和推理优化,可以在Intel CPUGPU和 NPU 上提供深度优化,减少计算开销,提高吞吐量。
  • OpenVINO 擅长推理优化和异构计算调度,可以帮助我们更好地利用 GPU NPU,进一步提升性能和能效比。



二、IPEX-LLM 技术解析


2.1 IPEX-LLM 概述


IPEX-LLM(Intel® Extension for PyTorch - Large Language Models)是 Intel Extension for PyTorch(IPEX)组件的一部分,专门用于优化大语言模型在 Intel 硬件上的训练和推理性能。其主要目标是利用 Intel 硬件架构特性,提高 PyTorch 生态下的大语言模型的计算效率,降低计算成本,并提升推理吞吐量。


主要优化方向:

适用场景:

  • 大语言模型(LLM)训练和推理加速
  • 企业级 AI 模型优化
  • 边缘和云端部署



2.2 架构与核心技术


IPEX-LLM 主要基于 PyTorch 生态,并在 Intel 硬件上做了大量优化。其架构主要包括以下关键优化技术:
计算并行化

  • 多线程优化:利用 Intel OpenMP 和 TBB(Threading Building Blocks)实现 CPU 计算的多线程优化,提升计算效率。
  • 数据流水线优化:在推理阶段,对 Transformer 模型计算过程进行优化,减少计算依赖,提高吞吐量。
  • 混合计算(CPU+GPU):对于特定层(如嵌入层)可以选择 CPU 计算,而计算密集型操作(如自注意力机制)则可以使用 GPU 计算,提升整体性能。

低精度计算(INT8 量化 & BF16 支持)

  • INT8 量化
    • 通过 OpenVINO 和 OneDNN 提供的 INT8 计算支持,将计算精度从 FP32 降至 INT8,减少计算开销,提高推理速度。
    • 量化方法包括:
      • 静态量化(Post-Training Quantization, PTQ)
      • 动态量化(Dynamic Quantization, DQ)

特性 静态量化(PTQ) 动态量化(DQ)
何时量化 训练后,离线量化 推理时,动态量化
量化内容 权重 + 激活值 权重(固定)+ 激活值(动态)
计算速度 最快 稍慢(需动态调整量化参数)
模型大小 最小(INT8 全量化) 较大(仅部分量化)
精度 可能损失较多 更稳定,损失较少
适用任务 计算机视觉、低功耗 AI(ResNet, YOLO, MobileNet) NLP、大规模推理(BERT, GPT, T5)
是否需要校准数据 ✅ 需要 ❌ 不需要
适用硬件 CPU/GPU/NPU CPU/GPU(特别是 NLP 任务)

  • BF16(BFloat16)优化
    • 对大模型训练引入 BF16 计算,在保持数值稳定性的同时减少存储需求,提高计算吞吐量。
    • 适用于 Intel AMX(Advanced Matrix Extensions) 和 Intel GPU



常见类型:

精度 数据类型 优点 缺点 适用场景
FP32(单精度浮点) 32-bit 浮点数 计算精度高 计算开销大,占用内存多 训练、大规模计算
FP16(半精度浮点) 16-bit 浮点数 内存占用减少 50%,计算速度更快 可能影响数值稳定性 GPU/AI 加速器推理
BF16(Brain Floating Point) 16-bit 浮点数,指数范围与 FP32 相同 计算速度快,适合 LLM 训练 精度稍逊于 FP32 LLM 训练 & 服务器推理
INT8(8-bit 整数) 8-bit 整数 计算速度提升 2~4 倍,内存占用减少 75% 需要校准,可能损失精度 推理加速(CPU/NPU)
INT4(4-bit 整数) 4-bit 整数 计算效率极高,内存占用大幅降低 精度损失较大 轻量级设备、边缘计算


内存优化 & 计算图优化

  • 算子融合(Operator Fusion)
    • 结合 PyTorch JIT 编译器,将多个计算算子融合成一个,减少数据传输和计算开销。

  • 计算图优化
    • 通过 Intel OneDNN 进行底层优化,减少计算冗余,提高矩阵运算的吞吐量。
    • 子图优化(Subgraph Optimization),针对 Transformer 计算特性,减少不必要的数据拷贝和计算步骤。

  • 内存访问优化
    • 采用 NUMA(Non-Uniform Memory Access)优化,使 CPU 计算时减少跨内存访问,提高吞吐量。
    • KV-Cache 优化,提升生成式 LLM 推理时的上下文处理速度。

2.3 性能与优化


IPEX-LLM 通过对 PyTorch 进行优化,使其在 Intel 硬件上能达到更高的计算效率。其主要优化效果包括:

  • 训练吞吐量提升:相比原生 PyTorch,在 Intel Xeon CPU 和 Intel GPU 上,训练吞吐量可提升 1.5~3 倍
  • 推理延迟降低:使用 INT8 量化后,推理速度可提高 2~4 倍,同时减少内存占用。
  • 与 PyTorch 深度整合:开发者可以直接使用 PyTorch API,只需一行代码即可启用 IPEX 进行优化。

与 PyTorch 的整合情况
IPEX-LLM 直接支持 PyTorch,并在 OneDNN(Intel 深度学习优化库)的基础上进行了底层优化。它能够在 PyTorch 计算图的基础上自动优化算子,使得计算吞吐量更高,推理延迟更低
性能测试

模型 平台 PyTorch(原生) IPEX-LLM 优化后 性能提升
GPT-2 推理 Intel Xeon CPU 1.0x 2.2x 1.2
BERT 训练 Intel Xeon CPU 1.0x 1.8x 0.8
BERT 推理(INT8) Intel Xeon CPU 1.0x 3.5x 2.5
Llama 推理 Intel GPU 1.0x 2.5x 1.5


三、OpenVINO 技术解析


3.1 OpenVINO 概述


OpenVINO是 Intel 推出的深度学习推理优化工具,主要用于在 Intel 硬件(CPU、GPU、VPU、FPGA、NPU)上高效运行 AI 推理任务。它能够优化和加速来自 TensorFlow、PyTorch、ONNX、PaddlePaddle 等框架训练的模型,提供高效的推理性能、低延迟以及跨平台兼容性。


支持的硬件平台


OpenVINO 适用于多种 Intel 硬件,支持异构计算

  • CPU(Intel Xeon, Core, Atom 等)
  • GPU(Intel Arc, Intel UHD, Intel Iris Xe)
  • VPU(Vision Processing Unit)(如 Intel Movidius)
  • FPGA(Field Programmable Gate Array)
  • NPU(Neural Processing Unit)(Intel 未来 AI 加速芯片)

支持的深度学习框架


OpenVINO 支持从多个深度学习框架导入模型:

  • TensorFlow / TensorFlow Lite
  • PyTorch
  • ONNX
  • PaddlePaddle
  • MXNet

通过 OpenVINO 模型优化器,开发者可以将这些框架训练的模型转换为 OpenVINO IR(Intermediate Representation,中间表示)格式,从而优化推理速度和跨硬件兼容性。


3.2 架构与核心组件


OpenVINO 采用模块化架构,主要由以下几个核心组件组成:
Inference Engine(推理引擎)

  • 负责执行优化后的 AI 模型,并针对不同硬件进行推理计算。
  • 通过 异构计算(Heterogeneous Execution),可以自动分配计算任务到 CPU、GPU、NPU 或 FPGA,提升整体推理效率。
  • 支持同步(Sync)和异步(Async)推理,以优化吞吐量和延迟。

Model Optimizer(模型优化器)

  • 将 TensorFlow、PyTorch、ONNX 等框架训练的模型 转换为 OpenVINO IR 格式
  • 关键优化:
    • 计算图优化(Graph Optimization):删除冗余运算,优化计算图结构。
    • 算子融合(Operator Fusion):合并多个计算操作,减少计算步骤。
    • 数据格式优化(Layout Optimization):优化张量(Tensor)排列方式,提高数据访问效率。


Post-Training Optimization Toolkit(后训练优化工具包,POT)

  • 用于模型量化(Quantization),支持 FP32 → INT8 低精度推理,减少计算开销,提高推理速度。
  • 采用感知量化技术,不需要重新训练模型即可降低精度。

OpenVINO Runtime(运行时库)

  • 提供 Python 和 C++ API,开发者可以方便地调用 OpenVINO 进行推理。
  • 支持 多线程优化 和 设备自动选择。

关键优化技术

优化技术 描述
计算图优化 删除冗余算子,减少计算复杂度
算子融合 合并多个计算算子,提高执行效率
低精度计算 支持 FP16 / INT8 / BF16 计算,减少内存占用
异构计算 任务自动分配到 CPU / GPU / NPU / FPGA
多线程优化 充分利用多核 CPU 并行计算
内存优化 通过 NUMA(非一致性内存访问)优化 提高数据访问速度



3.3 性能


对比其他加速方案
OpenVINO vs. 原生 PyTorch/TensorFlow

性能指标 PyTorch/TensorFlow(原生推理) OpenVINO(优化后)
推理延迟 较高 降低 2~4 倍
吞吐量 标准 提升 1.5~3 倍
内存占用 标准 减少 30%~50%
精度损失 无(FP32) 量化后精度损失 <1%


OpenVINO vs. TensorRT(NVIDIA)

性能指标 OpenVINO(Intel 生态) TensorRT(NVIDIA GPU 生态)
支持硬件 CPU / GPU / VPU / FPGA / NPU NVIDIA GPU
模型兼容性 支持 ONNX / TensorFlow / PyTorch 主要支持 TensorFlow & ONNX
低精度支持 INT8 / FP16 / BF16 / FP32 INT8 / FP16 / FP32
推理延迟 优化 2~4 倍 优化 3~6 倍(GPU 加速)
吞吐量 1.5~3 倍提升 2~4 倍提升(GPU 优化)


结论:

  • 如果只使用 NVIDIA GPU,TensorRT 在 GPU 端推理性能更优。
  • OpenVINO 适用于 Intel 全生态(CPU/GPU/NPU/FPGA),特别是在 CPU/NPU 上的低功耗推理优化 是其核心优势。


Benchmark
https://docs.openvino.ai/2025/about-openvino/performance-benchmarks/generative-ai-performance.html


四、 IPEX-LLM 与 OpenVINO 技术比较


4.1 项目选择


在我们的项目中,为了优化推理性能和计算效率,我们希望支持 CPU、GPU 和 NPU 的混合加速。然而,当前使用的 IPEX-LLM 主要针对 Intel CPU 和 GPU 进行了优化,虽然支持 NPU 加速但是无法与GPU加速同时使用,这限制了我们在异构计算中的优化空间。因此,最后选型定了 OpenVINO,它具备更强的异构计算能力,能够在 CPU、GPU 和 NPU 之间灵活调度计算任务,从而实现更高效的推理加速。


4.2 IPEX-LLM 为什么无法支持 CPU GPU NPU 混合加速


尽管 IPEX-LLM 目前支持 CPU-GPU 混合计算,但它无法实现 CPU-GPU-NPU 混合加速。主要有两个核心原因:


1. 不同硬件之间的 I/O 开销较大


在多硬件异构计算(CPU、GPU、NPU)环境下,不同计算单元通常拥有独立的内存架构,因此跨设备数据传输需要显式的 I/O 操作。这种数据传输往往带来较高的延迟和额外的计算开销,尤其是在以下场景中:

  • GPU 和 NPU 之间的数据交换 需要额外的数据拷贝,并且通常没有高效的共享内存机制来优化这一过程。
  • 除非使用统一内存,否则每次计算时都需要显式传输数据,导致高昂的 I/O 开销。
  • 在 NLP 任务(如 Transformer 模型)中,某些计算层需要频繁地在 CPU、GPU、NPU 之间切换,如果 I/O 过高,则计算资源的加速效果会被数据传输开销抵消,甚至可能降低整体性能。

2. 异构计算需要复杂的任务调度和不同的配置


不同计算硬件(CPU、GPU、NPU)的计算吞吐量、延迟、并行能力和计算模式各不相同,因此高效的异构计算需要一个复杂的调度系统,以确保任务能够合理分配到合适的计算单元。但在 IPEX-LLM 中,主要存在以下问题:

  • 缺乏跨设备的统一任务调度机制
    • IPEX-LLM 主要依赖 PyTorch 的调度系统,但 PyTorch 本身主要针对 CPU 和 GPU 进行了优化,并不具备 NPU 计算的任务调度支持。
    • 在 GPU 和 NPU 之间动态分配计算任务,需要额外的并行计算框架(如 OpenVINO 或 TensorRT)来提供调度支持,而 IPEX-LLM 本身没有内置这样的机制。

  • 不同硬件的计算能力不匹配,导致调度复杂化
    • CPU 适合逻辑计算、前处理任务,但不擅长矩阵计算。
    • GPU 适合大规模并行计算(如 Transformer 层计算),但启动延迟较高。
    • NPU 适合特定 AI 计算任务(如嵌入层计算、卷积操作),但计算模式固定,适用范围较窄。
    • 如果没有合适的任务调度机制,在 CPU-GPU-NPU 之间合理分配计算任务将变得极为复杂,可能导致部分硬件资源闲置,整体效率反而降低。

  • 软件库和驱动的兼容性问题
    • 同时安装 NPU 和 GPU 驱动时,存在依赖冲突,导致无法正确加载或初始化多个计算设备。



4.3 架构设计对比

设计目标 IPEX-LLM OpenVINO
核心目标 训练 + 推理优化 推理优化
支持框架 仅 PyTorch PyTorch、TensorFlow、ONNX、PaddlePaddle
支持硬件 CPU / GPU(Intel) CPU / GPU / NPU / VPU / FPGA
优化方式 PyTorch-native 优化(OneDNN 加速、BF16/INT8 支持) 计算图优化、自动调度、INT8 量化、异构计算
是否支持混合加速 仅 CPU+GPU 支持 CPU + GPU + NPU
是否适用于训练 ✅ 是 ❌ 仅推理
是否适用于多种 AI 任务 ❌ 仅适合 NLP/LLM ✅ 计算机视觉 / 语音 / NLP / 推荐系统


4.4 易用性与集成性对比
在实际使用中,IPEX-LLM 相比 OpenVINO 在易用性集成性方面各有优劣。
IPEX-LLM 易用性
✅ 优点

  • PyTorch-native API,优化简单。
  • 集成 OneDNN,优化效果自动应用,无需额外的转换流程。
  • 可与常见大模型提供平台无缝集成。

❌ 缺点

  • 更新速度快,但文档滞后:经常遇到 代码 API 变更,但文档没更新,导致某些新版本的功能找不到官方说明。
  • 只支持 PyTorch,其他框架无法使用

OpenVINO 易用性
✅ 优点

  • 支持多种框架,可以直接加载 TensorFlow、ONNX、PyTorch 训练好的模型。
  • 具备自动设备调度能力,无需手动优化 CPU/GPU/NPU 任务。

❌ 缺点

  • 文档写得一般
    • 缺少详细参数解释,很多 API 需要靠实验才能摸清楚。
    • 示例代码问题多,部分 Demo 复现不了,或者与最新版本不兼容。

  • 集成不如 IPEX-LLM 方便,需要先转换模型(Model Optimizer),然后才能进行推理。

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

公众号搜索神州数码云基地,回复【AI】进入AI社群讨论。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐