跳到主要内容
Optimum Intel 是 🤗 Transformers 和 Diffusers 库与英特尔提供的不同工具和库之间的接口,用于加速英特尔架构上的端到端流水线。
英特尔® Transformers 扩展 (ITREX) 是一个创新的工具包,旨在通过在各种英特尔平台(包括英特尔 Gaudi2、英特尔 CPU 和英特尔 GPU)上实现基于 Transformer 模型的最佳性能,从而加速无处不在的 GenAI/LLM。
本页介绍了如何将 optimum-intel 和 ITREX 与 LangChain 结合使用。

Optimum-intel

所有与 optimum-intelIPEX 相关的功能。

安装

使用 optimum-intel 和 ipex 进行安装
pip install optimum[neural-compressor]
pip install intel_extension_for_pytorch
请按照如下安装说明进行操作
  • 按照此处的说明安装 optimum-intel。
  • 按照此处的说明安装 IPEX。

嵌入模型

参阅使用示例。我们还提供了一个完整的教程笔记本 rag_with_quantized_embeddings.ipynb,用于在 RAG 流水线中使用嵌入器。
from langchain_community.embeddings import QuantizedBiEncoderEmbeddings

英特尔® Transformers 扩展(ITREX)

(ITREX) 是一个创新的工具包,旨在加速英特尔平台上的基于 Transformer 的模型,特别是在第 4 代英特尔至强可扩展处理器 Sapphire Rapids(代号 Sapphire Rapids)上非常有效。 量化是一个通过使用更少位数表示权重来降低权重精度以减少内存和计算需求的过程。仅权重量化特指仅量化神经网络的权重,而保持其他组件(例如激活)的原始精度。 随着大型语言模型(LLM)的日益普及,人们对新的、改进的量化方法的需求日益增长,这些方法既能满足这些现代架构的计算需求,又能保持准确性。与 普通量化(如 W8A8)相比,仅权重量化可能是一个更好的权衡,可以在性能和准确性之间取得平衡,因为我们将在下文中看到,部署 LLM 的瓶颈是内存带宽,而通常仅权重量化可以带来更好的准确性。 在这里,我们将介绍用于 Transformers 大型语言模型的嵌入模型和仅权重量化,以及 ITREX。仅权重量化是深度学习中用于减少神经网络内存和计算要求的一种技术。在深度神经网络的上下文中,模型参数(也称为权重)通常使用浮点数表示,这会消耗大量内存并需要大量的计算资源。 所有与 intel-extension-for-transformers 相关的功能。

安装

安装 intel-extension-for-transformers。有关系统要求和其他安装提示,请参阅安装指南
pip install intel-extension-for-transformers
安装其他必需的软件包。
pip install -U torch onnx accelerate datasets

嵌入模型

参阅使用示例
from langchain_community.embeddings import QuantizedBgeEmbeddings

使用 ITREX 进行仅权重量化

参阅使用示例

配置参数详情

以下是 WeightOnlyQuantConfig 类的详细信息。

weight_dtype (字符串):权重数据类型,默认为“nf4”。

我们支持将权重量化为以下数据类型进行存储(WeightOnlyQuantConfig 中的 weight_dtype)
  • int8:使用 8 位数据类型。
  • int4_fullrange:与正常 int4 范围 [-7,7] 相比,使用 int4 范围的 -8 值。
  • int4_clip:剪辑并保留 int4 范围内的值,将其他值设置为零。
  • nf4:使用归一化浮点 4 位数据类型。
  • fp4_e2m1:使用常规浮点 4 位数据类型。“e2”表示 2 位用于指数,“m1”表示 1 位用于尾数。

compute_dtype (字符串):计算数据类型,默认为“fp32”。

虽然这些技术以 4 位或 8 位存储权重,但计算仍以 float32、bfloat16 或 int8(WeightOnlyQuantConfig 中的 compute_dtype)进行
  • fp32:使用 float32 数据类型进行计算。
  • bf16:使用 bfloat16 数据类型进行计算。
  • int8:使用 8 位数据类型进行计算。

llm_int8_skip_modules (模块名称列表):跳过量化的模块,默认为 None。

这是一个要跳过量化的模块列表。

scale_dtype (字符串):比例数据类型,默认为“fp32”。

目前仅支持“fp32”(float32)。

mse_range (布尔值):是否从范围 [0.805, 1.0, 0.005] 中搜索最佳剪辑范围,默认为 False。

use_double_quant (布尔值):是否量化比例,默认为 False。

尚未支持。

double_quant_dtype (字符串):为双重量化预留。

double_quant_scale_dtype (字符串):为双重量化预留。

group_size (整型):量化时的组大小。

scheme (字符串):权重被量化成的格式。默认为“sym”。

  • sym:对称。
  • asym:非对称。

algorithm (字符串):提高精度的算法。默认为“RTN”

  • RTN:四舍五入到最接近值(RTN)是一种我们认为非常直观的量化方法。
  • AWQ:仅保护 1% 的显著权重可以大大减少量化误差。通过观察每个通道的激活和权重分布来选择显著权重通道。在量化之前,显著权重也通过乘以一个大的比例因子进行量化以进行保留。
  • TEQ:一种可训练的等效变换,在仅权重量化中保留 FP32 精度。

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.