ディープラーニングで扱う大量のデータ操作のためのツールキット
みなさん、こんにちは
CerebrasプリセールスエンジニアのNakadaです。
これまで、当ブログではLLM (大規模自然言語モデル)の利用に関する内容を投稿していましたが、今回は、AIに欠かせない大量のデータを高速に扱えるツールキットを紹介します。
■はじめに
LLMなどの大規模なAIモデルを利用するために必要なものは学習用データですが、テキストファイルや画像ファイル等などを大量に準備する必要があります。ChatGPTで話題のGPTモデルの場合、精度を向上させるためにはモデルサイズの20倍のトークン(単語)数が必要とも言われています。(chinchillaのスケーリング則)
例えば、130億パラメータのモデルの場合、2600億トークンが必要ということになります。これをテキストデータとして保存する場合、1TBにも及ぶデータ容量になると考えられます。
また、データを集めた後のデータ前処理を行う際に、1ファイルに全ての文章データを保存するのではなく、MSL(Message Length)に合わせて1文章を1ファイルにしてアノテーションするなど、ファイルを細かく分類する必要も出てきます。その場合、テキスト形式のファイルが、数百万・数千万ファイルを超えるファイル数になってしまうことになります。
ユーザ様の中には、数百万を超えるファイル数をサーバ上で、コピーや削除または検索などを実行したことがあると思いますが、非常に時間が掛かります。例えば、Linuxコマンドで良く使われる「ls」コマンドがありますが、数百万のファイルに対し、条件を付けてソートなどを行うと結果の表示が完了するまでに、数十分から1時間以上掛かる場合もあります。そのため、大量のファイルを扱う場合には、「ls -U」でソート無しで実行するなどの手法を使っている方もいると思います。
今回ブログで紹介するのは、Pure Storage社がリリースしている「RapidFile Toolkit for FlashBlade」というツールキットです。残念ながら、現時点ではPure Storageが販売しているスケールアウトストレージ Flash Bladeを購入されたユーザ様にのみ提供されているツールキットとなりますが、ご興味がある方は、ツール紹介と性能について、以下を参照頂けると幸いです。
■RapidFile Toolkit for Flash Bladeとは
- Linuxコマンドラインインターフェイスを使用して数百万のファイルを効率的に管理するための強力なツールです。
- 標準のLinuxファイルシステムもサポートしながら、Pure Storage FlashBladeの超並列スケールアウトアーキテクチャを活用するようにゼロから設計されたツールです。
- Linuxコマンドの高性能なドロップイン代替として機能し、アプリケーションのパフォーマンス、生産性を向上させることができます。
- 現時点ではPure Storageのユーザのみ利用可能
- 提供されているコマンドは以下の表の8コマンド
※出展:https://support.purestorage.com/Solutions/Linux/Linux_Reference/RapidFileToolkit
如何でしょうか。従来のLinuxコマンドの拡張版としてコマンドを新たに提供しています。
インストールもRPMパッケージなどで提供されており、簡単にインストールできるだけでなく、利用方法も従来のコマンドを置き換えるだけです。例えば、作成済のスクリプトで利用するlsやfindなどのコマンドも、pls、pfindに置き換えるだけで利用が可能です。
※注 一部コマンドオプションが異なるので注意が必要です。
また、これらのコマンドは、FlashBladeストレージの中にある、ファイルのみ利用できるというわけではなく、ローカルシステムのファイルでも利用が可能です。もちろん、FlashBladeストレージにアクセスする際には、RPCセッション数などの細かい設定が可能で自身でカスタマイズし、自身の環境用にチューニングすることも可能です。
なお、コマンドの利用例を以下に示します。
※出展:https://support.purestorage.com/Solutions/Linux/Linux_Reference/RapidFileToolkit
■RapidFile Toolkit for FlashBladeの性能
Pure Storageのサイトによると、提供コマンドに置き換えるだけで、最大20倍高速化することができます。例えば、これまで数百万のファイルをコピーや削除処理するために3時間掛かっていたものが、9分で完了する計算です。
※出展: https://support.purestorage.com/Solutions/Linux/Linux_Reference/RapidFileToolkit
では、なぜこのように高速処理できるのでしょうか。これは、従来のLinuxコマンドは、ハードディスク容量が100MBだった時代に設計されたシングルスレッドのコマンドだからです。この古いコマンドで、現在の大規模なファイルシステムを管理していることになります。
これに比べ、Rapidfile Toolkit for FlashBladeはマルチスレッドに対応することで、一般的な操作を20倍高速化することができます。
■性能実測
弊社のラボで性能実験を行いましたので結果を共有させていただきます。
今回、利用するデータは自然言語処理ではお馴染みのWikipedia(ja)データセットです。
1データ1テキストファイルとして「1,389,467」個のファイルを使ってテストを行いました。
※主要コマンドのうち、lsとpls、cpとpcopy、rmとprmにて比較。pls、pcopy、prm(グラフのオレンジ)がRapidfile Toolkit for FlashBladeのコマンドです。
※ls vs plsは画面結果が出力されるまでの時間
※パフォーマンスチューニング用のオプションは未使用(デフォルト値を利用)
結果はこの通り、20倍までの差はありませんでしたが、明らかにRapidFile Toolkit for FlashBladeコマンドのほうが、性能が良いことが確認できました。
■最後に
今回は、大量のファイルを扱う際に有効なツールキットを紹介させていただきました。AIの研究開発は結果を得るまでのスピードが重要です。また、AI処理では学習を実行するGPUリソースのパフォーマンスに焦点が当てられやすいですが、その学習を行うためのデータの準備も時間と労力が掛かります。その作業において、大量のデータを高速に操作するためのツールもあるということをご紹介させていただきました。
なお、このツールキットはPure Storage社のスケールアウトストレージであるFlashBladeをお使いのユーザ様に配布されています。このFlashBladeもオールフラッシュの高速ストレージであり、AIシステム上のデータアクセスを高速化できるストレージとなっておりますのでご興味のある方はお問合せください。
最後に、ブログをお読みになり、紹介したツール及びAIアクセラレータ製品等にご興味がある方は当社までお問合せ頂ければ幸いです。