?สถาปัตยกรรม | ประสาทแชท | ?การอนุมานบน CPU | ?การอนุมานบน GPU | ตัวอย่าง | เอกสารประกอบ
pip install intel-extension-for-transformers
สำหรับความต้องการของระบบและเคล็ดลับการติดตั้งอื่นๆ โปรดดูคู่มือการติดตั้ง
Intel® Extension for Transformers เป็นชุดเครื่องมือนวัตกรรมที่ออกแบบมาเพื่อเร่งความเร็ว GenAI/LLM ทุกที่ด้วยประสิทธิภาพสูงสุดของรุ่นที่ใช้ Transformer บนแพลตฟอร์มต่างๆ ของ Intel รวมถึง Intel Gaudi2, Intel CPU และ Intel GPU ชุดเครื่องมือนี้มีคุณสมบัติและตัวอย่างที่สำคัญด้านล่าง:
ประสบการณ์ผู้ใช้ที่ราบรื่นของการบีบอัดโมเดลบนโมเดลที่ใช้ Transformer โดยการขยาย Hugging Face Transformers API และใช้ประโยชน์จาก Intel® Neural Compressor
การเพิ่มประสิทธิภาพซอฟต์แวร์ขั้นสูงและรันไทม์ที่รับรู้การบีบอัดที่ไม่ซ้ำใคร (เปิดตัวพร้อมกับ Paper Fast Distilbert ของ NeurIPS 2022 บน CPU และ QuaLA-MiniLM: Quantized Length Adaptive MiniLM และ Paper Prune Once for All ของ NeurIPS 2021: โมเดลภาษาที่ได้รับการฝึกอบรมล่วงหน้าแบบกระจาย)
แพ็คเกจโมเดลที่ใช้ Transformer ที่ได้รับการปรับปรุง เช่น Stable Diffusion, GPT-J-6B, GPT-NEOX, BLOOM-176B, T5, Flan-T5 และเวิร์กโฟลว์แบบ end-to-end เช่น การจำแนกข้อความตาม SetFit และการวิเคราะห์ความรู้สึกระดับเอกสาร (ดีแอลเอสเอ)
NeuralChat กรอบแชทบอทที่ปรับแต่งได้เพื่อสร้างแชทบอทของคุณเองภายในไม่กี่นาทีโดยใช้ประโยชน์จากชุดปลั๊กอินที่หลากหลาย เช่น การดึงความรู้ การโต้ตอบคำพูด การแคชแบบสอบถาม และรั้วรักษาความปลอดภัย เฟรมเวิร์กนี้รองรับ Intel Gaudi2/CPU/GPU
การอนุมานของโมเดลภาษาขนาดใหญ่ (LLM) ใน C/C++ ล้วนๆ พร้อมเคอร์เนลการหาปริมาณเฉพาะน้ำหนักสำหรับ Intel CPU และ Intel GPU (TBD) รองรับ GPT-NEOX, LLAMA, MPT, FALCON, BLOOM-7B, OPT, ChatGLM2-6B GPT-J-6B และดอลลี่-v2-3B รองรับชุดคำสั่ง AMX, VNNI, AVX512F และ AVX2 เราได้เพิ่มประสิทธิภาพของ CPU ของ Intel โดยเน้นไปที่โปรเซสเซอร์ Intel Xeon Scalable รุ่นที่ 4 ซึ่งมีชื่อรหัสว่า Sapphire Rapids
ฮาร์ดแวร์ | การปรับแต่งแบบละเอียด | การอนุมาน | ||
เต็ม | เพฟต์ | 8 บิต | 4 บิต | |
อินเทล เกาดี้2 | งานระหว่างดำเนินการ (FP8) | - | ||
โปรเซสเซอร์ Intel Xeon ที่ปรับขนาดได้ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) | ||
Intel Xeon ซีพียู แม็กซ์ ซีรีส์ | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) | ||
Intel Data Center GPU Max ซีรีส์ | วีไอพี | วีไอพี | วีไอพี (INT8) | ✔ (INT4) |
Intel Arc A-ซีรีส์ | - | - | วีไอพี (INT8) | ✔ (INT4) |
โปรเซสเซอร์ Intel Core | - | ✔ (INT8, FP8) | ✔ (INT4, FP4, NF4) |
ในตารางด้านบน "-" หมายถึงยังไม่สามารถใช้ได้หรือยังไม่ได้เริ่มดำเนินการ
ซอฟต์แวร์ | การปรับแต่งแบบละเอียด | การอนุมาน | ||
เต็ม | เพฟต์ | 8 บิต | 4 บิต | |
ไพทอร์ช | 2.0.1+ซีพียู 2.0.1a0 (จีพียู) | 2.0.1+ซีพียู 2.0.1a0 (จีพียู) | 2.1.0+ซีพียู 2.0.1a0 (จีพียู) | 2.1.0+ซีพียู 2.0.1a0 (จีพียู) |
ส่วนขยาย Intel® สำหรับ PyTorch | 2.1.0+ซีพียู 2.0.110+xpu | 2.1.0+ซีพียู 2.0.110+xpu | 2.1.0+ซีพียู 2.0.110+xpu | 2.1.0+ซีพียู 2.0.110+xpu |
หม้อแปลงไฟฟ้า | 4.35.2(ซีพียู) 4.31.0 (อินเทลจีพียู) | 4.35.2(ซีพียู) 4.31.0 (อินเทลจีพียู) | 4.35.2(ซีพียู) 4.31.0 (อินเทลจีพียู) | 4.35.2(ซีพียู) 4.31.0 (อินเทลจีพียู) |
ไซแนปส์เอไอ | 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 |
Intel ระดับศูนย์ 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
อูบุนตู 20.04/22.04, Centos 8
ด้านล่างนี้คือโค้ดตัวอย่างในการสร้างแชทบอทของคุณ ดูตัวอย่างเพิ่มเติม
NeuralChat มอบ RESTful API ที่เข้ากันได้กับ OpenAI สำหรับการแชท ดังนั้นคุณจึงสามารถใช้ NeuralChat แทน OpenAI API แบบดรอปอินได้ คุณสามารถเริ่มเซิร์ฟเวอร์ NeuralChat ได้โดยใช้คำสั่ง Shell หรือรหัส 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" )
บริการ 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 เพื่อรับคุณสมบัติล่าสุด (เช่น รองรับ GGUF) ของการอนุมานบิตต่ำของ LLM บน CPU คุณอาจต้องการใช้เวอร์ชัน 1.3 ที่ไม่มี NeuralSpeed โดยทำตามเอกสาร
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 )
คุณยังสามารถโหลดโมเดลรูปแบบ GGUF จาก Huggingface ได้ ขณะนี้เรารองรับเฉพาะรูปแบบ 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 )
คุณยังสามารถโหลด PyTorch Model จาก Modelscope ได้
หมายเหตุ : ต้องใช้ 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 )
คุณยังสามารถโหลดโมเดลบิตต่ำเชิงปริมาณโดยอัลกอริธึม 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 | Chatbot บน Intel GPU | Chatbot บน Gaudi | |||||
Chatbot บนไคลเอนต์ | โน๊ตบุ๊คเพิ่มเติม | ||||||
ความเร็วแบบธรรมชาติ | |||||||
ความเร็วของระบบประสาท | สตรีมมิ่ง LLM | เมล็ดที่มีความแม่นยำต่ำ | ความเท่าเทียมของเทนเซอร์ | ||||
การบีบอัด LLM | |||||||
สมูทควอนท์ (INT8) | การหาปริมาณเฉพาะน้ำหนัก (INT4/FP4/NF4/INT8) | QLoRA บน CPU | |||||
การบีบอัดทั่วไป | |||||||
การหาปริมาณ | การตัดแต่งกิ่ง | การกลั่น | การเรียบเรียง | ||||
การเพิ่มข้อมูล | ส่งออก | เมตริก | วัตถุประสงค์ | ||||
ไปป์ไลน์ | ปรับความยาวได้ | ทางออกก่อนเวลา | |||||
บทช่วยสอนและผลลัพธ์ | |||||||
บทช่วยสอน | รายชื่อ LLM | รายการรุ่นทั่วไป | ประสิทธิภาพของโมเดล |
ดูรายการสิ่งพิมพ์ฉบับเต็ม
โครงการโอเพ่นซอร์สที่ยอดเยี่ยม: bitsandbytes, FastChat, fastRAG, ggml, gptq, llama.cpp, lm-evauation-harness, peft, trl, Streamingllm และอื่นๆ อีกมากมาย
ขอขอบคุณผู้มีส่วนร่วมทุกคน
ยินดีต้อนรับสู่การเสนอแนวคิดที่น่าสนใจเกี่ยวกับเทคนิคการบีบอัดโมเดลและการพัฒนาแชทบอตที่ใช้ LLM! ติดต่อเราได้เลย และเราหวังว่าจะได้ร่วมงานกับ Intel Extension สำหรับ Transformers!