AWS ML University の  Amazon SageMaker Neo についてのコンテンツを訳してみた


# はじめに

re:Invent 2018で発表された機械学習サービス Amazon SageMaker の新機能である Amazon SageMaker Neo についての概要が「 AWS ML University 」にて公開されているのでこちらを翻訳しながら紹介していきたいと思います。

コンテンツへのアクセス方法は[こちら](https://recipe.kc-cloud.jp/archives/12160)に記載しています。

# Introduction to Amazon SageMaker Neo
## コース概要

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/ea72c67b-d56a-61fe-2b45-4114de7ee939.png)

- 機械学習の取組について
- Amazon SageMaker Neo について
- ユースケース

## 機械学習の取組について

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/24a99aaf-b38d-2a5a-2097-4bd69c506fa9.png)

機械学習は近年世界中で注目が集まっている技術ですが、実際に利用をする上で数多くのハードルがあります。

1. テーマに対して一番適したフレームワークがなにかの選択
2. 選択したフレームワークを使いモデルを構築
3. サンプルデータでモデルの予測検証を行い、予測精度の向上
4. アプリケーションに作成したモデルを連携させる
5. プラットフォームにフレームワーク、モデル、アプリケーションのデプロイ

これらのハードルから機械学習を実際のビジネス導入を検討しても、ステップの多さにつまずいてしまう開発者が多いのが現状です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/c55527d2-a183-2b03-7688-bde15351c08e.png)

Amazon SageMaker ではそういったハードルで苦労する必要のないサービスです。簡単に機械学習のモデルの構築ができ、モデルの検証に必要な全てのデータと接続することで素早く検証ができるようになっています。Amazon Sage Maker は、アプリケーションにとって最適なフレームワークとアルゴリズムの選択を行います。

それでもモデルの構築というのは簡単にできるものではありません。複数あるプラットフォームの中から最適なパフォーマンスを生み出すモデルを選択するというのは非常に困難です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/85a5aec4-d8f5-4f8a-37dd-33da7aa49790.png)

実際の現場で起きているモデルのデプロイ問題を例に見てみましょう。開発者がモデル構築をする際、フレームワークを利用する全てのプラットフォームにインストールする必要がありますが、コストや容量などの問題からプラットフォーム側でサポート可能なフレームワークやインストール可能な数が制限されていることがあります。

そのためデベロッパーは適さないフレームワークを利用するといった制限の中でモデル構築したり、フレームワークに合わせてモデルの設定を変更し直したりといった作業が発生します。これが機械学習分野の発展を阻む要因となっています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/80210b9e-eb29-4256-09d0-824929a9d764.png)

その他の問題として開発者は複数のフレームワークを使って複数のプラットフォームを試すといった状況に直面することになります。フレームワークはそれぞれ構成や保存の仕方、取り扱うファイルなどが異なるので、プラットフォームを使用予定の全てのフレームワークやモデルに対応できるようにするのは高度なエンジニアリングが必要となります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/3608b21e-b995-ca70-76cc-5047d6c16e9f.png)

Amazon SageMaker Neo では前述の煩雑な作業をする必要はありません。Amazon SageMaker Neo はフレームワークで構築されたモデルをそれぞれのプラットフォームに適した状態に変換することが可能です。

## Amazon SageMaker Neo について

Amazon SageMaker Neoについて紹介していきます。Amazon SageMaker NeoはAmazon SageMakerの新機能です。Neoではすべてのフレームワークでモデルの検証が可能ですべてのプラットフォームでモデルを利用することを目指したサービスです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/fc75d137-2889-de27-8049-b8b4e7dd6709.png)

Amazon SageMaker Neo は構築されたモデルをフレームワークから最適なコードに変換することで、複数のプラットフォームで利用可能な状態にします。変換後は、フレームワークは必要ないので時間の短縮にもなります。Amazon SageMaker Neo はコンソールからアクセスでき、数クリックでモデルを起動させることができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/3ee84aa6-49c8-4464-af29-a080fb14f59c.png)

Amazon SageMaker Neo では主要な2つのコンポーネントが搭載されています。

- 作成したモデルのコンテナ化
- モデルの共有ライブラリ化

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/7f9e3846-feee-0b22-8ae2-d1c5b7090fa2.png)

Amazon SageMaker Neo の仕組みについて紹介します。ユーザが Amazon SageMaker にジョブリクエストを投げるとジョブのステータスが「Starting」から「In-Progress」に変わり、モデルのコンパイルが始まります。完了するとステータスが「Complete」になります。
※途中で止めることも一応でき、その場合はステータスが「Stopping」から「Stopped」へと変わります

Amazon SageMaker Neo の大きな特徴はモデルをどんなプラットフォームでも適用できるところにあります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/40099386-7163-fa70-f9cd-b68812dda48c.png)

Amazon SageMaker Neo はあらゆるプラットフォームに対応できるモデルを簡単にコンバージョンできます。従来の2倍以上の早さで、正確に変換を行うことが可能です。変換を行う度にモデルやプラットフォームのデータを蓄積していきます。変換後はプラットフォームを使わずに利用することが可能になるので、モデルの実行による負荷を減らすことができます。

## ユースケース

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/8cbd8b36-ceec-8d3d-44c3-e4c5180a798a.png)

Amazon SageMaker Neo は機械学習モデルをエッジでもクラウドでも利用することができます。携帯端末と IoT を例に見ていきます。Amazon SageMaker Neo は携帯や IoT の制約を緩めることで、画像処理やオブジェクト検出などのデプロイを助けてくれます。Amazon SageMaker Neo は S3 上にあるデータや送られてきたデータを使い、クラウド上でモデルを変換することができます。Amazon SageMaker Neo は作成した機械学習モデルをデータベースで好きなフォーマットで実行することも可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/321349/0ad0f26a-97c9-2f66-10cc-84470be7a2a3.png)

Amazon SageMaker Neoについてまとめると、

- 深層学習モデルや決定木モデルなどに対応
- Apache MXNet、TensorFlow、PyTorch、XGBoostなどに対応
- 様々なインスタンスタイプ、エッジデバイスにも対応
- 機械学習パフォーマンス向上と負荷を軽減しあらゆるプラットフォームに対応できる状態に変換

# まとめ
いかがでしたでしょうか。Amazon SageMaker Neo では機械学習をビジネスで実装していく上で課題だった、機械学習モデルの最適化及び標準化を解決してくれます。今まで「モデルを作成する」領域と「実装する」領域にあった距離が大幅に短縮されますね！