3 行のコードが実現する機械学習の自動化。「AutoGluon」が見据える未来とは ?

2021-08-03
デベロッパーのためのクラウド活用方法

Author : 藤川 のぞみ

AutoML とは

こんにちは、機械学習ソリューションアーキテクトの藤川です。
皆さまは、自動化された機械学習、AutoML : Automated Machine Learning という言葉を聞いたことがありますか ?

AutoML とは、現実の問題に機械学習を適用するプロセスの自動化、あるいは、データから機械学習モデルを構築するプロセスの自動化などを目的とした技術です。

既に機械学習に取り組んだことのある方ならイメージできると思いますが、機械学習を実活用していくプロセスは、様々な試行錯誤を伴います。AutoML によりデータからより良いモデルを構築する試行錯誤を効率化することで、より早く精度を追求することや、あるいは、機械学習の深い知識がなくても精度の良いモデルを作ることが可能になってきます。


AutoGluonとは & 開発者へのインタビューの背景

AutoGluon は、AutoML の OSS のフレームワークです。本記事の執筆時点 (2021 年 7 月) で、AutoGluon のユニークダウンロード数は 80 万を超え、GitHub では 3,400 以上のスターがついています。現在オープンソースで提供されている AutoML システムの中で最大級のものと言えるでしょう。テーブルデータ、画像、テキストなどに対する機械学習タスクを対象に AutoML を活用することができますが、特に、2020 年 3 月にテーブルデータに対する AutoML を実現する AutoGluon-Tabular に関する論文 でその精度の良さを発表して以来注目を集めています。

高精度な ML モデルを構築するには、データの前処理、ハイパーパラメーターの最適化、モデル選択といった多くの試行錯誤を伴いますが、AutoGluon はこれらの判断を開発者に代わって自動化し、わずか 3 行のコードで高性能なモデルの構築を可能にします。また、多層スタックアンサンブルを利用し、ベースとなる複数のモデルから更に高精度なアンサンブルモデルを構築可能にします。ユーザーは、高精度なモデル構築のために大量の選択肢を手動で試す必要はありません。むしろ、どれくらいの時間で学習されたモデルを得たいかを指定するだけで良いのです。このリクエストを受けて、AutoGluon は利用可能な計算資源を活用して、割り当てられた実行時間内に最も良いモデルを見つけ出そうとします。

たとえば論文で報告されていることとして、Otto Group [2015 年]BNP Paribas [2016 年] という 2 つの有名な Kaggle コンペティションにおいて、AutoGluon では生データにたった 4 時間の学習を行うことで、参加しているデータサイエンティストの 99% よりも高い精度を実現できたといった内容があります。AutoGluon は 2020 年にこのスコアを達成しており、本番のコンペティションには出場していませんが、それでもトップ 1% を獲得したということは非常に強力な結果です。このような高精度なモデルを、下記のように最短 3 行の Python コードを書くだけで実現できるというのが AutoGluon の大きな特徴です。

from autogluon.tabular import TabularPredictor
predictor = TabularPredictor(label=COLUMN_NAME).fit(train_data=TRAIN_DATA.csv)
predictions = predictor.predict(TEST_DATA.csv)

AutoGluon では最短 3 行で生データからモデルの学習、推論を実現できます。

  • 一行目 : AutoGluon でテーブルデータに対する学習や推論を行うために TabularPredictor クラスをインポートしています。
  • 二行目 : 学習に使用する CSV ファイル (TRAIN_DATA.csv)、予測対象のカラム名 (COLUMN_NAME) を指定し、fit() メソッドを実行することで、自動でモデルが構築されます。
  • 三行目 : 構築されたモデルを使用して、指定したテストデータの CSV ファイル (TEST_DATA.csv) に対して推論結果を得ています。

私自身、AutoGluon の使いやすさや精度の良さに惹かれ、さまざまなお客様のご支援に活用したり、AutoGluon をテーマとしたイベント を開催したり、社内の他のソリューションアーキテクトと AutoGluon に関する活動を実施してきました。そして実際に AutoGluon によってお客様の問題解決に資することができた経験も蓄積されてきており、更に多くの方に AutoGluon を知って頂き、有効活用していただきたいと思っています。

しかしながら、AutoGluon がなぜ生まれ、どのように活用され、今後どうなっていくのかといった「裏側」の話はまだまだベールに包まれています。今回は、個人的な興味とともに、このようなお話が皆様に AutoGluon をより広く知っていただくきっかけとなればという思いで、AutoGluon の開発者にお話を伺いました。

先に少しだけインタビューの感想をお伝えしますと、図らずも、一技術者としても刺激的な話を聞くことができたインタビューとなりました。このような大規模な OSS の活動が、どのような人々の、どのような思いや活動の中から生まれ成長していったのか、そういった開発者のストーリーとしても楽しんでいただけると思います。それでは、インタビュー本編をどうぞ。

AutoGluon の開発リードである Nick さんへのインタビュー

藤川 :
「本日は、AutoGluon の開発リードであり、AutoGluon-Tabular の論文の著者でもある Nick さんにインタビューをさせていただきたいと思います。これまでのご経歴について教えていただけますか ?」

Nick :
「ミネソタ大学で機械学習分野で修士号を取得してそのまま Amazon にソフトウェアエンジニアとして入社しました。実は元々は applied scientist (応用科学者) ではなかったんです。
Amazon では、Amazon Prime Now という食料品の配送に関する部署に属していました。そこで空き時間がありまして、単純に自分の楽しみのために、社内で行われていたさまざまな機械学習コンペティションに参加するようになりました。そして、たまたまなのですが、多くのコンペティションで優勝するようになりました。そこで、コンペに取り組むにあたって自分の作業をシンプルにするために、自分自身のためのツールを作るようになりました。実はこれが AutoGluon の起源です。
これらのコンペティションに取り組んでいる間に、私は食料品の部署内で機械学習チームを形成しリードするようになりまして、配送センターにおける商品の最適化やカタログにおける重複商品の検出など、このドメインにおけるさまざまな問題を解くようになりました。

AutoGluon の開発リードである Nick Erickson さん

そしてある日、AutoGluon を使って私が実現していたことを聞いた Amazon AI の VP である Alex Smola から連絡をもらったのです。ちなみに当時は AutoGluon という名ではなく、私が作った社内のツールでした。そこで彼に『これをオープンソースにしたいですか ?』、『Amazon AI に参加したいですか ?』と聞かれました。私は Yes と答え、AWS に移り AutoGluon のプロジェクトをリードし、今ではオープンソースのイニシアティブになっています。」

[2018年] 社内の機械学習コンペティションで優勝したときの、オープンソース化する前の元々の AutoGluon-Tabular  開発チーム
左 : Alexander Shirkov さん
右 : Nick Erickson さん

藤川 :
「Amazon AI チームにジョインした後はどのような仕事をしているのですか ?」

Nick :
「AutoGluon を可能な限りパワフルにし、その能力を拡張することに尽力しています。他の AutoML システムと比較しても最高水準の、“state of the art” の結果を出せるよう、そしてオープンソースのコミュニティを育成していくことに力を入れています。」

藤川 : 
「AutoGluon チームの他の開発者はどのようなバックグラウンドをお持ちなんですか ?」

Nick : 
「非常に多岐にわたっています。Jonas Mueller, Xingjian Shi, Zhi Zhang などのように、機械学習の分野で PhD を有しているような、機械学習を専門とする研究者もサイエンティストとしてメンバーにいますし、私のように元々はサイエンティストではないバックグラウンドでこのロールに移ってきたメンバーもいます。また、Amazon AI に参加する前は、Alexander Shirkov と AutoGluon-Tabular を開発していて、彼はその後正式にチームにジョインしました。彼は非常に優秀なソフトウェア開発エンジニアで、ベンチマークやコード品質など、さまざまな面でサポートしてくれます。」

藤川 : 
「なぜ AutoGluon-Tabular を開発したのか、その背景やモチベーションについても教えてください。」

Nick : 
「単純に自分がどこまでやれるか試してみたかったというのがきっかけでした。私は、機械学習の問題を最適化して可能な限り強力なソリューションを得られるようにすることに喜びや楽しみを感じるんです。そして、あらゆる問題に対してたった 3 行のコードでこのようなことを行うというエレガンスさは私にとって本当に魅力的で、それを実現することは非常にチャレンジングなことなのです。こうした楽しさや探究心は自分の仕事を常に今より良くしていこうという原動力になりますし、本当に楽しんでいますね。
ですので、主な動機は、単純にこのトピックがとても興味深く、実用的だと思ったからということになります。多くの人は、必ずしも機械学習の tips やコツ、複雑なモデリングプロセスやアンサンブルなどのすべてを知っているわけではありませんが、だからといって、AutoGluon のように数行のコードで複雑さを隠蔽できる技術の恩恵を受けてはいけない理由はないでしょう。」

藤川 :
「最初のモチベーションは社内のコンペティションで勝つことだったのが、徐々により一般的な方法、より広範囲の様々なデータに適用できるような方法を見出していって、最終的に大きな OSS のイニシアティブになったというのは非常に面白いお話ですね。」

Nick :
「そうですね、どのように AutoGluon が実現されたのかというのは非常に面白いと思いますね。なぜなら最初は自分で使うためだけに AutoGluon を作ったわけですから。当初、私が AutoGluon を作ったのには、自分にとって便利だからという理由しかありませんでした。『他のコンペティションで取り組んだことをこの新しいコンペティションでどう再利用できるんだろう ?』、『実験や、特定の問題に対して強力なソリューションを見出しいてくプロセスをどう高速化できるんだろう ?』、『自分自身をどうやってより良いデータサイエンティストにしていけるんだろう ?』、そういった試行錯誤のプロセスを通じて、これらの API コールで表現されるような効率的なショートカットを実現するシステムを作り、さらにそれを洗練させ続けていく、それが自然に AutoML 的なシステムになったということです。」

藤川 : 
「個人的な興味を追求し、それをこのような大きな OSS イニシアティブとして昇華させたというのは本当に凄いですね。AWS のメンバーとして AutoGluon、OSS を開発する意義は何でしょうか ?」

Nick :
「私の所属する組織は基本的には Amazon AI の中の研究組織で、Amazon で開発されたオープンソースのプロジェクトの大半を管理しています。プロジェクトにはたとえば、AutoGluon, GluonCV, GluonNLP, GluonTS, それから、無料のオンラインの機械学習テキストである D2L、他には Deep Graph Library などがあります。私たちはさまざまなオープンソースの取り組みを行っています。ここでの意義は、ある意味でコミュニティに恩返しができるということですよね。これらのツールは一般に公開されており、多くの点で state of the art な、最先端のものです。ですから、Amazon がこのような取り組みを行い、オープンソースのコミュニティとその成長に貢献することは、非常に良いことだと思っています。」

藤川 : 
「ユーザからはどのようなフィードバックがありますか ?」

NIck : 
「多くのフィードバックをもらっていますよ。現時点で、AutoGluon のユニークダウンロード数は 80 万を超え、GitHubでは 3,400 以上のスターがついています。これは、現在オープンソースで提供されている AutoML システムの中で最大級です。また、多くのフィードバックもいただいています。多くのユーザーが GitHub 上で “issue”“discussion” を作成し、提案やフィードバックをしてくれています。
オープンソースとして公開したことによって、より迅速にこのような改良を重ねることができます。ユーザーからの追加的なフィードバックが得られるので、すぐに修正することができるのです。さらに、ユーザーからの貢献も多くいただいています。多くのユーザーが AutoGluon をより良くするために、コードを提供してくれています。例えば、AutoGluon-Tabular の XGBoost モデルは、Amazon の外部の人が、自分自身のプロジェクトのために AutoGluonでそのモデルを使いたいという理由で貢献してくれたものなんです。私たちは彼と協力してその実現に努め、彼はコードを提供してくれました。オープンソースコミュニティから多くのフィードバックや貢献をしていただいています。このように、これは Amazon だけの取り組みではなく、オープンソースプロジェクトなのです。それは本当に継続的な取り組みであり、みんなのためのツールなのです。」

AutoGluon-Tabular の 「XGBoost モデル」は実際にユーザーの貢献によって追加された。AutoGluon をオープンソースとして公開することで、ユーザーからのフィードバックによる継続的な改善が行われている。

藤川 :
「どのようなユーザーが AutoGluon を使っているんですか ?」

Nick : 
「非常に幅広い分野にわたっていますね。たとえば機械学習のエキスパートやデータサイエンティストで、色々なコンテストに参加している方や、企業などで研究職をしていたりとプロとして活動している方々などもいらっしゃいます。彼らは、基本的には、AutoGluon を使って最先端の技術を追求したり、新しい問題に対して素早く実験を行っているようです。
このような方々以外にも、機械学習についてあまり知らない方々もいらっしゃいます。問題を解決しなければならないけれど、それを容易にするツールを持っていなかったら必ずしも簡単にはできないですし、できたとしてもそれほど洗練された解決策にはならないでしょう。AutoGluon によって、そのような深い知識がないユーザーでも非常に強力なソリューションで問題を解決することができるのです。機械学習について深い知識を持っていないエンジニアや、機械学習やコーディングを始めようとしている大学生など、多くの人にとって、AutoGluon はこのようなことを可能にしてくれると思いますし、そのための素晴らしいエントリーポイントになると思います。」

藤川 :
「AutoGluon は presets のオプションなどによりとても簡単に高性能の AutoML 機能を使える一方で、カスタマイズしたいユーザーにはその選択肢を提供しているのが特徴だと感じました。」

Nick :
「そうですね。おっしゃる通り、使いやすさはもちろんのこと、知識を深めてより高度なことをしたい場合には、より深く掘り下げることができることも強調しておきたいです。使いやすさとカスタマイズ性、両方の能力を提供したいと考えています。藤川さんのおっしゃる通り、presets は、ユーザーが気軽に始められる素晴らしい方法なので、AutoGluon-Tabular の使用方法として推奨しています。」

藤川 :
「AutoGluon について将来のプランなどを教えていただけますか ?」

Nick :
「将来的な計画はたくさんあります。特筆すべきは、現在マルチモダリティへの拡張を試みていることです。これにより、基本的に画像データ、テキストデータ、表データ、日付、地理空間データがあれば、それらすべてを同じ pandas の  DataFrame に入れて、AutoGluon の .fit() メソッドに渡すことができるようになります。AutoGluon の .fit() メソッドはそれらすべてのデータを活用します。画像から情報を抽出するための画像モデルを学習し、テキストから情報を抽出するために、たとえば Transformer のモデルを学習し、表形式のデータを扱うために、さまざまな表形式モデルも学習します。そして、multi-layer stack ensembling によって、これらすべてを組み合わせ、強力な state of the art、最先端の結果を得ることができるのです。AutoGluon 以外のものを使用した場合、似たようなことをしようとするとマルチモダリティの性質から膨大な労力が必要となってしまうでしょう。
マルチモーダルな問題が重要になる例もご紹介しましょう。Petfinder というデータセットがあり、ここでは基本的に保護された動物の救助がタスクとなっています。それぞれの動物がウェブページを持っていて、里親を募集しています。ペットを探している人はこれらのウェブページを見て、その動物の里親になりたいかを決めます。そこで、ある動物のウェブページを見て、その動物が里親に迎え入れられる確率がどれくらいありそうかを予測できるでしょう。もし可能性が低いと思われる動物がいれば、里親を見つけることができるようにウェブページを改善することができますよね ? このウェブサイトには、その動物の年齢や色などの表形式のデータがたくさんあります。それらの情報に加えて、動物の写真という画像情報もあります。それにその動物を説明したテキスト情報もあります。ですからこの問題はマルチモーダルな問題なのです。
より良い結果を引き出せるよう、これらの異なるタイプのデータを使用することは理にかなっています。AutoGluon であればこのようなことを 3 行のコードで実現できるでしょう。すべてのデータを DataFrame に入れてしまえば解決できるようにするのです。」

藤川 :
「とてもチャレンジングな問題ですね。Nick さんのモチベーションの背景には、問題の重要性と難しさ、チャレンジングさがあるという印象を受けました。」

Nick :
「とても重要な問題だと思っています。少なくとも、マルチモーダルな性質を持つさまざまな問題に適用できるような、汎用的な方法としてはこれまで実現されていないでしょう。だからこそ、そこには大きな可能性があると思うのです。現在取り組まれている問題、データセットの多くにこのようなマルチモーダルな性質があると思いますが、その性質はあまり考慮されていないのではないかと思っています。
問題解決のために活用できるより多くのデータソースを取り入れることで、より良い結果が得られると思います。これは非常にチャレンジングなことだと思います。特定のドメインにおける特化したモデルを扱い、それらの異なるモデルをすべてトレーニングし、それぞれに正しいデータを渡し、最終的にエンドポイントにデプロイしてもクラッシュしないようなシステムを構築しようとしています。そのためには多くの課題があります。ですが、機械学習や AutoML の分野を発展させるためには、必要なことだと思います。ですから、これらの課題に取り組むことはとてもエキサイティングですね。」

藤川 :
「一人のデータサイエンティストとして重要な問題を解き、そしてそれを他の人々のために一般化するという強いモチベーションをお持ちなのがとてもよく伝わってきました。」

Nick :
「そうですね。例えば、マルチモーダル機能では、Petfinder のような特定のデータセットに焦点を当てて、それと相性の良いものを手に入れるようにしています。その後、可能な限り一般化し、データセットを増やしていきます。」

藤川 :
「なるほど。ここまで色々とお話を伺いましたが、逆に私たちに聞いておきたいことはありますか ?」

Nick :
「現在の AutoGluon に欠けていたり、追加したほうが良いと思うものがあれば聞いてみたいです。」

藤川 :
「マルチモーダルな機能に関連してですと、テキストでは英語に対応していると思いますが日本語対応はまだかと思います。ですので、日本語に対応いただけると日本のユーザーにとってもとてもありがたいですね。」

Nick :
「素晴らしいフィードバックをありがとうございます ! 多言語化については、GitHub でもユーザーから要望がありました。これはおそらく、今年の後半に追加する予定の一つです。マルチモーダルの基本的な機能をカバーしていることを確認してからと考えています。そしたら、今度はどうやってさまざまな言語など、より多くの状況に対応できるようにするかを検討することになるでしょう。
我々はモデルのほとんどを PyTorch に移行するリファクタリングをしようとしています。特にテキストモデルには Hugging Face を活用しようとしていますが、Hugging Face には他の言語で事前に学習されモデルをロードする機能があります。使用したいモデルやベースラインを指定するための機能を AutoGluon に導入し、例えば日本語のテキストなどで事前に学習されたモデルを活用できるようにする予定です。その機能を実現できれば、大きな収穫になると思います。」

藤川 :
「ありがとうございました ! 日本のユーザーにとってとても嬉しいお話を聞けてよかったです。」


中山さんへのインタビュー

藤川 :
「ここからは中山さんにインタビューをしたいと思います。私は昨年度から日本で AutoGluon に関するイニシアティブに従事しているのですが、中山さんはその活動に大きな貢献をして下さいました。中山さんのキャリアについて教えていただけますか ?」

中山 :
「Amazon に入社する前は大学院の博士課程で、コンピューターサイエンスと少し関連するような分野を専門としていました。たとえば、宇宙物理学でどのように CPU や GPU を使うかといったような話です。その後、AWS にサポートエンジニアとして入社して、AWS のお客様に対して、Amazon EMR や AWS Glue などのビッグデータ解析の AWS ソリューション活用に関する支援をしていました。入社した後に、Amazon SageMaker や Amazon Personalize、Amazon Forecast といった AI、機械学習に関する AWS サービスがローンチされ、自身の関心もそういった機械学習に関するものにシフトしていきました。そして、SageMaker やその他の AI サービスを活用するお客様支援をするようになりました。その後、私が今所属している Amazon Machine Learning Solutions Lab (ML Solutions Lab) という組織に移りました。ML Solutions Lab は機械学習の専門家で構成されたチームで、私たちの使命は、AWS のお客様が機械学習の活用を加速して、お客様ご自身の問題を解決できるよう、サービスの利用やプロセス面など様々な面で支援することです。」

AutoGluon-Tabular の AWS Marketplace 製品の開発者である中山洋平さん

藤川 :
「中山さんは、AWS における AutoGluon 利用に大きく貢献してくださいました。AutoGluon のプロジェクトにはどのような経緯で関わるようになったのでしょうか ?」

中山 :
「2020 年の初期だったと思いますが、私が支援していたお客様が AutoGluon を使いたいということだったのですが、AutoGluon のモデルを AWS サービスを通してどうデプロイするか、エンドポイントをどう作るかといった課題をお持ちでした。当時は AutoGluon をコンテナ化することについて多くの知見があったわけではありませんでした。同じタイミングで AutoGluon チームが、SageMaker 上で学習させたりデプロイできるようにするために、AutoGluon をコンテナ化できる人を探しているという話を聞きました。そういった経緯で、AutoGluon プロジェクトにジョインしました。」

Nick :
「私の方から少しだけ補足すると、AutoGluon は 5 人で構成されたチームで、中山さんが 2020 年の初期に手伝ってくれた時には 3 人のチームでした。そのため、様々なデプロイメントの面であらゆる助けが必要でしたが、中山さんは大きな助けとなってくれました。AutoGluon のデプロイ可能なバージョンを実現するための彼の貢献には本当に感謝しています。」

藤川 : 
「私も GitHub 上で公開されていた AutoGluon を SageMaker でデプロイするためのサンプルコードを活用したことがありますが、中山さんはそのコードのコントリビューターでしたね。」

中山 :
「はい、AutoGluon-Tabular を AWS 上で利用できるようにするプロジェクトをリードしていて、その一環として、GitHub 上でサンプルコードを公開しています。また、より容易に利用してもらえるように AWS のマーケットプレイスからも公開しています。先ほど Nick が AutoGluon のユーザー数について話していましたが、マーケットプレイスにおける AutoGluon-Tabular も既に数百の AWS ユーザーがこのソリューションを活用してくれていて、エンタープライズでも活用していただけるようなソリューションになっていると思います。現在は、SageMaker や他のサービスとより密な形で統合した別のソリューションについても取り組んでいます。」

藤川 :
「AutoGluon-Tabular の良いところはどういうところだと思いますか ?」

中山 : 
「AutoGluon の良いところは沢山ありますが、まずひとつは、とても使いやすいということでしょう。シンプルなコードで、Kaggle の上級者レベルの ML モデルを作ることができます。機械学習に深い知識がないユーザーにとってはとても良いポイントだと思います。一方で、AutoGluon はエキスパートにも有益です。これも重要なポイントです。スタッキングやアンサンブルを活用してカスタマイズすることができます。様々なユーザーが利用できるという点が魅力だと思いますね。また、他の AWS サービスと組み合わせることで更に有効活用できるという点も重要です。たとえば、SageMaker Clarify と併用することで、クラウドを活用して SHAP 情報などをより効率的に得ることができます。」

藤川 : 
「中山さんは AutoGluon の取り組みを通じてどのようなことを目指されているのでしょうか。」

中山 : 
「AWS 上でより容易に AutoGluon を利用できるソリューションを開発していくことで、AWS ユーザーを増やしたり、お客様の機械学習の活用を加速したりしていきたいですね。たとえば日本には世界的に知名度もある製造業の企業が多くあり膨大なデータが保存されていると思います。それらのデータに対してこの AutoGluon を使用して機械学習の有効活用を推進することは日本における良いチャレンジになると思います。」


さいごに

Nick :
「AutoGluon はオープンソースのプロジェクトであり、あらゆる人に有益となるようコミュニティと一緒に開発をしていきたいと思っています。もし読者の方がこの OSS のプロジェクトに興味を持ってくれたら、全てのコードはオープンソースですから、AutoGluon についての皆さんの考えを聞かせて欲しいと思っていますし、皆さんが加えたいと思うどんな貢献も喜んで見てみたいと思っています。」

藤川 :
「今日は AutoGluon や開発チームの皆さまについて理解を深めることができ、またとてもエキサイティングなお話を聞かせていただきました。本当に有難うございました !」


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

藤川のぞみ
アマゾン ウェブ サービス ジャパン合同会社
機械学習スペシャリスト ソリューションアーキテクト

機械学習の研究で博士号を取得後、企業研究所や大学などでの研究職を経て 2020 年から現職。
好きなものは珈琲とジャズと山。

AWS のベストプラクティスを毎月無料でお試しいただけます

さらに最新記事・デベロッパー向けイベントを検索

下記の項目で絞り込む
1

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する