? 神經聊天 | ? ? 範例 | 文件
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 的聊天機器人開發提出任何有趣的想法!請隨時聯繫我們,我們期待我們在英特爾變形金剛擴展上的合作!