Rayは、昨今注目を集めている機械学習アプリケーションのための分散コンピューティングのオープンソース・フレームワークです。Rayを使うことで、データ・サイエンティストは様々な機械学習のアプリケーションを非常に簡単に並列実行できます。また、Kubernetesクラスター上など任意のクラウドでも、あるいは手元のラップトップ・コンピューターでも同じコードを動かせる点も、Rayの特徴です。
IBMは、Rayを拡張したオープンソース・ソフトウェア・ツールであるCodeFlareを、2021年6月に開催されたRay Summit 国際会議で発表しました。CodeFlareは、より複雑な機械学習の作業を自動化できる点が主な特徴で、データの依存関係を持った複数のステップから構成される機械学習のパイプラインを定義して並列実行できます。さらに、Red Hat OpenShiftやIBM Cloud Code Engineとの連携により、サーバーレスな運用をできます。CodeFlareを利用すれば、データ・サイエンティストは、モデルの学習やテストをセットアップし、実行し、スケールさせる作業にかかる手間と時間を大幅に削減できます。そして、データ・サイエンティストは、煩雑な単純作業ではなく、実験の内容をじっくり検討することにもっと時間をかけられるようになります。
2021年6月に公開した時からCodeFlareは、数十万にも及ぶパイプラインの分析・最適化のために利用され、何時間もの学習時間を数分に削減できたケースもいくつもありました。CodeFlareは、さらに改良を重ね、2021年12月には基盤モデルを扱うようにしたコードがオープンソースとして利用可能になりました。
基盤モデルとはなんでしょうか。基盤モデルとは、そこから様々なAIモデルを派生させて学習する元とすることができる大規模なAIモデルのことを指します。
基盤モデルが利用されるようになる以前は、文書の分類や製品画像からの異常の検出など個別のタスクごとに専用の学習データを用意し、ゼロから学習をするというやり方が一般的に用いられていました。
それに対して近年は、たとえば画像認識や自然言語処理(NLP)の分野では大量のデータからあらかじめ学習された巨大なディープラーニング・モデル(AIモデル)をベースとすることで、特定のタスク向けAIモデルの学習に必要な学習データを少量で済ます、というやり方が広く一般的に使われています。自然言語処理の場合にはBERT、RoBERTa、GPT-3といった大規模言語モデルがそのためのベースのモデルとして頻繁に用いられています。
これらのモデルは、ラベルを用いるのではなく、わざと伏せた学習データの一部を予測するという「自己教師あり学習」と呼ばれる方法で学習されているため、学習データに人手で正解ラベルをつける必要がなく、大量のデータを学習に利用しやすいという利点を持っています。そして、これをベース・モデルとして用いて、文書分類、機械翻訳、感情分析、対話など個別のタスク向けのAIモデルを学習すると、データ収集コストが高いそれら個別タスクのデータが少量であっても精度の良いモデルを学習できる、という大きな利点があります。
このように、既存のモデルを出発点として別のタスク向けのAIモデルを学習することを「転移学習(transfer learning)」、転移学習の目的となる個別のタスクを「下流タスク(downstream task)」、さまざまな下流モデルにベースとして利用可能な大規模モデルを「基盤モデル(Foundation Model)」と呼びます。
現在、基盤モデルは、様々なタスクでビジネスに利用されています。たとえば、金融サービスでは、評判分析をするAIモデルを、基盤モデルからの転移学習で得ることができます。
特定の下流タスクだけに興味があるユーザーは、入手可能な基盤モデルを一つ選び、必要な下流タスクだけに向けて転移学習をすれば、必要なAIモデルを入手することができます。一方、基盤モデルに関する研究開発をしている研究者の作業は、比較にならないほど手間がかかり複雑になります。
なぜ、手間がかかる作業になるのでしょうか。
IBM東京基礎研究所の研究員 村岡雅康 は、自然言語の基盤モデルに関する研究開発に取り組んでいます。基盤モデルを構築してその良し悪しを実験的に評価するには、10種類以上になることもある下流タスクのそれぞれについて転移学習を行って下流モデルを学習し、それぞれの精度をそれぞれのテスト・データで評価しなければなりません。さらに、ランダム性を考慮するために、同じプロセスを擬似乱数生成の元となる値、ランダム・シード(乱数種)を変えて何回も繰り返さなければなりません。加えて、基盤モデルのネットワーク構成を決めるハイパーパラメーターは何種類もあり、たとえ、ほとんど同じ構造を持った基盤モデルであったとしても、少しずつパラメーターの値を変えて何通りもの構造を試してみる必要があります。
基盤モデル自体の自己教師あり学習のタスクの設計とそのデータ、基盤モデルのハイパーパラメーター、下流側のそれぞれのタスクの種類とそのデータなど、無数にある変数の様々な組み合わせを設計して、それを網羅するように学習・テストの実験を行うには、数週間に及ぶこともある膨大な時間がかかります。
基盤モデルの開発にかかるこの膨大な手間を1クリックだけで済むくらいに簡素化し効率化することが、村岡が取り組んでいることの一つであり、CodeFlareプログラムの目的でもあります(関連論文 1)。CodeFlareは、基盤モデルの学習・評価に対するPythonベースのインターフェースを使って、データの結合・共有・並列化などの処理を簡単にできるようにし、一連のプロセスをシンプルにします。CodeFlareによって基盤モデルを前処理、検証、転移学習するといった必要な作業がハイブリッド・クラウド・プラットフォーム上で完全に自動化されています。
基盤モデルの転移学習はCodeFlareができる多数のユースケースの一例にすぎません。他にも、scikit-learnを用いて学習する機械学習モデルのハイパーパラメーターのチューニングや、多数のサンプルデータについて機械学習モデルの推論結果の説明を生成させるといった用途などで力を発揮します。これらの例についてはこちら でサンプル・コードつきで詳しく解説されています。CodeFlareはダウンロードして、あなた自身の用途で今すぐに試せます。ぜひ、CodeFlareを体験してみてください。
本記事は「Ray on IBM Cloud Code Engine: Boost Your Serverless Compute」「CodeFlare drastically reduces time to set up, run, and scale machine-learning tests」「IBM’s CodeFlare significantly cuts the time to automate transfer learning tasks for foundation models」に基づいて執筆されたものです。
1. Awasthy, P., Bhattacharjee, B., Kender, J., Florian, R. Predictive Model Selection for Transfer Learning in Sequence Labeling Tasks. Association for Computational Linguistics. p. 113-118. (2020).