【UiPath】AI Centerのライセンスって、とても複雑

# はじめに
AI Centerを使っていると、当然ライセンスのことも知らなければならないのですが、結構複雑で難しいなあと思ったので、調べたことをまとめてみます。

AI Centerに詳しくない方は過去の記事も一緒にどうぞ。

https://qiita.com/shuy/items/8f732357a1b2e8f61e06

https://qiita.com/shuy/items/589e32b5806f8150a62f

https://qiita.com/shuy/items/c92affc3d7b2433dba89

# 前提
※クラウド環境は2022年7月時点のもの
* Automation Cloud(AI Center) Enterprise版

本記事では旧ライセンス体系「AI Robot」ではなく、新しいほうの「AI Unit」のライセンスについてまとめます。
CloudのAI Centerを使用する前提です。オンプレ版のAI Centerはライセンスについての考え方が少し異なりますので、本記事では対象外とします。
また、同じAI UnitでDoucument Understanding、Task Mining、Computer Visionも使用することができますが、本記事では除外します。

# AI Unit
AI Centerのライセンスは「AI Unit」というコンサンプション型のライセンスとなります。
StudioやRobot、その他のサービスで使用されているサブスクリプション型ライセンスとは違い、ライセンスを購入するとポイント（AI Unit）が付与され、それを期間中に消化する形となります。AI Unitは契約期間を超えて持ち越しはできないため、期間中にすべて消化したほうがよいのですが、不足してしまうとAI Centerで特定の操作ができなくってしまうので、適切なAI Unit数の見積が必要なります。

# AI Unitを使用するタイミング
AI Unitを消化するタイミングは、以下3つです。

* パイプライン（トレーニング）を実行する時
* MLスキルをデプロイしている時
* MLスキルをStudio/Robotからコールする時

![AIUinitを消費するタイミング1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89445/912a16ef-b215-88d2-02ae-de1b137416c7.png)

## 1. パイプライン（トレーニング）を実行する時
パッケージ（モデル）に対して、パイプラインを実行するたびにAI Unitを消費します。
![パイプライン1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89445/42d110c8-f314-dc17-968a-748876b3e951.png)

パイプライン１回あたりのAI Unitの消化数は、以下の計算式から算出します。

```
(パイプライン実行時間[h]) x (コンピューティングリソースのコスト)
```

## 2. MLスキルをデプロイしている時
パッケージ（モデル）をデプロイし、MLスキルとして、Studio/Robotから使用可能な状態になっている期間、AI Unitを消費し続けます。

未使用のMLスキルであってもAI Unitを消費し続けるため、使用していないMLスキルはデプロイ時のオプション「次の非アクティブ期間後にスキルのデプロイを解除」を使って自動的に無効化しておくことをお勧めします。

:::note info
デプロイ済みのMLスキルの有効⇒無効の切り替えは、現時点では上記オプション以外の方法はありません。無効⇒有効の切り替えは画面から手動で行います。
今後、手動またはAPIで有効⇔無効を切り替えられるようになってほしいですね。
:::

![デプロイ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89445/5c8fd7ab-b355-c583-04a9-8af12112922f.png)

デプロイ済みMLスキル1つあたりのAI Unitの消化数は、以下の計算式から算出します。

```
(デプロイ済みの状態の時間[h]) x (コンピューティングリソースのコスト)
```

## 3. MLスキルをStudio/Robotからコールする時
ロボットからMLスキルを呼び出すたびにAI Unitを消費します。
![MLスキル実行1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89445/c877258a-484a-1e31-de7c-5b350481ea50.png)

MLスキル１回実行あたりのAI Unitの消化数は、以下の計算式から算出します。

```
(入力データサイズによるコスト) x (モデルによるコスト)
```
# AI Unit消化数を決める各種コスト
上記、計算式の中で出てくる各種コストです。コストによってAI Unitの消化数が決まります。

## コンピューティングリソースのコスト
コンピューティングリソースには、CPUとGPUがあり、それぞれ時間単位のコストが異なります。
もちろん、GPUの方が時間単位のコストが高いのですが、GPUの方が実行時間が短くなることから、トータルとしてCPU/GPUどちらを使った方がコストが低いかは、状況によって変わります。
一般的に、パイプラインではGPUを使い、MLスキルにはCPUかと思います（デプロイ済みのMLスキルにGPUを使うと、MLスキルをコールしていない時間にもGPUのコストがかかるため、無駄にAI Unitを消費してしまうかと思います）。

**1. パイプライン（トレーニング）を実行する時**
|タイプ|コスト|
|-|-|
|CPU|6 AI Unit/時間|
|GPU|20 AI Unit/時間|

**2. MLスキルをデプロイしている時**
|タイプ|コスト|
|-|-|
|CPU|2 AI Unit/時間|
|GPU|40 AI Unit/時間|

## 入力データサイズによるコスト
MLスキル実行時、入力データのサイズによってコストが異なります。

|タイプ|コスト|
|-|-|
|JSONファイル|2,000文字で1単位|
|その他ファイル|5MBで1単位|
 
## モデルによるコスト
MLスキル実行時、使用するモデルよってコストが異なります。

|モデル|コスト|
|-|-|
|UiPath Light Text Classification|0.2 AI Unit|
|上記以外のUiPathモデル|0.5 AI Unit|
|オープンソースのモデルやカスタムモデル（自分で.zipをアップロードする）|0.1 AI Unit|

# 計算例
実例っぽいケースでAI Unitの消化数を計算してみます。

* 物体検出モデル（オープンソース）を使用
* パイプラインは1回実行する（GPUなし）
* パイプラインは1回あたり6時間実行される
* MLスキルは常時有効（24時間/365日デプロイ済みの状態）
* MLスキルは1日20回実行する（GPUなし）
* MLスキルは1回あたりの入力ファイルは20MB
* 上記、1か月（30日）のAI Unitの消費数を求める

**1. パイプライン（トレーニング）を実行する時**
6（パイプライン実行時間） x 6（CPU利用） = 36

**2. MLスキルをデプロイしている時**
(24時間 x 30日) x 2（CPU利用） = 1,440

**3. MLスキルをRobotからコールする時**
(20MB / 5MB) x 0.1（オープンソースのモデル） x (20回 x 30日) = 240

**合計**
36 + 1,440 + 240 = 1,716 AI Unit

# おわりに
Cloud Robotsにもコンサンプション型ライセンスが導入されていますが、やっぱり消費数のメトリクスを理解するのは難しいですね。

# 参考
https://docs.uipath.com/ai-fabric/lang-ja/v0/docs/ai-units