?Architektur | NeuralChat | ?Rückschluss auf CPU | ?Rückschluss auf GPU | Beispiele | Dokumentationen
pip install intel-extension-for-transformers
Informationen zu den Systemanforderungen und anderen Installationstipps finden Sie im Installationshandbuch
Intel® Extension for Transformers ist ein innovatives Toolkit, das entwickelt wurde, um GenAI/LLM überall mit der optimalen Leistung von Transformer-basierten Modellen auf verschiedenen Intel-Plattformen, einschließlich Intel Gaudi2, Intel CPU und Intel GPU, zu beschleunigen. Das Toolkit bietet die folgenden Hauptfunktionen und Beispiele:
Nahtlose Benutzererfahrung bei der Modellkomprimierung auf Transformer-basierten Modellen durch Erweiterung der Hugging Face-Transformer-APIs und Nutzung des Intel® Neural Compressor
Erweiterte Softwareoptimierungen und einzigartige komprimierungsbewusste Laufzeit (veröffentlicht mit dem Artikel „Fast Distilbert on CPUs and QuaLA-MiniLM: a Quantized Length Adaptive MiniLM“ von NeurIPS 2022 und dem Artikel „Prune Once for All: Sparse Pre-Trained Language Models“ von NeurIPS 2021)
Optimierte Transformer-basierte Modellpakete wie Stable Diffusion, GPT-J-6B, GPT-NEOX, BLOOM-176B, T5, Flan-T5 und End-to-End-Workflows wie SetFit-basierte Textklassifizierung und Stimmungsanalyse auf Dokumentebene (DLSA)
NeuralChat, ein anpassbares Chatbot-Framework, mit dem Sie innerhalb von Minuten Ihren eigenen Chatbot erstellen können, indem Sie eine Vielzahl von Plugins wie Knowledge Retrieval, Speech Interaction, Query Caching und Security Guardrail nutzen. Dieses Framework unterstützt Intel Gaudi2/CPU/GPU.
Inferenz des Large Language Model (LLM) in reinem C/C++ mit nur gewichteten Quantisierungskernen für Intel CPU und Intel GPU (TBD), unterstützt GPT-NEOX, LLAMA, MPT, FALCON, BLOOM-7B, OPT, ChatGLM2-6B, GPT-J-6B und Dolly-v2-3B. Unterstützt AMX-, VNNI-, AVX512F- und AVX2-Befehlssätze. Wir haben die Leistung von Intel-CPUs gesteigert, mit besonderem Schwerpunkt auf dem skalierbaren Intel Xeon-Prozessor der 4. Generation mit dem Codenamen Sapphire Rapids.
Hardware | Feinabstimmung | Schlussfolgerung | ||
Voll | PEFT | 8-Bit | 4-Bit | |
Intel Gaudi2 | ✔ | ✔ | In Bearbeitung (FP8) | - |
Skalierbare Intel Xeon-Prozessoren | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Intel Xeon CPU Max-Serie | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Intel Data Center GPU Max-Serie | In Bearbeitung | In Bearbeitung | WIP (INT8) | ✔ (INT4) |
Intel Arc A-Serie | - | - | WIP (INT8) | ✔ (INT4) |
Intel Core-Prozessoren | - | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
In der obigen Tabelle bedeutet „-“, dass es nicht anwendbar ist oder noch nicht begonnen wurde.
Software | Feinabstimmung | Schlussfolgerung | ||
Voll | 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® Erweiterung für 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 |
Transformatoren | 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-KI | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
Gaudi2-Treiber | 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 |
Bitte beachten Sie die detaillierten Anforderungen in CPU, Gaudi2, Intel GPU.
Ubuntu 20.04/22.04, Centos 8.
Unten finden Sie den Beispielcode zum Erstellen Ihres Chatbots. Weitere Beispiele ansehen.
NeuralChat bietet OpenAI-kompatible RESTful-APIs für den Chat, sodass Sie NeuralChat als Ersatz für OpenAI-APIs verwenden können. Sie können den NeuralChat-Server entweder mit dem Shell-Befehl oder Python-Code starten.
# 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" )
Auf den NeuralChat-Dienst kann über die OpenAI-Clientbibliothek, curl
-Befehle und die requests
zugegriffen werden. Weitere Informationen finden Sie in NeuralChat.
from intel_extension_for_transformers . neural_chat import build_chatbot
chatbot = build_chatbot ()
response = chatbot . predict ( "Tell me about Intel Xeon Scalable Processors." )
Unten finden Sie den Beispielcode zur Verwendung der erweiterten Transformers-APIs. Weitere Beispiele ansehen.
Wir empfehlen Ihnen, NeuralSpeed zu installieren, um die neuesten Funktionen (z. B. GGUF-Unterstützung) der LLM-Low-Bit-Inferenz auf CPUs zu erhalten. Möglicherweise möchten Sie v1.3 auch ohne NeuralSpeed verwenden, indem Sie dem Dokument folgen
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 )
Sie können das Modell im GGUF-Format auch von Huggingface laden. Derzeit unterstützen wir nur das GGUF-Format Q4_0/Q5_0/Q8_0.
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 )
Sie können das PyTorch-Modell auch aus Modelscope laden
Hinweis : Modellumfang erforderlich
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 )
Sie können auch das durch den GPTQ/AWQ/RTN/AutoRound-Algorithmus quantisierte Low-Bit-Modell laden.
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 )
Hinweis: Weitere Einzelheiten finden Sie im Beispiel und im Skript.
Unten finden Sie den Beispielcode zur Verwendung der erweiterten Langchain-APIs. Weitere Beispiele ansehen.
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 )
Sie können über die Release-Daten oder den Medium-Blog auf die validierten Modelle, Genauigkeit und Leistung zugreifen.
ÜBERBLICK | |||||||
---|---|---|---|---|---|---|---|
NeuralChat | Neuronale Geschwindigkeit | ||||||
NEURALCHAT | |||||||
Chatbot auf Intel-CPU | Chatbot auf Intel-GPU | Chatbot auf Gaudi | |||||
Chatbot auf Client | Weitere Notizbücher | ||||||
NEURALE GESCHWINDIGKEIT | |||||||
Neuronale Geschwindigkeit | LLM streamen | Kerne mit geringer Präzision | Tensorparallelität | ||||
LLM-KOMPRESSION | |||||||
SmoothQuant (INT8) | Nur-Gewicht-Quantisierung (INT4/FP4/NF4/INT8) | QLoRA auf der CPU | |||||
ALLGEMEINE KOMPRESSION | |||||||
Quantisierung | Beschneidung | Destillation | Orchestrierung | ||||
Datenerweiterung | Export | Metriken | Ziele | ||||
Pipeline | Längenadaptiv | Vorzeitiger Ausstieg | |||||
TUTORIALS & ERGEBNISSE | |||||||
Tutorials | LLM-Liste | Allgemeine Modellliste | Modellleistung |
Vollständige Publikationsliste anzeigen
Ausgezeichnete Open-Source-Projekte: Bitsandbytes, FastChat, fastRAG, ggml, gptq, llama.cpp, lm-evauation-harness, peft, trl, streamingllm und viele andere.
Vielen Dank an alle Mitwirkenden.
Willkommen bei allen interessanten Ideen zu Modellkomprimierungstechniken und LLM-basierter Chatbot-Entwicklung! Kontaktieren Sie uns gerne und wir freuen uns auf unsere Zusammenarbeit bei Intel Extension for Transformers!