取引のためのONNXの学習 - ページ 5

 

ONNX: 過去、現在、未来 - Jim Spoher、IBM & Prasanth Pulavarthi、Microsoft



ONNX: 過去、現在、未来 - Jim Spoher、IBM & Prasanth Pulavarthi、Microsoft

「ONNX: Past, Present, and Future」ビデオでは、IBM の Jim Spoher と Microsoft の Prasanth Pulavarthi が、オープンソース AI フレームワーク ONNX の成長と将来について議論しています。彼らは、ONNX が提供する交換フォーマットを通じて AI モデルの展開を標準化し、さまざまな深層学習フレームワーク間でシームレスな最適化を可能にすることの重要性を強調しています。さらに、さまざまなハードウェア アクセラレータと連携する ONNX ランタイムの機能の最近の開発について説明し、ONNX を使い始めるためのヒントとリソースを提供します。講演者は、視聴者に ONNX コミュニティに参加するよう促しながら、ONNX の機能、商用展開、および今後の認証計画に関する視聴者の質問に答えます。

  • 00:00:00 このセクションでは、IBM の Jim Spoher と Microsoft の Prasanth Pulavarthi が自己紹介を行い、オープンソースの AI フレームワークである ONNX の過去、現在、未来について概説します。 ONNX は標準化された交換フォーマットとして機能し、さまざまなツールがさまざまな深層学習フレームワーク間で相互運用して推論を最適化できるようにします。講演者は、ONNX Web サイトでニュースや入門情報をチェックしたり、GitHub や Gitter のコミュニティに参加したりして、ONNX コミュニティに参加するよう視聴者に呼びかけています。また、ONNX パートナーがプロジェクトや革新的な方法で ONNX をどのように使用しているかについて話し合った、最近の仮想コミュニティ ミーティングにも注目しています。

  • 00:05:00 このセクションでは、講演者は、人工知能と機械学習の分野における数多くのオープンソース プロジェクトの中で、ONNX コミュニティの成長と交換フォーマットとしてのその重要性について議論します。これらは、プル リクエスト、コントリビューター、スター、フォーク、公開された論文、モデル動物園の観点から ONNX コミュニティの進歩を強調し、より多くの組織や個人が参加することを奨励しています。講演者は、Microsoft での ONNX とさまざまな製品でのその使用についても紹介し、AI および ML ソリューションの多様な状況における ONNX のような標準化された形式の必要性を強調しました。彼らは、ONNX の使用方法に関するヒントを提供し、聴衆からの質問を歓迎します。

  • 00:10:00 このセクションでは、ML モデルを本番環境にデプロイしようとするときに開発者が直面する一般的な問題について説明します。たとえば、推論のレイテンシが高い、モデルをエッジや IoT デバイスで実行する、同じモデルを別のデバイスで実行する必要があるなどです。ハードウェアとオペレーティング システム。これらの問題を解決するために、講演者は ONNX 形式と ONNX ランタイムを紹介します。これにより、開発者はさまざまなフレームワークのモデルを共通の形式で表現し、さまざまなプラットフォームやアクセラレータで効率的に実行できます。 Microsoft の Speech Service は、ONNX が本番環境で俊敏性とパフォーマンスを向上させた例として挙げられています。

  • 00:15:00 このセクションでは、スピーカーは、ONNX ランタイムを使用することで、俊敏性、パフォーマンス、精度の面でどのようにメリットが得られるかについて説明します。彼らは、音声テキスト変換やコンピューター ビジョンなどの Microsoft のコグニティブ サービスの例や、身体追跡機能を備えたデバイスである Azure Connect について言及しています。 ONNX の移植性の側面も強調されています。同じモデルとアプリケーション コードを異なるプラットフォームやハードウェア アクセラレータで使用できるため、時間とカスタマイズの労力を節約できます。さらに、スピーカーは、モデルの一般的な形式として ONNX ランタイムを使用する Windows ML に触れ、Windows オペレーティング システムでの機械学習の推論を容易にします。

  • 00:20:00 このセクションでは、Jim Spoher と Prasanth Pulavarthi が、ONNX ランタイムの最近の開発と成果について説明します。その最も重要な機能の 1 つは、GPU や VPU などのさまざまな種類のハードウェア アクセラレータと連携できることです。また、多言語サポートも提供するため、ユーザーは Pythonic 環境でトレーニングされたモデルを C# に変換できます。 ONNX ランタイムを使用している企業の一例は、scikit-learn を使用して Python で財務モデルをトレーニングする ISV ですが、C# での運用には ONNX ランタイムを使用しています。さらに、ONNX ランタイムは最近、BERT や GPT2 などの変換モデルの推論とトレーニングを最適化し、大幅なスピードアップとユーザーのコスト削減を実現しました。

  • 00:25:00 このセクションでは、講演者が ONNX と ONNX ランタイムを開始する方法について説明します。 URL 経由でアクセスできる Model Zoo は、ビジョン、言語、および今後の音声モデル用の ONNX ランタイムをダウンロードして使用を開始するためのさまざまな事前トレーニング済みモデルを提供します。さらに、スピーカーは、Model Zoo へのモデルの貢献を奨励します。他のフレームワークの既存のモデルも、ONNX 形式に変換またはエクスポートできます。 PyTorch、Keras、TensorFlow、Scikit-Learn などのフレームワークには ONNX エクスポート機能があり、ONNX ランタイムは複数のプログラミング言語をサポートする Windows、Linux、Mac にインストールできます。

  • 00:30:00 このセクションでは、スピーカーは、ハードウェア アクセラレーションと、実行プロバイダーと呼ばれる API を介してさまざまなハードウェア アクセラレータを統合する方法について説明します。 ONNX ランタイムには、高度に最適化された CPU 実装と CUDA 実装があり、Nvidia や Intel などのハードウェア ベンダーは ONNX と提携して、最適化を ONNX ランタイムに統合しています。これにより、特定の操作が特定のアクセラレータでサポートされていない場合でも、ONNX 仕様全体を完全にサポートして任意の ONNX モデルを実行できます。講演者は、視聴者が ONNX を試し、オープン ガバナンス、SIG、ワーキング グループなど、ONNX コミュニティで利用できるリソースを共有することを奨励しています。

  • 00:35:00 このセクションでは、スピーカーは、さまざまな特別利益団体 (SIG) とワーキング グループで構成される ONNX プロジェクトのオープン ガバナンス構造について説明します。彼らは、SIG とワーキング グループが定期的に会議を開き、すべてが公開されており、会議はすべて AI カレンダーのカレンダーに公開されていると説明しています。さらに、オープン ガバナンス構造は、寄稿者と承認者がどのように選択され、それぞれが異なる決定に対して投票権を取得したり、マージ権限を持っているかを説明します。最終的に、スピーカーは、さまざまなチャネルやグループに参加し、メーリング リストにサインアップし、ディスカッションに参加することで、人々が ONNX プロジェクトに参加することを奨励します。

  • 00:40:00 このセクションでは、講演者は、ONNX に関する本の出版の可能性、ONNX ランタイムのログ機能、機械学習トレーニングの時間を短縮するために使用される方法などのトピックに関するさまざまな聴衆の質問に答えます。また、Azure Cognitive Services、オフィス モデル、Bing 検索エンジンなど、さまざまなシナリオでの ONNX ベースのモデルの商用展開についても言及しています。

  • 00:45:00 このセクションでは、講演者は Microsoft 以外での ONNX モデルの商用展開について説明し、Azure で金融会社やその他の組織によって使用されている実稼働レベルのモデルが多数あることに言及しました。また、ONNX が CNTK をサポートしているかどうか (はい、ONNX エクスポートがあります)、ハードウェア アクセラレーション ツールに関する知識が必要かどうか (いいえ、ONNX ランタイムは抽象化レイヤーを提供するため) など、ONNX に関する聴衆の質問にも答えました。また、トレーニングで ONNX を使用することと、トレーニング後に ONNX に変換することの利点についても触れ、ONNX ランタイムがトレーニング プロセスを高速化し、変換モデルを高速化できることを説明しました。最後に、彼らは、潜在的な認証計画と、人々が ONNX を使用するさまざまな方法について聞く意欲を表明しました。

  • 00:50:00 このセクションでは、すべてのパイプライン タイプをサポートする ONNX の機能について、講演者が質問に答えます。既存のギャップがあるため 100% ではありませんが、一般的なモデル タイプは通常サポートされています。ユーザーは、サポートされているパイプラインのリストについて ONNX Converter GitHub を参照するか、パイプラインを完全に変換できるかどうかを自分で試してみることができます。その後、講演者は出席者に感謝の意を表し、ONNX コミュニティへの参加を奨励してセッションを締めくくります。
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
  • 2020.09.11
  • www.youtube.com
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
 

Onnx-mlir: ONNX モデル用の MLIR ベースのコンパイラ - 最新のステータス



Onnx-mlir: ONNX モデル用の MLIR ベースのコンパイラ - 最新のステータス

Onnx-mlir は、最適化とコード生成に MLIR と LLVM を使用し、CPU とカスタム アクセラレータをサポートする ONNX モデルのコンパイラです。 IBM Research の Dong Lin は、徹底的なテストの重要性を強調し、オンライン スコアリング サービスおよびモデル サービス フレームワークでのフレームワークの使用を強調しています。 Onnx-mlir には、CPU とアクセラレータの複数の方言があり、さまざまなレベルで最適化されており、IBM アクセラレータを使用してクレジット カード詐欺検出モデルを 11 倍高速化することが示されています。このプロジェクトは、重要なオペレーターを最適化し、ニッチな ML オペレーターや GPU などの他のアクセラレーターをサポートするためのコミュニティの貢献を歓迎します。

  • 00:00:00 このセクションでは、IBM Research の Dong Lin が、高レベルの最適化と低レベルのコード生成に MLIR と LLVM を使用する ONNX モデルのコンパイラである ONNX-MLIR について説明します。コンパイラは、MLIR で ONNX ダイアレクトのリファレンスを提供し、CPU だけでなくカスタム アクセラレータにも最適化を便利にすることを目的としています。他の MLIR ベースのコンパイラと簡単に統合でき、Python、C++、Java などのさまざまなプログラミング言語をサポートしています。 Dong Lin はまた、コンパイラを注意深くテストすることの重要性を強調し、カスタム アクセラレータのサポートを新たに導入して、オンライン スコアリング サービスとモデル サービス フレームワークに使用されていると述べています。

  • 00:05:00 このセクションでは、スピーカーは、新しいアクセラレータを最適化およびサポートできる ONNX-MLIR コンパイラについて説明します。コンパイラには、CPU とアクセラレータ用の複数のダイアレクトがあり、さまざまなレベルで最適化されています。講演者は、IBM アクセラレーターを使用してクレジット カード詐欺検出モデルを 11 倍高速化するフレームワークの能力を実証しましたが、それ以上の詳細は開示できませんでした。彼らは、重要なオペレーターを最適化し、ニッチな機械学習オペレーターをサポートし、GPU などの他のアクセラレーターをサポートすることを目指しているため、オープンソース プロジェクトを成長させるためのコミュニティからの貢献に関心があることを強調しました。
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
  • 2022.07.13
  • www.youtube.com
Onnx-mlir is an open source compiler implemented using the Multi-Level Intermediate Representation (MLIR) infrastructure recently integrated in the LLVM proj...
 

PFVM - ONNX を中間表現として使用するニューラル ネットワーク コンパイラ



PFVM - ONNX を中間表現として使用するニューラル ネットワーク コンパイラ

このビデオでは、Preferred Networks の Zijian Xu が、モジュール最適化の中間表現として ONNX を使用するニューラル ネットワーク コンパイラである PFVM を紹介しています。彼は、PFVM がエクスポートされた ONNX を入力として受け取り、それを最適化し、サードパーティ API を使用して指定されたバックエンドでモデルを実行する方法について説明します。 Genji は、顧客のオペレーターによる ONNX の拡張、形状の推論、グラフの単純化など、最適化の重要性について説明しています。彼はまた、現在の ONNX コンパイラの制限事項 (動的なケースでのサポート強化の必要性など) に対処し、より多くの推論関数を実装することを提案しています。 Zijian Xu は、カーネル範囲のオーバーヘッドとメモリ使用量を削減して計算を高速化することの重要性を強調し、マシンで利用可能な静的情報をスケジューリングとシェーピングの推論に利用することを提案しています。

  • 00:00:00 このセクションでは、Preferred Networks の Zijian Xu が、中間表現として ONNX を使用するニューラル ネットワーク コンパイラである PFVM について説明します。彼は会社を紹介し、ディープラーニングを使用して現実世界の問題を解決する方法について説明します。次に、モジュールの展開ではなく、モジュールの最適化のために ONNX に焦点を当てています。彼は、PFVM がコンパイラおよびランタイムとして機能し、エクスポートされた ONNX を入力として受け取り、それを最適化し、サードパーティ API を使用して指定されたバックエンドでモデルを実行すると説明しています。 Genji は最適化のプロセスを説明し、デバイスとメモリの最適化のために顧客のオペレーターと ONNX を拡張する方法について説明します。また、モジュールの最適化における形状推定の重要性についても説明し、3 つのケースの最適化を紹介します。最初のケースは要素ごとの融合です。

  • 00:05:00 ビデオのこのセクションでは、スピーカーは、CUDA で計算グラフを実行する際の計算を高速化するために、カーネル範囲のオーバーヘッドを削減することの重要性について説明しています。彼らは、要素単位の演算子を単一の融合群演算子に融合してカーネル範囲を縮小することを提案していますが、すべての演算子をうまく融合できるわけではないことに注意してください。勾配融合グループの前に、オペレーターがブロードキャスト可能かどうかを確認する必要があります。また、講演者は、ニューラル ネットワーク モデルを最適化するための形状推定とグラフの単純化の重要性も強調しています。最後に、彼らは、モデルに不要な演算子が含まれているかどうかという問題に取り組み、計算を高速化するためにいくつかの最適化が必要であると答えています。

  • 00:10:00 このセクションでは、スピーカーは、第 1 世代やニューラル ネットワーク、ニューラル アーキテクチャ検索などのプログラムによって生成されたモデルに不要な演算子が含まれる可能性があることについて説明します。左の計算グラフがノード 5 を計算するために大量のメモリを使用する例を使用して、最適化の重要性を示しています。計算グラフを変更することで、メモリ使用量を減らして同じ出力を得ることができます。 PFVM は自動チェックポイントを実行してメモリ使用量を削減できますが、メモリ使用量を正確に推定するにはテンソル サイズの知識が必要です。講演者は、形状参照の重要性と、未知の次元がほとんどの整形フレームで最適化の機会をどのように制限するかを強調しています。

  • 00:15:00 このセクションでは、スピーカーは現在の最先端の ONNX コンパイラの制限について説明します。これには、要素の注入や自動チェックポイントなどの特定のタスクを実行できないことや、動的ケース。講演者は、動的なケースに対してより多くの推論関数を実装することを提案し、ユーザーからのフィードバックを求めて、2 つのテンソルの連結などのケースをサポートするかどうかを決定します。また、スピーカーは、要素 core や mn4 などのマシンで利用可能な静的情報をスケジューリングおよびシェーピング推論に利用する利点についても説明します。
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
  • 2022.07.13
  • www.youtube.com
PFVM is a neural network compiler developed by Preferred Networks, which relies on ONNX as the Intermediate Representation format. PFVM is used in production...
 

YVR18-332 TVM コンパイラ スタックと ONNX サポート



YVR18-332 TVM コンパイラ スタックと ONNX サポート

YVR18-332 ビデオでは、ONNX を含むさまざまなハードウェアとフロントエンドをサポートするコミュニティ主導のディープ ラーニング スタックである TVM コンパイラ スタックについて説明しています。講演者は、TVM がモデルをステレオ レベルで最適化し、開発者が検索空間を探索して最適な構成を見つける方法について説明します。また、ループ変換や GPU アクセラレーションなど、TVM が提供する自動最適化についても説明します。講演者は、グラフ レベルでの 8 ビット サポートの有効化と自動チューニングを含む TVM ロードマップについて話します。さらに、ONNX TV インターフェースと、すべてのエコシステムの標準インターフェースを統一する必要性についても議論しています。最後に、ビデオは昼食のために一時停止します。

  • 00:00:00 このセクションでは、講演者は TVM コンパイラ スタックと、それが GBM を介して ONNX をサポートする方法を紹介します。 TVM は、クラス レベルからがんレベルまでのディープ ラーニング スタックであり、ワシントン大学の研究者が率いるコミュニティ プロジェクトであり、いくつかの企業や組織からの貢献があります。 TVM コンパイラ スタックは、CPU、GPU、FPGA などのさまざまなハードウェアをサポートし、ハードウェア設計検証用のシミュレータを使用して、ASIC サポートを有効にする予定です。このスタックは、MXNet、ONNX、TensorFlow などのさまざまなフロントエンドもサポートし、さまざまな最適化オプションを備えた NVM と呼ばれる計算クラスの IR 実装を備えています。

  • 00:05:00 このセクションでは、スピーカーは TVM コンパイラ スタックと ONNX サポートについて説明します。彼らは、TVM コンパイラ スタックがループ変換や GPU アクセラレーションなど、ステレオ レベルで多くの最適化を実行できること、および ONNX が自動 TVM にステップ インするために追加された新しい機能であることを説明しています。講演者は、TVM リモート展開メカニズムによって拍手喝采を受けた卒業証書のカナディアン ミスについても説明します。これにより、ユーザーはホスト デバイスでモデルをコンパイルし、ターゲット デバイスにリモートで展開できます。さらに、TVM によって導入された自動最適化についても説明します。これにより、開発者の退屈な作業が軽減され、
    検索スペースを探索し、最適な構成を見つけるように設計されています。

  • 00:10:00 このセクションでは、スピーカーは TVM コンパイラ スタックと ONNX のサポートについて説明します。彼らは、TVM コンパイラ スタックには、分離された極端な勾配ブースティング アルゴリズムを含む最先端のチューニング アルゴリズムが組み込まれており、パフォーマンスが向上していると述べています。また、自動最適化を可能にし、以前の作業を活用して検索スペースを最適化できるオープンソース プロジェクトも強調しています。次にスピーカーは、Vita オープン アクセラレータとその 3 つの主要部分に TVM を使用する方法について説明します。 TVM を使用してスケジュールを最適化し、VPS RPC を使用してリモートで展開する方法について説明しています。最後に、TVM のロードマップを提供します。これには、8 ビット サポートの有効化とグラフ レベルでの自動チューニングが含まれ、ザイリンクスの Ultra 9 スティックと Amazon の F1 インスタンスでの使用も計画されています。

  • 00:15:00 このセクションでは、スピーカーは TVM コンパイラ スタックと、Relay と呼ばれる NVM v2 へのアップグレードをどのように計画しているかについて説明します。 Relay の実装では、Pod 制御フローを選択して型システムを改善し、コンパイル サーバー システムを改善する方法を制御する必要があります。講演者は、ONNX をサポートするときに Relay が TVM コンパイラ スタックにどのように適合するかを説明します。 ONNX では、計算グラフ モデルと構築演算子、および標準データベースという 3 つの主要部分が定義されています。 ONNX ml 拡張をサポートするために、TVM フロントエンドは DVM にフロントエンドを実装しました。ただし、ONNX を NM VM シンボリック グラフに変換すると、不一致の問題が発生する場合があります。さらに、コミュニティは TVM コミュニティでグラフ IR として ONNX と Relay のどちらを使用するかを議論しており、今後のモデル変換に使用するために協力して Relay をマージすることが前進する唯一の方法です。

  • 00:20:00 このセクションでは、スピーカーはフレームワーク統合のための ONNX TV インターフェイスについて説明します。これは、さまざまなアクセラレータでのニューラル ネットワーク推論の標準インターフェイスです。インターフェイスには、ポッド ランタイムの検出、実行バックエンドの選択、および ONNX オペレーターの長期的な検出が含まれます。スピーカーは、コミュニティがすべてのエコシステムの標準インターフェースを統一する方法について議論する必要があることを示唆しています。さらに、講演者は、TVM コンパイラ スタックと、その検索空間の一部として手作業でコーディングされた実装を組み込む方法について話します。ただし、このメカニズムについてはまだ良いアイデアがないため、スピーカーはアイデアや議論を歓迎します。

  • 00:25:00 このセクションでの議論のトピックは、TVM コンパイラ スタックとその ONNX のサポートです。 ONNX は記述形式とランタイム API の両方を備えていることが明らかになり、ONNX のイコール システムはオープンな交換形式だけにとどまらず拡張されています。目標は、API を統合して、アップレベル アプリケーションが実行時推論のために単一の標準 API を呼び出せるようにすることです。それ以上の質問はなく、ビデオは昼食のために一時停止します。
YVR18-332 TVM compiler stack and ONNX support
YVR18-332 TVM compiler stack and ONNX support
  • 2018.09.28
  • www.youtube.com
As an open source deep learning compiler driven by the community, TVM is evolving quickly and well received by the industry. In this session, the architectur...
 

.NET MAUI コミュニティ スタンドアップ - Mike Parker による ONNX ランタイム



.NET MAUI コミュニティ スタンドアップ - Mike Parker による ONNX ランタイム

このビデオでは、ゲスト スピーカーの Mike Parker が、複数のハードウェア プラットフォーム間で機械学習の最適化と高速化を可能にするオープンソースのクロスプラットフォーム ツールである ONNX ランタイムを紹介します。 Parker は、ONNX ランタイムを使用することの重要性を説明し、.NET MAUI プロジェクトでそれを使用して、MobileNet オブジェクト分類モデルを使用して画像を分類する方法を紹介します。ホストと Parker は、デバイスで機械学習モデルを実行する利点と、バックエンド インフラストラクチャのコストを回避する機能について話し合います。さらに、チームは、このテーマに関する Parker のブログや、.NET MAUI および Xamarin サポートのための Al Blount とのパートナーシップなど、役立つリソースを共有しています。

  • 00:00:00  .NET MAUI のコミュニティ スタンドアップのこのセクションでは、最新のクライアント アプリ カスタマー アドバイザリー チームのメンバーである Mike Parker を紹介します。複数のハードウェア プラットフォームでモデルを高速化します。彼は、ONNX ランタイムがオープンソースかつクロスプラットフォームであり、開発者が機械学習アプリケーションにさまざまなフレームワークとハードウェアを使用できるようにする方法について説明しています。彼はまた、.NET コミュニティがプロジェクトで ONNX ランタイムをどのように利用できるかを示しています。

  • 00:05:00 このセクションでは、ホストが自己紹介と、Onnx ランタイムについて話し合うために参加するゲストのマイクを紹介します。主催者は、.NET MAUI および隣接するリポジトリからのいくつかの PR について議論する前に、Microsoft およびコミュニティからのいくつかのブログを最初に見て、興奮していると述べています。最後に、議論は Mike Park に引き継がれ、Onnx ランタイム ライブラリ、彼が Xamarin でそれらをどのように使用したか、およびこのテーマに関する彼の執筆とポッドキャストについて話します。ホストは、.NET の 20 周年であり、.NET MAUI Preview 12 が出荷されたことにも言及しています。また、重大な変更についてユーザーに警告し、Dave がコミュニティ ライブラリのメンテナーと協力して取り組んでいることに言及しています。

  • 00:10:00 このセクションでは、スピーカーは、.NET の統合の取り組みと、Xamarin が MAUI に移行する際の iOS ライブラリと依存関係の再コンパイルと更新の必要性について説明します。チームは現在、これらの変更をネイティブ ライブラリおよび NuGet パッケージへのバインド プロジェクトに適用する方法に取り組んでおり、ガイダンスが提供されることをユーザーに保証しています。さらに、チームは VS Mac 2022 プレビュー 5 での MAUI サポートの欠如について議論し、彼らがそれに取り組んでいることを説明しますが、最初に新しい UI SAC を使用して .NET 6 ランタイムですべての Xamarin 作業を再構築することを優先する必要があったことを説明します。最後に、チームは Facebook SDK バインディングの更新を発表し、Google ライブラリなどの他のサードパーティ ライブラリを更新および維持する取り組みについて言及しています。

  • 00:15:00 このセクションでは、Xamarin チームが維持するコンポーネントについて説明します。これは、以前は主要な焦点でしたが、現在はサポートにとって最も重要なものに絞り込まれています。チームは、ユーザーが .NET 6 への移行中にこれらのコンポーネントに依存している場合は連絡することをお勧めします。また、Maui Hello World チュートリアルと .NET Maui ソース コードを分析するブログ シリーズについても説明します。さらに、Z Index と UI のカスタマイズに関する Andreas のブログが強調表示され、Z Index を使用して互いの上に要素を積み重ねることが紹介されています。

  • 00:20:00 このセクションでは、プレゼンターが、人々が .NET MAUI を使用して再作成したいくつかのブログ投稿とデザインを紹介します。ブログには、Xamarin Forms で搭乗券のデザインを再作成すること、Xamarin Forms を使用したステート マシンの開発について説明すること、.NET MAUI スタートアップ ファイルを整理すること、ハンドラーのアーキテクチャを深く掘り下げること、Xamarin Forms を使用した JavaScript の双方向通信に関するブログが含まれます。そのための WebView。これらのプレゼンテーションは、Xamarin Forms/MAUI の拡張性と有用性を高め、JavaScript とバインディングの両方をより効果的に使用する方法を示すために、最近デザインにどれだけ重点が置かれているかを示しています。

  • 00:25:00 トランスクリプトのこのセクションでは、5.0 Xamarin フォーラム サービスのリリースや新しいドキュメントなど、.NET MAUI への最新のコミュニティの貢献についてホストが議論しています。貢献者がリポジトリへの参加に関するフィードバックを提供し、コミュニティ ツールキットでチップ コントロールが利用可能であることについて言及することを奨励していますが、直接ボックスには含まれていません。ホストはまた、最近追加された MAUI の新機能である影についても言及し、ボットを改造して改造することを提案しています。

  • 00:30:00 このセクションでは、Mike Parker が .NET MAUI プレビュー リリースのステータスに関する最新情報を提供し、プレビュー 13 での進捗状況を強調しています。ラベル形式のテキスト、スパン、プラットフォームのギャップを埋めるすべてのジェスチャをスパンします。コミュニティは、"Galadriel" と呼ばれる新しい添付プロパティも共有しています。これにより、Xamarin Forms Shell のタブとメニュー項目にバッジを簡単に追加できます。さらに、.NET MAUI チームは、プラットフォームの起動パフォーマンスを改善するために取り組んできました。結果は、プロファイルされた AOT を備えた Pixel 5 でアプリが 576 ミリ秒で起動するという有望なものです。

  • 00:35:00 このセクションでは、.NET MAUI コミュニティ スタンドアップが、Xamarin Forms と .NET MAUI の両方で UI を構築するための C# マークアップ拡張機能の可用性について説明します。これにより、UI 開発により流暢な構文が提供されます。また、顔認識や写真のタグ付けなどの例を使用して、単一の API セットを使用してさまざまなプラットフォーム間で推論を実行できる移植可能なモデルである onnx ランタイムについても説明しています。 onnx ランタイムは GitHub で入手でき、Xamarin およびモバイル アプリで使用できます。 onnx ランタイムを使用するプロセスには、モデルの読み込み、入力の準備、推論の実行、出力の使用可能な形式への処理が含まれます。

  • 00:40:00 ビデオのこのセクションでは、Mike Parker が Xamarin Forms アプリで ONNX ランタイムを使用して、MobileNet オブジェクト分類モデルを使用して画像を分類する方法を説明しています。彼は、モデルのドキュメントに従い、RGB 値を正規化することの重要性を強調しています。 Parker は、入力と出力のサイズ、形状、入力と出力の名前を視覚化できる Netron という便利なアプリについても言及しています。このアプリは、モデルを読み込んで実行し、アラートにトップ ラベルを表示する 1 つのボタンです。 Parker 氏は、これらすべてがクラウドを介さずにデバイス上で行われているのは素晴らしいことだと述べています。

  • 00:45:00 このセクションでは、スピーカーは、接続なしで機能し、バックエンド インフラストラクチャのコストを回避する機能など、デバイス上で機械学習モデルを実行する利点について説明します。また、クラウドベースの Microsoft Azure Vision API を使用した経験と、ONNX ランタイムを使用して処理時間を短縮した方法についても触れています。さらに、プラットフォーム固有およびモデル固有のコードを単一の ONNX モデルに置き換えることで、チームのオンボーディング アプリ エクスペリエンスを簡素化した方法についても説明しています。最後に、Azure Custom Vision Service を使用してモデルを準備し、ONNX が Xamarin と連携できるようにする Nougat パッケージを作成するプロセスについて説明します。

  • 00:50:00 ビデオのこのセクションでは、Mike Parker が ONNX ランタイムでの作業と、iOS などの AOT を備えたプラットフォームをサポートするためにネイティブの相互運用性コードを適応させることについて説明しています。彼はまた、ワークフローの合理化やアプリのアクセシビリティの向上など、このテクノロジを使用できる実際のシナリオについても説明しています。ただし、彼は、事前に構築されたモデルを使用することは、従来のデータ サイエンスのバックグラウンドを持たない人にとっては圧倒される可能性があると指摘し、組み込むモデルを選択することを提案しています。最後に、このトピックに関する Mike のブログなど、いくつかの役立つリソースを共有します。

  • 00:55:00 このセクションでは、主催者が Mike Parker の雇用可能性について話し、Xamarin Forms と .NET Maui のサポートが必要な企業にサポートを提供できる Al Blount を紹介します。また、マウイへのアップグレードに関するマイクのチームの現在の作業についても簡単に説明していますが、まだ詳細を共有することはできません.主催者はビデオを終了し、来たる .NET 20 周年記念パーティーに参加して発表してくれた視聴者に感謝します。
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
  • 2022.02.03
  • www.youtube.com
Join Maddy Montaquila, David Ortinau, and special guest Mike Parker to learn about using the ONNX Runtime in your Xamarin app for Machine Learning!Community ...
 

[バーチャル ミートアップ] 相互運用可能な AI: C++ での ONNX e ONNXRuntime (M. Arena、M. Verasani)



[バーチャル ミートアップ] 相互運用可能な AI: C++ での ONNX e ONNXRuntime (M. Arena、M. Verasani)

ビデオでは、さまざまなフレームワークを使用して機械学習アルゴリズムをトレーニングし、相互運用性の欠如につながる課題について説明し、ディープ ラーニング モデルのユニバーサル フォーマットを作成することを目的とした ONNX と ONNXRuntime を紹介します。 ONNX は、ニューラル ネットワークを静的な計算グラフに変換し、推論時のパフォーマンスを最適化します。 ONNXRuntime を使用すると、あらゆるフレームワークを ONNX 形式に変換でき、あらゆるハードウェア プラットフォームをターゲットにするために使用できるアクセラレーション ライブラリが提供されます。このビデオでは、ONNX と ONNXRuntime の使用例を紹介し、C++ での使用方法について説明し、プロジェクトとそのドキュメントをよりよく理解するためのアドバイスを提供します。

Marco Arena と Matteo Verasani は、機械学習モデルに C++ で ONNX と ONNXRuntime を使用する利点についても説明し、フレームワークの柔軟性と、パフォーマンスを犠牲にすることなくさまざまなフレームワークからモデルを簡単に変換できる機能を強調しています。モデルを ONNX 形式に変換する例を示し、ONNXRuntime を推論モードに使用する方法を示し、従来の Python モデルでのパフォーマンスの向上を示します。さらに、組み込みシステムでの作業と、GPU で ONNXRuntime をベンチマークすることの潜在的な利点についても説明します。講演者は、将来の仮想ミートアップについても言及し、参加者のネットワーキングの機会をさらに組み込むことへの希望を表明しています。

  • 00:00:00 ビデオのこのセクションでは、スピーカーは、さまざまなフレームワークを使用してさまざまなユース ケースの機械学習アルゴリズムをトレーニングするときに発生し、相互運用性の欠如につながる問題について説明します。これは、メンバーがさまざまなフレームワークでさまざまなレベルの専門知識を持っている可能性があるチームで作業する場合、課題になる可能性があります。この問題を解決するために、講演者はネットワークを共通の形式に変換することでフレームワーク間の相互運用性を可能にする ONNX と ONNXRuntime を紹介します。次に、ONNXRuntime を使用すると、変換されたモデルを、CPU、GPU、FPU などの任意のターゲット ハードウェアに展開できます。

  • 00:05:00 このセクションでは、講演者が ONNX (Open Neural Network Exchange) プロジェクトについて説明します。このプロジェクトは、ディープ ラーニング モデルのユニバーサル フォーマットを目指しており、異なるフレームワーク間の相互運用性を可能にします。このプロジェクトはコミュニティ主導であり、さまざまなモデル タイプとフレームワークを生産用の単一の形式に変換することに重点を置いて、多数の企業によってサポートされています。 ONNX は、ニューラル ネットワークを静的な計算グラフに変換します。これは、トレーニング前に事前に初期化されるという点で動的グラフとは異なります。静的グラフは計算効率が高いのに対し、動的グラフはさまざまな入力サイズに対してより高い柔軟性を提供します。

  • 00:10:00 このセクションでは、スピーカーは ONNX がどのように静的計算グラフを提供するかについて説明します。これは推論プロセスで非常に役立ちます。 Python などの他のフレームワークには動的な計算グラフがありますが、ONNX は、トレーニングおよび開発段階で既に制御されている静的グラフを提供し、より最適化されたパフォーマンスを可能にします。さらに、Microsoft の ONNX ランタイム ツールを使用すると、あらゆるフレームワークを ONNX 形式に変換でき、あらゆるハードウェア プラットフォームをターゲットにするために使用できるアクセラレーション ライブラリが提供されるため、推論や生産に役立つ多用途のツールになります。

  • 00:15:00 ビデオのこのセクションでは、スピーカーが AI の相互運用性のために ONNX と ONNX ランタイムを使用した経験について話します。 Python で PyTorch モデルを作成し、それを ONNX 形式に変換し、デプロイに ONNX ランタイムを使用して、パイプラインを記述し、GPU や Android デバイスなどのさまざまなプラットフォームをターゲットにする方法を説明しています。また、他の推論エンジンと比較して、ONNX ランタイムを使用することでパフォーマンスが向上し、最大 4 倍高速な結果が得られることも示しています。彼らは ONNX の柔軟性を強調しており、Matlab などの他のフレームワークで作成されたモデルを変換して、展開パイプラインを書き直すことなく ONNX ランタイムで使用できるようにしています。

  • 00:20:00 このセクションでは、講演者が C++ で ONNX と ONNXRuntime を使用するプロセスについて説明します。彼らは、モデルを ONNXRuntime で実行する前に、まずモデルを ONNX 形式に変換する必要があると説明しています。 TensorFlow のシリアル化は ONNXRuntime にネイティブではありませんが、変換に使用できるオープンソース ライブラリがあります。また、変換プロセスのスクリプト化の可能性と、C++ と比較して ONNX で見られる改善のレベルに関する質問にも回答します。彼らは、さらなるベンチマークと分析が必要であると指摘しています。 ONNXRuntime リポジトリはオープン ソースであり、Microsoft によってサポートされており、ユーザー向けにさまざまな情報、ガイド、および例を提供しています。

  • 00:25:00 このセクションのビデオでは、ONNXRuntime の機能について、単純なものからより高度なものまで、複雑さのスケールで説明しています。緑色の列には、単純な機械学習タスクに十分な基本的な機能が含まれています。マゼンタの列には、実行プロバイダーやプロファイリング サポートなど、やや高度な機能が含まれています。赤い列は、ONNX カスタム オペレーターの追加や取引の調整など、より複雑なタスクのための高度な機能を表しています。プレゼンターは、C++ と Python の ONNXRuntime の 2 つのデモ リポジトリへのリンクも提供します。

  • 00:30:00 このセクションでは、スピーカーは C++ で ONNX と ONNXRuntime を紹介します。彼らは、プログラム内でトレードプールを管理するための環境と、検討中のモデルを確立するセッションを作成する必要があると説明しています。セッションの特性もカスタマイズでき、セッションを使用してデフォルト設定を実行できます。さらに、ONNXRuntime は、セッションを実行する前にデータを管理するために必要な前処理を実装することにより、モデルを最適化します。このツールは、入力と出力の数、データ型、名前についての問い合わせなどの検査タスクも実行できます。最終的に、ユーザーは必要な形式で入力とテンソルを作成できます。

  • 00:35:00 ビデオのこのセクションでは、スピーカーは、テンソルを CPU に割り当てるオブジェクトを作成し、それらを実行プロバイダーに転送する方法について説明します。スピーカーは入力テンソルと出力テンソルを作成し、入力値とテンソルの形状を引数としてバッファに渡します。次に、出力値を OnnxRuntime ライブラリに渡すことによって、出力のテンソルが作成されます。スピーカーは、名前を使用して推論を開始することの重要性を説明します。名前を使用すると、入力の順序を柔軟に変更できるからです。デモでは、出力値が画面に出力される方法の簡単な例を示します。

  • 00:40:00 このセクションでは、スピーカーが ONNX プロジェクトとそのドキュメントをよりよく理解したい人にアドバイスを提供します。彼らは、ONNX のより適切に文書化されたセクションにアクセスするために「Parts C」の下を調べ、ONNX でデータを検査した経験を詳述することを推奨しています。また、講演者は、ONNX ランタイム ライブラリは他のパッケージ マネージャーから入手できますが、アーキテクチャとプロバイダーが異なるため、ライブラリを再コンパイルすることを推奨していると説明し、同じコードをコンパイルして、CPU または GPU のいずれかをターゲットとする 2 つの ONNX ランタイム パッケージを作成する方法を示しています。

  • 00:45:00 このセクションでは、スピーカーは C++ で DLL を使用する例を使用して、ONNX ランタイムについて説明します。コードに追加されるセッション オプションは、クライアントの設定によって異なり、追加されたプロバイダーを指定された順序で使用しようとします。スピーカーは、システムが RAM と GPU の使用状況をどのように占有するかのサンプル アプリケーションを提供します。 1,000 枚の画像データセットで事前トレーニングされた主要なゲーム AI re-net が例として利用されました。システムには、後処理と前処理の要件があります。

  • 00:50:00 ビデオのこのセクションでは、講演者は Python を使用した画像の前処理と、プロセスを簡素化するための拡張ソースの使用について説明しています。画像は最適なサイズにリサイズされ、正規化される前に float に変換されます。正規化プロセスでは、値を平均で割り、標準偏差を実行します。ニューラル ネットワークの後処理には、単純なソフトマックス正規化が含まれます。講演者は、最小限のコードで ONNX ランタイムを使用して画像を開き、処理し、出力する方法も示します。テキスト ファイルからクラスを読み取るために使用されるクラスは単純化されており、不要なボイラープレート コードを避けるためにいくつかのユーティリティが使用されています。

  • 00:55:00 このセクションでは、スピーカーは C++ で ONNXRuntime を使用してニューラル ネットワークの推論時間を測定するプロセスについて説明します。彼は、前述のネットワークに推論部分を追加し、システム クロックを使用して推論時間を測定したと説明しています。その後、プロファイリングのために ONNXRuntime でカスタム ロガーを使用する方法を示します。講演者はまた、モデナ大学と共同で開発された別のモバイル ネットワークと、その前処理と後処理に伴う複雑さについても簡単に説明します。

  • 01:00:00 このセクションでは、スピーカーは検出器の出力について説明し、クマや信号などのオブジェクトに境界ボックスを描画する方法を示します。また、ONNXRuntime の使用と、パフォーマンス最適化のためのプロファイリングの有効化など、セッション オプションとチューニングを可能にする方法についても言及しています。結果のトレース ファイルを詳細に調べて、モデルを初期化し、イメージで実行するのにかかる時間を確認できます。これには、どのオペレーターが使用され、どのプロバイダーが選択されたかが含まれます。また、グラフを実行する前にグラフを最適化する ONNX の機能についても言及しています。これにより、パフォーマンスが向上し、モデルの読み込みにかかる時間が短縮されます。

  • 01:05:00 このセクションでは、プレゼンターは最適化を有効または無効にすることでモデルを最適化することについて話します。これは、さまざまなターゲット間でのモデルの移植性に影響を与える可能性があります。さまざまなレベルの最適化と、それぞれがモデルのパフォーマンスにどのように影響するかを調べます。プレゼンターは、並列実行モードを有効にするとモデルが複数のスレッドを利用できるようになる可能性があることを示していますが、場合によってはパフォーマンスに大きな影響を与えない可能性があります。また、ユーティリティを使用して複数の画像の処理を並列化する可能性についても言及しています。最後に、プレゼンターは、最適化されたモデルのロード時間の短縮によって実証されるように、最適化がモデルのパフォーマンスに顕著な影響を与える可能性があることに注意します.

  • 01:10:00 このセクションでは、Marco Arena と Marco Verasani が、C++ で ONNX と ONNX ランタイムを使用する利点について説明します。主な利点の 1 つは、ONNX を形式として受け入れる推論の単一レイヤーを使用できることです。これにより、モデルを作成するためにさまざまなフレームワークを使用する際の移植性と柔軟性が可能になります。この機能は、さまざまなチームがさまざまなフレームワークを使用している可能性があり、本番用に標準の推論パイプラインが必要な場合に特に役立ちます。さらに、C++ で ONNX ランタイムを使用すると、ディープ ラーニング モデルのランタイム パフォーマンスがより高速で最適化されます。全体として、ONNX エコシステムは、ディープ ラーニング モデルのパフォーマンスを微調整および最適化するための多くのオプションと機会を提供します。

  • 01:15:00 このセクションでは、スピーカーは、機械学習モデルに C++ で ONNX と ONNXRuntime を使用する利点について説明します。これにより、パフォーマンスを犠牲にすることなく、フレームワークの柔軟性とフレームワーク間の簡単な変換が可能になります。また、ONNXRuntime が Linux でサポートされていることにも言及し、Python と Jupyter ノートブックを使用してモデルをプロトタイプ化し、ONNX 形式にエクスポートする方法を示しています。彼らは例として小さなチュートリアルを使用して、モデルを他のフレームワークから ONNX に変換する方法を示し、モデルの計算グラフを視覚化するための Netron ツールの有用性を強調しています。講演者は、視聴者に質問をしたり、ツールに関する知識を共有したりするよう促します。

  • 01:20:00 このセクションでは、スピーカーは、モデルを ONNX 形式に変換し、C++ で ONNXRuntime を使用して推論モードで実行するプロセスについて説明します。計算グラフを作成し、入力と出力の次元を定義する方法と、それを使用して CPU と GPU でのモデルのパフォーマンスをベンチマークする方法を示します。また、Transformer 演算子を利用し、Hugging Face ライブラリに実装されている一般的な自然言語処理モデル BERT の使用も紹介しています。スピーカーは、CPU または GPU で ONNXRuntime を使用するための正しいパッケージをインストールすることの重要性を強調しています。

  • 01:25:00 ビデオのこのセクションでは、プレゼンターが Python で BERT モデルを ONNX 形式に変換する方法を示します。このプロセスには、モデルの入力を定義し、「torch.onnx.export」関数を使用してモデルを変換することが含まれます。プレゼンターは、ONNX が各バージョンにオペレーターを追加することを説明します。これは、特定のモデルに必要なオペレーターを使用して ONNX の正しいバージョンで作業する必要性を強調しています。動的軸は、自然言語処理における可変シーケンス長など、動的な入力/出力形状を可能にする重要な機能としても強調されています。最後に、プレゼンターは、モデルで推論を実行するときのパフォーマンスに関して、Python と ONNX の比較を示します。

  • 01:30:00 仮想ミートアップのこのセクションでは、講演者が C++ で ONNX と ONNXRuntime を使用した作業のデモンストレーションを共有します。これらは、ONNXRuntime を介して実行される従来の Python モデルの推論で見られるパフォーマンスの向上を示しています。また、「ネットワーク ビューアー」と呼ばれるツールのデモも行います。これにより、ユーザーはモデルの静的な計算グラフを表示し、予想される入力と出力のタイプを含め、実行されている操作を確認できます。このツールには、変換に使用された ONNX のバージョンと、変換プロセス中に使用されたオフセットも表示されます。講演者は視聴者からのフィードバックを求め、出席者がコメントを提供するためのリンクを提供します。

  • 01:35:00 このセクションでは、Marco Arena と Matteo Verasani が、GPU、FGA、CPU などの組み込みシステムのプラットフォームを研究している仕事について話します。彼らは、これらの組み込みシステムで物体検出のために 4 つのニューラル ネットワークを実行し、消費電力と推論速度の観点から結果を分析しました。また、組み込みシステムに 1 段階検出器を使用することの重要性についても説明し、ONNX および ONNXRuntime のリポジトリへのリンクを提供します。彼らは、GPU で ONNXRuntime をベンチマークすることの潜在的な利点に言及し、Microsoft の ONNXRuntime チームを将来のイベントに参加するよう招待することに関心を示しています。最後に、今後のオンライン イベントやミートアップに視聴者を招待します。

  • 01:40:00 ビデオのこのセクションでは、対面式のミートアップに戻らない理由を見つけること、およびオンライン ミーティングの参加者から譲歩を得て幸運だったことについて話しています。また、Malattia、Verasani、および ONNX と ONNX ランタイム リポジトリによって示された資料に基づいて、Python セクションを取り出し、デモンストレーションの最初の部分に焦点を当てることを含む、仮想ミートアップ シリーズの今後の計画についても話し合います。このトピックに関する詳細情報を探している人のために、リンクと公式ソースも提供されています。最終的に、彼らはより多くのネットワーキングの時間を組み込み、夕食後に滞在したい人のためにチャットをオープンにしておくことを望んでいますが、オンラインミートアップの限界を認めています.
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
  • 2020.10.22
  • www.youtube.com
Relatori: Marco Arena, Mattia Verasani📍 Slides: https://www.italiancpp.org/interoperable-ai-arena-verasani/💻 Demo: https://github.com/ilpropheta/onnxruntim...
 

[CppDay20] 相互運用可能な AI: C++ での ONNX & ONNXRuntime (M. Arena、M.Verasani)



[CppDay20] 相互運用可能な AI: C++ での ONNX & ONNXRuntime (M. Arena、M.Verasani)

機械学習と深層学習アルゴリズムの使用が増加しており、これらのアルゴリズムをさまざまなプラットフォームに展開できるツールが必要です。 ONNX ツールは、異なるフレームワークやプラットフォーム間の相互運用性を提供し、開発者が特定のフレームワークやプラットフォームに精通していなくても、アルゴリズムをあるフレームワークから別のフレームワークに変換し、さまざまなデバイスに展開できるようにします。 ONNX ランタイムは、推論段階でカスタム アクセラレータを活用してモデルを高速化できる推論エンジンであり、さまざまなハードウェア プラットフォームを対象にすることができます。講演者は、C++ プログラミングでの ONNX および ONNX ランタイムの使用方法を、線形回帰およびニューラル ネットワーク モデルの例とともに示します。また、ネットワークの実行の微調整、読み込み時間の最適化、連続イメージの実行において ONNX と ONNX ランタイムを使用する利点についても説明します。

  • 00:00:00 ビデオのこのセクションでは、講演者は、さまざまなアプリケーションでの機械学習とディープ ラーニング アルゴリズムの使用の増加と、これらのアルゴリズムをさまざまなプラットフォームに展開できるツールの必要性について説明します。彼らは、異なるフレームワークとプラットフォーム間の相互運用性を提供する ONNX と呼ばれるツールを導入しています。彼らは、開発者が特定のフレームワークやプラットフォームに精通していなくても、ONNX を使用してアルゴリズムをあるフレームワークから別のフレームワークに変換し、さまざまなデバイスに展開する方法を説明しています。スピーカーは、Python アルゴリズムを ONNX 形式に変換し、次に Core ML フレームワークに変換して Apple デバイスにデプロイする例を使用します。彼らは、ディープ ラーニングと機械学習アルゴリズムをよりアクセスしやすく、幅広いプラットフォームで展開できるようにする ONNX の有用性を強調しています。

  • 00:05:00 このセクションでは、スピーカーは相互運用可能な AI を可能にするツールである ONNX と ONNX ランタイムについて説明します。 ONNX を使用すると、PyTorch や Tensorflow などの異なるディープ ラーニング フレームワーク間でモデルを転送できます。各フレームワークの知識は必要ありません。 Microsoft が提供する ONNX ランタイムは、推論段階でカスタム アクセラレータを利用してモデルを高速化できる推論エンジンです。さまざまなハードウェア プラットフォームをターゲットにすることができ、ユーザーが C++ で独自の推論エンジンを作成する必要はありません。

  • 00:10:00 このセクションでは、スピーカーは、機械学習モデルに ONNX 形式を使用する利点と、さまざまなトレーニング フレームワークに提供される相互運用性について説明します。彼らは、ディープ ラーニング アルゴリズムを開発し、それらを ONNX 形式に変換し、ONNX ランタイム推論エンジンを使用してさまざまなプラットフォームやプログラミング言語でモデルを実行するためのパイプラインについて説明しています。スピーカーは、PyTorch や scikit-learn などの他のフレームワークと比較して、ONNX ランタイムを使用した場合のアルゴリズムのパフォーマンスが大幅に向上していることを示すパフォーマンス グラフも提示します。最後に、Marco が引き継ぎ、C++ プログラミングでの ONNX ランタイム エンジンの使用について説明します。

  • 00:15:00 このセクションでは、講演者は機械学習フレームワーク間の相互運用性に関する経験について語り、この目標を達成するための重要な取り組みとして ONNX プロジェクトを紹介します。彼らは、フレームワーク間でモデルを変換するときに多くの変換の問題が発生しなかったと述べていますが、主な問題は、オペレーターが ONNX 形式または ONNX ランタイム形式でサポートされていない場合に発生します。スピーカーは、変換の問題に関する質問にも答え、ONNX でサポートされていない演算子が変換で問題を引き起こす可能性があることを説明します。

  • 00:20:00 このセクションでは、講演者が TensorFlow を ONNX に変換した経験について話し合い、変換の問題はあまり見られなかったと述べています。また、C++ でテンソルを操作する場合のデバッグとトラブルシューティングについても説明し、そのためにエクステンソルや Python などの他のライブラリを使用することについても言及しています。彼らは、ONNX のエントリ ポイントである onx.ai を紹介します。これにより、ユーザーは目的のアーキテクチャとプログラミング言語を選択できるようになり、C++ での ONNXRuntime の使用方法が示されます。彼らは、GPU のコードは同じであり、唯一の違いはリンクされたライブラリであると述べています。

  • 00:25:00 このセクションでは、プレゼンターが ONNXRuntime を使用してモデルを読み込み、検査し、推論を実行するデモを示します。彼は、ログやスレッドのカスタマイズなどのオプション機能を使用して、基礎となる API の環境を作成することから始めます。次に、特定のモデルで実行する推論を表すセッションを作成します。このセッションは、パスまたはバイト ストリームからロードできます。彼は、アロケーターを使用して、入力と出力の数と名前などのモデルの情報を検査する方法を示しています。彼は、このデモは未加工のライブラリを示しており、実際の状況では、文字列やその他の複雑さの管理を避けるためにラッパーが使用されると述べています。

  • 00:30:00 このセクションでは、スピーカーは単純な線形回帰モデルと、CreateTensor という外部 API を使用してデータをコピーせずに入力をネットワークに渡す方法について説明します。講演者は、ドキュメントが不明確な場合は、c++ API の下の c API に移動することの重要性を強調しています。さらに、部分的な出力の取得や出力名のカスタマイズなど、推論セッションの実行時に使用できるさまざまなオプションについても説明します。最後に、出力値はベクトルに格納され、以前に割り当てられた同じテンソルであることに注意してください。

  • 00:35:00 このセクションでは、スピーカーは関数 get tensor mutable data を使用して C++ でデータにアクセスする方法と、型消去のために使用される型を指定する必要性について説明します。提供されている例は、このメソッドを使用して値を標準出力に出力する方法を示しています。スピーカーは、テンソルと出力バッファーの割り当て、および事前に割り当てられた出力バッファーの使用方法に注意する必要があることにも言及しています。次に、CPU に対して ONNXRuntime を実行するための既定の選択肢として、Microsoft ML ONNXRuntime GPU パッケージを使用して、GPU 実行プロバイダーで線形モデルを実行する方法について説明します。最後に、講演者はビジョン ネットワークの 2 つのデモ プロジェクトを簡単に紹介します。ResNet と呼ばれる分類器と MobileNet と呼ばれる検出器です。デモ コードは前の例と似ており、スピーカーはこれらのネットワークに含まれる前処理と後処理を強調しています。

  • 00:40:00 このセクションでは、プレゼンターが ONNXRuntime を使用して、外部タイマーを使用してニューラル ネットワークの実行をプロファイリングする方法を示します。セッションの作成中にプロファイリング オプションを追加することにより、ONNXRuntime は、各フェーズで費やされた実行時間と、実行されたグラフ内のすべての演算子の爆発を含む JSON ファイルを生成できます。このツールは、モデルが CPU または GPU で実行されているかどうか、またはモデルが順次実行されているか並列で実行されているかなどの追加の詳細を提供できます。プロファイリングは、ネットワークの実行を微調整し、別のアクセラレータで実行されているかどうかを確認するのに役立ちます。

  • 00:45:00 このセクションでは、スピーカーは、C++ で ONNX と ONNXRuntime を使用して、モデルの読み込み時間と実行時間に対する最適化の影響を示します。最適化を無効にすると実行時間が大幅に長くなりますが、有効にすると読み込み時間が長くなります。ただし、最適化と読み込み時間のバランスがとれたモデルの最適化されたバージョンを保存することは可能です。スピーカーは、利用可能なさまざまなオプションを使用してモデルを最適化し、保存する方法を聴衆に示します。さらに、講演者は並列実行について簡単に触れ、画像のバッチの処理時間を大幅に短縮する方法を実演します。

  • 00:50:00 このセクションでは、スピーカーは順次イメージの実行と、各イメージの実行時間が長くなる原因となるグローバル スレッド プールでの競合について説明します。また、プロファイリング ツールを使用して単一入力の時間測定を改善し、イメージごとに実行するすべてのオペレーターを爆発させることについても言及しています。講演者は、Python の numpy に似たテンソル操作のための Extensor ライブラリの使用法を説明します。これは、より単純な ResNet 分類子での画像の前処理に使用されます。カスタム オペレーター、メモリ アリーナ、アロケーターなどの高度な機能を備えた、基本、中級、および高度なレベルの ONNX ランタイムの違いについても言及されています。トレーディング サポートと Python の例についても説明されており、デモとスライドへのリンクが提供されています。

  • 00:55:00 このセクションでは、プレゼンターは、組み込みデバイスに役立つ 1 段階の検出器に焦点を当てて、オブジェクト検出アルゴリズムで実行したベンチマークについて説明します。彼らは FPGA、GPU、および CPU に対してベンチマークを行い、NVIDIA デバイス、Intel Core E7 CPU、および FPGA が特定の種類の操作に最適なプラットフォームであることを発見しました。彼らはまた、Python のみではあるが、ONNX でモデルのトレーニングをサポートしていると述べました。本番環境で ONNXRuntime を使用することを検討するかどうか尋ねられたとき、彼らは既にテストで使用しており、本番環境に移行していると述べました。彼らは、Microsoft も Windows ML を含む多くのプロジェクトでそれを使用しており、3 年間開発されていることを指摘しました。
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
  • 2020.12.02
  • www.youtube.com
Event page: https://italiancpp.org/cppday20/Slides: https://github.com/italiancpp/cppday20---ONNX is an open source format built to represent machine learnin...
 

ONNX ランタイムと Hugging Face による機械学習の加速



ONNX ランタイムと Hugging Face による機械学習の加速

ビデオ「Accelerating Machine Learning with ONNX Runtime and Hugging Face」では、Hugging Face の Optimum ライブラリの作成について説明しています。これは、ONNX ランタイムを簡単に適用して、トレーニングから推論までの変換モデルを高速化することに焦点を当てています。このライブラリは、Transformer ライブラリとハードウェア アクセラレーションの間の橋渡しを簡素化し、生産パフォーマンスのための使いやすいツールキットを作成します。 ONNX ランタイムが提供する最適化を適用することで、ユーザーはすべてのハードウェア アクセラレーションの恩恵を受け、推論パイプラインが高速化されます。 Hugging Face コミュニティ内のコラボレーションにより、これらの高速化された推論パイプライン クラスを使用してシーケンス間モデルの最適化が可能になりました。エンド ツー エンドの例では、Optimum ライブラリを使用すると、スループットを 44% 向上させ、レイテンシを節約しながらレイテンシを削減できることが示されました。元のモデルの精度の 99.6%。

  • 00:00:00 このセクションでは、Hugging Face の Jeff が、すぐにアクセスできる事前トレーニング済みのモデルとツールを通じて、世界中のすべての企業が変圧器モデルの力を利用できるようにするという会社の目標について説明します。彼は、転移学習と注意だけが必要なすべてであると説明しています。紙は機械学習の分野を変え、自然言語処理タスクで画期的なパフォーマンスを達成し、機械学習のあらゆるモダリティで最先端の結果を生み出しました。 Jeff は、ONNX ランタイムを簡単に適用してトランスフォーマー モデルを高速化するように設計された Optimum ライブラリを紹介し、エンジニアやソフトウェア開発者がこれらのモデルを本番環境で簡単に使用できるようにします。

  • 00:05:00 このセクションでは、トレーニングから推論までの変換モデルの高速化に重点を置いた Hugging Face Optimum ライブラリの作成について講演者が説明します。このライブラリは、本番パフォーマンス専用の高レベル API を備えたハードウェア アクセラレーションのリファレンス ツールキットを提供します。 Optimum 内の Onnx ランタイム パッケージは、トレーニングを加速する方法である DeepSpeed のネイティブ統合を提供します。 Optimum は、グラフ モデルを単純化する Ort Optimizer、重みを最適化する Rt Quantizer も提供し、特定の実行プロバイダーをターゲットにしてハードウェア固有の最適化を利用します。全体として、Optimum はトランスフォーマー ライブラリとハードウェア アクセラレーション間のブリッジを簡素化し、生産パフォーマンスのための使いやすいツールキットを作成します。

  • 00:10:00 このセクションでは、講演者は ONNX ランタイムと Hugging Face の最適化ライブラリを使用した機械学習モデルの最適化について話します。 Auto Model for Task から RT Model for Task に切り替えることで、ユーザーは ONNX ランタイムによって提供される最適化を簡単に適用し、すべてのハードウェア アクセラレーションの恩恵を受けることができるため、推論パイプラインが高速化されます。 Hugging Face コミュニティも協力して、これらの高速化された推論パイプライン クラスを使用してシーケンス間モデルの最適化を可能にしています。ブログ投稿で概説されているエンド ツー エンドの例は、Optimum ライブラリを使用すると、元のモデルの精度の 99.6% を維持しながら、スループットが 44% 増加するか、レイテンシが減少することを示しています。
Accelerating Machine Learning with ONNX Runtime and Hugging Face
Accelerating Machine Learning with ONNX Runtime and Hugging Face
  • 2022.07.13
  • www.youtube.com
Hugging Face has democratized state of the art machine learning with Transformers and the Hugging Face Hub, but deploying these large and complex models into...
 

ONNX、Triton、Seldon を使用して大規模な ML 推論を加速 | PyData グローバル 2021



ONNX、Triton、Seldon を使用して大規模な ML 推論を加速 | PyData グローバル 2021

ビデオ「Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021」では、Seldon Technologies の Alejandro Saucedo が、機械学習推論のスケーリングの課題と、ONNX と Triton を使用してモデルを最適化および生産化する方法について説明しています。 GPT-2 TensorFlow モデルをユース ケースとして使用するこのセッションでは、前処理、最適なトークンの選択、Tempo と Triton 推論サーバーを使用したモデルのデプロイについて説明します。 Saucedo は、再現性とコンプライアンスを確保しながら、インフラストラクチャの複雑さを抽象化し、展開を容易にする必要性を強調しています。講演は、エンド ツー エンドのトレーニングおよび展開コンポーネントのためのオープンソース プロジェクトとのコラボレーションで締めくくられます。

  • 00:00:00 このセクションでは、Alejandro Saucedo が、機械学習の展開と監視に重点を置いている彼の会社 Seldon Technologies について紹介します。彼は、このセッションでは、GPT-2 TensorFlow モデルをユース ケースとして使用して、実用的なアプローチを採用することで、機械学習の推論を大規模に加速するという課題を取り上げると説明しています。目標は、ONNX を使用してモデルを最適化し、Tempo と呼ばれるツールを使用してローカルでテストしてから、Kubernetes で製品化することです。主な焦点は、データ サイエンスの実践者がデータ サイエンスの側面に集中できるように、基盤となるインフラストラクチャの複雑さを抽象化することです。 Saucedo は、GPT-2 とそのアプリケーションについても説明し、トレーニングと推論に大量の計算を必要とする比較的複雑なモデルであることを指摘しています。

  • 00:05:00 ビデオのこのセクションでは、事前トレーニング済みモデル、特に GPT-2 の使用方法と、それらをゲームやコード生成などのさまざまなアプリケーションに活用する方法について説明します。スピーカーは、Hugging Face ライブラリを使用して事前トレーニング済みの GPT-2 モデルを取得する方法を説明し、前処理と推論に使用されるトークナイザーやヘッド モデルなど、モデルのコンポーネントについて説明します。次にスピーカーは、トークナイザーを使用して人間が読める文を前処理し、生成関数を使用して 20 個のトークンを予測する例を説明します。最後に、スピーカーは、モデルの推論を複数回実行する生成関数の基本的なワークフローと、トークナイザーのデコーダーを使用して機械可読出力を人間可読形式に変換する方法について説明します。

  • 00:10:00 このセクションでは、スピーカーは、モデルに最適なトークンを選択するプロセスと、モデルをスケーリングする際に実践者が直面する課題について説明します。課題には、特殊なハードウェアの要件、コンポーネント間の複雑な依存関係、および再現性とコンプライアンスの必要性が含まれます。次にスピーカーは、業界で広く採用されている ONNX 形式を紹介します。これにより、Python または PyTorch モデルを標準化された形式に変換し、最適化されたサーバーが最適なパフォーマンスを読み取って変更できるようになります。ただし、ONNX への変換は必要なく、実務者はモデルを直接展開できます。講演者は、モデルの展開とスケーリングのプロセスを簡素化する Tempo フレームワークも紹介します。

  • 00:15:00 このセクションでは、スピーカーは、Tempo と Triton 推論サーバーを使用してモデルを生成する方法について説明します。最初のステップは、GPT-2 モデルの Tempo ラッパーを定義してから、最適化されたモデルを Nvidia の最適化されたサーバーで実行することです。次に、カスタム トランスフォーマー ロジックを定義して、機械可読トークンを人間可読文字列に変換し、ユーザーが簡単かつシンプルな方法でモデルを操作できるようにする必要があります。モデルを Docker でローカルにテストした後、簡単なコマンドで Kubernetes スタックにデプロイできます。ラッパーを定義するためのコードが示され、講演者は、この方法によりさまざまなタイプのモデル フレームワークを使用できるため、ML 推論を製品化するための汎用ツールになると説明しています。

  • 00:20:00 このセクションでは、スピーカーは ONNX と Triton で PyTorch モデルを使用してカスタム トランスフォーマー ロジックを作成する方法について説明します。まず、トランスクリプトは、文字列変換と予測関数を使用して、このカスタム ロジックを介してトークンを送信する方法を説明します。次にスピーカーは、GPT2 モデルからアーティファクトをロードし、予測関数を REST エンドポイントとして定義する方法を説明してから、トークンを繰り返し処理して応答を生成します。重要なポイントは、トークンをモデルに渡し、何度か実行を繰り返すことで、この複雑なインフラストラクチャから文字列を返すことができるということです。さらに、スピーカーは、このアプローチはデプロイ リモート機能を介して Kubernetes に簡単にデプロイできると述べています。

  • 00:25:00 このセクションでは、スピーカーは大規模な機械学習の高速化について説明します。具体的には、ONNX を使用して GPT-2 TensorFlow モデルを最適化し、Docker を使用して Triton で実行し、ベスト プラクティスに従って Kubernetes に展開することに焦点を当てています。目標は、基盤となるインフラストラクチャの漏洩を最小限に抑え、最小限の労力で信頼性の高い展開を確保することです。講演者はまた、オープンソース プロジェクトでエンドツーエンドのトレーニングと展開コンポーネントを提供するために、Tempo および Metaflow チームとのコラボレーションについても言及しています。講演は質疑応答で締めくくられます。
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
  • 2022.01.19
  • www.youtube.com
Accelerating ML Inference at Scale with ONNX, Triton and SeldonSpeaker: Alejandro SaucedoSummaryIdentifying the right tools for high performant production ma...
 

AI Show Live - エピソード 62 - ONNX ランタイムを使用したマルチプラットフォームの推論



AI Show Live - エピソード 62 - ONNX ランタイムを使用したマルチプラットフォームの推論

AI Show Live の「ONNX ランタイムを使用したマルチプラットフォーム推論」エピソードでは、ホストが、ONNX ランタイム フレームワークを使用して複数のプラットフォームに超解像度モデルとオブジェクト検出モデルを展開する方法を紹介します。モバイル プラットフォームと Web プラットフォームの両方の前処理と後処理の手順について説明し、単一のソリューションを使用する利点を示し、PyTorch モデルを ONNX モデルに変換するプロセスを説明し、ONNX を使用して推論のためにデータを前処理する方法を紹介します。ランタイム。さらに、C# で Onnx ランタイムを使用した BERT 自然言語処理モデルの実装を示します。コードとオープンソース モデルは、ユーザーのソリューションのカスタマイズに利用できます。

AI Show Live の第 2 部では、プレゼンターが ONNX ランタイムを使用した推論の実行に関連するさまざまなトピックを取り上げます。 ONNX 推論の例の例を使用してテキスト分類のプロセスを示し、C# で BERT 分類モデルを構築するために必要なパッケージとツールのインストールについて説明します。また、VS 2022 での IntelliCode の使用についても説明し、テンソルの作成、ONNX ランタイム推論セッションの構成、出力の後処理など、モデル推論の準備手順について説明します。さらに、モデルのドキュメントを参照し、正確な結果を得るために適切なトークナイザーを選択することの重要性についても触れています。

  • 00:00:00  AI Show Live のこのセクションでは、ホストの Cassie Breviu が特別ゲストとして、ONNX ランタイム チームのインターン生である Victor、Kalia、David を紹介します。 ONNX ランタイム フレームワークを使用したモバイルおよび Web 上のオブジェクト検出モデル。このプロジェクトは、超解像度出力によって画像のオブジェクト検出を改善し、マルチプラットフォーム展開のための ONNX ランタイムの機能を実証することを目的としています。

  • 00:05:00 このセクションでは、ホストが React Native と Expo を使用して、モバイルとウェブのさまざまなプラットフォームに展開できるアプリを構築するプロジェクトを紹介します。彼らは、React Native のネイティブ モジュール機能を使用すると、JavaScript コードで使用できる C++ や Java などの他の言語で関数やモデルを実装できると説明しています。この機能により、Java で記述されたピクセル取得関数などの前処理関数を別の言語で記述して、データをより適切に処理できるようになり、機械学習モデルの画像のピクセル データを簡単に取得できるようになります。

  • 00:10:00 YouTube ビデオのこのセクションでは、スピーカーは、超解像度モデルを使用するモバイル アプリケーションの前処理と後処理の手順について説明します。 RGB 値で動作する他のモデルとは異なり、このモデルは画像の輝度 (Y) コンポーネントでのみ動作します。したがって、講演者は RGB 画像を YCbCr 画像に変換して Y 成分を抽出する方法を示します。また、スピーカーは、モバイルおよび Web アプリケーション用に最適化された縮小サイズのビルドを提供する ONNX ランタイム フォーマットを使用して、モデルをモバイル環境にロードする方法も示します。最後に、モデルの出力を処理するための後処理ステップが実行されます。

  • 00:15:00 ビデオのこのセクションでは、ホストとゲストがモデルから配列を取り込んで YCbCr を RGB に戻す後処理機能を実演します。次に、ネイティブ モデルの関数を使用して、表示用の画像ソースを取得します。 Python 以外の言語での前処理と後処理は、他の言語でモデルを運用化および推論する際に難しい部分になる傾向があります。モデルがモバイル デバイスにローカルにデプロイされ、後でコードを再利用して同じモデルを Web ブラウザーにデプロイするデモを示しています。ある視聴者は、C# で同じことができるかどうかを尋ねましたが、ゲストはそれが可能であると信じています。

  • 00:20:00 このセクションでは、Kalia が Web プラットフォームとモバイル プラットフォームでモデルを実行するための前処理と後処理の違いを示します。 Web では、オフスクリーン キャンバスと Canvas API を使用して画像データを取得しますが、モバイルでは API 間を行き来する必要はありません。オフスクリーン キャンバスに画像が描画されると、前処理関数が画像データを超解像モデルが使用する y チャネルに調整します。次に、後処理関数がデータを y cbcr から rgb 形式に変換して、画面に表示できるようにします。前処理関数と後処理関数の Kalia のコードは、Java、C#、または React のいずれかで使用できます。

  • 00:25:00 ビデオのこのセクションでは、プレゼンターが、ONNX ランタイムなど、複数のデバイスに単一のソリューションを使用する利点について説明します。 Web プラットフォームでモバイル モデルを実行する方法と、コスト効率やプライバシーなど、デバイス上での推論の利点を示します。プレゼンターは、PyTorch モデルを ONNX モデルに変換してから ONNX ランタイム形式に変換するプロセスについても説明します。最後に、プロジェクトのオブジェクト検出の側面を紹介し、画像内のオブジェクトを検出するために ONNX ランタイムをどのように使用したかを説明します。

  • 00:30:00 ビデオのこのセクションでは、プレゼンターがプロジェクトで使用されるモデルの詳細について説明します。これは、超解像度を利用して全体的な検出の精度を高めるオブジェクト検出 AI モデルです。彼らは、モデルと前述のモデルの前処理と後処理の違いを説明し、場所、クラス、スコア、検出数など、モデルの 4 つの出力について詳しく説明しています。さらに、Netron ツールを使用してモデルを分析および分解する方法と、前処理を調整してモデルの RGB 値の一貫性を保ち、オブジェクトを正確に検出する方法を示しています。

  • 00:35:00 このセクションでは、発表者が超解像前の写真でモデルを実行する方法を示し、写真内の犬を正確に識別するオブジェクト検出の結果を示します。超解像モデルを使用すると、画像が向上し、より正確で小さな検出ボックスにつながります。これは、ONNX ランタイムの移植性と実用性を実証し、デバイス上の最適化されたモデルでモデルを実行する機能を示しています。ユーザーが独自のソリューションにアクセスしてカスタマイズできるように、コードとオープン ソース モデルも利用できます。

  • 00:40:00 このセクションで見ているのは、C# で Onnx ランタイムを使用した BERT 自然言語処理モデルのデモです。ホストは、Python で BERT を使用する例はたくさんありますが、C# を使用することを好んだと説明しています。彼らは、BERT ベースのケースなしモデルから始めてから、質問応答のために Onnx ランタイム ドキュメントの例に進みました。 Hugging Face トランスフォーマー API を使用して、事前トレーニング済みのモデルを簡単に取得し、Onnx 形式にエクスポートすることができました。次に、モデルに入力を与え、C# で Onnx ランタイムを使用して実行する方法を示します。

  • 00:45:00 このセクションでは、スピーカーは、テキストがトークン化されるモデルの前処理ステップについて説明します。これらは、動的軸を使用してさまざまな入力長を許可する方法と、トークナイザーを使用して C シャープで入力を前処理する方法を示しています。また、Python ベースのトランスフォーマー パッケージでは不可能な C シャープで BERT モデルをトークン化できるオープンソース プロジェクトである Boat Tokenizer も紹介しています。エンコードされた入力は、入力 ID として返されます。これは、モデル内のさまざまな単語に関連付けられたさまざまなトークンです。

  • 00:50:00 このセクションでは、プレゼンターが、コンソール アプリを作成して C# で BERT モデルを実装する方法について説明します。彼らは、モデルのさまざまな C# 実装を試すときにコンソール アプリを使用すると便利であり、必要に応じて運用アプリケーションに統合できると説明しています。プレゼンターは、トークン化を使用して文の実際のトークンを取得する方法と、トークンに関連付けられた ID を使用して入力をエンコードする方法を示します。また、使用される大きな語彙と、それらがトークン化で使用されるオブジェクトに変換される方法も示します。

  • 00:55:00 このセクションでは、プレゼンターがデータを前処理し、ONNX ランタイムで推論できるように準備する方法について説明しています。これらは、推論プロセスに必要なデータをテンソルに変換する方法と、推論セッションに渡す名前付きの ONNX 値オブジェクトのリストを作成する方法を示しています。また、入力データに正しいラベルを設定することの重要性についても言及しています。全体として、ONNX ランタイムを操作し、機械学習推論用のデータを準備するための役立つヒントを提供します。

  • 01:00:00 このセクションでは、スピーカーは推論値を実行し、開始ロジットと終了ロジットを取得します。結果は、ラベルのインデックス順に返されます。予測された答えを得るには、最初と最後のロジットから最大値と最大値のインデックスを最初に取得する必要があります。出力名が表示され、トークンが正しいかどうかを比較するために使用されるエンコードされたトークン値が表示されます。講演者は、モデルを操作可能にするために Python 推論コードを C# に変換するプロセスも示します。最後に、彼らはより多くのモデルを試し、Python 推論コードを C# に変換し、モデルを微調整することを提案しています。

  • 01:05:00 ビデオのこのセクションでは、ホストが ONNX ランタイムと ONNX 推論の例の例を使用してテキスト分類を調べます。これは、ONNX の使用方法の例を見つけるための優れたリソースです。この例では、Hugging Face のトークナイザーと、基本のカプセル化されたトークナイザーの小型化された蒸留バージョンを使用しています。ホストは、モデル名に基づいてパスを設定してから、モデルの入力を設定します。このモデルには、文の長さが可変であるため動的な軸があります。テキスト分類モデルの入力は、入力 ID とアテンション マスクです。ホストは、ONNX 用に開発されている拡張機能があり、新しいバージョンのランタイムが .NET 6 と Maui をサポートしていると述べています。モデルの前処理の例はすぐには入手できませんが、ホストはそれを理解するために Netron を使用する予定です。

  • 01:10:00 このセクションの要約。ビデオのこのセクションでは、話者は前のモデルの名前をあまり参考にしない方法で変更し、それにテキスト分類を追加します。続いて、C# と .NET 6 を使用して新しいプロジェクトを作成し、スクリプト化された単純なコンソール テンプレートの新機能について説明します。スピーカーは、前のプロジェクトのコードをコピーして新しいプロジェクトに貼り付け、BERT 入力を追加します。BERT 入力には 2 つの出力しかありません。スピーカーは、この入力用に別のファイルを作成する必要があることを認めますが、代わりにスクリプト化することを選択します。

  • 01:15:00 このセクションでは、講演者は C# で Burp 分類モデルを構築するためのさまざまなパッケージとツールのインストールについて説明しています。管理パッケージとともに、必要なトークナイザー パッケージと ONNX ランタイム パッケージをインストールします。不要な属性パッケージはコメントアウトされ、スピーカーは入力文とトークナイザーを追加してエンコード用のトークンを取得します。講演者は、GPT-2 モデルを使用してコード ベースでトレーニングし、ローカルで実行する VS 2022 IntelliCode についても言及しています。

  • 01:20:00 ビデオのこのセクションでは、既存のコードベースから学習できる AI を利用したツールである VS 2022 で Intellicode (以前は Intellisense と呼ばれていました) を使用することについてプレゼンターが話します。次に、トークナイザーとセンテンスのエンコードされた値の操作に進みます。また、モデル パスと、モデルを実験目的でコンソール アプリに貼り付ける方法についても説明しますが、運用アプリケーションではこれを処理するためのより良い方法があります。最後に、プレゼンターは BERT モデルの推論セッションを作成します。

  • 01:25:00 ビデオのこのセクションでは、プレゼンターは ONNX ランタイムを使用して推論を実行するための準備に必要な手順を実行します。テンソルを作成し、それらをテンソルに変換することから始めます。次に、入力 ID と注意マスク、およびリストのリストのリストを使用して入力を作成します。名前付きの ONNX 値を作成した後、モデルを実行し、さまざまなグラフの最適化や実行プロバイダーなど、ONNX ランタイム推論セッションを構成するためのオプションについて話し合います。最後に、出力を取得します。この場合、値は 1 つだけです。

  • 01:30:00 トランスクリプトのこのセクションでは、スピーカーは ONNX ランタイムでモデルを使用するためのコードを確認しています。彼らは、ONNX モデルを使用するためにラベルに同じ名前を付ける方法と、すべてが機能するかどうかを確認するためにサニティ テストを実行する方法を説明しています。コードをステップ実行するブレークポイントを設定し、入力、アテンション マスク、および ID が正しいかどうかを確認します。入力が正しければ、モデルをロードし、テンソル、セッション、および推論を作成します。次に、これを結果に戻す方法を理解するために後処理が必要であると説明し、前処理コードを見つけました。

  • 01:35:00 ビデオのこのセクションでは、スピーカーは、分類モデルから取得した 2 つの値を処理して、特定の文のポジティブな感情とネガティブな感情を判断するプロセスについて説明します。トークナイザーを使用して文をトークン化し、そのトークンを取得する方法を示します。これを使用して、C# でプロセスを実行する方法を理解していることを確認します。また、モデルのドキュメントを参照し、正しいトークナイザーを選択して正確なトークン化を行うことの重要性についても言及しています。

  • 01:40:00 このセクションでは、AI Show Live の主催者が Hugging Face の Optimum プロジェクトについて説明します。これは、バックエンドで ONNX ランタイムを使用するトレーニング用アクセラレータやさまざまなハードウェア統合など、機械学習の最適化を実装するものです。ホストは、トークナイザーの前処理手順と、テキスト分類モデルのセッションの作成も確認します。エンコードされたバージョンのセンテンスを調査し、以前に作成したコードを再利用して、モデルのセッションを作成します。

  • 01:45:00 このセクションでは、プレゼンターはモデルをエクスポートして入力データを処理することにより、モデルの推論を準備します。彼らは、エンコードされたトークンのサニティ チェックを実行することにより、入力データのトークン化に正しいトークナイザーが使用されたことを確認します。しかし、彼らは定型入力が見つからないことを発見し、問題を特定するためにモデルとコードを調査するために戻ってきました。使用されているトークナイザーに関する不確実性にもかかわらず、エンコードされたトークンが正しいことを確認し、入力マスクの生成に進みます。

  • 01:55:00 ビデオのこのセクションでは、プレゼンターがモデルを実行するための入力と出力を設定しようとしています。彼らは入力マスクとアテンション マスクでいくつかの問題に遭遇し、最終的に、追加の処理を行うことなく、トークンを取得して送信するだけでよいことに気付きます。次に、焦点をモデル入力に切り替えます。これは、2 つの入力が必要であり、バッチの形状を指定する必要があるため、もう少し複雑です。プレゼンターは、ONNX ランタイムを使用して入力と出力をセットアップし、C# モデルと同じ結果が得られるかどうかをテストします。
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
  • 2022.07.29
  • www.youtube.com
Join Cassie Breviu as she takes us on a tour of what the ONNX Runtime can do when it comes to inference AND on multiple platforms to boot.
理由: