インテル® oneDAL でデータ・アナリティクスとマシンラーニングを強化

同カテゴリーの次の記事

PyTorch* 向けインテル® エクステンションによる PyTorch* の高速化

この記事は、インテル® デベロッパー・ゾーンに公開されている「Breaking Cross-Architecture Barriers with oneAPI: Libraries for Easy Heterogeneous Compute」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


AI やデータ・アナリティクスの分野で大規模なデータセットを処理するユースケースが増えるにつれて、ハードウェアやアーキテクチャーの要件も複雑さが増しています。必要なタスクによっては、CPU、GPU、AI、その他のアクセラレーター上で動作する、スカラー、ベクトル、行列、空間などのアーキテクチャーの組み合わせが必要になります。これは、ビッグデータ処理を高速化し、完了までのコストと時間を短縮するために不可欠です。

開発者が直面する課題は、これらのアーキテクチャーをサポートするコードを記述することです。CPU 上で動作するコードと GPU やその他のアクセラレーター上で動作するコードでは、異なるツールが必要になります。プロジェクトがシングルノードから分散処理にスケールアップすると、新しいツールや API が必要になることがよくあります。つまり、異なるアーキテクチャーへのコードの移行作業に加えて、さらに追加の開発時間を要する場合があります。

この課題を解決するため、oneAPI はアーキテクチャーに依存しないコードを可能にするプログラミング・モデルを提供します。これにより、開発者は、異なるアーキテクチャー間のマッピングを可能にする SYCL* 言語を使用して、例えば CPU と GPU で実行可能なコードを再利用することができます。

インテル® oneAPI データ・アナリティクス・ライブラリー (インテル® oneDAL) は、データの変換、処理、およびモデリングを行う分散データ・パイプラインの作成に必要なすべてのビルディング・ブロックを備えたライブラリーです。これは、Spark* や Hadoop* を含む主要データソースに接続できるインテル® ディストリビューションの Python*、C++、および Java* API を使用して実現されます。

インテル® oneDAL でできること

インテル® oneDAL は、一般的なマシンラーニングやアナリティクス・アルゴリズムを最適化し、さまざまなアーキテクチャー上で動作する高速なデータ・アプリケーションを構築するのに役立ちます。データ管理、分析、トレーニング、予測など、アナリティクスのあらゆる段階に対応する機能が用意されています。

データ管理

データ管理は、あらゆるビッグデータ処理プラットフォームにおいて重要なステップです。データ管理には、さまざまなソースからデータを取り込み、そのデータを処理して、ダウンストリームで利用できるようにすることが含まれます。これがないと、アナリストやデータ・サイエンティストがデータを取得して処理しなければならず、小規模なデータセットであれば問題ありませんが、大量かつ異なるフォーマットのデータを処理する場合は、時間がかかり困難です。

インテル® oneDAL には、データベースやテキストファイルなど、メモリー外のデータソースをメモリーに転送し、分析、学習、予測に使用するためのツールがあります。また、データソースがメモリーに収まらない場合、インテル® oneDAL のアルゴリズムは、メモリーへのデータのストリーミングもサポートします。

データ・サイエンティストはしばしば、分析やマシンラーニング (ML) 用のデータの準備に大量の時間を費やします。これには、データの数値表現への変換、データの追加や削除、正規化、統計計算などが含まれます。インテル® oneDAL は、これらの準備作業を高速化するアルゴリズムを提供し、対話的に実行されるステップのターンアラウンドを短縮できます。

例えば、データベースの売上データを使って ML モデルを構築する場合を考えてみます。まず、インテル® oneDAL のデータ管理ツールを使って、データソースをメモリーにストリーミングし、処理パフォーマンスを向上させることができます。次に、いくつかのデータ準備ツールを使って、販売商品カテゴリーなどの非数値データを、モデルに適した数値形式に変換します。売上値の平均、分散、共分散といった、ML モデルへの取り込みに役立つ基本的な統計を計算することもできます。
インテル® oneDAL のデータ管理の最終ステップでは、このデータを選択した ML アルゴリズムにストリームします。

分析

ビッグデータ・プロセスの主な目的の 1 つは、さまざまなソースからの大量のデータの分析をサポートすることです。データ分析は、データを重要なビジネス上の意思決定を容易にするための情報に変える重要なステップです。

前述のとおり、インテル® oneDAL のデータ管理ツールは、ダウンストリームの分析やマシンラーニング・アルゴリズムがアクセスできるように、あらかじめ準備されたデータをメモリーにストリーミングします。K 平均法クラスタリングや外れ値検出など、さまざまな分析アルゴリズム (英語) が用意されており、C++、Java*、Python* で実装することが可能です。インテル® oneAPI DPC++/C++ コンパイラーと C++ または Python* を使用して、データを並列処理できます。

例えば、年齢、性別、平均支出額などの複数の属性に基づいてユーザーをセグメント化したい場合、K 平均法クラスタリング分析アルゴリズム (英語) を使用することができます。インテル® oneDAL の実装、特にインテル® コンパイラーと C++ や Python* を使用することで、すぐに並列データ処理を行うことができます。並列処理により実行時間が大幅に改善されるため、大規模なデータセットで分析アルゴリズムを実行する場合に有効です。

マシンラーニング・モデルのトレーニング

マシンラーニング・アルゴリズムに使用するデータセットが準備できたら、トレーニングを行います。予測モデルを作成するには、すべての関連データを前処理する必要があるため、多くの場合、トレーニングは最も計算集約的なステップとなります。

マシンラーニング・モデルのトレーニングには、入力データの管理とトレーニング時間という 2 つの大きな問題があります。前者については、インテル® oneDAL がどのようにデータの管理と準備を支援し、ML モデルのトレーニングに使用できるようにするかをすでに説明しました。

インテル® oneDAL は、長いトレーニング時間という課題を克服するのにも役立ちます。分析アルゴリズムと同様に、インテル® oneDAL は oneAPI を通じて、並列処理とハードウェア・アクセラレーションに対応したマシンラーニング・トレーニング・アルゴリズムを提供します。例えば、scikit-learn* 向けインテル® エクステンション (英語) をダウンロードすれば、Python* scikit-learn* ライブラリーのアルゴリズムを高速化することが可能です。

例えば、医療画像の異常を特定するため、Python* で scikit-learn* を使用して構築したサポートベクトル分類器 (英語) について考えてみます。現在、トレーニングに数時間かかっており、データを追加してトレーニング時間を増やさなければ、モデルの精度を向上させることはできません。

インテルにより最適化された scikit-learn* ライブラリーに変更するだけで、ほかのコードをほとんど変更することなく、インテルのベンチマーク (英語) ではトレーニングの実行を 25 ~ 77 倍スピードアップすることが可能です。これにより、従量課金制のクラウドリソースを使用する場合、トレーニング時間とコストを削減できます。最も重要なことは、トレーニング時間の短縮により、使用するデータを増やしたり、モデルをチューニングしてさらに改善できるようになります。

マシンラーニング・モデルの予測

マシンラーニング・パイプラインの最終段階では、トレーニングで生成されたモデルを使って予測を行います。この予測は、例えば、どのテレビ番組をユーザーに勧めるか、あるいは、ユーザーがどのセグメントに属するかといった意思決定を行うために使われます。当然ながら、トレーニングと予測は密接に連動しています。しかし、インテル® oneDAL では、トレーニングのほうが計算量が多く、予測よりも多くのリソースを必要とするため、両者を分離しています。また、インテル® oneDAL 内では、事前にトレーニングしたモデルを使用することも可能です。

予測にインテル® oneDAL を使用する主な利点は、インテル® oneDAL が異なるアーキテクチャーの要件を抽象化するため、トレーニング済みモデルをさまざまなアーキテクチャーに展開できることです。これにより、予測を行うアプリケーションのコードの再利用が可能になり、多くの異なるシステムでこれらの予測の利用が広がります。

まとめ

AI やマシンラーニング・アプリケーションの要件は多岐にわたるため、多種多様なアーキテクチャー上で開発し、展開する必要性が生じています。ヘテロジニアス・コンピューティング・システムの増加により、これらのアルゴリズムの処理を高速化する機会が増えています。高速化の利点の 1 つは、ビッグデータを処理できることです。インテル® oneDAL には、さまざまなアーキテクチャー向けに最適化されたマシンラーニング・アルゴリズムが含まれていますが、同じ API を使用しているため、プロジェクトが必要とするシステムの種類にかかわらず、同じアプリケーション・コードを使用できます。

また、インテル® oneDAL は、使い慣れたツールやライブラリーの多くを高速化するため、既存のコードを再利用できます。さらに、インテル® oneDAL は oneAPI の利点をすべて備えているので、基礎となるアーキテクチャーが抽象化され、異なるシステム間でアプリケーションの迅速な開発とテストが可能になります。

関連情報

技術記事

オンデマンド・ウェビナー

ソフトウェアを入手

インテル® oneAPI ベース・ツールキット
ハイパフォーマンスなデータセントリックのアプリケーションを多様なアーキテクチャー向けに開発してデプロイするのに必要なツールとライブラリーの基本セットを提供します。

今すぐ入手 (英語)
すべてのツールを見る (英語)

関連記事

  • ソフトウェア AI アクセラレーターで最大 100 倍のパフォーマンス向上を実現ソフトウェア AI アクセラレーターで最大 100 倍のパフォーマンス向上を実現 この記事は、インテル® デベロッパー・ゾーンに公開されている「Software AI accelerators: AI performance boost for free」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。 この記事の PDF […]
  • インテル® oneAPI 2021.4 リリースインテル® oneAPI 2021.4 リリース この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® oneAPI 2021.4 update available」の日本語参考訳です。 公開日: 2021 年 10 月 1 日 インテル® oneAPI ツールキットの最新のアップデート (2021.4) […]
  • SYCL* キューに関するトピックの続編SYCL* キューに関するトピックの続編 この記事は、インテル® デベロッパー・ゾーンに公開されている「SYCL Queues with rest-of-the-story 」の日本語参考訳です。原文は更新される可能性があります、原文と翻訳文の内容が異なる場合原文を優先してください。 この記事の PDF […]
  • インテル Parallel Universe 26 号日本語版の公開インテル Parallel Universe 26 号日本語版の公開 インテル Parallel Universe マガジンの最新号が公開されました。この号では、インテル® Xeon Phi™ プロセッサー向けのコードの現代化について説明します。また、インテル® Parallel Studio XE 2017 […]
  • SYCL* でヘテロジニアス・プログラミングの課題を解決するSYCL* でヘテロジニアス・プログラミングの課題を解決する この記事は、HPCwire に公開されている「Solving Heterogeneous Programming Challenges with SYCL」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。 この記事の PDF […]