?Arsitektur | Obrolan Neural | ?Inferensi pada CPU | ?Inferensi pada GPU | Contoh | Dokumentasi
pip install intel-extension-for-transformers
Untuk persyaratan sistem dan tip instalasi lainnya, silakan merujuk ke Panduan Instalasi
Intel® Extension for Transformers adalah toolkit inovatif yang dirancang untuk mempercepat GenAI/LLM di mana saja dengan performa optimal model berbasis Transformer di berbagai platform Intel, termasuk Intel Gaudi2, CPU Intel, dan GPU Intel. Toolkit ini menyediakan fitur dan contoh utama di bawah ini:
Pengalaman pengguna yang lancar dalam kompresi model pada model berbasis Transformer dengan memperluas API transformator Hugging Face dan memanfaatkan Intel® Neural Compressor
Pengoptimalan perangkat lunak tingkat lanjut dan waktu proses sadar kompresi yang unik (dirilis bersama makalah NeurIPS 2022, Fast Distilbert pada CPU dan QuaLA-MiniLM: MiniLM Adaptif Panjang Terkuantisasi, dan makalah NeurIPS 2021 Prune Once for All: Sparse Pre-Trained Language Models)
Paket model berbasis Transformer yang dioptimalkan seperti Difusi Stabil, GPT-J-6B, GPT-NEOX, BLOOM-176B, T5, Flan-T5, dan alur kerja ujung ke ujung seperti klasifikasi teks berbasis SetFit dan analisis sentimen tingkat dokumen (DLSA)
NeuralChat, kerangka chatbot yang dapat disesuaikan untuk membuat chatbot Anda sendiri dalam hitungan menit dengan memanfaatkan beragam plugin seperti Pengambilan Pengetahuan, Interaksi Ucapan, Caching Kueri, dan Pagar Pembatas Keamanan. Kerangka kerja ini mendukung Intel Gaudi2/CPU/GPU.
Inferensi Model Bahasa Besar (LLM) dalam C/C++ murni dengan kernel kuantisasi khusus bobot untuk CPU Intel dan GPU Intel (TBD), mendukung GPT-NEOX, LLAMA, MPT, FALCON, BLOOM-7B, OPT, ChatGLM2-6B, GPT-J-6B, dan Dolly-v2-3B. Mendukung set instruksi AMX, VNNI, AVX512F dan AVX2. Kami telah meningkatkan kinerja CPU Intel, dengan fokus khusus pada prosesor Intel Xeon Scalable generasi ke-4, dengan nama kode Sapphire Rapids.
Perangkat keras | Penyempurnaan | Kesimpulan | ||
Penuh | PEFT | 8-bit | 4-bit | |
Intel Gaudi2 | ✔ | ✔ | WIP (FP8) | - |
Prosesor Intel Xeon yang Dapat Diskalakan | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Seri Maks CPU Intel Xeon | ✔ | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Seri Maks GPU Pusat Data Intel | WIP | WIP | WIP (INT8) | ✔ (INT4) |
Intel Arc Seri A | - | - | WIP (INT8) | ✔ (INT4) |
Prosesor Intel Inti | - | ✔ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
Pada tabel di atas, “-” berarti belum berlaku atau belum dimulai.
Perangkat lunak | Penyempurnaan | Kesimpulan | ||
Penuh | 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) |
Ekstensi Intel® untuk 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 |
transformator | 4.35.2(CPU), 4.31.0 (GPU Intel) | 4.35.2(CPU), 4.31.0 (GPU Intel) | 4.35.2(CPU), 4.31.0 (GPU Intel) | 4.35.2(CPU), 4.31.0 (GPU Intel) |
Sinapsis AI | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
pengemudi Gaudi2 | 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 |
Silakan lihat persyaratan rinci dalam CPU, Gaudi2, Intel GPU.
Ubuntu 20.04/22.04, Centos 8.
Di bawah ini adalah contoh kode untuk membuat chatbot Anda. Lihat contoh lainnya.
NeuralChat menyediakan RESTful API yang kompatibel dengan OpenAI untuk chat, sehingga Anda dapat menggunakan NeuralChat sebagai pengganti OpenAI API. Anda dapat memulai server NeuralChat menggunakan perintah Shell atau kode 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" )
Layanan NeuralChat dapat diakses melalui perpustakaan klien OpenAI, perintah curl
, dan perpustakaan requests
. Lihat selengkapnya di NeuralChat.
from intel_extension_for_transformers . neural_chat import build_chatbot
chatbot = build_chatbot ()
response = chatbot . predict ( "Tell me about Intel Xeon Scalable Processors." )
Di bawah ini adalah contoh kode untuk menggunakan Transformers API yang diperluas. Lihat contoh lainnya.
Kami mendorong Anda untuk menginstal NeuralSpeed untuk mendapatkan fitur terbaru (misalnya, dukungan GGUF) dari inferensi bit rendah LLM pada CPU. Anda mungkin juga ingin menggunakan v1.3 tanpa NeuralSpeed dengan mengikuti dokumen
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 )
Anda juga dapat memuat model format GGUF dari Huggingface, saat ini kami hanya mendukung format gguf 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 )
Anda juga dapat memuat Model PyTorch dari Modelscope
Catatan : memerlukan modelscope
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 )
Anda juga dapat memuat model bit rendah yang dikuantisasi dengan algoritma 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 )
Catatan: Silakan lihat contoh dan skrip untuk lebih jelasnya.
Di bawah ini adalah contoh kode untuk menggunakan API Langchain yang diperluas. Lihat contoh lainnya.
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 )
Anda dapat mengakses model, akurasi, dan kinerja yang divalidasi dari data Rilis atau blog Medium.
RINGKASAN | |||||||
---|---|---|---|---|---|---|---|
Obrolan Neural | Kecepatan Saraf | ||||||
NEURALCHAT | |||||||
Chatbot pada CPU Intel | Chatbot pada GPU Intel | Chatbot di Gaudi | |||||
Chatbot di Klien | Lebih Banyak Buku Catatan | ||||||
KECEPATAN SARAF | |||||||
Kecepatan Saraf | Streaming LLM | Kernel Presisi Rendah | Paralelisme Tensor | ||||
KOMPRESI LLM | |||||||
Kuantitas Halus (INT8) | Kuantisasi Berat Saja (INT4/FP4/NF4/INT8) | QLoRA di CPU | |||||
KOMPRESI UMUM | |||||||
Kuantisasi | Pemangkasan | Distilasi | Orkestrasi | ||||
Augmentasi Data | Ekspor | Metrik | Tujuan | ||||
Saluran pipa | Panjangnya Adaptif | Keluar Awal | |||||
TUTORIAL & HASIL | |||||||
Tutorial | Daftar LLM | Daftar Model Umum | Performa Model |
Lihat Daftar Publikasi Lengkap
Proyek sumber terbuka yang luar biasa: bitsandbytes, FastChat, fastRAG, ggml, gptq, llama.cpp, lm-evauation-harness, peft, trl, streamingllm dan banyak lainnya.
Terima kasih kepada semua kontributor.
Selamat datang untuk menyampaikan ide menarik tentang teknik kompresi model dan pengembangan chatbot berbasis LLM! Jangan ragu untuk menghubungi kami, dan kami menantikan kolaborasi kami pada Intel Extension for Transformers!