IPEX-LLM简介
IPEX-LLM是英特尔推出的一个PyTorch库,旨在以极低的延迟在英特尔CPU和GPU上运行大语言模型(LLM)。它适用于各种英特尔硬件,包括带有集成显卡的本地PC、独立显卡如Arc、Flex和Max等。
IPEX-LLM的主要特点包括:
- 基于llama.cpp、transformers、bitsandbytes、vLLM、qlora、AutoGPTQ等优秀项目构建
- 与llama.cpp、Ollama、Text-Generation-WebUI、HuggingFace transformers、LangChain、LlamaIndex、DeepSpeed-AutoTP、vLLM、FastChat、Axolotl等无缝集成
- 已优化/验证超过50个模型,包括LLaMA/LLaMA2、Mistral、Mixtral、Gemma、LLaVA、Whisper、ChatGLM2/3、Baichuan/Baichuan2、Qwen/Qwen-1.5等
最新更新
IPEX-LLM最近的一些重要更新包括:
- 支持在英特尔GPU上运行Microsoft的GraphRAG
- 增加了对大型多模态模型的广泛支持,如StableDiffusion、Phi-3-Vision、Qwen-VL等
- 在英特尔GPU上增加了FP6支持
- 为英特尔Core Ultra处理器增加了实验性NPU支持
- 增加了管道并行推理支持,可以在2个或更多英特尔GPU上轻松运行大型LLM
- 支持在英特尔GPU上运行RAGFlow
- 支持使用Axolotl在英特尔GPU上进行LLM微调
性能表现
IPEX-LLM在英特尔Core Ultra和英特尔Arc GPU上展现了出色的Token生成速度。用户可以按照Benchmarking指南自行运行IPEX-LLM性能基准测试。
在模型准确性方面,IPEX-LLM在Wikitext数据集上进行了困惑度测试,结果显示各种低比特量化(如sym_int4、q4_k、fp6、fp8等)与fp16相比保持了较高的准确性。
快速入门
IPEX-LLM提供了多种快速入门的方式:
Docker
- GPU上的C++推理:在英特尔GPU上运行llama.cpp、ollama、OpenWebUI等
- GPU上的Python推理:在英特尔GPU上运行HuggingFace transformers、LangChain、LlamaIndex、ModelScope等
- GPU上的vLLM:在英特尔GPU上运行vLLM服务
- CPU上的vLLM:在英特尔CPU上运行vLLM服务
- GPU上的FastChat:在英特尔GPU上运行FastChat服务
- GPU上的VSCode:在英特尔GPU上使用VSCode开发和运行IPEX-LLM应用
使用指南
- llama.cpp:在英特尔GPU上运行llama.cpp(使用IPEX-LLM的C++接口作为llama.cpp的加速后端)
- Ollama:在英特尔GPU上运行ollama(使用IPEX-LLM的C++接口作为ollama的加速后端)
- 使用llama.cpp和ollama运行Llama 3
- vLLM:在英特尔GPU和CPU上运行vLLM
- FastChat:在英特尔GPU和CPU上运行FastChat服务
- 多GPU服务:利用DeepSpeed AutoTP和FastAPI在多个英特尔GPU上运行IPEX-LLM服务
- Text-Generation-WebUI:在oobabooga WebUI中运行IPEX-LLM
- Axolotl:使用Axolotl进行LLM微调
- 基准测试:在英特尔CPU和GPU上运行IPEX-LLM的延迟和吞吐量基准测试
应用示例
- GraphRAG:使用IPEX-LLM运行Microsoft的GraphRAG
- RAGFlow:使用IPEX-LLM运行RAGFlow(一个开源RAG引擎)
- LangChain-Chatchat:使用IPEX-LLM运行LangChain-Chatchat(使用RAG管道的知识库QA)
- 编码助手:在VSCode中使用IPEX-LLM运行Continue(编码助手)
- Open WebUI:使用IPEX-LLM运行Open WebUI
- PrivateGPT:使用IPEX-LLM运行PrivateGPT与文档交互
- Dify平台:在Dify(生产就绪的LLM应用开发平台)中运行IPEX-LLM
安装指南
- Windows GPU:在带有英特尔GPU的Windows上安装IPEX-LLM
- Linux GPU:在带有英特尔GPU的Linux上安装IPEX-LLM
代码示例
IPEX-LLM提供了丰富的代码示例,涵盖了以下方面:
- 低比特推理:INT4、FP8/FP6/FP4、INT8、INT2等
- FP16/BF16推理:包括可能的自推测解码优化
- 分布式推理:管道并行和DeepSpeed AutoTP
- 保存和加载:低比特模型、GGUF、AWQ、GPTQ等
- 微调:LoRA、QLoRA、DPO、QA-LoRA、ReLoRA等
- 与社区库集成:HuggingFace transformers、PyTorch、LangChain、LlamaIndex、DeepSpeed-AutoTP、Axolotl等
API文档
IPEX-LLM提供了HuggingFace Transformers风格的API(Auto Classes)以及用于任意PyTorch模型的API。
常见问题
IPEX-LLM提供了FAQ和故障排除指南,帮助用户解决常见问题。
验证模型
IPEX-LLM已经优化和验证了超过50个模型,包括LLaMA/LLaMA2、Mistral、Mixtral、Gemma、LLaVA、Whisper、ChatGLM2/3、Baichuan/Baichuan2、Qwen/Qwen-1.5、InternLM等。这些模型在CPU和GPU上都有相应的示例代码。
总的来说,IPEX-LLM为在英特尔硬件上高效运行大语言模型提供了一个强大而灵活的解决方案,支持广泛的模型、任务和集成场景。无论是本地部署还是服务器端应用,IPEX-LLM都能帮助开发者充分发挥英特尔硬件的性能潜力,实现低延迟、高效率的LLM推理和微调。