OpenVINO 23.1 の紹介: エッジでの生成 AI の強化

著者:ユーリー・ゴルバチョフ、翻訳:ウー・ジュオ、ヤン・イーチェン

過去 1 年間、私たちは生成 AI のユースケースとモデルが爆発的に増加するのを見てきました。現在、注目に値する新しい生成モデルがさまざまなドメインに対してほぼ毎週リリースされており、増え続けるデータセットとさまざまな計算複雑さでトレーニングされています。LoRA のようなアプローチを使用すると、非常に控えめなトレーニング アクセラレータで巨大なモデルを調整でき、これにより基礎モデルをより多く変更できるようになります。これらのモデルのデプロイは、リソースの消費が原因で依然として課題があり、クラウドでのモデルの提供に大きく依存しています。

OpenVINO の 23.2 リリースでは、Generative AI の機能を通常のデスクトップやラップトップに導入し、リソースに制約のある環境でこれらのモデルをローカルで実行できるようにし、それらのモデルを実験してアプリケーションに統合できるようにしたいと考えています。私たちはこれらのシナリオに合わせて最適化するために製品全体に取り組み、いくつかの重要な機能を実装し、計画しているさらなる作業のための基盤を確立しました。

とはいえ、私たちの変更は Generative AI に限定されたものではなく、製品の他の部分も改善しており、それによって作業が容易になり、さらなる価値がもたらされることを願っています。

これらの変更を順を追って、その変更が正確に何であるかを見てみましょう。

過去 1 年間で、生成AI のユースケースとモデルが爆発的に増加しました。現在、注目すべき新しい生成モデルがさまざまなドメイン向けにほぼ毎週リリースされており、増え続けるデータセットとさまざまな計算複雑さでトレーニングされています。LoRAなどのメソッドを使用すると、非常に控えめなトレーニング アクセラレータで大規模なモデルを微調整でき、これによりベース モデルをより多く変更できるようになります。これらのモデルのデプロイは、リソースを消費するため依然として課題があり、クラウドでのモデルのデプロイに大きく依存しています。

OpenVINO   2023.1のリリースにより、私たちは生成AI の力を通常のデスクトップやラップトップにもたらし、リソースに制約のあるローカル環境でこれらのモデルを実行し、アプリケーション内で試して独自のモデルに統合できるようにしたいと考えていますこれらのシナリオに合わせて製品全体を最適化し、いくつかの重要な機能を実装し、次の作業計画の基礎を築きました。

とはいえ、私たちの変更は生成AIに限定されるものではなく、製品の他の部分も改善しており、それによってお客様の仕事が楽になり、さらなる価値がもたらされることを願っています。これらの変更がどのようなものかを見てみましょう。

生成 AI 機能

生成 AI 機能

大規模モデルの全体的なスタックの最適化。Generative AI ファミリのモデルには、リソースを大量に消費するという共通点があります。モデルのサイズは巨大で、モデルを実行するために必要なメモリの量は非常に多く、メモリ帯域幅の要求も膨大です。操作のために重みを不必要にコピーするなどの単純な理由により、メモリ不足によりモデルを実行できなくなる可能性があります。

大規模モデルの全体的なスタックの最適化。生成 AI ファミリーのモデルには、リソースを大量に消費するという共通点があります。モデルのサイズは巨大で、モデルを実行するために必要なメモリの量は非常に多く、メモリ帯域幅の要件も非常に高くなります。不必要な重量移動などの単純な動作により、メモリ不足によりモデルが実行できなくなる可能性があります。

これに適切に対応するために、CPU と GPU (統合型と個別型の両方) ターゲットの推論スタック全体で作業し、モデルの読み取りとコンパイルに必要なメモリの最適化や、モデルの処理方法の最適化など、モデルの操作方法を最適化しました。モデルの入力テンソルと出力テンソル、およびモデルの実行時間を改善するその他の内部構造を処理します。

これに適切に対応するために、モデルの読み取りとコンパイルに必要なメモリの最適化など、これらのモデルの使用方法を最適化することを目標に、CPUGPU (統合グラフィックスと個別グラフィックスの両方)を含む推論スタック全体で作業してきました。モデルの実行時間を短縮するために、モデルの入出力テンソルやその他の内部構造を処理する方法。

大規模言語モデルの重み量子化。LLM は実行時にかなりのメモリ帯域幅を必要とします。これを最適化するために、NNCF 最適化フレームワーク内および CPU 推論用に int8 LLM 重み量子化機能を実装しました。

大規模な言語モデルの重みの定量化LLM は実行時にかなりのメモリ帯域幅を必要とします。これを最適化するために、NNCF (Neural Network Compression Framework) 最適化フレームワークと CPU 推論に int8 LLM 重み量子化関数を実装しました。

この機能を使用すると、NNCF は、fp16 精度の通常のモデル ファイルと比較して 2 倍小さい、最適化された IR ファイルを生成します。IR ファイルにより、CPU プラグイン内で追加の最適化が可能になり、レイテンシが改善され、ランタイム メモリ消費量が削減されます。GPU 用の同様の機能は実装中であり、今後のリリースで利用可能になる予定です。

この機能を使用すると、NNCF は、fp16 の精度で通常のモデル ファイルと比較して半分のサイズの最適化された IR モデル ファイルを生成します。IR ファイルは CPU プラグインで追加の最適化の対象となり、レイテンシが改善され、ランタイム メモリ消費量が削減されます。GPU にも同様の機能が実装されており、後続のリリースで利用できるようになる予定です。

モデルの変換が容易になります。現在、LLM のほとんどは PyTorch ベースの環境から来ています。これらのモデルを変換するために、直接 PyTorch 変換機能を使用できるようになりました。LLM の場合、これにより変換時間が大幅に短縮され、ONNX 形式を介した以前のパスと比較してメモリ需要が削減されます。

モデルの変換が容易になります。現在、ほとんどの LLM は PyTorch ベースの環境から来ています。これらのモデルを変換するために、直接 PyTorch 変換機能を使用できるようになりました。LLM の場合、ONNX 形式を介した以前のパスと比較して、変換時間が大幅に短縮され、メモリ要件が軽減されます。

全体として、最適化の結果、CPU ではTBDの係数、 GPU ではTBDの係数によって LLM パフォーマンスを向上させることができました。さらに、これらのモデルを実行するために必要なメモリ量がxxx分の 1 に削減されました。場合によっては、以前の推論でメモリが不足していたため、最適化を行ったことによりモデルを実行できるようになりました。私たちは、私たちのアプローチがすべてのプラットフォームとサポートされている OS に適切に拡張できることを確認するために、さまざまなサイズとさまざまなタスクの数十の LLM で作業を検証してきました。

全体として、最適化のおかげで、CPU と GPU の両方で LLM のパフォーマンスを向上させることができました。[WZ1] さらに、これらのモデルの実行に必要なメモリ量を大幅に削減しました。場合によっては、OpenVINO の新しいバージョンを使用すると、以前はメモリ不足が原因で失敗したモデルを実行できるようになります。私たちは、さまざまなサイズとさまざまなタスクの数十の LLM での作業を検証し、私たちのアプローチがすべてのプラットフォームとサポートされているオペレーティング システムに適切に拡張できることを確認してきました。

当社の変換 API と重み量子化機能は、Hugging Face の最適化インテル拡張機能にも統合されており、OpenVINO を推論スタックとして使用して生成モデルを実行したり、便利な方法でモデルを OpenVINO 形式にエクスポートしたりできます。

当社の変換 API と重量定量化機能も Hugging Face の最適化インテル拡張機能に統合されており、OpenVINO を推論スタックとして使用して生成モデルを実行したり、便利な方法でモデルを OpenVINO 形式にエクスポートしたりすることができます。

ワークフローを簡素化する

ワークフローを簡素化する

開発パッケージは不要になり、統合されたツールが利用可能になります23.2 リリース以降、ランタイムと開発用に個別のパッケージをインストールする必要はなくなりました。私たちはツールを簡素化し、必要なすべてのコンポーネントを単一の openvino パッケージに統合することに取り組んできました。これは、モデルの変換と推論が、すべての OpenVINO 配布メカニズム (pip、conda、brew、archives) を通じて統一された方法で利用できることも意味します。

さらに、このリリースから、OpenVINO Python API は、最低限必要な Python バージョン (3.7) をサポートするすべてのパッケージから利用できるようになりました。これは、以前に利用可能だった pip に加えて、conda、brew、および選択された apt バージョンを意味します。

開発キットは不要になり、統合されたツールが提供されます。バージョン 2023.1 以降、ランタイム環境と開発環境に個別のパッケージをインストールする必要はなくなりました。私たちはツールを簡素化し、必要なすべてのコンポーネントを単一の OpenVINO パッケージに統合することに取り組んできました。これは、モデルの変換と推論が、すべての OpenVINO 配布メカニズム (pip、conda、brew、archive) を通じて統合された方法で利用できることも意味します。

さらに、このリリース以降、OpenVINO Python API は、最低限必要な Python バージョン (3.7) をサポートするすべてのパッケージから利用できるようになりました。これは、以前に利用可能な pip に加えて、conda、brew、および指定された apt バージョンも存在することを意味します。

より効率的でフレンドリーなモデル変換。オフライン モデル変換タスクにおいて、よく知られているモデル オプティマイザー (mo) ツールを置き換える OpenVINO モデル変換ツール (OVC) を導入します。このツールは openvino パッケージで利用でき、内部モデル フロントエンドに依存してフレームワーク形式を読み取り、モデル変換を実行するために元のフレームワークを必要としません。たとえば、TF モデルを OpenVINO に変換する場合、TensorFlow をインストールする必要はありません。同様に、変換せずに推論のために OpenVINO ランタイム内でこのモデルを読み取るだけの場合は、TensorFlow を使用する必要はありません。

より効率的でユーザーフレンドリーなモデル変換。OpenVINO モデル変換ツール (OVC) を導入します。これは、オフライン モデル変換タスクでよく知られているモデル オプティマイザー (MO) ツールを置き換えるものです。このツールは OpenVINO パッケージとして提供され、内部モデル フロントエンドに依存してフレーム形式を読み取り、モデル変換を実行するために元のフレームを必要としません。たとえば、TF モデルを OpenVINO に変換する場合、TensorFlow をインストールする必要はありません。同様に、変換せずに推論のために OpenVINO ランタイムでこのモデルを単純に読み込む場合も、TensorFlow は必要ありません。

Python スクリプト内でモデルを変換するために、convert_model API をさらに改善しました。たとえば、モデルを PyTorch オブジェクトから OpenVINO モデルに変換し、推論用にモデルをコンパイルしたり、IR に保存したりできます。以下の例を参照してください。

Python スクリプトでモデルを変換するために、convert_model API がさらに改善されました。たとえば、モデルを PyTorch オブジェクトから OpenVINO モデルに変換し、推論用にモデルをコンパイルしたり、IR 形式に保存したりできます。次の例を参照してください。

また、Python API も合理化されており、openvino 名前空間から直接利用できるようになり、より簡単になりました。mo ツールが必要な場合は、古い名前空間から関数にアクセスし、openvino-dev をインストールすることもできます。ツール自体も引き続き利用できますが、代わりに ovc ツールに移行することをお勧めします。

Python API も簡素化し、OpenVINO 名前空間から直接利用できるようにしたため、さらにシンプルになったことに注意してください。古い名前空間の関数には引き続きアクセスでき、MO ツールが必要な場合は openvino-dev をインストールできます。ツール自体は引き続き使用できますが、ovc ツールに移行することをお勧めします。

デフォルトで fp16 IR に切り替えます。変換ツールの変更に伴い、IR のデータ型として fp16 精度の使用に切り替えています。これにより、モデルのサイズを 2 分の 1 に縮小することができ、当社が実施したテストによれば、精度には影響がありません。IR 精度はプラグイン内の実行精度に影響を与えず、プラグインはデフォルトで常に最高のパフォーマンスで実行し続けることに言及することが重要です。

デフォルトでfp16 IRに切り替わります変換ツールの変更に伴い、IR のデータ型として fp16 精度を使用するようになりました。これにより、モデル サイズを (FP32 精度モデルと比較して) 半分に縮小することができ、実行したテストによると精度には影響がありません。IR の精度はハードウェア プラグインの実行精度には影響せず、デフォルトではプラグインは常に最適なパフォーマンスで実行を続けることに注意してください。

PyTorch の互換性の向上

PyTorch の互換性の向上

すでに述べたように、当社の直接 PyTorch 変換機能は完成しており、たとえば HuggingFace 最適インテリジェンス ソリューション内でモデルを変換するために私たち自身でこの機能を使用しています。したがって、ONNX 形式の追加の手順 (制限なく引き続きサポートされています) がバイパスされるため、モデルの変換がより簡単になります。

前述したように、PyTorch モデルを直接変換する機能は完成しており、そのソリューションはモデル変換用の HuggingFace 最適化インテルに統合されています。したがって、ONNX 形式 (引き続き制限なくサポートされています) の追加の手順をバイパスするため、モデルの変換がより簡単になります。

OpenVINO を PyTorch エコシステムにさらに近づけるために、torch.compile と対応するバックエンドのサポートを導入しています。torch.compile でモデルをコンパイルし、バックエンドとして openvino を指定することで、OpenVINO スタックを通じてモデルを実行できるようになりました。

OpenVINO を PyTorch エコシステムに近づけるために、torch.compile と対応するバックエンドのサポートを導入しました。torch.compile でモデルをコンパイルし、バックエンドとして openvino を指定することで、OpenVINO スタックを通じてモデルを実行できるようになりました。

たとえば、以下を参照してください。

次の例に示すように:

この機能は積極的に強化されており、パフォーマンスと操作範囲の向上が期待されていますが、Stable Diffusion WebUI (リンク)などとの統合ではすでに使用されています。

この機能は積極的に強化されており、パフォーマンスと運用範囲の向上が期待されていますが、Stable Diffusion WebUI (リンク) などの統合ですでに使用されています。

刺激的な使用例を備えた新しいノートブック

魅力的な新しいNotebookの使用例

ラップトップから直接試すことができる新機能を紹介するために、いくつかのノートブックを作成し、既存のノートブックを更新しました。私たちが最も楽しみにしているものは以下のとおりです。

ノートブックから直接試せる新機能を紹介するために、Jupyter ノートブックの例をいくつか作成し、既存のノートブックを更新しました。私たちが最も楽しみにしているものは次のとおりです。

大規模言語モデルに基づくチャットボット (LLM チャットボット):

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/254-llm-chatbot

Vincent ダイアグラム モデル StableDiffusion XL:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/248-stable-diffusion-xl

Vincent ダイアグラム モデル Tiny SD:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/251-tiny-sd-image-世代

音楽モデル MusicGen を生成します。

https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/250-music-generation

ビデオ モデルの生成 Text-to-video:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/253-zeroscope-text2video

ダース・ベイダーが波でサーフィンをしている

​编辑icon-default.png?t=N7T8https://camo.githubusercontent.com/64eec6e52d060ca971c5a3be3f0d60e712907c98b4661b454d7e3e9575c2bc6b/68747470733a2f2f68756767696e67666163652e636f2f64617461736574732f68756767696e67666163652f646f63756d656e746174696f6e2d696d616765732f7265736f6c76652f6d61696e2f6469666675736572732f646172746876616465725f63657270656e73652e676966

おすすめ

転載: blog.csdn.net/gc5r8w07u/article/details/133075574