FAIRが研究用のカスタムが容易な機械学習ライブラリーFlashlightを公開!

FAIRが研究用のカスタムが容易な機械学習ライブラリーFlashlightを公開!

はじめに
 FAIRからC++のみで書かれ高速で動作しながら、カスタマイズが容易なオープンソース機械学習ライブラリが発表されました。より根本からのカスタイマイズを必要とする学術研究などでの利用が想定されています。

概要

 現在深層学習や機械学習で利用されるフレームワークライブラリは機能性に優れていますが、一方で研究などのためにライブラリの内部を変更する際には困難を伴うという問題を抱えていました。今回FAIRはFlashlightというカスタマイズが容易なライブラリを開発しました。研究の自由度が上がることが期待されます。

詳細

背景

 深層学習や機械学習で利用されるフレームワークライブラリは機能性に優れていますが、一方で研究などのためにライブラリの内部を変更することには困難が伴うことも指摘されています。ライブラリの内部は①意図せずに難読化されている、②クローズドソースになっている、③変更する適切なコードを見つけることが困難な構造になっている、などの問題があります。また、変更を加えた後、フレームワークを再コンパイルすると、時間がかかるなどの問題もありました。

Flashlight

 FAIRが新たに作成したFlashlightは、全体を簡単にカスタマイズすることができます。研究に必要な最も基本的な構成要素のみが含まれているため、ナビゲートが簡単で直感的なつくりになっているためです。また、Flashlightのコアコンポーネントを変更しても、その最小限の設計と言語バインディングの自由度が高いことで、ライブラリ全体とそのトレーニングパイプラインを再構築するのにわずか数秒しかかかりません。

C++をベースとした設計

 高性能コンピューティング環境で研究を行うための強力なツールにするため、最新のC ++でゼロから作成されています。C ++は並列処理と高速な処理を可能にするため、フレームワークのオーバーヘッドが非常に低くなっています。また低レベルのドメイン固有言語およびライブラリからのコードを統合するための単純なブリッジも提供しています。
 C ++は、関数型プログラミング用の強力なツールを提供しながら、メモリ管理などのタスクの必要性も排除します。Flashlightは、外部のフィクスチャやバインディングを調整したり、アダプタがスレッド化、メモリマッピング、低レベルのハードウェアとの相互運用などを行う必要なしに、C ++での研究をサポートします。その結果、高速で並列なコードの統合がシンプルかつ直接的になります。

基本設計

 モジュール式で使いやすい基本的な抽象化の浅いスタックの上に構築されています。動的テンソルの形状と型をサポートし、厳密なコンパイル時の仕様とC ++テンプレートの必要性を排除するArrayFireテンソルライブラリ を利用しています。ArrayFireは、効率的なジャストインタイムコンパイラを使用してオンザフライで操作を最適化します。
 これらの基本コンポーネントに基づいて構築されたFlashlightには、分散および混合精度のトレーニング用のカスタムの調整可能なメモリマネージャーとAPIが含まれています。これらのコンポーネントは、ディープラーニング及び一般的な機械学習などを含め、基本的な研究の方向性の多くをサポートするように構築されています。

マルチモーダル研究の容易化

 Flashlightの軽量ドメインアプリケーションは、音声認識、言語モデリング、画像の分類とセグメンテーションなど、さまざまなモダリティにわたる研究をすべて1つのコードベースでサポートします。この設計により、多くの個別のドメイン固有ライブラリを組み合わせる必要がなくなり、Flashlightがさまざまなセットアップでの新しいアイデアの検証をサポートできるようになり、マルチモーダル研究がより簡単になることが想定されています。個々のアップストリームドメイン固有のフレームワークを変更して再構築するのではなく、1回の再構築のみですべてのドメインの研究ができます。

ハードウェアベンダーライブラリの統合

 ディープラーニングモデルは、ハードウェア固有のベンダーライブラリからの十分に最適化されたカーネルを介して実装されますが、カスタムの高性能コードを作成・統合して、迅速に繰り返すことが難しい場合があります。Flashlightは新しい低レベルの計算抽象化を簡単に構築できるように設計されています。そのため、最小限の労力で、CUDAまたはOpenCLカーネル、Halide AOTパイプライン、またはその他のカスタムC / C ++コードをクリーンに統合できます。

 

まとめ

 ディープモデルや機械学習モデルがますます複雑になるにつれ、最適化がより重要になってきています。そのためには利用可能なハードウェアを効率的に利用する高性能コードが必要です。今回発表されたFlashlightは、そのような研究のための強力な研究フレームワークになっています。高速再構築により、ライブラリ自体の調査が容易になり、その後、他のフレームワークにダウンストリームで適用でき、カスタムされた低レベルコードを迅速に反復することを容易にすることで、パフォーマンスの限界を押し上げる研究がより進むことが期待されます。