英特尔® Transformer 扩展工具包
一款创新的基于 Transformer 的工具包,加速 GenAI/LLM 在各处的应用
🚀最新消息
- [2024/06] 支持 Qwen2,详情请见 博客
- [2024/04] 支持推出新一代 Llama 模型 Meta Llama 3。查看 使用 Intel AI 解决方案加速 Meta* Llama 3。
- [2024/04] 在 Intel Vision Pat's Keynote 中展示了 4、5 和 6 代 Xeon 可扩展处理器上的聊天机器人。
- [2024/04] 支持 INT4 在 Intel Meteor Lake 上的推理。
- [2024/04] 在 GPT-J 推理中,5 代 Xeon 在 MLPerf v4.0 提交中比 v3.1 提升了 1.8 倍的性能。 新闻,结果。
- [2024/01] 支持 INT4 在 Intel GPU 上的推理,包括 Intel 数据中心 GPU Max 系列(如 PVC)和 Intel Arc A 系列(如 ARC)。查看 示例 和 脚本。
- [2024/01] 在 CES 2024 Great Minds 会议中展示了 Intel Hybrid Copilot,主题为 "将 AI 的无限潜力带到各处"。
- [2023/12] 支持 QLoRA 在 CPU 上的推理,使在客户端 CPU 上进行微调成为可能。查看 博客 和 自述文件 了解更多细节。
- [2023/11] 发布了 top-1 7B 大小的 LLM NeuralChat-v3-1 和 DPO 数据集。查看 WorldofAI 发布的 精彩视频。
- [2023/11] 发布了一个 4-bit 聊天机器人演示(基于 NeuralChat),可在 Intel Hugging Face Space 上使用。欢迎试用!要在本地设置演示,请按照 说明 进行操作。
🏃安装
从 Pypi 快速安装
pip install intel-extension-for-transformers
有关系统要求和其他安装提示,请参阅 安装指南
🌟简介
英特尔® Transformer 扩展工具包是一款创新的工具包,旨在通过在各种 Intel 平台上优化 Transformer 模型的性能,加速 GenAI/LLM 在各处的应用。该工具包提供以下关键功能和示例:
-
通过扩展 Hugging Face transformers API 并利用 英特尔® 神经压缩器,提供基于 Transformer 模型的无缝模型压缩体验
-
高级软件优化和独特的压缩感知运行时(在 NeurIPS 2022 的论文 Fast Distilbert on CPUs 和 QuaLA-MiniLM: a Quantized Length Adaptive MiniLM 以及 NeurIPS 2021 的论文 Prune Once for All: Sparse Pre-Trained Language Models 中发布)
-
优化的 Transformer 模型包,如 Stable Diffusion,GPT-J-6B,GPT-NEOX,BLOOM-176B,T5,Flan-T5,以及端到端工作流如 基于 SetFit 的文本分类 和 文档级情感分析 (DLSA)
-
NeuralChat,一个可定制的聊天机器人框架,通过利用丰富的 插件(如 知识检索,语音交互,查询缓存,和 安全防护)在几分钟内创建属于自己的聊天机器人。此框架支持 Intel Gaudi2/CPU/GPU。
-
大型语言模型 (LLM) 的推理,在 Intel CPU 和 Intel GPU(待定)上通过仅权重量化内核进行纯 C/C++ 推理,支持 GPT-NEOX,LLAMA,MPT,FALCON,BLOOM-7B,[OPT](https://github.com/intel/neural-speed
🔓验证的软件
软件 | 微调 | 推理 | ||
完整 | PEFT | 8-bit | 4-bit | |
PyTorch | 2.0.1+cpu, 2.0.1a0 (gpu) | 2.0.1+cpu, 2.0.1a0 (gpu) | 2.1.0+cpu, 2.0.1a0 (gpu) | 2.1.0+cpu, 2.0.1a0 (gpu) |
Intel® Extension for PyTorch | 2.1.0+cpu, 2.0.110+xpu | 2.1.0+cpu, 2.0.110+xpu | 2.1.0+cpu, 2.0.110+xpu | 2.1.0+cpu, 2.0.110+xpu |
Transformers | 4.35.2(CPU), 4.31.0 (Intel GPU) | 4.35.2(CPU), 4.31.0 (Intel GPU) | 4.35.2(CPU), 4.31.0 (Intel GPU) | 4.35.2(CPU), 4.31.0 (Intel GPU) |
Synapse AI | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
Gaudi2 driver | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 |
intel-level-zero-gpu | 1.3.26918.50-736~22.04 | 1.3.26918.50-736~22.04 | 1.3.26918.50-736~22.04 | 1.3.26918.50-736~22.04 |
🔓验证的操作系统
Ubuntu 20.04/22.04, Centos 8.
🌱快速开始
聊天机器人
下面是创建聊天机器人的示例代码。查看更多示例。
服务 (OpenAI兼容的RESTful APIs)
NeuralChat 提供了 OpenAI 兼容的 RESTful API 进行聊天,因此您可以将 NeuralChat 作为 OpenAI API 的替代品。 您可以通过 Shell 命令或 Python 代码启动 NeuralChat 服务器。
# Shell 命令
neuralchat_server start --config_file ./server/config/neuralchat.yaml
# Python 代码
from intel_extension_for_transformers.neural_chat import NeuralChatServerExecutor
server_executor = NeuralChatServerExecutor()
server_executor(config_file="./server/config/neuralchat.yaml", log_file="./neuralchat.log")
可以通过OpenAI 客户端库, curl
命令和requests
库访问 NeuralChat 服务。查看更多内容NeuralChat。
离线模式
from intel_extension_for_transformers.neural_chat import build_chatbot
chatbot = build_chatbot()
response = chatbot.predict("告诉我有关 Intel Xeon 可扩展处理器的信息。")
基于 Transformers 的扩展 API
以下是使用扩展 Transformers API 的示例代码。查看更多示例。
INT4 推理 (CPU)
我们鼓励您安装NeuralSpeed以获得最新的功能(例如,CPU 上的 LLM 低比特推理支持 GGUF)。您可能还想使用 v1.3 而不安装 NeuralSpeed,方法请参考文档。
from transformers import AutoTokenizer
from intel_extension_for_transformers.transformers import AutoModelForCausalLM
model_name = "Intel/neural-chat-7b-v3-1"
prompt = "很久很久以前,有一个小女孩,"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
model = AutoModelForCausalLM.from_pretrained(model_name, load_in_4bit=True)
outputs = model.generate(inputs)
您还可以从 Huggingface 加载 GGUF 格式模型,我们目前仅支持 Q4_0/Q5_0/Q8_0 gguf 格式。
from transformers import AutoTokenizer
from intel_extension_for_transformers.transformers import AutoModelForCausalLM
# 指定 GGUF 仓库在 Huggingface 上
model_name = "TheBloke/Llama-2-7B-Chat-GGUF"
# 从上述仓库下载特定 gguf 模型文件
gguf_file = "llama-2-7b-chat.Q4_0.gguf"
# 确保您有权限访问 Huggingface 上的该模型。
tokenizer_name = "meta-llama/Llama-2-7b-chat-hf"
prompt = "很久很久以前,有一个小女孩,"
tokenizer = AutoTokenizer.from_pretrained(tokenizer_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
model = AutoModelForCausalLM.from_pretrained(model_name, gguf_file = gguf_file)
outputs = model.generate(inputs)
您还可以从 Modelscope 加载 PyTorch 模型
注意:需要 modelscope
from transformers import TextStreamer
from modelscope import AutoTokenizer
from intel_extension_for_transformers.transformers import AutoModelForCausalLM
model_name = "qwen/Qwen-7B" # Modelscope 模型 ID 或本地模型
prompt = "很久很久以前,有一个小女孩,"
model = AutoModelForCausalLM.from_pretrained(model_name, load_in_4bit=True, model_hub="modelscope")
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
streamer = TextStreamer(tokenizer)
outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
您还可以加载由 GPTQ/AWQ/RTN/AutoRound 算法量化的低比特模型。
from transformers import AutoTokenizer
from intel_extension_for_transformers.transformers import AutoModelForCausalLM, GPTQConfig
# Hugging Face GPTQ/AWQ 模型或使用本地量化模型
model_name = "MODEL_NAME_OR_PATH"
prompt = "很久很久以前,有一个小女孩,"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
outputs = model.generate(inputs)
INT4 推理 (GPU)
import intel_extension_for_pytorch as ipex
from intel_extension_for_transformers.transformers.modeling import AutoModelForCausalLM
from transformers import AutoTokenizer
import torch
device_map = "xpu"
model_name ="Qwen/Qwen-7B"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
prompt = "很久很久以前,有一个小女孩,"
inputs = tokenizer
## 📖文档
<table>
<thead>
<tr>
<th colspan="8" align="center">概述</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="4" align="center"><a href="intel_extension_for_transformers/neural_chat">NeuralChat</a></td>
<td colspan="4" align="center"><a href="https://github.com/intel/neural-speed/tree/main">Neural Speed</a></td>
</tr>
<tr>
<th colspan="8" align="center">NEURALCHAT</th>
</tr>
<tr>
<td colspan="2" align="center"><a href="intel_extension_for_transformers/neural_chat/docs/notebooks/deploy_chatbot_on_spr.ipynb">在Intel CPU上部署Chatbot</a></td>
<td colspan="3" align="center"><a href="intel_extension_for_transformers/neural_chat/docs/notebooks/deploy_chatbot_on_xpu.ipynb">在Intel GPU上部署Chatbot</a></td>
<td colspan="3" align="center"><a href="intel_extension_for_transformers/neural_chat/docs/notebooks/deploy_chatbot_on_habana_gaudi.ipynb">在Gaudi上部署Chatbot</a></td>
</tr>
<tr>
<td colspan="4" align="center"><a href="intel_extension_for_transformers/neural_chat/examples/deployment/talkingbot/pc/build_talkingbot_on_pc.ipynb">在客户端部署Chatbot</a></td>
<td colspan="4" align="center"><a href="intel_extension_for_transformers/neural_chat/docs/full_notebooks.md">更多笔记本</a></td>
</tr>
<tr>
<th colspan="8" align="center">NEURAL SPEED</th>
</tr>
<tr>
<td colspan="2" align="center"><a href="https://github.com/intel/neural-speed/tree/main/README.md">Neural Speed</a></td>
<td colspan="2" align="center"><a href="https://github.com/intel/neural-speed/tree/main/README.md#2-neural-speed-straight-forward">流式LLM</a></td>
<td colspan="2" align="center"><a href="https://github.com/intel/neural-speed/tree/main/neural_speed/core#support-matrix">低精度内核</a></td>
<td colspan="2" align="center"><a href="https://github.com/intel/neural-speed/tree/main/docs/tensor_parallelism.md">张量并行</a></td>
</tr>
<tr>
<th colspan="8" align="center">LLM压缩</th>
</tr>
<tr>
<td colspan="2" align="center"><a href="docs/smoothquant.md">SmoothQuant (INT8)</a></td>
<td colspan="3" align="center"><a href="docs/weightonlyquant.md">仅权重量化 (INT4/FP4/NF4/INT8)</a></td>
<td colspan="3" align="center"><a href="docs/qloracpu.md">在CPU上运行QLoRA</a></td>
</tr>
<tr>
<th colspan="8" align="center">通用压缩</th>
<tr>
<tr>
<td colspan="2" align="center"><a href="docs/quantization.md">量化</a></td>
<td colspan="2" align="center"><a href="docs/pruning.md">剪枝</a></td>
<td colspan="2" align="center"><a href="docs/distillation.md">蒸馏</a></td>
<td align="center" colspan="2"><a href="examples/huggingface/pytorch/text-classification/orchestrate_optimizations/README.md">编排</a></td>
</tr>
<tr>
<td align="center" colspan="2"><a href="docs/data_augmentation.md">数据增强</a></td>
<td align="center" colspan="2"><a href="docs/export.md">导出</a></td>
<td align="center" colspan="2"><a href="docs/metrics.md">指标</a></td>
<td align="center" colspan="2"><a href="docs/objectives.md">目标</a></td>
</tr>
<tr>
<td align="center" colspan="2"><a href="docs/pipeline.md">流水线</a></td>
<td align="center" colspan="3"><a href="examples/huggingface/pytorch/question-answering/dynamic/README.md">长度自适应</a></td>
<td align="center" colspan="3"><a href="docs/examples.md#early-exit">提前退出</a></td>
</tr>
<tr>
<th colspan="8" align="center">教程 & 结果</a></th>
</tr>
<tr>
<td colspan="2" align="center"><a href="docs/tutorials/README.md">教程</a></td>
<td colspan="2" align="center"><a href="https://github.com/intel/neural-speed/blob/main/docs/supported_models.md">LLM列表</a></td>
<td colspan="2" align="center"><a href="docs/examples.md">通用模型列表</a></td>
<td colspan="2" align="center"><a href="intel_extension_for_transformers/transformers/runtime/docs/validated_model.md">模型性能</a></td>
</tr>
</tbody>
</table>
## 🙌演示
* LLM无限推理(支持最多400万tokens)
https://github.com/intel/intel-extension-for-transformers/assets/109187816/1698dcda-c9ec-4f44-b159-f4e9d67ab15b
* 在客户端CPU上运行LLM QLoRA
https://github.com/intel/intel-extension-for-transformers/assets/88082706/9d9bdb7e-65db-47bb-bbed-d23b151e8b31
## 📃精选出版物/活动
* 在Huggingface上发布的博客: [使用Intel Gaudi 2和Intel Xeon构建成本效益高的企业RAG应用](https://huggingface.co/blog/cost-efficient-rag-applications-with-intel) (2024年5月)
* 在Intel Developer News上发布的博客: [使用Intel® Transformer扩展实现高效自然语言嵌入模型](https://www.intel.com/content/www/us/en/developer/articles/technical/efficient-natural-language-embedding-models.html) (2024年5月)
* 在Techcrunch上发布的博客: [Intel及其他公司承诺为企业构建开放生成式AI工具](https://techcrunch.com/2024/04/16/intel-and-others-commit-to-building-open-generative-ai-tools-for-the-enterprise) (2024年4月)
* YouTube视频: [2024年Intel Vision主题演讲](https://www.youtube.com/watch?v=QB7FoIpx8os&t=2280s) (2024年4月)
* 在Vectara上发布的博客: [较小的模型更容易产生幻觉吗?](https://vectara.com/blog/do-smaller-models-hallucinate-more) (2024年4月)
* Intel Developer News博客: [使用neural-chat-7b模型进行高级欺诈检测:网络安全中的AI驱动方法](https://www.intel.com/content/www/us/en/developer/articles/technical/bilics-approach-cybersecurity-using-neuralchat-7b.html) (2024年3月)
* CES 2024: [2024年CES Great Minds主题演讲:将AI的无限潜力带到各个地方:Intel混合Copilot演示](https://youtu.be/70J3uO3eLZA?t=1348) (2024年1月)
* 在Medium上发布的博客: [连接你的API到AI代理:Intel Neural-Chat 7b LLM可以替代Open AI函数调用](https://medium.com/11tensors/connect-an-ai-agent-with-your-api-intel-neural-chat-7b-llm-can-replace-open-ai-function-calling-242d771e7c79) (2023年12月)
* NeurIPS'2023关于高效自然语言与语音处理: [在CPU上高效运行LLM推理](https://arxiv.org/abs/2311.00502) (2023年11月)
* 在Hugging Face上发布的博客: [Intel Neural-Chat 7b:在Gaudi2上进行微调以获得顶级LLM性能](https://huggingface.co/blog/Andyrasika/neural-chat-intel) (2023年11月)
* 在VMware上发布的博客: [没有GPU的AI:VMware私有AI与Intel技术简报](https://core.vmware.com/resource/ai-without-gpus-technical-brief-vmware-private-ai-intel#section6)