Amazon Web Services ブログ
【開催報告 & 資料公開】 AI/ML@Tokyo #6 AutoGluon 開催報告
アマゾン ウェブ サービス ジャパン株式会社 機械学習ソリューションアーキテクトの宇都宮 (Twitter: @shokout) です。AWS Japan では、AI/ML 関連情報を発信するイベント「AWS AI/ML@Tokyo」を定期的に開催しています。2020年9月3日にオンラインで開催された AWS AI/ML@Tokyo #6 では、AWS ソリューションアーキテクトより、AutoGluon という AutoML を実現する OSS の概要と、AutoGluon を Amazon SageMaker 上で活用するための手法に関して解説いたしました。
「AutoML のための機械学習フレームワーク AutoGluon のご紹介」[Slides]
アマゾン ウェブ サービス ジャパン株式会社
機械学習ソリューションアーキテクト 宇都宮聖子
AutoML のための機械学習フレームワーク AutoGluon のご紹介
AutoGluon は機械学習モデル開発を自動化するフレームワークです。テーブルデータや画像、テキストデータなどを扱う機械学習タスクについて、特徴量エンジニアリングや、アーキテクチャの探索などの試行錯誤を自動化し、機械学習モデル開発を効率化する AutoGluon についてご紹介しました。
AutoGluon でできること
ビジネス課題から機械学習を活用してプロダクションに落とすまでは、様々な行程がありますが、特に「データ収集・統合」「データ準備」「データの可視化・分析」「特徴量エンジニアリング」「モデル学習」「モデル評価」(参照: AWS Machine Learning Lens)といった工程ではビジネスゴールを満たすまで何度も試行錯誤が求められます。この試行錯誤をできるだけ効率よく探索し、機械学習深い知識がなくても精度の良いモデルが構築できる AutoML という技術が注目されています。AutoGluon は Deep Learning の AutoML ツールキット OSS として、2020年の3月にその精度の良さを論文 (arXiv:2003.06505) で発表して依頼、注目を集めています。AutoGluon の適用範囲は下記の4つ分野でのと幅広く、ユーザー層も、機械学習エンジニア・データサイエンティストから、アプリケーションエンジニアまで、目的に応じて使い分けていただくことができます。
AutoGluon がより良いモデルを構築するために自動探索する範囲としては、具体的には「データ前処理」「ハイパーパラメータの最適化 (HPO)」「アーキテクチャ最適化」「モデルアンサンブル」などがあります。これらを実行するのに最低限必要なコードとしては、下記の例のようにたったこの3行だけです。非常に簡単に AutoML を実行することができます。
from autogluon import TabularPrediction as task
predictor = task.fit("train.csv", label="class")
predictions = predictor.predict("test.csv")
AutoGluon-Tabular ~ テーブルデータに対する予測
その中でも、テーブルデータに対する回帰・分析の AutoML を実行するAutoGluonは、 「AutoGluon-Tabular」として「AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data」という論文(arXiv:2003.06505) で、高精度な AutoML として紹介されています。複数のデータセットそんな高精度のモデル作成も、csvファイルと予測対象のカラムを指定するだけで、上述の fit.()
メソッドを実行することで次のようなタスクを実行します。
- データの前処理(各カラムを数値・カテゴリ・テキストに分類)
- ラベルカラムから推論タスクを決定 (分類・回帰)
- データの分離 (disjoint training/validation sets, k-fold split)
- 各モデルを個々に学習 (Random Forest, KNN, LightGBM, NN etc.)
- モデルアンサンブルによるモデル最適化
データの前処理としては、欠損値補完や各カラムの型変換などの特徴量エンジニアリングを行います。学習モデルとしては、LightGBM boosted trees, CatBoost boosted trees, Random Forests, Extremely Randomized Trees, k- Nearest Neighbors, AutoGluon-Tabular NN model という6つのモデルをベースとして、複数のモデルに対する学習をタスクとして進めます(2020年9月時点)。モデルの精度をより高めるために、Repeated k-fold Bagging や 多層スタックアンサンブルという手法を採用しており、バギングにより学習データセットに対する偏りや過学習を防ぎ、モデルアンサンブル・スタッキングという手法を用いることで、複数のモデル組み合わせ、単体でモデルを使う場合に比べて精度を向上させることができます。学習の際 presets
オプションを指定すると、利用用途に応じて学習モデルの精度と、推論速度やメモリ使用量のバランスを自動的に最適化することができます。例えば、best_quality
を選択すると、 メモリは使用量や推論速度はそこそこかかるがもっとも良い精度のモデルを出力することができます。
AutoGluon のスケジューリングとカスタマイズ
また、AutoGluon は限られた時間の中でより多くの学習ジョブを効率よく実行するための autogluon.scheduler というジョブスケジューラ機能があります。ハイパーパラメータ最適化 や NAS (Neural Architecture Search) を実行する際、あらかじめ指定された探索空間の中で Searcher がベイズ最適化やランダムなどを用いて、次の探索パラメータ等を指定して学習を進めます。Task が渡された Scheduler は、FIFO や Hyperband、RL といったスケジューラを用いて、CPU/GPUリソースが空き次第効率よくタスクを実行していきます。HyperbandScheduler では、精度の高い Early Stopping を実行することで、リソースの最適な配分ができます。また、独自のプリプロセスやモデル、メトリクス等も自由に定義ができます。探索の範囲は、下記のように args
として簡単に指定できます。
import autogluon as ag
from autogluon.utils.mxutils import get_data_rec
@ag.args(
dataset='apparel', net='resnet18_v1b', epochs=ag.Choice(40, 80),
lr=ag.Real(1e-4, 1e-2, log=True), lr_factor=ag.Real(0.1, 1, log=True),
batch_size=256, momentum=0.9, wd=ag.Real(1e-5, 1e-3, log=True),
num_gpus=8, num_workers=30, input_size=ag.Choice(224, 256),
crop_ratio=0.875, jitter_param=ag.Real(0.1, 0.4),
max_rotate_angle=ag.space.Int(0, 10),
)
def train_finetune(args, reporter):
return train_loop(args, reporter)
また、探索空間は、上記のような args
指定のほか、function
や class
に対する探索など動的な探索オブジェクトの生成などのカスタマイズもできます。
このように、OSS AutoGluon を使って、AutoML を簡単に実行いただく手法をご紹介しました。Tabular 以外にも画像・テキスト分類など幅広い分野で使うことができる AutoGluon ファミリー、ぜひお試しいただければ幸いです。
「Amazon SageMakerを使ってAutoGluon-Tabularを活用する方法」[Slides]
アマゾン ウェブ サービス ジャパン株式会社
機械学習ソリューションアーキテクト 上総虎智
Amazon SageMakerを使ってAutoGluon-Tabularを活用する方法
Amazon SageMaker では、AWS Marketplace に登録されているアルゴリズムやモデルを簡単に使うことができます。機械学習モデルは開発して終わりではなく、実際にビジネスの現場で適用して価値を発揮させることが重要です。こちらのセッションでは、AutoGluon で開発された機械学習モデルを実際にサービスとして活用する際の課題を踏まえ、機械学習の開発学習基盤 Amazon SageMaker の活用ポイントと、AutoGluon-Tabular と組み合わせて活用する方法をお伝えしました。SageMaker との組み合わせにおいては、AWS Marketplace に登録されている AutoGluon-Tabular を活用する方法、GitHub に公開している最新のAutoGluon-Tabular フレームワークを、SageMaker上に持ち込む方法の2パターンを紹介し、デモンストレーションを交えて、どのように活用できるのかを解説いたしました。
例えば、特徴量エンジニアリングや学習の際には、
- プログラミングを行わずに実装したい
- データの前処理や学習のために、適切な計算リソースを準備したい
- 試行錯誤に対して実験管理を行いたい
また、モデルをデプロイした際には、
- モデルを再学習して更新するようなパイプラインを自動化したい
- A/B テストなどの運用基盤を整備したい
といった課題があろうかと思います。このように、機械学習をビジネスに適用するにあたって、モデル開発が終わった後の工程でも、自動化したり効率化できる課題があります。さらに、プロジェクトが本格稼働を始めたあと、関与するデータや人数が大きくなるにつれて、多様で反復的な試行錯誤を伴うことを前提する機械学習開発は、
- データ、モデル、実験ログがどこにいったか 分からない
- 後から特定のコンポーネントだけカスタマイズしたい時に他も変更しないといけない
- その時々で必要な計算リソースが変わるけど、その環境変更に毎回手間がかかる
- 依存関係が多くて独立に進められない!
といった課題から、せっかく作った機械学習モデルの改善が進められなくなってしまう可能性があります。
そういった課題を解決するために、AutoGluon を AWS 上でサービスと組み合わせて効果的に活用する方法として、Amazon SageMaker との連携による、モデル開発〜運用についてお話ししました。Amazon SageMaker は 機械学習の開発・学習・推論におけるワークロードの Undifferentiated Heavy Lifting (差別化になりづらいが重荷となる作業) を AWS 上のマネージドサービスとして提供することで、お客様には本質的なワークロードに集中いただくことができます。上述の課題を解決するための機能として、学習モデルの管理・可視化ツール Amazon SageMaker Experiments、エンドポイントにホスティングされたモデルのドリフト検知を行う Amazon SageMaker Model Monitor、機械学習のワークフローをステートマシーンで記述しパイプラインを構築する AWS Step Functions Data Science SDK といった機能をご紹介させていただきました。
Amazon SageMaker 上で AutoGluon を使って開発を進めていただくために、下記の二つの方法を blog にてご紹介しております。詳細はそれぞれの blog 記事をご覧下さい。
AWS が準備した AutoGluon-Tabular アルゴリズムをそのまま活用する場合は、AWS Marketplace からアルゴリズムを入手し、Amazon SageMaker コンソールで GUI を操作するため、数クリックのみで AutoGluon を使った学習や推論が実行可能です。また、マネージドな機械学習基盤である Amazon SageMaker を活用して開発を進める場合は、独自のモデルを組み合わせるなど、細やかなカスタマイズが可能で、データの前処理や、後処理、そのパイプライン化など、システムとしての実装へ活かしやすいといった特徴があります。セッションでは、AutoGluon-Tabular をより便利にお使い頂くために Amazon SageMakerと組み合わせる方法をデモを交えてご紹介いたしました。
最初のセッションでもご紹介したように、AutoGluon を活用することで、それぞれの用途に応じた機械学習モデル開発の半自動化を行うことができますが、機械学習モデルの開発や運用をより効率的に行うために、機械学習基盤である Amazon SageMaker の様々な機能と組み合わせてお使いいただく方法をご紹介しました。ご利用用途に応じて AWS のサービスと組み合わせながら、AutoGluon をより便利にお使いいただき、皆様の機械学習開発を加速していただければ幸いです。
まとめ
今回は AutoML の OSS AutoGluon の ご紹介と、AutoGluon を Amazon SageMaker で使う方法をご案内しました。次回のAWS AI/ML@Tokyoは、10/15 の開催を予定しています。
2019年に開催した「Amazon SageMaker事例祭り」、2020年からスタートした「AWS AI/ML@Tokyo」の開催報告と登壇スライドは、以下のリンクからご覧いただけます。
- 第1回 Amazon SageMaker 事例祭り 2019年1月15日 [Web]
- 第2回 Amazon SageMaker 事例祭り 2019年2月12日 [Blog]
- 第3回 Amazon SageMaker 事例祭り 2019年3月12日 [Blog]
- 第4回 Amazon SageMaker 事例祭り 2019年4月24日 [Blog]
- 第5回 Amazon SageMaker 事例祭り 2019年5月21日 [Blog]
- 第6回 Amazon SageMaker 事例祭り 2019年7月18日 [Blog]
- 第7回 Amazon SageMaker 事例祭り 2019年8月29日 [Blog]
- 第8回 Amazon SageMaker 事例祭り 2019年9月19日 [Blog]
- 第9回 Amazon SageMaker 事例祭り 2019年10月30日 [Blog]
- 第10回 Amazon SageMaker 事例祭り 2019年11月28日 [Blog]
- 第1回 AWS AI/ML@Tokyo #1 2020年2月6日 [Blog]
- 第2回 AWS AI/ML@Tokyo #2 2020年2月27日 [Blog]
- 第3回 AWS AI/ML@Tokyo #3 2020年4月23日 [Blog]
- 第4回 AWS AI/ML@Tokyo #4 2020年6月11日 [Blog]
- 第5回 AWS AI/ML@Tokyo #5 2020年7月9日 [Blog]
またAmazon SageMakerのオンラインによる体験ハンズオンがございますので、こちらもご活用ください。
https://pages.awscloud.com/event_JAPAN_hands-on-ml_ondemand.html