Acumos AIの概要

初版: 2019/5/17<br>
著者: 古山 悠介, 株式会社 日立製作所

# はじめに
この投稿では、[Acumos AI](https://www.acumos.org/)の概要と機能検証結果を紹介します。
本投稿の内容は[The Linux Foundation](https://www.linuxfoundation.org/)、[LF Deep Learning Foundation](https://lfdl.io/)の公開資料と、Acumos AIの最新リリース(2019/05現在)であるAthenaリリースでの機能検証結果に基づいて記載しています。

第1回目となる今回は、Acumos AIの概要について紹介します。

**投稿一覧：**
1. Acumos AIの概要 (本投稿)
2. [Acumos AIの環境構築と機能検証の概要](https://qiita.com/y-furuyama/items/9b0b8f722116cc9c5879)
3. [Acumos AIの機能検証(1): 学習モデルのラッピングとDockerイメージの生成](https://qiita.com/y-furuyama/items/98ae10ced39a82d84b23)
4. [Acumos AIの機能検証(2): Design StudioによるAIアプリケーション開発](https://qiita.com/y-furuyama/items/57a86f7f198efdaea496)
5. [Acumos AIの機能検証(3): AIアプリケーションの展開と実行](https://qiita.com/y-furuyama/items/e8b02f4dd4c71d2f94cc)

# Acumos AIの概要
Acumos AIは、The Linux Foundation傘下でAI/ML/DL分野のオープンソースイノベーションを支援・維持する、LF Deep Learning Foundationのプロジェクトとして開発が進められているOSSのAIプラットフォームで、AI活用アプリケーションの開発簡易化を目的としています。


## AI活用の課題とAcumos AI
AI活用の拡大に伴い、様々な機械学習やディープラーニング向けのライブラリ(TensorFlowやscikit-learn、RCloud、H2O.aiなど)が登場しており、それぞれのライブラリで様々な学習モデルが作成されています。これらの学習モデルを組み合わせて利用することで、様々な価値をもたらすアプリケーションの開発が可能になりますが、現状ライブラリごとにアプリケーションプログラミングインターフェイス(API)が違うため、異なるライブラリで作成された学習モデルを組み合わせて利用することは容易ではありません。
また、作成済みの様々な学習モデルを自由に入手できれば学習モデル作成にかかる作業工数を大幅に削減できますが、現状、学習モデルを広く共有する場が十分に用意されているとはいえない状況です。

以下の図では転移学習における一般的なAIアプリケーション開発フェーズを記載しています。転移学習とは、クラウドベンダなどによって一般公開されている既存の学習モデルを取得し、そのモデルに対して追加でトレーニングすることにより個々のケースに最適な学習モデルを作成する手法のことです。

* データフェーズ<br>
開発するAIアプリケーションの目的に従い、データを取得/前処理を実施します。
* モデルフェーズ<br>
使用する学習ライブラリと学習モデルの選定/トレーニング/テストを実施します。トレーニングとテストを繰り返しながら、学習モデルをチューニングして予測精度を向上させます。
* アプリケーションフェーズ<br>
AIアプリケーション開発と配備を実施します。フロントエンドUIなどを持つサービスアプリケーションと学習モデルを結合し、AI使用環境へ配備(デプロイ)します。

![transfer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412003/29afa670-e20c-a64f-e3cf-e97aef680cdd.png)


Acumos AIは先に挙げたような課題を解決するため、学習モデルを利用する際のAPIの共通化と、学習モデルの共有が可能な設計となっています。このため、転移学習におけるモデルフェーズとアプリケーションフェーズで、学習モデルやAIアプリケーションの構築、共有、展開(デプロイ)を容易に行うことができます。

## Acumos AIでのAIアプリケーション開発の流れ
Acumos AIでのAIアプリケーション開発の流れを以下の図に示します。

1. 共通APIを用いて、様々な学習ライブラリで作成された既存学習モデルから、Acumos AIで相互利用可能な形式にラッピングされた学習モデルを生成します。
2. Acumos AIポータルから学習モデルを取り込んでDockerイメージを生成します。
3. Acumos AIのGUI開発ツールであるDesign Studioで既存のモデルやデータ変換ツールなどを組み合わせてAIアプリケーションを作成します。
4. 作成したAIアプリケーションをDockerコンテナとして展開でき、AzureやプライベートKubernetes環境に展開することができます。

![Acumos_dev_flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412003/8d4f390f-32dc-bf2b-629e-24d4c599fece.png)


## Acumos AIの主な特徴と効果
2018/11にAcumos AIの最初のリリースとなるAthenaが公開されました。Acumos AI Athenaリリースでの主な特徴と効果を以下の図に示します。

![features.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412003/005e4710-5d7f-9b3d-7f00-8846220c26e4.png)


**1. 学習ライブラリに依存しない共通APIで学習モデルが利用できる**

Acumos AIでは学習モデルを利用する際に共通APIを使用します。学習ライブラリごとの差異は共通APIにラッピングされるため、Acomos AI上ではモデル開発者は学習モデルを簡単に利用でき、また、学習ライブラリが違う学習モデルを組み合わせて利用することが可能になります。このため、開発者は、学習モデルの予測精度向上や、ユーザアプリケーションの開発といった本来の目的に注力することができます。
現状、Acumos AIではTensorFlowやscikit-learn、RCloud、H2O.aiなどの学習ライブラリに対応しています。

**2. Dockerコンテナを使用してAIアプリケーションを展開できる**

Acumos AIでは、学習モデルをDockerイメージ化して取り扱います。このDockerイメージには、学習モデルを機能させるために必要なすべてのコンポーネントが格納されています。また、この学習モデルのDockerコンテナと、複数の学習モデルのDockerコンテナを連携するDockerコンテナ（コントローラ）を利用してAIアプリケーションの開発を行うことが可能です。

各Dockerコンテナ間のデータの受け渡しは共通のフォーマットで行っているため、Design Studioで複数のコンテナを組み合わせてAIアプリケーションを開発することが可能です。また、生成されたAIアプリケーションは、オンプレミスまたは、クラウドなどのDockerコンテナが使用できる様々なプラットフォームへ簡単に展開することができ、インフラ管理者のAI使用環境の立ち上げやアップデートに関連する作業が容易になります。現状、Acumos AIが生成した学習モデルやAIアプリケーションは、AzureやプライベートのKubernetes環境に展開することができます。

**3. GUI開発ツールにより、学習モデルを組み合わせてAIアプリケーションが開発できる**

Acumos AIにはDesign Studioと呼ばれるGUI開発ツールが付属しています。Design Studioでは、学習モデルやデータ変換ツールなどをドラッグ&ドロップでつなぎ合わせることにより、新しいAIアプリケーションを作成することができます。
AIアプリケーション開発者は、Design Studioを使用することでコーディングすることなく直感的にAIアプリケーションを開発でき、開発工数を削減することができます。

**4. ユーザ間で作成済み学習モデルやAIアプリケーションを公開・共有できる**

Acumos AIでは、学習モデルやAIアプリケーションをユーザ間で広く公開・共有できます。公開・共有するための場はMarketplaceとよばれており、公開・共有先をパブリックまたはプライベート(ローカル)に設定することができます。このとき、自社内だけの公開・共有なども可能です。Marketplaceで公開・共有された学習モデルの相互利用(再利用)が活発になれば、学習モデル作成にかかる工数を大幅に削減することができます。

現状未実装ですが、Acumos AIに導入した既存の学習モデルに対し、目的に応じた外部データを取り込んで追加トレーニングすることで、個々のケースに最適なモデルを作成すること（転移学習）もできるようになる[予定](https://wiki.acumos.org/display/REL/Project+Status+in+Boreas+Release)です。

# おわりに
本投稿では、Acumos AIの概要について紹介しました。次回の投稿では、Acumos AIの機能検証を行う環境の構築と、機能検証の概要について紹介します。

第2回：[Acumos AIの環境構築と機能検証の概要](https://qiita.com/y-furuyama/items/9b0b8f722116cc9c5879)