開発者の実践 | OpenVINO™ がデプロイしたモデル オペレーターをサポートしていない場合はどうすればよいですか?

青い文字をクリックしてください

開発をもっと面白くするためにフォローしてください

著者: ヤン・グオジン、インテル エッジ コンピューティング イノベーション アンバサダー

6373655084ecf8ec3fd015003e65387c.png

01

序文

インテルがリリースした OpenVINO™ ツール スイートは、oneAPI に基づいて開発されており、高性能コンピューター ビジョンおよびディープ ラーニング ビジョン アプリケーションの開発を加速できます。このツール スイートは、エッジからクラウドまでのさまざまなインテル プラットフォームに適用でき、ユーザーがより正確な画像を開発できるようにします。実世界の結果が運用システムに導入されます。 OpenVINO™ は、合理化された開発ワークフローを通じて、開発者が高性能のアプリケーションとアルゴリズムを現実世界に展開できるようにします。

ba5ad4fb150b8bdc77a40ed1dfc1219f.png

OpenVINO™ 2023.2 は 2023 年 11 月 16 日にリリースされ、このツールキットは生成人工知能の可能性を最大限に引き出す新機能をもたらします。コードの変更を最小限に抑えるためのより生成的な AI カバレッジとフレームワークの統合、および PyTorch モデルの直接変換のためのモデル サポートの拡張。 LLaVA、chatGLM、Bark、LCM などの有名なモデルを含む、より多くの新しいモデルをサポートします。より広範なラージ言語モデル (LLM) とより多くのモデル圧縮テクノロジのサポート、ランタイム推論のサポート、次の Int4 モデル圧縮形式のサポート、ニューラル ネットワーク圧縮フレームワーク (NNCF) によるネイティブ Int4 圧縮、および一連の新しい特徴。

最新の OpenVINO™ 更新情報を通じて、OpenVINO™ が実際に継続的に更新され、より多くの新しいモデルに適応されていることがわかります。主な理由は、多くの新興モデルがさらに新しいオペレーターを導入する可能性があり、OpenVINO™ はその後のバージョン更新まで適応されない可能性があることです。しかし、この段階で OpenVINO™ を使用してこの深層学習モデルをデプロイする必要がある場合はどうすればよいでしょうか?

実際、一部のプログラミング専門家や OpenVINO™ について詳しく研究している人は、OpenVINO™ ソース コードを変更し、独自のモデル演算子を作成して OpenVINO™ に追加できます。ただし、オペレーターを開発する敷居は非常に高く、ほとんどの開発者にとってこれを達成するのは非常に困難です。

以前に RT-DETR モデルをデプロイしたとき、OpenVINO™ の GPU デバイスを使用してモデルをデプロイすると、オペレーターがサポートされないという問題にも遭遇しました。したがって、この記事では、この問題の解決プロセスを組み合わせて、ほとんどの開発者がモデルのデプロイ中に演算子の不一致の問題を解決する方法を示します。

02

問題を送信する

OpenVINO™ は GitHub 上のオープン ソース プロジェクトです。ソース コードはオープン ソースなので、ソース コードをダウンロードして自分でコンパイルできるため、ソース コードを変更できます。ただし、ほとんどの開発者にとって、ソース コードを変更するのは困難です。成し遂げる。 GitHub 上のオープンソース プロジェクトでは Issues 機能が提供されており、開発者が使用中に問題が発生した場合は、Issue を送信することで公式の開発者に支援を求めることができます。

問題を送信するプロセスは次のとおりです。

01

OpenVINO™ Factory の問題ページにアクセスし、[新しい問題] を作成します。

OpenVINO™ Factory ライブラリの問題ページ:

https://github.com/openvinotoolkit/openvino/issues

be67f07b99bcef18507eb55cea1c7bf8.png

02

問題のタイプを選択します。独自の問題のタイプに応じて選択できます

d2095d92833bc3cd5d99eb878af94148.png

03

タイプを選択した後、問題の状況に応じて関連する内容を入力できます。

eb3a5334648e37797408a098698e934c.png

04

この問題を例として、問題の内容を簡単に紹介します。

まず、基本的な内容を入力します。これには、主に OpenVINO™ バージョン、開発プラットフォーム、推論装置、モデル フレームワーク、デプロイされたモデル、および問題の簡単な説明が含まれます。この号の提出物は次のようになります。

efe80fbc3501dd9f57210c731740535e.png

次のステップは、問題のプロセスを詳細に再説明することです。開発者が問題をより明確に理解できるようにするために、開発者が問題を完全に再現できるように、詳細に記述する必要はありません。再現手順が比較的単純な場合は、ここで詳細に説明できますが、問題がより複雑で複数のファイルがある場合は、関連ファイルを保存する GitHub リポジトリを作成する必要があります。

最後のステップは、エラー ログ出力を追加することです。これは主に、開発者がログに基づいて問題が正常に再現されたかどうかを確認したり、ログ出力に基づいて問題を特定できるようにするためです。

問題を送信すると、OpenVINO™公式スタッフが問題の内容に応じて問題を解決する開発者を割り当てますので、現時点ではOpenVINO™からの正式な返答を待つだけです。

03

OpenVINO™ ソースコードをコンパイルする

前のステップでは関係者に協力を求めましたが、近いうちに正式な回答が得られると思いますが、正式な回答にソースコードの変更が含まれる場合、ほとんどの開発者は着手できない可能性があります。ソースコードに関わる変更については、必要に応じてプロジェクト内で直接使用する場合は、ソース コードを自分でコンパイルする必要があります。あなたが提起した問題に対する公式の解決策が価値がある場合、それは後続のバージョンで修正され、最新バージョンにリリースされる可能性があるためです。しかし、私たちユーザーにとっては、すぐに使用する必要があり、次のバージョンがリリースされるまで待つことはできません。したがって、公式の回答と変更を組み合わせて、Windows プラットフォームに基づいてソース コードから段階的に開始して、ソース コードをコンパイルして使用します。

公式のソース コードのコンパイル プロセスのリンクは次のとおりです。

https://github.com/openvinotoolkit/openvino/blob/master/docs/dev/build_windows.md

アウトサイドデフォルト.png

3.1 ソースコードのダウンロード

アウトサイドデフォルト.png

OpenVINO™ ソース コードは Git 経由でダウンロードできます。Git を使用して次のコードを順番に実行します。

git clone https://github.com/openvinotoolkit/openvino.git
cd openvino
git submodule update --init

左にスワイプするとさらに表示されます

ネットワークの問題により、ここでのダウンロードは遅くなる可能性がありますが、上記でダウンロードした追加の依存関係の一部が完全にダウンロードできることを確認する必要があります。そうしないと、後続のコンパイル中にエラーが発生します。後でコンパイル済みファイルを生成するときに欠落している項目がある場合は、ネットワークの理由で一部のファイルがダウンロードされなかったことが主な原因ですが、完全なファイルをダウンロードする前に数回ダウンロードしたこともあります。

アウトサイドデフォルト.png

3.2 ソースコードの変更

アウトサイドデフォルト.png

前のステップでソース コードをダウンロードしました。次のステップでは、公式の修正意見に従ってソース コードを修正します。下の図に示すように、このスクリーンショットは公式のソース コードの修正意見を示しています。

b58e593c1460b3b3aa55dfba58a6c9f7.png

この復帰意見では、ソース コードにコードを追加する必要があるため、ここでは状況に応じてソース コードを変更できます。

アウトサイドデフォルト.png

3.3 ソースコードのコンパイル

アウトサイドデフォルト.png

ソース コードは前の手順でダウンロードおよび変更されており、次にコンパイルできます。ここでは、Cmake+vs2022 を使用して、Cmake を通じて VS2022 プロジェクトをコンパイル、コンパイル、生成し、VS を使用してプロジェクトのソース コードをコンパイルします。

まず、次の 2 つのコマンドを順番に実行します。

mkdir build && cd build
cmake -G "Visual Studio 17 2022" <path/to/openvino> -DCMAKE_BUILD_TYPE=Debug

左にスワイプするとさらに表示されます

ここで、「<path/to/openvino>」を独自の OpenVINO™ パスに置き換える必要があります。最初のコマンドを実行すると、ビルド フォルダーが作成され、このフォルダーに切り替わります。 2 番目のコマンドを実行すると、次の図に示すように、プロジェクト内の CMakeLists ファイルに従ってコンパイルされ、最終的に成功したコンパイル出力は 2 番目の図に示すようになります。​ 

6bb4d68e03d65d6d85d52c22451ec5d8.png

ae2da9c9a5396890eb30d6dfee5c934f.png

上記の効果が得られない場合は、コンパイルに問題があることを意味するため、戻って関連エラーを探す必要があります。 Jun の以前のコンパイル経験に倣い、最初のステップで主な問題が発生しましたが、その主な理由は、ネットワークの問題により関連する設定がダウンロードされなかったことです。最終的なコンパイルが成功すると、OpenVINO.sln プロジェクト ソリューションがビルド ファイルに表示されます。

c6b4d434b0cde56d3a457886d8819e39.png

次に、VS2022 を使用してソリューションを開き、[デバッグ] または [リリース] を設定して生成されたダイナミック リンク ライブラリのバージョンを選択し、ALL_BUILD プロジェクトを右クリックして [生成] をクリックし、ソース コード コンパイルのためにプロジェクトを実行します。

39fe7c670c84a18cdecf34f0e9877e43.png

ソース コード コンパイルのこのステップは、コード ファイルの角度が関係しているため、生成に時間がかかります。

アウトサイドデフォルト.png

3.4 コンパイルされたダイナミック リンク ライブラリを取得する

アウトサイドデフォルト.png

プロジェクトが正常に実行されると、次のパスでコンパイルされたダイナミック リンク ライブラリ ファイルが見つかります。コンパイルによって生成された .dll ファイルと .lib ファイルが、ダウンロードした公式 OpenVINO™ ディストリビューション ランタイムに含まれていることがわかります。一貫性があるため、その後の使用では、コンパイルによって生成されたダイナミック リンク ライブラリ ファイルを現在のプロジェクトに置き換えるだけで済みます。

5040389556f532b5861ec9a1840f63ed.png

04

実際のプロジェクトのテスト

このケースは主に、例として GPU の導入を使用した RT-DETR モデルに基づいています。最後に、このケースに戻り、問題が解決されたかどうかをテストしました。 C++ で RTDETR モデルをデプロイするプロセスについては、以前の記事「 OpenVINO™ C++ API に基づいた RT-DETR モデルのデプロイ | 開発者の実践》 なので、ここでは C++ プロジェクトの構成についてはあまり説明しません。

下の図に示すように、この図は現在のリリース バージョン OpenVINO™ 2023.2 を使用した結果です。ここでは、GPU.0 統合グラフィック カードを使用して推論を実行します。モデルにエラーが発生することがわかります。推論段階でプログラムがクラッシュする原因となります。

a64e073ca03580899ff85f6722bde265.png

次に、上記でコンパイルおよび生成したダイナミック リンク ライブラリを使用してプログラムを実行します。GPU.0 統合グラフィック カードを使用して推論を実行すると、エラーが解消され、モデル推論が正常に実行されることがわかります。結果が印刷されます。

cda0bf76bc911889a71b69bb08fa5953.png

比較テストを通じて、公式ソリューションが正しいことがわかり、現在の問題も公式ソリューションに基づいて解決できており、次のバージョンの正式リリースを待たずに事前に使用できるため、誰にとっても便利です。

05

要約する

この記事では、OpenVINO™ を使用するときに演算子の不一致などの問題が発生した場合に、私たちユーザーが遭遇する問題を公式開発者の助けを借りて解決する方法を、モデルの導入事例を組み合わせて説明します。また、この方法でコードのバグをOpenVINO™に報告し、問題を解決しながら、自らも積極的にオープンソースに貢献してきました。

OpenVINO™

- 終わり -

你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ 2023.2 发布:让生成式 AI 在实际场景中更易用➡️ 开发者实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI➡️ 基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手➡️ 基于 Llama2 和 OpenVINO™ 打造聊天机器人➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发者实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️ 还不知道如何用OpenVINO™作画?点击了解教程。
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2023.2

クリックして原文を読み、OpenVINO 2023.2 を今すぐ体験してください

39c282417c16511a7e3628d49dfd975f.png

この記事はとても興味深いものですが、「読んで」いますか?

おすすめ

転載: blog.csdn.net/OpenVINOCC/article/details/134985839