大規模言語モデル推論ガイド#

GPT のような大規模言語モデル (LLM) は、テキスト生成から言語翻訳まで、幅広い自然言語タスクを実行できる変革的なディープラーニング・ネットワークです。OpenVINO はこれらのモデルの展開を最適化し、パフォーマンスとさまざまなアプリケーションへの統合を強化します。このガイドでは、モデルの読み込みと変換から高度なユースケースまで、OpenVINO で LLM を使用する方法を説明します。

LLM のデプロイに OpenVINO を使用する利点:

  • OpenVINO は最適化された LLM 推論を提供します: 完全な C/C++ API を提供し、Python ベースのランタイムよりも高速な操作を実現します。迅速な開発のための Python API が含まれており、C++ でさらに最適化するオプションもあります。

  • 多様なハードウェアと互換性があります: ARM および x86/x64 アーキテクチャーの CPU、GPU、ニューラル・アクセラレーター、統合型インテル® プロセッサー・グラフィックス、ディスクリートのインテル® Arc™ A シリーズ・グラフィックス、ディスクリートのインテル® データセンター GPU フレックスシリーズをサポートし、ターゲット・ハードウェアでのパフォーマンスを最大化する自動最適化機能を備えています。

  • 依存関係が少なくなります: Hugging Face や PyTorch などのフレームワークよりもバイナリーサイズが小さくなり、メモリー・フットプリントが削減されるため、デプロイメントが容易になり、更新がより管理しやすくなります。

  • 圧縮および精度管理技術を提供します: 埋め込みレイヤーを含む 8 ビットおよび 4 ビットの重み圧縮、およびストレージ形式の削減など。これには、非圧縮モデルの fp16 精度と、Hugging Face の GPTQ モデルなどの圧縮モデルの int8/int4 が含まれます。

  • 幅広いディープラーニング・モデルとアーキテクチャーをサポートします: Llama 2、MPT、OPT、Stable Diffusion、Stable Diffusion XL などのテキスト、画像、オーディオ生成モデルが含まれます。これにより、マルチモーダル・アプリケーションの開発が可能になり、一度記述すればどこにでもデプロイできるようになります。

  • 推論能力を強化: スケールドット積アテンション、ロータリー位置埋め込み、グループ・クエリー・アテンション、エキスパートの混合などの推論プリミティブを融合しました。また、インプレース KV キャッシュ、動的量子化、KV キャッシュの量子化とカプセル化、動的ビームサイズ構成、投機的サンプリングなどの高度な機能も提供します。

  • ステートフルなモデル最適化を提供: Hugging Face Transformers のモデルはステートフル形式に変換され、過去の KV キャッシュテンソルを内部でより効率よく管理することで、長時間実行されるテキスト生成タスクの推論パフォーマンスとメモリー使用量を最適化します。この機能は、サポートされている多くのモデルで自動的にアクティブ化されますが、サポートされないモデルではステートレスのままになります。詳細は、ステートフル・モデルとステート API をご覧ください。

OpenVINO は、生成 AI のユースケースに 3 つのパスを提供します:

  • Hugging Face: Optimum Intel 拡張を介して、Hugging Face フレームワーク (トランスフォーマー、ディフューザー) のバックエンドとして OpenVINO を使用します。

  • OpenVINO GenAI フレーバー: OpenVINO GenAI API を使用します (Python および C++)。

  • ベース OpenVINO: カスタム・パイプライン・コードで OpenVINO ネイティブ API (Python および C++) を使用します。

どちらの場合も、推論には OpenVINO ランタイムが使用され、最適化には OpenVINO ツールが使用されます。主な違いは、フットプリントのサイズ、使いやすさ、カスタマイズ性にあります。

Hugging Face API は習得が容易で、シンプルなインターフェイスを提供し、モデルの初期化とテキスト生成の複雑性を隠匿して、開発者のエクスペリエンスを向上させます。ただし、依存関係が多くカスタマイズ性が低いため C/C++ に移植できません。

OpenVINO GenAI フレーバーは、テキスト生成ループ、トークン化、スケジューリングなどの重要なタスクを自動的に管理することで、LLM 実装の複雑性を軽減します。ネイティブ OpenVINO API は、これらの機能を手動で設定する必要がある、より実践的なエクスペリエンスを提供します。どちらも、依存関係とアプリケーション全体のフットプリントを最小限に抑え、C++ アプリケーションで生成モデルを使用できるように設計されています。

各種モデルやシナリオを試すには、Hugging Face フレームワークから始めることを推奨します。さらに最適化の必要がある場合、モデルを OpenVINO API で使用できます。インテルによる適用は、ニューラル・ネットワーク圧縮フレームワーク (NNCF) を使用したモデルの最適化 (重み圧縮) を可能にし、ネイティブ API アプリケーションで使用するため、モデルを OpenVINO モデル形式にエクスポートするインターフェイスを提供します。

次の方法で LLM を実行します:

以下の表は、Hugging Face とネイティブ OpenVINO API アプローチの違いをまとめたものです:

Hugging Face とネイティブ OpenVINO API の違い

OpenVINO を介した Hugging Face

OpenVINO ネイティブ API

モデルのサポート

LLM などのトランスフォーマー・ベースのモデルをサポート

ほとんどのフレームワークのモデル・アーキテクチャーをサポート

API

Python (Hugging Face API)

Python、C++ (OpenVINO API)

モデル形式

ソース・フレームワーク / OpenVINO

ソース・フレームワーク / OpenVINO

推論コード

Hugging Face ベース

カスタム推論パイプライン

追加の依存関係

多くの Hugging Face 依存関係

軽量 (numpy など)

アプリケーションのフットプリント

ラージ

スモール

前処理/後処理と周辺コード

高レベルの Hugging Face API を通じて提供

カスタム実装の必要があります (OpenVINO のサンプルとノートブックを参照)

パフォーマンス

良好ですが、ネイティブ API に比べると効率が低下します

C++ には本来の速度上の利点がありますが、実践的な最適化が必要です

柔軟性

Hugging Face API に限定されます

Python と C++ による高い柔軟性を持ち、カスタム・コーディングが可能です

学習曲線と労力

学習曲線が低く、統合が迅速

学習曲線が高く、統合に多くの労力が必要

理想的な使用例

迅速なプロトタイプの作成や Python 中心のプロジェクトに最適

高性能でリソースが最適化された生産環境に最適

モデルのサービス

Hugging Face の CPU/GPU 使用量に基づく有料サービス

無料のコード・ソリューション、独自のサーバーでスクリプトを実行。AWS などのクラウドサービスではコストが発生する可能性がありますが、一般的に Hugging Face の料金よりも安価です。