?Architecture | Chat neuronal | ?Inférence sur CPU | ?Inférence sur GPU | Exemples | Documentation
pip install intel-extension-for-transformers
Pour connaître la configuration système requise et d'autres conseils d'installation, veuillez vous référer au guide d'installation.
Intel® Extension for Transformers est une boîte à outils innovante conçue pour accélérer GenAI/LLM partout avec les performances optimales des modèles basés sur Transformer sur diverses plates-formes Intel, notamment Intel Gaudi2, Intel CPU et Intel GPU. La boîte à outils fournit les principales fonctionnalités et exemples ci-dessous :
Expérience utilisateur transparente des compressions de modèles sur les modèles basés sur Transformer en étendant les API des transformateurs Hugging Face et en tirant parti d'Intel® Neural Compressor
Optimisations logicielles avancées et environnement d'exécution unique prenant en charge la compression (publiés avec l'article de NeurIPS 2022 Fast Distilbert sur les processeurs et QuaLA-MiniLM : un MiniLM adaptatif de longueur quantifiée, et l'article de NeurIPS 2021 Prune Once for All : Sparse Pre-Trained Language Models)
Packages de modèles optimisés basés sur Transformer tels que Stable Diffusion, GPT-J-6B, GPT-NEOX, BLOOM-176B, T5, Flan-T5 et des flux de travail de bout en bout tels que la classification de texte basée sur SetFit et l'analyse des sentiments au niveau du document (DLSA)
NeuralChat, un framework de chatbot personnalisable pour créer votre propre chatbot en quelques minutes en exploitant un riche ensemble de plugins tels que la récupération de connaissances, l'interaction vocale, la mise en cache des requêtes et la protection de sécurité. Ce framework prend en charge Intel Gaudi2/CPU/GPU.
Inférence de Large Language Model (LLM) en C/C++ pur avec noyaux de quantification de poids uniquement pour CPU Intel et GPU Intel (TBD), prenant en charge GPT-NEOX, LAMA, MPT, FALCON, BLOOM-7B, OPT, ChatGLM2-6B, GPT-J-6B et Dolly-v2-3B. Prend en charge les jeux d'instructions AMX, VNNI, AVX512F et AVX2. Nous avons amélioré les performances des processeurs Intel, en mettant particulièrement l'accent sur le processeur Intel Xeon Scalable de 4e génération, nommé Sapphire Rapids.
Matériel | Réglage fin | Inférence | ||
Complet | PEFT | 8 bits | 4 bits | |
Intel Gaudi2 | ✔ | ✔ | En cours (FP8) | - |
Processeurs évolutifs Intel Xeon | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Série Max de processeurs Intel Xeon | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Série Max de GPU pour centres de données Intel | En-cours | En-cours | En-cours (INT8) | ✔ (INT4) |
Intel Arc série A | - | - | En-cours (INT8) | ✔ (INT4) |
Processeurs Intel Core | - | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Dans le tableau ci-dessus, "-" signifie non applicable ou pas encore démarré.
Logiciel | Réglage fin | Inférence | ||
Complet | PEFT | 8 bits | 4 bits | |
PyTorch | 2.0.1+processeur, 2.0.1a0 (GPU) | 2.0.1+processeur, 2.0.1a0 (GPU) | 2.1.0+processeur, 2.0.1a0 (GPU) | 2.1.0+processeur, 2.0.1a0 (GPU) |
Extension Intel® pour PyTorch | 2.1.0+processeur, 2.0.110+xpu | 2.1.0+processeur, 2.0.110+xpu | 2.1.0+processeur, 2.0.110+xpu | 2.1.0+processeur, 2.0.110+xpu |
Transformateurs | 4.35.2 (processeur), 4.31.0 (GPU Intel) | 4.35.2 (processeur), 4.31.0 (GPU Intel) | 4.35.2 (processeur), 4.31.0 (GPU Intel) | 4.35.2 (processeur), 4.31.0 (GPU Intel) |
Synapse IA | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
Pilote Gaudi2 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 |
Intel-niveau-zéro-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 |
Veuillez vous référer aux exigences détaillées dans CPU, Gaudi2, Intel GPU.
Ubuntu 20.04/22.04, Centos 8.
Vous trouverez ci-dessous l'exemple de code pour créer votre chatbot. Voir plus d'exemples.
NeuralChat fournit des API RESTful compatibles OpenAI pour le chat, vous pouvez donc utiliser NeuralChat en remplacement immédiat des API OpenAI. Vous pouvez démarrer le serveur NeuralChat à l'aide de la commande Shell ou du code Python.
# 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" )
Le service NeuralChat peut être accessible via la bibliothèque client OpenAI, les commandes curl
et la bibliothèque requests
. Voir plus dans NeuralChat.
from intel_extension_for_transformers . neural_chat import build_chatbot
chatbot = build_chatbot ()
response = chatbot . predict ( "Tell me about Intel Xeon Scalable Processors." )
Vous trouverez ci-dessous l’exemple de code permettant d’utiliser les API Transformers étendues. Voir plus d'exemples.
Nous vous encourageons à installer NeuralSpeed pour obtenir les dernières fonctionnalités (par exemple, prise en charge GGUF) de l'inférence LLM à bits faibles sur les processeurs. Vous pouvez également utiliser la v1.3 sans NeuralSpeed en suivant le document
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 )
Vous pouvez également charger le modèle au format GGUF depuis Huggingface, nous ne prenons en charge que le format gguf Q4_0/Q5_0/Q8_0 pour l'instant.
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 )
Vous pouvez également charger le modèle PyTorch depuis Modelscope
Remarque : nécessite la portée du modèle
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 )
Vous pouvez également charger le modèle low-bit quantifié par l'algorithme 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 )
Remarque : Veuillez vous référer à l'exemple et au script pour plus de détails.
Vous trouverez ci-dessous l'exemple de code permettant d'utiliser les API Langchain étendues. Voir plus d'exemples.
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 )
Vous pouvez accéder aux modèles validés, à la précision et aux performances à partir des données de version ou du blog Medium.
APERÇU | |||||||
---|---|---|---|---|---|---|---|
Chat neuronal | Vitesse neuronale | ||||||
CHAT NEURAL | |||||||
Chatbot sur processeur Intel | Chatbot sur GPU Intel | Chatbot sur Gaudi | |||||
Chatbot sur le client | Plus de cahiers | ||||||
VITESSE NEURALE | |||||||
Vitesse neuronale | LLM en streaming | Noyaux de faible précision | Parallélisme tensoriel | ||||
LLM COMPRESSION | |||||||
SmoothQuant (INT8) | Quantification par poids uniquement (INT4/FP4/NF4/INT8) | QLoRA sur le processeur | |||||
COMPRESSION GÉNÉRALE | |||||||
Quantification | Taille | Distillation | Orchestration | ||||
Augmentation des données | Exporter | Métrique | Objectifs | ||||
Pipeline | Longueur adaptative | Sortie anticipée | |||||
TUTORIELS ET RÉSULTATS | |||||||
Tutoriels | Liste LLM | Liste générale des modèles | Performances du modèle |
Voir la liste complète des publications
Excellents projets open source : bitsandbytes, FastChat, fastRAG, ggml, gptq, llama.cpp, lm-evauation-harness, peft, trl, streamingllm et bien d'autres.
Merci à tous les contributeurs.
Bienvenue pour soulever des idées intéressantes sur les techniques de compression de modèles et le développement de chatbot basé sur LLM ! N'hésitez pas à nous contacter et nous attendons avec impatience nos collaborations sur Intel Extension for Transformers !