背景
自分のMacで機械学習環境を構築していた時から時代は進み、クラウド環境上で機械学習を行うようになってきました。
クラウド上の機械学習プラットフォームは各種ありますが、kaggle等の機械学習コンペでよく使われるLightGBMアルゴリズムを開発しているMicrosoftが作っている機械学習プラットフォームの評判が良い (?)ので、調べてまとめてみました。
特徴
Notebooks 機能
Jupyter notebookライクなノートブック機能で、Pythonコードを書いて学習していけます。
VSCodeに搭載されているようなコード補完機能 (IntelliSense)も搭載されています。今後共同編集機能なんかも登場するようです (参考)。
慣れない方は従来のJupyter notebook (Jupyter Lab)を使うこともできるようです。
GUIで機械学習モデルを作成できる機能 (デザイナー)
モジュールを組み合わせていってデータの加工や機械学習モデルの作成、デプロイを行える機能があります (参考)。
(画像はここから転載)
モジュールは色々あって、特徴量エンジニアリング、モデル学習 (回帰、分類、クラスタリング)、推論 (リアルタイム&バッチ)、カスタムモデル・スクリプト (Python, R)等々ができるようです。
デプロイ先もAzure Kubernetes Service (AKS)等にそのままデプロイできるみたいです。
自動機械学習機能 (AutoML)
いわゆるAutoMLですね!使用する説明変数の選択や加工とかの特徴量エンジニアリング、アルゴリズムの選択、ハイパーパラメータのチューニングを自動で多数試し、最も精度 (あるいは選択した指標)が良かったモデルを使うことができます。
試したモデル達のアンサンブル学習ができるのでそれだけで精度が良いモデルができそうです()
(画像はここから転載)
モデルの運用管理 (MLOps)
いわゆるMLOpsですね!機械学習モデルを作って終わりではなく、ちゃんと再現が出来るような仕組みであったり、モニタリングの状況に応じてモデルの再学習を自動化してデプロイメントまで自動的に行える仕組みを作れるみたいです。
MicrosoftはGItHubを持っている ~~(ずるい)~~ので、Azure DevOpsはもちろん、GitHubと連携してMLOpsの仕組みを構築できそうです。
Azure Machine LearningでのMLOpsはこの下図のようなアーキテクチャになっているみたいです。
画像:Azure Machine Learning を使用した Python モデル用の MLOps
モデルの解釈
最近重要視されていますが、「AIで非常に精度良く分類できるようになったが、何で判断しているか分からない!」という問題に取り組むのがモデル解釈の機能です。ざっくり言うとどの説明変数・特徴量をベースにそのような分類をしているのか推測 (ブラックボックスなモデルでは)機能です。
Azure Machine LearningでAutoMLだったりでモデル学習を行うと、自動的にモデルの解釈も表示してくれました。
Microsoftはモデル解釈用のフレームワークをOSSとして公開 (InterpretML)していて、その知見が取り組まれているようです (あるいはAzure MLが先?) (参考
参考:MicrosoftのInterpretMLが便利だった
計算環境
言わずもがなクラウド上でデータ分析、機械学習を行う大きなメリットの一つですね。どこのクラウドサービスでも似たようなものだと思われますが各種Virtual Machine (VM)を計算環境として使用できます。最近だとNVIDIAの最新GPU (A100)への対応もアナウンスされています。
あと、AzureのHPCやDL用のVMだと高速なノード間通信である**InfiniBandに対応**しているようです。
他のクラウド (AWSやGCP)は私の知る限り対応していないので、分散ディープラーニング、みたいなことを行う際には活かせそうです (参考)
InfiniBand参考:いまさら聞けないInfiniBand
課金
そしてAzure Machine Learningのこれらの機能自体は無料で、基本的には計算環境 (VMの種類と稼働時間?)分の利用料金しかかからないみたいです。VMも1時間数百円とかなので利用しやすいですね..。逆にこれ儲かっているのか心配です..。
その他の特徴
機械学習モデルを多数作って管理していく必要があるケースにも対応しているようです!(追記)
参考:Azure Machine Learning Many Models Solution Acceleratorの紹介と利用方法
まとめ
Microsoft Researchという研究機関があってそこの研究成果を盛り込めたり、開発周りでVScodeやGitHubを持っているのが強いですね..!
参考
本文中での言及に関わらず、いくつか参考になりそうな記事をピックアップしてみました。
HomebrewのインストールからpyenvでPythonのAnaconda環境構築までメモ
LightGBM 徹底入門 – LightGBMの使い方や仕組み、XGBoostとの違いについて
Kaggleとは?機械学習初心者が知っておくべき3つの使い方
Accelerating Distributed Training in Azure Machine Learning service using SR-IOV
Bringing IntelliSense, collaboration and more to Jupyter notebooks with Azure Machine Learning
AutoMLがすごいと聞いたので色々使って比べてみた
Azure DevOps を完全理解する
ゆるふわMLOps入門
Azure Machine Learning を使用した Python モデル用の MLOps
MicrosoftのInterpretMLが便利だった
図解でわかる!インフィニバンド豆知識
いまさら聞けないInfiniBand