?建筑| 神经聊天 | ?CPU 上的推理 | ?GPU 上的推理 | 示例 | 文档
pip install intel-extension-for-transformers
有关系统要求和其他安装提示,请参阅安装指南
Intel® Extension for Transformers 是一款创新工具套件,旨在在各种 Intel 平台(包括 Intel Gaudi2、Intel CPU 和 Intel GPU)上实现基于 Transformer 的模型的最佳性能,从而在任何地方加速 GenAI/LLM。该工具包提供以下主要功能和示例:
通过扩展 Hugging Face 转换器 API 并利用英特尔® 神经压缩器,在基于 Transformer 的模型上提供无缝的模型压缩用户体验
先进的软件优化和独特的压缩感知运行时(与 NeurIPS 2022 的论文 Fast Distilbert on CPUs and 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。
纯 C/C++ 中的大型语言模型 (LLM) 推理,具有适用于 Intel CPU 和 Intel GPU (TBD) 的仅权重量化内核,支持 GPT-NEOX、LLAMA、MPT、FALCON、BLOOM-7B、OPT、ChatGLM2-6B、 GPT-J-6B 和 Dolly-v2-3B。支持AMX、VNNI、AVX512F和AVX2指令集。我们提升了英特尔 CPU 的性能,特别关注代号为 Sapphire Rapids 的第四代英特尔至强可扩展处理器。
硬件 | 微调 | 推理 | ||
满的 | 聚四氟乙烯 | 8位 | 4位 | |
英特尔高迪2 | ✔ | ✔ | 在制品 (FP8) | - |
英特尔至强可扩展处理器 | ✔ | ✔ | ✔(INT8、FP8) | ✔(INT4、FP4、NF4) |
英特尔至强 CPU Max 系列 | ✔ | ✔ | ✔(INT8、FP8) | ✔(INT4、FP4、NF4) |
英特尔数据中心 GPU Max 系列 | 在制品 | 在制品 | 在制品 (INT8) | ✔(INT4) |
英特尔 Arc A 系列 | - | - | 在制品 (INT8) | ✔(INT4) |
英特尔酷睿处理器 | - | ✔ | ✔(INT8、FP8) | ✔(INT4、FP4、NF4) |
上表中“-”表示不适用或尚未开始。
软件 | 微调 | 推理 | ||
满的 | 聚四氟乙烯 | 8位 | 4位 | |
火炬 | 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) |
适用于 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 |
变形金刚 | 4.35.2(CPU), 4.31.0(英特尔GPU) | 4.35.2(CPU), 4.31.0(英特尔GPU) | 4.35.2(CPU), 4.31.0(英特尔GPU) | 4.35.2(CPU), 4.31.0(英特尔GPU) |
突触人工智能 | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
高迪2驱动程序 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 |
英特尔级零 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 |
详细要求请参考CPU、Gaudi2、Intel GPU中的要求。
Ubuntu 20.04/22.04、Centos 8。
以下是创建聊天机器人的示例代码。查看更多示例。
NeuralChat 提供与 OpenAI 兼容的 RESTful API 用于聊天,因此您可以使用 NeuralChat 作为 OpenAI API 的直接替代品。您可以使用 Shell 命令或 Python 代码启动 NeuralChat 服务器。
# Shell Command
neuralchat_server start --config_file ./server/config/neuralchat.yaml
# Python Code
from intel_extension_for_transformers . neural_chat import NeuralChatServerExecutor
server_executor = NeuralChatServerExecutor ()
server_executor ( config_file = "./server/config/neuralchat.yaml" , log_file = "./neuralchat.log" )
NeuralChat 服务可以通过 OpenAI 客户端库、 curl
命令和requests
库访问。在 NeuralChat 中查看更多内容。
from intel_extension_for_transformers . neural_chat import build_chatbot
chatbot = build_chatbot ()
response = chatbot . predict ( "Tell me about Intel Xeon Scalable Processors." )
以下是使用扩展 Transformers API 的示例代码。查看更多示例。
我们鼓励您安装 NeuralSpeed 以获得 CPU 上 LLM 低位推理的最新功能(例如 GGUF 支持)。您可能还想按照文档使用不带 NeuralSpeed 的 v1.3
from transformers import AutoTokenizer
from intel_extension_for_transformers . transformers import AutoModelForCausalLM
model_name = "Intel/neural-chat-7b-v3-1"
prompt = "Once upon a time, there existed a little girl,"
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
# Specify the GGUF repo on the Hugginface
model_name = "TheBloke/Llama-2-7B-Chat-GGUF"
# Download the the specific gguf model file from the above repo
gguf_file = "llama-2-7b-chat.Q4_0.gguf"
# make sure you are granted to access this model on the Huggingface.
tokenizer_name = "meta-llama/Llama-2-7b-chat-hf"
prompt = "Once upon a time, there existed a little girl,"
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 模型
注意:需要模型范围
from transformers import TextStreamer
from modelscope import AutoTokenizer
from intel_extension_for_transformers . transformers import AutoModelForCausalLM
model_name = "qwen/Qwen-7B" # Modelscope model_id or local model
prompt = "Once upon a time, there existed a little girl,"
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 or use local quantize model
model_name = "MODEL_NAME_OR_PATH"
prompt = "Once upon a time, a little girl"
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 )
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 = "Once upon a time, there existed a little girl,"
inputs = tokenizer ( prompt , return_tensors = "pt" ). input_ids . to ( device_map )
model = AutoModelForCausalLM . from_pretrained ( model_name , trust_remote_code = True ,
device_map = device_map , load_in_4bit = True )
model = ipex . optimize_transformers ( model , inplace = True , dtype = torch . float16 , quantization_config = True , device = device_map )
output = model . generate ( inputs )
注意:更多详细信息请参阅示例和脚本。
以下是使用扩展 Langchain API 的示例代码。查看更多示例。
from langchain_community . llms . huggingface_pipeline import HuggingFacePipeline
from langchain . chains import RetrievalQA
from langchain_core . vectorstores import VectorStoreRetriever
from intel_extension_for_transformers . langchain . vectorstores import Chroma
retriever = VectorStoreRetriever ( vectorstore = Chroma (...))
retrievalQA = RetrievalQA . from_llm ( llm = HuggingFacePipeline (...), retriever = retriever )
您可以从发布数据或媒体博客访问经过验证的模型、准确性和性能。
概述 | |||||||
---|---|---|---|---|---|---|---|
神经聊天 | 神经速度 | ||||||
神经聊天 | |||||||
Intel CPU 上的聊天机器人 | Intel GPU 上的聊天机器人 | 高迪的聊天机器人 | |||||
客户端聊天机器人 | 更多笔记本电脑 | ||||||
神经速度 | |||||||
神经速度 | 流媒体法学硕士 | 低精度内核 | 张量并行性 | ||||
法学硕士压缩 | |||||||
SmoothQuant (INT8) | 仅权重量化 (INT4/FP4/NF4/INT8) | CPU 上的 QLoRA | |||||
一般压缩 | |||||||
量化 | 修剪 | 蒸馏 | 编排 | ||||
数据增强 | 出口 | 指标 | 目标 | ||||
管道 | 长度自适应 | 提前退出 | |||||
教程和结果 | |||||||
教程 | 法学硕士名单 | 通用型号表 | 模型性能 |
查看完整的出版物列表
优秀的开源项目:bitsandbytes、FastChat、fastRAG、ggml、gptq、llama.cpp、lm-evauation-harness、peft、trl、streamingllm 等。
感谢所有贡献者。
欢迎就模型压缩技术和基于 LLM 的聊天机器人开发提出任何有趣的想法!请随时联系我们,我们期待我们在英特尔变形金刚扩展上的合作!