この記事は、インテルのブログで公開されている「Boost the Performance of AI/ML Applications using Intel® VTune™ Profiler」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
インテル® VTune™ プロファイラーでデータ並列 Python* および OpenVINO™ ワークロードをプロファイルする方法
AI およびマシンラーニング (ML) は、ヘルスケア、ライフサイエンス、マーケティング、金融、製造、ロボット工学、自律走行車、スマートシティーなど、さまざまな産業分野に適用範囲を拡大しています。PyTorch*、TensorFlow*、Keras* などのディープラーニング (DL) フレームワークは、実際にこれらの分野で使用されるマシンラーニング (ML) ワークロードのバックボーンを形成します。
OpenVINO™ ツールキットなどの開発者リソースも、「1 つのコードをどこでもデプロイ」アプローチにより、コンピューター・ビジョン (英語) や生成 AI (GenAI) (英語) などの分野で最新のハードウェア・アーキテクチャーを利用した AI 開発の加速に貢献しています。2018年の登場以来、オープンソースの OpenVINO™ ツールキットは、精度を維持しながら、低レイテンシー、高スループットにより AI 推論を加速し、モデル・フットプリントを軽減し、ハードウェアの使用を最適化することに取り組んできました。
非線形関数と多層を含むディープラーニング・モデルの複雑な構造により、基礎となるソースコードのパフォーマンス・ボトルネックの特定と解析は困難です。PyTorch* や TensorFlow* などの ML フレームワークは、モデル開発のさまざまな段階でパフォーマンス・メトリックの測定と解析を行うプロファイル API とネイティブツールを提供していますが、その範囲はソフトウェア機能に限定されています。oneAPI 対応のインテル® VTune™ プロファイラーは、計算とメモリーのボトルネックに関するハードウェア・レベルの詳細な情報を提供することで、パフォーマンスの問題を修正し、さまざまな計算エンベロープを持つハードウェア・プラットフォーム間で AI アプリケーションのパフォーマンスを最適化し、スケーリングできるように支援します。
このブログでは、インテル® VTune™ プロファイラーでデータ並列 Python* および OpenVINO™ アプリケーションをプロファイルし、AI/ML ワークロードの最適化の範囲を拡大する方法を紹介します。
インテル® VTune™ プロファイラーで Python* アプリケーションのパフォーマンスを向上
インテル® VTune™ プロファイラー・クックブックの新しいレシピでは、インテル® VTune™ プロファイラーが Python* アプリケーションのプロファイルにどのように役立つかを説明しています。このレシピの NumPy* ライブラリーを使用したペアワイズ距離計算の例を詳しく見てみましょう。
このレシピの基本的なソフトウェア要件は以下のとおりです。
- インテル® ディストリビューションの Python*
- Data Parallel Extensions for Python* (英語)
- インテル® VTune™ プロファイラー 2022 以降
- インテル® oneAPI DPC++/C++ コンパイラー
注: 詳細なハードウェアおよびソフトウェア要件については、レシピの「Ingredients (使用するもの)」セクションを参照してください。
このレシピの NumPy* 実装では、距離計算にインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) ルーチンを使用し、計算を論理タスクに分割するためインテル® インストルメンテーションおよびトレーシング・テクノロジー (ITT) API を使用しています。インテル® VTune™ プロファイラーは、各論理タスクの実行時間とメモリー消費量の解析に役立ち、パフォーマンス向上に必要な変更を行うコード領域を決定できます。
NumPy* 実装で ホットスポット解析を実行すると、結果レポートに最も多くの CPU 時間を費やしているコード領域の詳細が表示されます。また、並列処理を向上させるスレッド化解析や、ハードウェアを効率良く使用するためのマイクロアーキテクチャー全般解析など、その他の役立つパフォーマンス解析機能についての提案も表示されます。
Data Parallel Extension for NumPy* および Data Parallel Extension for Numba* を使用してパフォーマンス・ボトルネックを修正
ペアワイズ距離計算の例で使用されている基本的な NumPy* 実装では、ホットスポット解析レポートから、NumPy* 操作とインテル® oneMKL 関数が合計実行時間の大部分を消費していることが分かります。これらのボトルネックは、NumPy* を Data Parallel Extension for NumPy* (英語) に置き換えて、コードを少し変更することで解決できます。ホットスポット解析を再度実行して、基本的な NumPy* コードのパフォーマンスが向上したか確認し、さらに最適化できる余地があるかどうかを確認します。
インテル® VTune™ プロファイラーは、プラットフォームの GPU で Data Parallel Extension for Numba* (英語) を使用して、アプリケーションにアクセラレーターへオフロードする並列処理を追加することなども提案します。Numba* は、NumPy* 用の Numba* JIT コンパイラーのオープンソース拡張です。Python* でのカーネル・プログラミング用に SYCL* のような API を提供します。GPU での Numba* 実装の実行は、インテル® VTune™ プロファイラーの GPU 計算/メディア・ホットスポット解析プレビュー機能で解析できます。
→ 詳細は、インテル® VTune™ プロファイラー・クックブックの「データ並列 Python* アプリケーションのプロファイル」レシピを参照してください。
注: クックブックで使用されているサンプルコードは、説明を目的としたものであることに注意してください。レシピを参考にして、インテル® VTune™ プロファイラーで任意の Python* アプリケーションのパフォーマンスを解析および最適化できます。
インテル® VTune™ プロファイラーで OpenVINO™ アプリケーションのパフォーマンスを解析
インテル® VTune™ プロファイラー・クックブックの別の新しいレシピでは、インテル® VTune™ プロファイラーで OpenVINO™ ベースの AI アプリケーションをプロファイルして、CPU、GPU、NPU (ニューラル・プロセシング・ユニット) のパフォーマンス・ボトルネックを解析する方法を説明しています。以下のものが必要です。
- OpenVINO™ ツールキット (英語) の一部として提供されるベンチマーク・ツール
- OpenVINO™ アプリケーションでインテル® oneAPI データ・アナリティクス・ライブラリー (インテル® oneDAL) やインテル® oneAPI ディープ・ニューラル・ネットワーク (インテル® oneDNN) (英語) を使用している場合はインテル® oneAPI ベース・ツールキット
- インテル® ディストリビューションの Python*
- インテル® VTune™ プロファイラー 2024.1 以降
注: ハードウェアおよびデバイスドライバー要件については、レシピの「Ingredients (使用するもの)」セクションを参照してください。
このレシピでは、OpenVINO™ のセットアップ、OpenVINO™ ソースのビルド、ITT API を使用した OpenVINO™ のパフォーマンス解析設定について、ステップごとに説明しています。このレシピは、AI アプリケーションのプロファイル中に、レイテンシーとスループットを解析するため、リファレンス・ベンチマーク・アプリケーションを使用します。
使用するコンピューティング・アーキテクチャーに応じて、インテル® VTune™ プロファイラーのさまざまなパフォーマンス解析機能を利用してホットスポットを特定し、コード領域ごとのハードウェア使用状況を調べることができます。以下に例を示します。
- ホットスポット解析機能を使用して、CPU ボトルネック、つまり最も多くの CPU 実行時間を費やしているコード領域を解析します。
- GPU 計算/メディア・ホットスポット解析プレビュー機能を使用して、GPU ホットスポットをプロファイルします。非効率的なカーネル・アルゴリズムを調査し、さまざまな種類の GPU 命令の頻度を解析するなどして、GPU の使用状況を把握します。
- AI PC の NPU は、AI/ML アプリケーションのパフォーマンスを向上するように設計されています。インテル® ディストリビューションの OpenVINO™ ツールキットを使用して、計算集約型の AI/ML ワークロードをインテル® NPU (英語) にオフロードできます。インテル® VTune™ プロファイラーの NPU 全般解析プレビュー機能を使用すると、ワークロード・サイズ、実行時間、サンプリング間隔などのさまざまなハードウェア・メトリックに基づいて NPU パフォーマンスを解析できます。
→ インテル® VTune™ プロファイラーで任意の AI/ML アプリケーションをプロファイルする方法の詳細については、インテル® VTune™ プロファイラー・クックブックの「OpenVINO™ アプリケーションのプロファイル」レシピを参照してください。
次のステップ
この記事で説明したパフォーマンス・ボトルネックのプロファイルと解析機能に加えて、インテル® VTune™ プロファイラーでは、メモリー消費と割り当て解析、I/O パフォーマンス解析、HPC パフォーマンス特性解析など、さまざまな解析が可能です。今すぐインテル® VTune™ プロファイラー (英語) を使い始めましょう!
インテルの oneAPI ソフトウェア・ポートフォリオにある AI (英語)、HPC、レンダリング (英語) ツールもぜひチェックしてみてください。
ソフトウェアの入手
インテル® VTune™ プロファイラーは、インテル® oneAPI ベース・ツールキットの一部、またはスタンドアロン (英語) として利用できます。
関連情報
- インテル® VTune™ プロファイラーの製品ページ
- インテル® VTune™ プロファイラー・ユーザー・ガイド
- インテル® VTune™ プロファイラー・パフォーマンス解析クックブック
- インテル® VTune™ プロファイラーのその他のドキュメントとサンプルコード (英語)
- インテル® VTune™ プロファイラーのトレーニング・ビデオ (英語)
- インテル® VTune™ プロファイラーでアプリケーション・パフォーマンスを解析、チューニング、最大化する 8 つの方法 (英語)
- oneAPI プログラミング・モデル
- Data Parallel Extension for NumPy* (GitHub* リポジトリー) (英語)
- Data Parallel Extension for Numba* (GitHub* リポジトリー) (英語)
- OpenVINO™ ツールキット (GitHub* リポジトリー) (英語)
- インテルで AI 開発を始めよう (英語)
- トップ AI 開発者になろう (英語)
日本語での優先サポートのご案内
エクセルソフトは、インテル® ソフトウェア開発ツールの正規販売代理店として、25年以上にわたって国内の開発者向けに日本語で技術サポートや最新情報を提供してきました。インテルとの長年の強固なパートナーシップを通して、国内で HPC クラスターシステムやデータセンターの運用に携わる大学機関、政府機関、民間企業を中心とする組織向けにツールの導入やプログラムの最適化に携わってきた経験を活かし、国内のエンジニアや企業の開発を日本語でサポートします。