?建築 | ニューラルチャット | ?CPU上の推論 | ?GPUでの推論 | 例 | ドキュメント
pip install intel-extension-for-transformers
システム要件とその他のインストールのヒントについては、インストール ガイドを参照してください。
インテル® トランスフォーマー用拡張機能は、インテル Gaudi2、インテル CPU、インテル GPU などのさまざまなインテル プラットフォーム上でトランスフォーマー ベースのモデルの最適なパフォーマンスを実現し、あらゆる場所で GenAI/LLM を高速化するように設計された革新的なツールキットです。このツールキットは、以下の主要な機能と例を提供します。
Hugging Face トランスフォーマー API を拡張し、インテル® ニューラル コンプレッサーを活用することにより、トランスフォーマー ベースのモデルでのモデル圧縮のシームレスなユーザー エクスペリエンスを実現
高度なソフトウェア最適化と独自の圧縮対応ランタイム (NeurIPS 2022 の論文「Fast Distilbert on CPUs and QuaLA-MiniLM: a Quantized Length Adaptive MiniLM」、および NeurIPS 2021 の論文「Prune Once for All: Sparse Pre-Trained Language Models」とともにリリースされました)
Stable Diffusion、GPT-J-6B、GPT-NEOX、BLOOM-176B、T5、Flan-T5 などの最適化された Transformer ベースのモデル パッケージ、および SetFit ベースのテキスト分類やドキュメント レベルのセンチメント分析などのエンドツーエンドのワークフロー(DLSA)
NeuralChat は、ナレッジ検索、音声対話、クエリ キャッシュ、セキュリティ ガードレールなどの豊富なプラグイン セットを活用して、数分で独自のチャットボットを作成できるカスタマイズ可能なチャットボット フレームワークです。このフレームワークは、Intel Gaudi2/CPU/GPU をサポートします。
Intel CPU および Intel GPU (TBD) の重みのみの量子化カーネルを使用した純粋な C/C++ での大規模言語モデル (LLM) の推論。GPT-NEOX、LLAMA、MPT、FALCON、BLOOM-7B、OPT、ChatGLM2-6B、をサポートします。 GPT-J-6B、および Dolly-v2-3B。 AMX、VNNI、AVX512F、および AVX2 命令セットをサポートします。当社は、特にコードネーム Sapphire Rapids である第 4 世代インテル Xeon スケーラブル プロセッサーに重点を置き、インテル CPU のパフォーマンスを向上させました。
ハードウェア | 微調整 | 推論 | ||
満杯 | PEFT | 8ビット | 4ビット | |
インテル Gaudi2 | ✔ | ✔ | WIP (FP8) | - |
インテル Xeon スケーラブル プロセッサー | ✔ | ✔ | ✔ (INT8、FP8) | ✔ (INT4、FP4、NF4) |
インテル Xeon CPU Max シリーズ | ✔ | ✔ | ✔ (INT8、FP8) | ✔ (INT4、FP4、NF4) |
インテル データセンター GPU Max シリーズ | WIP | WIP | ウィップ (INT8) | ✔ (INT4) |
インテル Arc A シリーズ | - | - | ウィップ (INT8) | ✔ (INT4) |
インテルコアプロセッサー | - | ✔ | ✔ (INT8、FP8) | ✔ (INT4、FP4、NF4) |
上の表で、「-」は該当しない、またはまだ開始されていないことを意味します。
ソフトウェア | 微調整 | 推論 | ||
満杯 | PEFT | 8ビット | 4ビット | |
パイトーチ | 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) |
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 |
トランスフォーマー | 4.35.2(CPU)、 4.31.0 (インテル GPU) | 4.35.2(CPU)、 4.31.0 (インテル GPU) | 4.35.2(CPU)、 4.31.0 (インテル GPU) | 4.35.2(CPU)、 4.31.0 (インテル GPU) |
シナプスAI | 1.13.0 | 1.13.0 | 1.13.0 | 1.13.0 |
Gaudi2 ドライバー | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 | 1.13.0-ee32e42 |
インテルレベルゼロ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の詳細な要件を参照してください。
Ubuntu 20.04/22.04、Centos 8。
以下はチャットボットを作成するサンプルコードです。さらに例を参照してください。
NeuralChat は、チャット用の OpenAI 互換 RESTful API を提供するため、OpenAI API のドロップイン代替として NeuralChat を使用できます。 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 を使用するためのサンプル コードです。さらに例を参照してください。
CPU 上で LLM 低ビット推論の最新機能 (GGUF サポートなど) を取得するには、NeuralSpeed をインストールすることをお勧めします。次のドキュメントに従って、NeuralSpeed なしで v1.3 を使用することもできます。
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 )
Huggingface から GGUF 形式モデルをロードすることもできます。現時点では Q4_0/Q5_0/Q8_0 gguf 形式のみをサポートしています。
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 )
Modelscope から PyTorch モデルをロードすることもできます
注:モデルスコープが必要です
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 )
検証済みのモデル、精度、パフォーマンスには、リリース データまたは Medium ブログからアクセスできます。
概要 | |||||||
---|---|---|---|---|---|---|---|
ニューラルチャット | ニューラルスピード | ||||||
ニューラルチャット | |||||||
Intel CPU 上のチャットボット | Intel GPU 上のチャットボット | Gaudi のチャットボット | |||||
クライアント上のチャットボット | その他のノートブック | ||||||
ニューラルスピード | |||||||
ニューラルスピード | ストリーミングLLM | 低精度カーネル | テンソル並列処理 | ||||
LLM圧縮 | |||||||
スムーズクアント (INT8) | ウェイトのみの量子化 (INT4/FP4/NF4/INT8) | CPU 上の QLoRA | |||||
一般的な圧縮 | |||||||
量子化 | 剪定 | 蒸留 | オーケストレーション | ||||
データ拡張 | 輸出 | メトリクス | 目的 | ||||
パイプライン | 長さ適応型 | 早期退場 | |||||
チュートリアルと結果 | |||||||
チュートリアル | LLM リスト | 一般機種一覧 | モデルのパフォーマンス |
全出版物リストを表示
優れたオープンソース プロジェクト: bitsandbytes、FastChat、fastRAG、ggml、gptq、llama.cpp、lm-evauation-harness、peft、trl、streamingllm など。
貢献者の皆様に感謝します。
モデル圧縮技術や LLM ベースのチャットボット開発に関する興味深いアイデアを歓迎します。お気軽にご連絡ください。Intel Extension for Transformers でのコラボレーションを楽しみにしています。