はじめに
AI Centerとは、UiPath社が提供する機械学習プラットフォームサービスです。
これを使うと、RPAと機械学習を連携させることができます。
機械学習に精通している必要はありませんが、基礎的知識はあった方が良いです(学習済みのモデルをStudioから呼び出すだけなら、なんとなくできますが、各モデルの仕様を深堀すると専門的知識が必要です)。
本記事ではAI Centerの基本的な使い方をまとめます。
つかうもの
※クラウド環境は2022年6月時点のもの
- Automation Cloud(AI Center) Enterprise版
AI Centerを使うには
AI Centerを使用するには、3つの方法があります。
- Automation Cloudを使用する
- Automation Suiteを構築して使用する
- AI Centerを構築して使用する
1. Automation Cloud
UiPath社が提供するクラウド環境を使用します。
簡単に始めることができます。GPUも使用できます。
Community版では使用できません。Enterprise版を購入するか無償トライアルを申請します。
2. Automation Suite
自社のデータセンターまたは、AWSなどのパブリッククラウドにて、Automation Suiteを構築します。
Automation SuiteにはAI Centerだけでなく、Orchestratorや他サービスも一度に構築できます。
セキュリティポリシーなど自社の制約でAutomation Cloudが使用できない場合に有効です。
3. AI Center
自社のデータセンターまたは、AWSなどのパブリッククラウドにて、AI Centerを構築します。
Automation Suiteと違い、AI Center単独での構築となります。
GPUを使用する場合は、対応したアーキテクチャを選択する必要があります。
AI Centerを始める
AI Centerを使う手順を簡単に説明します。
※あくまでAI Centerの使い方にフォーカスします。機械学習で最も重要で大変な作業である、モデルの構築、データセットの準備(収集・ラベリング)は済んでいる前提で進めます。
- プロジェクトを作成する
- モデルを選ぶ
- データセットを登録する(選択したモデルによってはスキップできます)
- パイプラインを実行する(選択したモデルによってはスキップできます)
- デプロイする
- Studioから呼び出す
今回のユースケースは、「玄関先の画像をインプットにして、置き配(段ボールなど)があれば、お知らせを通知する」というフローを想定して、物体検出モデルを使って玄関先の画像から段ボールらしき物体を検出させてみたいと思います。
(そんな業務が実際にあるかどうかは置いておきます)
1. プロジェクトを作成する
まずはプロジェクトを作成します。
「アクセスを制限」を有効にするとプロジェクトにアクセスできるロールを限定できます。
2. モデルを選ぶ
機械学習モデルを選択します。
自作のPythonコードでも良いですが、すでに用意されたプリセットのモデルも使用できます。
AI Centerではモデルを「MLパッケージ」とも呼びます。
※今回は、オープンソースの物体検出モデル(ObjectDetection)を使用します。
3. データセットを登録する
トレーニングで使用するデータセットを登録します。
ステップ2で選択したモデルによっては、事前トレーニングが済んでいるものがあるので、このステップは不要になる場合もあります。
※今回使用する物体検出モデルも事前トレーニング済みモデルですが、今回は再トレーニングしてから使用します。
データセットはフォルダ階層ごと登録できます。
今回は、トレーニング用データセット(trainフォルダ)と評価用データセット(testフォルダ)の2つを準備します。
どのような形式のデータを準備するかは選択したモデルによって異なりますが、今回の物体検出モデルでは、各フォルダに画像ファイルとアノテーションファイル(.xml)が複数セット入れておきます(詳細は割愛します)。
4. パイプラインを実行する
ステップ3のデータセットを使用し、モデルをトレーニングします。必要であれば、トレーニング後の評価も行えます。
ステップ2で選択したモデルによっては、事前トレーニングが済んでいるものがあるので、このステップは不要になる場合もあります。
※今回使用する物体検出モデルも事前トレーニング済みモデルですが、今回は再トレーニングしてから使用します。
今回は、フルパイプライン(トレーニング+評価)を実行します。
「パッケージを選択」は、ステップ2で選択したモデルを選び、「入力データセットを選択」、「評価データセットを選択」では、それぞれステップ3で登録したデータセットを選択します。
「パラメータを入力」は、モデル固有のハイパーパラメータで、選択したモデルによって変わります(今回の例では必要ありません)。
実行タイミングは「今すぐ実行」を選択しますが、定期的な再学習をスケジュールすることも可能です。
選択したモデルとデータセットに依存しますが、パイプライン実行(トレーニング)はかなりの時間がかかります。今回の検証では、250件程度のデータセットを用意しましたが、フルパイプラインの実行に6時間半かかりました。GPU対応モデルであれば、GPUを使用することで時間を短縮することが可能です。
フルパイプライン実行後、結果とスコアを確認します。
スコアが不十分であれば、データセットの質が悪いかもしれないので、データセットを変え再度トレーニングします。
パイプラインが成功したら、MLパッケージのマイナーバージョンを1つ上がります。今回の検証では、v1.0のパッケージをトレーニングして、v1.1のパッケージが生成されました。
5. デプロイする
トレーニングしたモデルをStudioから使用するためにデプロイします。
デプロイしたモデルは、AI Centerでは「MLスキル」と呼ばれます。
ステップ4のトレーニングで生成されたバージョンのパッケージを指定します。
「自動更新を有効化」は、パイプライン実行で新規バージョンが生成された際、自動的に最新バージョンをデプロイするオプションです。
「次の非アクティブ期間後にスキルのデプロイを解除」は、MLスキルが一定期間使用されなかった場合、MLスキルを無効化するオプションです。
パイプライン実行ほどではありませんが、デプロイは時間がかかるので、終わるまでしばらく待ってください。
6. Studioから呼び出す
デプロイしたMLスキルをStudioから呼び出します。
まず、パッケージ(UiPath.MLServices.Activities)をインストールします。
StudioとAI Center(Automation Cloud)が接続されていれば、ステップ5でデプロイしたMLスキルを選択することができます。
入力と出力はMLスキルよって異なりますが、今回の物体検出モデルでは、入力は画像ファイルのパス(String型)、出力は検出した物体のカテゴリ、スコアなどを含んだJSON(String型)となります。
ちなみに一定期間(デプロイ時に指定した期間)、MLスキルを使用しなかった場合、該当のMLスキルは停止状態となりますので、再度使用する場合は、AI Centerから再開を指示します。
作成したワークフローを動かしてみます。
(検証1つ目)玄関に段ボールを置いた画像では、正しく物体(カテゴリ:package)を検出しました。スコアも93%と信頼できる数値です。
(検証2つ目)玄関に何も置いていない画像では、何も反応しませんでした。
(検証3つ目)スコアは低いですが、猫のエサ入れに反応してしまいました。学習データを工夫して再トレーニングさせれば、検出しないようにできるかもしれません。
おまけ
Studio(Robot)からAI Centerへデータセットをアップロードすることができます
これを活用すると、精度が微妙なデータをラベリングし直し、再トレーニング用のデータセットとしてアップロードする流れを自動化することができます。
さらにパイプラインを定期的な実行としておくことで、機械学習モデルの運用を効率化することができます。
さいごに
AI CenterとUiPathワークフローの連携の流れを説明しました。
今後は、個々の機械学習モデルについて、詳細な使い方(データセットの準備、トレーニングのパラメータなど)を検証してみます。