データの収集、データのクリーンアップ、環境の構築、モデルのトレーニング、モデルの評価とテストに一生懸命取り組んだ後、ようやくそれらを特定のシナリオに適用できます。しかし、突然、独自のモデルを呼び出す方法はもちろん、デプロイする方法もわからないことに気付きました。 これは、「コンピュータ ビジョン研究所」が今日皆さんと共有したいことでもあります。モデルを展開する際に考慮する必要がある問題、考慮すべき手順、一般的に使用される展開方法は何かについて説明します。 1 背景データの収集、データのクリーンアップ、環境の構築、モデルのトレーニング、モデルの評価とテストに一生懸命取り組んだ後、ようやくそれらを特定のシナリオに適用できます。しかし、突然、独自のモデルを呼び出す方法はもちろん、デプロイする方法もわからないことに気付きました。 GPU Coder を使用してエンドツーエンドのアプリケーション全体のコードを生成します ディープラーニング モデルを本番環境に導入する場合、大きな課題が 2 つあります。
Matlabの例 データから学習し、パターンを認識し、人間の介入を最小限に抑えて意思決定を行うことができるシステムは魅力的です。ニューラル ネットワークを使用する機械学習の一種であるディープラーニングは、オブジェクト分類からレコメンデーション システムまで、さまざまなコンピューティング問題を解決するための効果的なツールとして急速に普及しつつあります。ただし、トレーニング済みのニューラル ネットワークをアプリケーションやサービスに導入することは、インフラストラクチャ管理者にとって課題となる可能性があります。複数のフレームワーク、十分に活用されていないインフラストラクチャ、標準的な実装の欠如などの課題は、AI プロジェクトの失敗につながる可能性もあります。今日は、これらの課題に対処し、データセンターまたはクラウドの運用環境にディープラーニング モデルを展開する方法について説明します。 一般的に、私たちアプリケーション開発者は、データ サイエンティストや IT 部門と協力して、AI モデルを本番環境に展開します。データ サイエンティストは、特定のフレームワークを使用して、さまざまなユース ケース向けに機械学習/ディープラーニング モデルをトレーニングします。トレーニング済みのモデルを、ビジネス上の問題を解決するために開発されたアプリケーションに統合します。 IT 運用チームは、データ センターまたはクラウドで展開されたアプリケーションを実行および管理します。 2 展開要件以下の要件は「知湖天子塵」から転送されます リンク: https://www.zhihu.com/question/329372124/answer/743251971 要件 1:シンプルなデモ、効果を確認するだけcaffe、tf、pytorchなどのフレームワークを選択し、テストモードに切り替えてPythonで実行し、結果を表示する簡単なGUIを作成します。より高度なアプローチとしては、CPythonを使用してインターフェイスのレイヤーをラップし、C++プロジェクトを使用してそれを呼び出すことができます。 要件2:スループットとレイテンシを必要とせずにサーバー上で実行caffe、tf、pytorch などの任意のフレームワークを選択し、公式のデプロイメント チュートリアルに従って、C++ でデプロイします。たとえば、ツールを使用して pytorch モデルを libtorch にインポートし、実行します。この方法はまだフレームワークから逸脱しておらず、トレーニングの利便性のために保持されている多くの機能が削除されていないため、パフォーマンスは最適ではありません。さらに、これらのフレームワークは CPU または NVIDIA GPU のいずれかであり、ハードウェア プラットフォームの要件があり、柔軟性がありません。また、フレームワークは非常に大きく、メモリ (tf はビデオ メモリも占有します) とディスクを占有します。 要件 3:スループットとレイテンシの要件を満たすサーバーで実行する (スループットを重視)このタイプのアプリケーションは主にインターネット企業で使用されており、一般的には顔認証、音声サービス、ディープラーニングに基づくインテリジェントな推奨など、インターネット製品のバックエンド AI コンピューティングです。一般的に大規模に導入されるため、スループットやレイテンシだけでなく、消費電力やコストも考慮する必要があります。そのため、ソフトウェアに加えて、ハードウェアにも力を入れていきます。 ハードウェア的には、例えば推論には NVIDIA P4 や Cambrian MLU100 が使われます。これらの推論カードは、デスクトップレベルのグラフィックス カードよりも消費電力が少なく、エネルギー消費量あたりの計算効率が高く、ハードウェア構造が高スループットの状況に適しています。 ソフトウェアに関しては、ディープラーニング フレームワークは一般に直接使用されません。 NVIDIA 製品の場合、加速には TensorRT が一般的に使用されます。 TensorRT は CUDA、CUDNN を使用し、グラフ最適化、fp16、int8 量子化なども備えています。 要件4: NVIDIA組み込みプラットフォーム上で実行し、レイテンシに重点を置く例えば、PX2、TX2、Xavierなどは上記を参考にすると少し高価になります。 要件5:レイテンシに重点を置き、他の組み込みプラットフォーム上で実行ハードウェアに関しては、モデルの計算能力とレイテンシの要件、およびコストと電力消費の要件に基づいて、適切な組み込みプラットフォームを選択する必要があります。 たとえば、モデルの計算量が多い場合は、GPU を搭載した SoC を選択し、opencl/opengl/vulkan でプログラムする必要があるかもしれません。NPU を試すこともできますが、NPU は現在、少数の演算子をサポートしており、多くのカスタム Ops を持つ一部のネットワークは展開されない可能性があります。 小さなモデルやフレーム レート要件が低いモデルの場合、CPU で十分な場合もありますが、通常は何らかの最適化 (プルーニング、量子化、SIMD、アセンブリ、Winograd など) が必要になります。モバイル フォンへのディープラーニング モデルの導入もこのカテゴリに含まれますが、ハードウェアの選択はできず、ユーザーと同じフォンに導入する必要があります。 上記のソフトウェアの展開と最適化の作業は、いくつかのモバイル オープン ソース フレームワークで他の人によって行われています。通常は、それを変更するだけで、良好なパフォーマンスで使用できます。 要件6:上記の展開ソリューションはニーズを満たしていませんたとえば、オープンソースのモバイル フレームワークが十分に高速でない場合は、独自のフレームワークを作成します。たとえば、SenseTime、Megvii、Momenta にはそれぞれ独自のフォワード プロパゲーション フレームワークがあり、そのパフォーマンスはオープン ソース フレームワークよりも優れているはずです。ただ、自分でセットを書くのは時間がかかり、手間がかかるので、経験がないと、いつまで経ってもうまく書けなくなる可能性が高くなります。 MATLAB GPU Coder を使用してディープラーニング アプリケーションを NVIDIA GPU に導入する リンク: https://ww2.mathworks.cn/videos/implement-deep-learning-applications-for-nvidia-gpus-with-gpu-coder-1512748950189.html NVIDIA Jetson での物体検出用 CUDA コードの生成と展開 リンク: https://ww2.mathworks.cn/videos/generate-and-deploy-cuda-code-for-object-detection-on-nvidia-jetson-1515438160012.html 3 つの導入例分析のための組み込み展開シナリオを選択する 一般的に、オフライン トレーニングからオンライン展開まで、オフライン トレーニング フレームワーク (静的グラフ: tensorflow、caffe、動的グラフ: pytorch、mxnet など) に頼る必要があります。静的グラフは成熟しており、産業展開における落とし穴はほとんどありませんが、動的グラフは柔軟で便利で、事前調査が簡単です。それぞれに利点があります。また、オンライン推論フレームワーク (Alibaba の MNN、Tencent の NCNN など) に頼る必要があります。一般的に、neon などの基盤となる simd のものに取り組むことは推奨されません。これにより、展開サイクルが大幅に短縮されます。結局のところ、企業では時間が重要です。 上記のツール チェーンを選択した後、残っているのはそれをどのように展開するか、つまり展開プロセスであり、これが私たちが懸念していることです。 一般的なプロセスは次のステップに分かれています。
全体のプロセスは 3 つのステップに分かれていますが、3 つは相互に関連しており、影響を及ぼします。まず、モデル設計の最初のステップでは、推論フレームワークにおける Op のサポート レベルを考慮し、それに応じてネットワーク構造を調整する必要があります。変更やトリミングが一般的です。モデルの変換では、推論フレームワークを直接解析できるかどうか、または選択した解析媒体がネットワーク構造内のすべての Op をサポートしているかどうかを確認する必要もあります。サポートされていない領域が見つかった場合は、考慮に基づいて調整を行う必要があります。 以下にいくつかの導入事例を推奨します。多くの事例は製品の導入に使用されています。オフライントレーニングフレームワークでは主に tensorflow と mxnet を使用し、オンライン推論フレームワークでは主に Alibaba MNN を使用します。この事例については以下のリンクをご参照ください。 静的グラフの展開プロセス:
動的グラフ展開プロセス:
4つのディープラーニングモデルの展開方法出典:Zhiyun リンクを表示:https://www.zhihu.com/question/329372124/answer/1243127566主にオフライン展開方法を紹介しています 大きく分けて2段階に分かれており、第1段階はモデルをトレーニングして取得すること、第2段階はモデルを取得した後にモバイル端末に展開することです。この記事では主に第2段階について説明します。 モデルのトレーニングモデルをトレーニングする最初の段階では、実装用の成熟したオープンソース フレームワークとアルゴリズムがすでに存在しますが、モバイル デバイスに展開するには、圧縮と高速化が依然として必要です。 圧縮ネットワーク現在、ディープラーニングは様々な分野で従来のアルゴリズムを楽々と打ち負かしていますが、実際のプロジェクトで使用する際には大きな問題があります。
モバイル システムのリソースは限られており、ディープラーニング モデルは数百 MB に及ぶ場合もあるため、ディープラーニングをモバイル システムに適用することは困難です。 圧縮方法既存の包括的なディープ モデル圧縮方法は、主に次の 4 つのカテゴリに分類されます。 パラメータの削減と共有に基づく方法は、モデル パラメータの冗長性を対象とし、冗長で重要でない項目を削除しようとします。低ランク因数分解ベースの技術では、行列/テンソル分解を使用して、深層学習モデルの有益なパラメータを推定します。伝送/コンパクト畳み込みフィルタ ベースの方法では、ストレージと計算の複雑さを軽減するために、特別な構造化畳み込みフィルタを設計します。知識蒸留法では、蒸留モデルを学習することで、よりコンパクトなニューラル ネットワークをトレーニングし、より大きなネットワークの出力を再現します。 一般に、パラメータのプルーニングと共有、低ランク分解、知識蒸留の方法は、CNN の完全接続層と畳み込み層の両方に使用できますが、一方で、転送/コンパクト畳み込みカーネルを使用する方法は畳み込み層のみをサポートします。低ランク因数分解と変換/コンパクト畳み込みカーネルベースの方法は、CPU/GPU 環境で簡単に実装できるエンドツーエンドのパイプラインを提供します。対照的に、パラメータのプルーニングと共有では、ベクトル量子化、バイナリコーディング、スパース制約などのさまざまなアプローチを使用してタスクを実行し、多くの場合、目標に到達するまでに複数のステップが必要になります。 モバイル展開現在、多くの企業がオープンソースのモバイル ディープラーニング フレームワークを立ち上げていますが、これらは基本的にトレーニングをサポートしておらず、前向き推論のみをサポートしています。これらのフレームワークはすべてオフラインであるため、ユーザーデータのプライバシーが確保され、インターネット接続に依存しなくなります。 カフェ2 2017 年 4 月 19 日、Facebook は F8 開発者会議で Caffe2 を発表しました。このプロジェクトは、携帯電話向けに特別にカスタマイズされたディープ フレームワークです。caffe2 に基づいて移行されています。その目的は、最も一般的なスマート デバイスである携帯電話で、ディープラーニング アルゴリズムを幅広く効率的に適用できるようにすることです。 オープンソースアドレス: facebookarchive/caffe2 テンソルフローライト 2017 年 5 月 17 日、Google は I/O カンファレンスで TensorFlow Lite を発表しました。これは、モバイル デバイス向けに特別に最適化された TensorFlow のバージョンです。 TensorFlow Lite には、次の 3 つの重要な機能があります。
モジュールは次のとおりです。 TensorFlow モデル: ディスクに保存されたトレーニング済みの TensorFlow モデル TensorFlow Lite コンバーター: モデルを TensorFlow Lite ファイル形式に変換するプログラム TensorFlow Lite モデル ファイル: 速度とサイズが最適化された、FlatBuffers に基づくモデル ファイル形式。 TensorFlow Lite は現在、モバイル デバイス向けにトレーニングおよび最適化された多くのモデルをサポートしています。 コアML 2017 年 6 月 6 日、Apple は WWDC カンファレンスで Core ML を発表しました。機械学習モデルのトレーニングは非常に負荷の高いタスクです。Core ML の役割は、トレーニング済みのモデルを iOS が理解できる形式に変換し、新しいデータをモデルに「フィード」して出力を取得することです。問題を抽象化してモデルを作成することは難しくありませんが、モデルの改善とトレーニングは生涯にわたる研究とも言え、この記事の読者はこれにあまり興味がないかもしれません。幸いなことに、Apple はさまざまな機械学習モデルを Core ML が理解できる形式に変換するための一連のツールを提供しています。これにより、以前にトレーニングしたモデルを iOS アプリで簡単に使用できるようになります。以前は、モデルを自分で見つけて、プラットフォーム間でそれを呼び出すための C++ コードを記述する必要があり、iOS デバイスの GPU パフォーマンスと Metal を活用することは困難でした (マトリックス演算を実行するシェーダーを自分で記述しない限り)。 Core ML により、モデルを使用するハードルが大幅に下がりました。 Core ML は、iOS の視覚認識用の Vision フレームワークと Foundation のセマンティック分析関連 API を駆動します。一般的な開発者は、顔画像やテキスト認識などのこれらの高レベル API から直接メリットを得ることができます。これらのコンテンツは以前のバージョンの SDK にも存在していましたが、iOS 11 SDK では新しいフレームワークに集中しており、より具体的で低レベルのコントロールがいくつか公開されています。たとえば、Vision で高レベル インターフェースを使用しながら、同時に最下位レベルで使用されるモデルを指定できます。これにより、iOS 上のコンピューター ビジョンに新たな可能性がもたらされます。 メース Xiaomi はディープラーニング フレームワーク MACE をオープンソース化しました。このフレームワークには、異種アクセラレーション、アセンブリ レベルの最適化、さまざまなフレームワークのモデル変換のサポートなど、いくつかの機能があります。 異種混合により、CPU、GPU、DSP 上で異なるモデルを実行し、真の製品展開を実現できます。たとえば、顔検出、顔認識、顔追跡を異なるハードウェア上で同時に実行できます。 Xiaomi がサポートする GPU は Qualcomm に限定されず、非常に汎用性が高く優れています。たとえば、Rockchip の RK3299 は、CPU と GPU の両方の利点を同時に引き出すことができます。 MACE は、モバイル デバイス向けに最適化されたディープラーニング モデル予測フレームワークです。MACE は設計当初から、モバイル デバイスの特性に合わせて特別に最適化されています。
さらに、MACE は TensorFlow および Caffe モデルをサポートし、トレーニング済みのモデルを独自のモデル データ ファイルに変換できる変換ツールを提供します。また、モデルを C++ コードに変換するオプションがあり、動的ライブラリまたは静的ライブラリの生成をサポートし、モデルの機密性を向上させます。 現在、MACE は、カメラのポートレート モード、シーン認識、画像の超解像度、オフライン翻訳 (近日実現予定) など、Xiaomi 携帯電話の複数のアプリケーション シナリオに適用されています。 オープンソースアドレス: Xiaomi/mace MACE モデル動物園 MACE とともに、MACE Model Zoo プロジェクトもオープンソースであり、現在、オブジェクト認識、シーンのセマンティック セグメンテーション、画像の様式化などの複数のパブリック モデルが含まれています。 リンク: Xiaomi/mace-models フェザーCNNとNCNN FeatherCNNは、テンセントのAIプラットフォーム部門によって開発されました。ARMアーキテクチャに基づいて開発された効率的なニューラルネットワークフォワードコンピューティングライブラリであり、そのコアアルゴリズムは特許を取得しています。このコンピューティング ライブラリは Caffe モデルをサポートしており、依存性がない、高速、軽量という 3 つの主な特徴があります。ライブラリには次の機能があります。
FeatherCNN は、TensorGEMM によって高速化された Winograd バリアント アルゴリズムと ARM 命令セットを使用して CPU 効率を最大化し、モバイル デバイスに強力な AI コンピューティング機能を提供します。このコンピューティング ライブラリを使用すると、ユーザーの既存のハードウェア投資を保護しながら、プロフェッショナルなニューラル ネットワーク チップや GPU のパフォーマンスに近づいたり、さらには到達したりすることができます。 NCNN は、モバイル フォン向けに最適化された高性能ニューラル ネットワーク フォワード コンピューティング フレームワークです。 ncnn は設立当初から、モバイルの展開と使用法を真剣に検討してきました。サードパーティの依存関係がなく、クロスプラットフォームであり、モバイル CPU 速度は現在知られているすべてのオープンソース フレームワークよりも高速です。 ncnn をベースにすることで、開発者はディープラーニング アルゴリズムをモバイル フォンに簡単に移植して効率的に実行したり、人工知能アプリを開発したり、AI を手軽に利用したりできるようになります。 ncnnは現在、QQ、Qzone、WeChat、Tiantian Ptuなど、多くのTencentアプリケーションで使用されています。 どちらのフレームワークも Tencent によって開発されており、FeatherCNN は Tencent AI プラットフォーム部門から、NCNN は Tencent Youtu から提供されています。 要点は、どちらもオープンソースであり、CPUのみをサポートしているということです。 NCNN は早くからオープンソース化されており、パフォーマンスが優れており、ユーザー数も多くなっています。 FeatherCNN は遅れてオープンソース化されましたが、非常に優れた基盤を備えています。 FeatherCNN オープンソースアドレス: Tencent/FeatherCNN NCNNオープンソースアドレス: Tencent/ncnn MDLL Baidu のモバイル ディープラーニング MDL フレームワークには、主にモデル変換モジュール (MDL Converter)、モデル読み込みモジュール (Loader)、ネットワーク管理モジュール (Net)、マトリックス操作モジュール (Gemmers)、および Android 呼び出し用の JNI インターフェイス レイヤー (JNI Interfaces) が含まれます。そのうち、モデル変換モジュールは主にCaffeモデルをMDLモデルに変換する役割を担い、同時に32ビット浮動小数点パラメータを8ビットパラメータに量子化する機能をサポートし、モデルサイズを大幅に圧縮します。モデル読み込みモジュールは主にモデルの逆量子化と読み込み検証、ネットワーク登録などのプロセスを完了し、ネットワーク管理モジュールは主にネットワーク内の各層の初期化と管理を担当します。MDLはAndroidが呼び出すためのJNIインターフェース層を提供し、開発者はJNIインターフェースを呼び出すことで読み込みと予測プロセスを簡単に完了できます。 モバイルディープラーニングフレームワークとしては、モバイルアプリケーション自体の特性や動作環境を十分に考慮する必要があり、速度、ボリューム、リソース使用率などに関して厳しい要件があります。同時に、スケーラビリティ、堅牢性、互換性も考慮する必要があります。フレームワークのスケーラビリティを確保するために、MDL はレイヤーを抽象化します。これにより、フレームワーク ユーザーは、モデルのニーズに応じて特定のタイプのレイヤーの実装を簡単にカスタマイズできます。MDL を使用すると、他の場所のコードを変更することなく、さまざまな種類のレイヤーを追加することで、より多くのネットワーク モデルをサポートできます。フレームワークの堅牢性を確保するために、MDL はリフレクション メカニズムを使用して、C++ の基盤となる例外をアプリケーション レイヤーにスローします。アプリケーション レイヤーは例外をキャプチャし、ログを通じて例外情報を収集するなど、それに応じて処理して、持続可能なソフトウェアの最適化を保証します。業界にはさまざまなディープラーニング トレーニング フレームワークがありますが、MDL はモデル トレーニング機能をサポートしていません。フレームワークの互換性を確保するために、MDL は Caffe モデルを MDL に変換するためのツール スクリプトを提供しています。ユーザーは 1 行のコマンドでモデル変換と量子化のプロセスを完了できます。 オープンソースアドレス: PaddlePaddle/Paddle-Lite SNPE これは Qualcomm Snapdragon の公式 SDK であり、オープンソースではありません。主に独自の DSP、GPU、CPU をサポートします。モデルのトレーニングは、一般的なディープラーニング フレームワークで実行されます (SNPE は、Caffe、Caffe2、ONNX、および TensorFlow モデルをサポートしています)。トレーニングが完了すると、トレーニング済みのモデルは、SNPE ランタイムに読み込むことができる DLC ファイルに変換されます。このDLCファイルは、Snapdragon Accelerated Compute Coreの1つを使用して、フォワード推論パスを実行するために使用できます。 |
>>: クリアビューAI、民間企業への顔認識技術の販売を永久に禁止することに同意
[[360153]]あなたをモデルに、考え、反応し、行動するように訓練されたロボットを想像してみてく...
1. 論文情報2. はじめにこの論文では、自動運転、ロボット工学、監視などのアプリケーションに不可...
政府の電気自動車推進のビジョンに後押しされ、電気自動車業界はここ数年で大きな勢いを増しています。さら...
近年、需要の増加、エネルギーコストの高騰、持続可能性の問題が続く中、データセンターが注目を集めていま...
Googleは6月27日、生成AIを組み合わせてマネーロンダリング対策ツール「AML AI」をリリー...
10月31日午前、杭州雲棲鎮で2023年雲棲会議が開幕した。アリババグループのジョセフ・ツァイ会長は...
人間の言語を習得することはコンピューターにとって依然として課題だが、グーグルのエンジニアは人工知能(...
2021 年に AI 分野で最も画期的な賞を授与するとしたら、誰を選びますか? 「サイエンス」と「ネ...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
[[352688]]センサーの電源喪失は IoT の悩みの種です。数百万個のセンサーを導入しても、そ...