使用 IPEX-LLM 加速英特尔®至强®可扩展处理器上的大语言模型推理
随着生成式 AI 的蓬勃发展,有越来越多的用户希望在英特尔®至强®可扩展处理器上探索大语言模型的应用。英特尔®至强®可扩展处理器配备众多物理核心和充足的内存容量和高带宽,可以有效的支持大语言模型的工作负载需求;同时,英特尔®至强®可扩展处理器的稳定性和可靠性,可以有效保障大语言模型在企业级应用或云服务中的长时间运行。
Intel® LLM Library for PyTorch (IPEX-LLM) 是英特尔开源的大语言模型低比特优化库,可以高效的运行在英特尔®至强®可扩展处理器上。IPEX-LLM 利用第四代英特尔®至强®可扩展处理器提供的 AMX 指令集,以及一系列低比特优化,使业界流行的大语言模型得以流畅运行,体现了在英特尔®至强®可扩展处理器运行大语言模型推理的优异性价比。同时,IPEX-LLM 也无缝支持各种大语言模型社区,优化和方案,例如 Hugging Face, LangChain, LlamaIndex, vLLM, llama.cpp, ollama 等等。
使用 IPEX-LLM 可以在第四代英特尔®至强®可扩展处理器上运行当前流行的大语言模型的推理工作。下图展示了一部分模型的实测性能数据。图 1 性能数据基于 IPEX-LLM 低比特 INT4 优化,图 2 性能数据基于 IPEX-LLM BF16 Self-Speculative Decoding 优化。测试配置为输入 1024 个 Token,批处理大小 1,性能数据为每 Token 的延迟时间。
图 1:IPEX-LLM INT4 大语言模型推理延迟
图 2:IPEX-LLM BF16 (with Self-Speculative Decoding) 大语言模型推理延迟
请参考配置和免责声明以获取配置信息。
在第四代英特尔®至强®可扩展处理器上,可以使用 IPEX-LLM 非常轻松的构建大语言模型推理能力。用户可以通过参考快速安装指南以便在第四代英特尔®至强®可扩展处理器上安装和使用 IPEX-LLM。
我们提供了很多可以在第四代英特尔®至强®可扩展处理器上运行的大语言模型示例,用户可以在合适的示例基础上快速开发大语言模型推理应用。在用 IPEX-LLM 开发大语言模型推理应用时,用户可以使用 HuggingFace Transformer 样式的 API,仅需要做最小量的更改,例如使用合适的 import 声明,以及在 from_pretrained 参数中设置 “load_in_4bit=True” 来启用 IPEX-LLM 的低比特优化。具体改动可以参考以下代码示例:
from ipex_llm.transformers import AutoModelForCausalL
model = AutoModelForCausalLM.from_pretrained('/path/to/model/',
load_in_4bit=True).to("xpu")
模型会被自动转换为低比特并加载到执行计算工作的第四代英特尔®至强®可扩展处理器上,在这个过程中,IPEX-LLM 实现的各种基于硬件和软件的优化会被利用,以加速大语言模型的推理性能。
同样,使用 IPEX-LLM 的 BF16 Self-Speculative Decoding 也很简单。用户可以通过在加载模型时指定一个额外参数 speculative=True 来启用该功能。以下是示例代码片段:
from ipex_llm.transformers import AutoModelForCausalL
AutoModelForCausalLM.from_pretrained('/path/to/model/', =
True, =
torch.bf16, =
“bf16”), =
True, =
True, #use self-speculative decoding =
True, =
True) =
tokenizer(prompt, return_tensors='pt') =
inputs.input_ids.to(model.device) =
inputs.attention_mask.to(model.device) =
model.generate(input_ids, =
args.n_predict, =
attention_mask, =
do_sample=False)
在使用 BF16 Self-Speculative Decoding 时,IPEX-LLM 会在幕后自动利用低比特优化后的 INT4 小模型来加速 BF16 模型,从而提高 BF16 模型的推理速度。用户可以查看 IPEX-LLM BF16 Self-Speculative Decoding 的样例代码来获得更多信息。
用户可以在第四代英特尔®至强®可扩展处理器上运行大语言模型的性能测试,可以参考 IPEX-LLM 提供的性能测试快速指南 ,以正确的准备硬件和软件环境,以及调整测试脚本以满足用户的测试场景。在执行性能测试前,我们推荐用户使用 IPEX-LLM 的环境检查工具来进一步验证安装和运行环境是否正确设置。environment check utility scripts 。
本文介绍了如何使用 IPEX-LLM 在第四代英特尔®至强®可扩展处理器上进行大语言模型推理,以及低比特 INT4 和 BF16 Self-Speculative Decoding 的性能数据。用户可以参考 IPEX-LLM github 和程序样例来获得大语言模型的最新技术内容。
特别感谢史栋杰,胡雅白,王健,田翔宇对本文的贡献,以及 Padma Apparao 的重要支持。
本次数据为截止 2024 年 3 月的测试结果。测试硬件配置:Intel® Xeon® Platinum 8468, 48 cores, HT On, Turbo On, 2-socket, Total Memory 1024GB (16x64GB DDR5 4800 MT/s [4800 MT/s])。系统配置:BIOS 05.02.01, microcode 0x2b0004d0, OS: Ubuntu 22.04.3 LTS, Kernel: 6.2.0-37-generic。软件配置:bigdl-llm 2.5.0b20240313 (prior to migration to ipex-llm), pytorch 2.3.0.dev20240128+cpu, intel-extension-for-pytorch 2.3.0+git004cd72, transformers 4.36.2。性能数据为单路处理器上的测试结果,采用 greedy search 解码方式,输入为 1024 token,输出为 128 token,批处理大小为 1。
实际性能受使用情况、配置和其他因素的差异影响。更多信息请见 www.Intel.cn/PerformanceIndex。性能测试结果基于配置信息中显示的日期进行测试,且可能并未反映所有公开可用的安全更新。详情请参阅配置信息披露。没有任何产品或组件是绝对安全的。具体成本和结果可能不同。英特尔技术可能需要启用硬件、软件或激活服务。英特尔未做出任何明示和默示的保证,包括但不限于,关于适销性、适合特定目的及不侵权的默示保证,以及在履约过程、交易过程或贸易惯例中引起的任何保证。英特尔并不控制或审计第三方数据。请您审查该内容,咨询其他来源,并确认提及数据是否准确。© 英特尔公司版权所有。英特尔、英特尔标识以及其他英特尔商标是英特尔公司或其子公司在美国和 / 或其他国家的商标。其他的名称和品牌可能是其他所有者的资产。
谷歌大裁员引发元老集体抗议:领导脑袋空空,无能的中层管理团队不断扩大
“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大模型,Mac 即可运行,特斯拉前 AI 总监爆火科普 LLM
德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?
微信扫码关注该文公众号作者