?Архитектура | НейронЧат | ?Вывод о процессоре | ? Вывод на GPU | Примеры | Документация
pip install intel-extension-for-transformers
Системные требования и другие советы по установке можно найти в Руководстве по установке.
Intel® Extension for Transformers — это инновационный набор инструментов, предназначенный для повсеместного ускорения GenAI/LLM с оптимальной производительностью моделей на базе Transformer на различных платформах Intel, включая Intel Gaudi2, процессоры Intel и графические процессоры Intel. Инструментарий предоставляет следующие ключевые функции и примеры:
Удобный пользовательский опыт сжатия моделей на основе Transformer за счет расширения API-интерфейсов Hugging Face Transformers и использования Intel® Neural Compressor.
Расширенная оптимизация программного обеспечения и уникальная среда выполнения с поддержкой сжатия (выпущены вместе с документом NeurIPS 2022 Fast Distilbert о процессорах и QuaLA-MiniLM: адаптивный 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 и анализ настроений на уровне документа. (ДЛСА)
NeuralChat, настраиваемая платформа чат-ботов, позволяющая за считанные минуты создать собственного чат-бота с использованием богатого набора плагинов, таких как поиск знаний, речевое взаимодействие, кэширование запросов и Security Guardrail. Эта платформа поддерживает Intel Gaudi2/CPU/GPU.
Вывод большой языковой модели (LLM) на чистом C/C++ с ядрами квантования только по весу для процессоров Intel и графических процессоров Intel (TBD), поддержка GPT-NEOX, LLAMA, MPT, FALCON, BLOOM-7B, OPT, ChatGLM2-6B, GPT-J-6B и Долли-v2-3B. Поддержка набора инструкций AMX, VNNI, AVX512F и AVX2. Мы повысили производительность процессоров Intel, уделив особое внимание масштабируемому процессору Intel Xeon 4-го поколения под кодовым названием Sapphire Rapids.
Аппаратное обеспечение | Тонкая настройка | Вывод | ||
Полный | ПЕФТ | 8-битный | 4-битный | |
Интел Гауди2 | ✔ | ✔ | НЗП (FP8) | - |
Масштабируемые процессоры Intel Xeon | ✔ | ✔ | ✔ (ИНТ8, ФП8) | ✔ (INT4, FP4, NF4) |
Серия процессоров Intel Xeon Max | ✔ | ✔ | ✔ (ИНТ8, ФП8) | ✔ (INT4, FP4, NF4) |
Серия графических процессоров Intel для центров обработки данных Max | НЗП | НЗП | НЗП (INT8) | ✔ (ИНТ4) |
Intel Arc A-серии | - | - | НЗП (INT8) | ✔ (ИНТ4) |
Процессоры Intel Core | - | ✔ | ✔ (ИНТ8, ФП8) | ✔ (INT4, FP4, NF4) |
В таблице выше «-» означает неприменимо или еще не началось.
Программное обеспечение | Тонкая настройка | Вывод | ||
Полный | ПЕФТ | 8-битный | 4-битный | |
PyTorch | 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 (графический процессор Intel) | 4.35.2(ЦП), 4.31.0 (графический процессор Intel) | 4.35.2(ЦП), 4.31.0 (графический процессор Intel) | 4.35.2(ЦП), 4.31.0 (графический процессор Intel) |
Синапс ИИ | 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-уровень-нулевой графический процессор | 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 |
Пожалуйста, ознакомьтесь с подробными требованиями к процессору, Gaudi2, графическому процессору Intel.
Убунту 20.04/22.04, Центос 8.
Ниже приведен пример кода для создания вашего чат-бота. Посмотрите больше примеров.
NeuralChat предоставляет OpenAI-совместимые RESTful API для чата, поэтому вы можете использовать NeuralChat в качестве полной замены API-интерфейсов OpenAI. Вы можете запустить сервер 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." )
Ниже приведен пример кода для использования расширенных API-интерфейсов Transformers. Посмотрите больше примеров.
Мы рекомендуем вам установить NeuralSpeed, чтобы получить новейшие функции (например, поддержку GGUF) низкоразрядного вывода LLM на процессорах. Вы также можете использовать версию 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 из 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 )
Примечание. Для получения более подробной информации обратитесь к примеру и сценарию.
Ниже приведен пример кода для использования расширенных API Langchain. Посмотрите больше примеров.
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 )
Вы можете получить доступ к проверенным моделям, точности и производительности из данных выпуска или блога Medium.
ОБЗОР | |||||||
---|---|---|---|---|---|---|---|
НейронЧат | Нейронная скорость | ||||||
НЕЙРАЛЧАТ | |||||||
Чат-бот на процессоре Intel | Чат-бот на графическом процессоре Intel | Чат-бот о Гауди | |||||
Чат-бот на клиенте | Больше ноутбуков | ||||||
НЕЙРАЛЬНАЯ СКОРОСТЬ | |||||||
Нейронная скорость | Стриминг LLM | Ядра низкой точности | Тензорный параллелизм | ||||
LLM СЖАТИЕ | |||||||
Гладкий Квант (INT8) | Квантование только по весу (INT4/FP4/NF4/INT8) | QLoRA на процессоре | |||||
ОБЩЕЕ СЖАТИЕ | |||||||
Квантование | Обрезка | Дистилляция | оркестровка | ||||
Увеличение данных | Экспорт | Метрики | Цели | ||||
Трубопровод | Адаптивная длина | Ранний выход | |||||
Уроки и результаты | |||||||
Учебники | Список LLM | Общий список моделей | Производительность модели |
Посмотреть полный список публикаций
Отличные проекты с открытым исходным кодом: bitsandbytes, FastChat, fastRAG, ggml, gptq, llama.cpp, lm-evauation-harness, peft, trl,streamingllm и многие другие.
Спасибо всем участникам.
Добро пожаловать, чтобы поделиться любыми интересными идеями о методах сжатия моделей и разработке чат-ботов на основе LLM! Свяжитесь с нами, и мы с нетерпением ждем нашего сотрудничества в области Intel Extension for Transformers!