著者: Intel Corporation Huang Shengsheng、Huang Kai、Dai Jinquan
Qubit | パブリック アカウント QbitAI
私たちは、ラージ言語モデル (LLM) によって推進される AI の新時代を迎えています。LLM は、カスタマー サービス、仮想アシスタント、コンテンツ作成、プログラミング支援などのさまざまなアプリケーションでますます重要な役割を果たしています。
ただし、LLM の規模が拡大し続けるにつれて、大規模なモデルの実行に必要なリソースの消費量も増加し、LLM の実行がますます遅くなり、AI アプリケーション開発者に大きな課題をもたらしています。
この目的を達成するために、インテルは最近、BigDL-LLM [1]と呼ばれる大規模モデルのオープンソース ライブラリをリリースしました。これは、AI 開発者や研究者がインテル®プラットフォーム 上で大規模言語モデルの最適化を加速し、インテル上で大規模言語モデルのパフォーマンスを向上させるのに役立ちます。®プラットフォームの 経験。
以下は、 Intel® Xeon® Platinum 8468 プロセッサを搭載したサーバー上で動作する、BigDL-LLM によって高速化された 330 億のパラメータを持つ大規模 言語モデルである Vicuna-33b-v1.3 [2]のリアルタイム効果を示しています。
△インテル® Xeon® Platinum 8468 プロセッサーを搭載したサーバー上で 330 億パラメータの大規模言語モデルを実行した場合の実際の速度(リアルタイム画面記録)
BigDL-LLM:インテル® プラットフォーム上のオープンソース大規模言語モデル高速化ライブラリー
BigDL-LLM は、大規模言語モデル用に最適化されたアクセラレーション ライブラリであり、Apache 2.0 ライセンスに基づいてリリースされたオープン ソース BigDL の一部です。
さまざまな低精度の最適化 (INT4/INT5/INT8 など) を提供し、複数のインテル® CPU 統合ハードウェア アクセラレーション テクノロジ (AVX/VNNI/AMX など) と最新のソフトウェア最適化を利用して、大規模な言語モデルを有効にすることができます。 インテル®プラットフォーム上で効率的に実行され、より高速に実行されます。
BigDL-LLM の重要な機能の 1 つは、Hugging Face Transformers API に基づくモデルの場合、モデルを高速化するためにコードを 1 行だけ変更できることです。理論上は、どのTransformers モデルでも実行できるため、開発者にとって非常に使いやすいです。 Transformers API に精通している. .
Transformers API に加えて、多くの人が LangChain を使用して大規模な言語モデル アプリケーションを開発することになります。
この目的のために、BigDL-LLM は使いやすい LangChain 統合[3]も提供しており、開発者は BigDL-LLM を使用して新しいアプリケーションを開発したり、Transformers API または LangChain API に基づいて既存のアプリケーションを移行したりすることが簡単にできます。
さらに、一般的な PyTorch の大規模言語モデル (Transformer または LangChain API を使用しないモデル) の場合、BigDL-LLM optimize_model API のワンキー アクセラレーションを使用してパフォーマンスを向上させることもできます。詳細については、GitHub README [4]および公式ドキュメント[5]を参照してください。
BigDL-LLM は、一般的に使用される多数のオープンソース LLM アクセラレーション サンプル (例: Transformers API を使用したサンプル[6]や LangChain API [7]を使用したサンプル) に加え、 開発を容易にするためのチュートリアル (jupyter ノートブックのサポートを含む) [8]も提供します。早く始めようとする人。
インストールと使用: 簡単なインストールプロセスと使いやすい API インターフェース
BigDL-LLM のインストールは、以下に示す 1 行のコマンドを実行するだけで簡単です。
pip install --pre --upgrade bigdl-llm[all]
△コードが完全に表示されない場合は、左右にスワイプしてください
BigDL-LLM を使用して大規模なモデルを高速化することも非常に簡単です (ここでは例として Transformers スタイル API のみを使用しています)。
BigDL-LLM Transformer スタイル API を使用してモデルを高速化するには、モデルの読み込み部分のみを変更する必要があり、その後の使用プロセスは元の Transformer のプロセスとまったく同じです。
BigDL-LLM API を使用してモデルをロードする方法は、Transformers API の方法とほぼ同じです。ユーザーはインポートを変更し、 from_pretrained パラメーターでload_in_4bit=Trueを設定するだけで済みます。
BigDL-LLM は、モデルの読み込みプロセス中にモデルに対して 4 ビットの低精度量子化を実行し、さまざまなソフトウェアおよびハードウェア アクセラレーション テクノロジを使用して、後続の推論プロセス中の実行を最適化します。
#bigdl.llm からINT4 最適化を使用してハグ フェイス トランスフォーマー モデルをロードします
。トランスフォーマーインポート AutoModelForCausalLM
モデル = AutoModelForCausalLM.from_pretrained('/path/to/model/',load_in_4bit=True)
△コードが完全に表示されない場合は、左右にスワイプしてください
例: 大規模な言語モデルに基づいて音声アシスタント アプリケーションを迅速に実装する
以下では、LLM「音声アシスタント」の一般的なアプリケーション シナリオを例として、BigDL-LLM を使用して LLM アプリケーションを迅速に実装するケースを示します。通常、音声アシスタント アプリケーションのワークフローは次の 2 つの部分に分かれています。
△図 1. 音声アシスタントのワークフローの概略図
音声認識 - 音声認識モデル (この例では Whisper モデル[9]を使用 ) を使用して、ユーザーの音声をテキストに変換します。
テキスト生成 - 1 で出力されたテキストをプロンプトとして使用し、大規模な言語モデル (この例ではLlama2 [10] ) を使用して応答を生成します。
以下は、この論文で BigDL-LLM と LangChain [11]を使用して 音声アシスタント アプリケーションを構築するプロセスです。
音声認識段階: 最初のステップは、プリプロセッサ プロセッサと音声認識モデル recog_model をロードすることです。この例で使用される認識モデル Whisper は、Transformers モデルです。
BigDL-LLM でAutoModelForSpeechSeq2Seqを使用し、パラメーターload_in_4bit=Trueを設定するだけで、モデルを INT4 精度でロードして高速化できるため、モデルの推論時間が大幅に短縮されます。
#processor = WhisperProcessor .from_pretrained(recog_model_path)
recog_model = AutoModelForSpeechSeq2Seq .from_pretrained(recog_model_path,load_in_4bit=True)
△コードが完全に表示されない場合は、左右にスワイプしてください
2番目のステップは音声認識です。まずプロセッサを使用して入力音声から入力特徴を抽出し、次に認識モデルを使用してトークンを予測し、再びプロセッサを使用してトークンを自然言語テキストにデコードします。
input_features =processor(frame_data,
sampling_rate=audio.sample_rate,
return_tensor=“pt”).input_featurespredicted_ids
=recogn_model.generate(input_features,forced_decoder_ids=forced_decoder_ids)
text =processor.batch_decode(predicted_ids,skip_special_tokens=True)[0]
△コードが完全に表示されない場合は、左右にスワイプしてください
テキスト生成段階では、まず BigDL-LLM のTransformersLLM APIを使用して、LangChain 言語モデルを作成します (TransformersLLM は、BigDL-LLM で定義された言語チェーン LLM 統合です)。
この API を使用して、任意の Hugging Face Transformers モデルをロードできます。
llm = トランスフォーマーLLM 。from_model_id(
model_id=llm_model_path,
model_kwargs={
"温度": 0,
"max_length": args.max_length,
"trust_remote_code": True},
)
△コードが完全に表示されない場合は、左右にスワイプしてください
次に、通常のダイアログチェーンLLMChainを作成し、作成済みの llm を入力パラメータとして設定します。
# 次のコードは、ユースケースと同じように完成しています
voiceassistant_chain = LLMChain(
llm=llm、
prompt=prompt、
verbose=True、
memory=ConversationBufferWindowMemory(k=2),
)
△コードが完全に表示されない場合は、左右にスワイプしてください
このチェーンはすべてのダイアログ履歴を記録し、応答を生成するための大規模言語モデルのプロンプトとしてダイアログ履歴を適切にフォーマットします。このとき、認識モデルが生成したテキストを「human_input」として入力するだけでよく、コードは次のようになります。
response_text = voiceassistant_chain .predict(human_input=text,
stop=”\n\n”)
△コードが完全に表示されない場合は、左右にスワイプしてください
最後に、音声認識とテキスト生成のステップをループに入れることで、複数の会話でこの「音声アシスタント」と話すことができます。下部のリンク [12]にアクセスして 完全なサンプル コードを確認し、自分のコンピュータで試してみることができます。BigDL-LLM を使用して、独自の音声アシスタントをすばやく構築します。
著者について
Intel Corporation のシニア AI アーキテクトである Huang Shengsheng、Intel Corporation の AI フレームワーク エンジニアである Huang Kai、Intel の学者、ビッグ データ テクノロジーのグローバル CTO、BigDL プロジェクトの創設者である Dai Jinquan は、全員ビッグ データと AI 関連の仕事に従事しています。 。
*この記事は Qubit によって公開が許可されており、ビューは著者のみが所有します。