St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

【初めてのABEJA Platform】ABEJA Platformを使ってコード0行でresnet50のモデルをデプロイしてみる

こんにちは。

この記事は、ABEJA Platform Adevent Calendarの2日目の記事です。今回は、現在会社で利用しているサービスであるABEJA Platformを使って、学習したモデルをデプロイしてみましたので、そのやり方をまとめます*1

qiita.com

ABEJA Platformとは

f:id:St_Hakky:20181201112618p:plain

サービス概要

ABEJA Platformとは、ちょっと前に資金調達もした、ベンチャー企業のABEJAが提供する、AI・MLOpsのためのプラットフォームです。サービスの概要については、以下のページにあります。

abejainc.com


以下はサービス概要の引用。

ABEJA Platformは、AIの継続的インテグレーションに必要となる、データの取得・蓄積・アノテーション(教師データ作成)・学習・デプロイ・推論、再学習の パイプラインを一貫して実装可能なプラットフォームです。

要約されまくっているので、もう少し深くみてみます。

機械学習の運用のツラミ

サービスの売りとしては、機械学習における運用のツラミを解消すること。

機械学習とかのサービスを実際に提供して運用したことがある方ならわかると思うのですが、様々な辛いことがあると思います。例えば以下のようなことです。

  • 教師データの作成が辛い。。数千枚の画像をアノテーションするってマジかよみたいな。。。
  • 機械学習エンジニアやデータサイエンティストは必ずしも運用に適したコードがかけるわけでも、処理量に応じたインフラをいい感じに構成することができるわけではない。。。
  • 様々に学習した機械学習のモデルをデプロイするのが面倒。。。

私は、正直AWSとかは個人で使って、まぁ普通になんかするくらいは大丈夫なのですが、実際のサービスインを含めて考えてやってくれとか言われると途端にきついなぁってなりますし、自分の書いたロジックを完璧に背景など含めてエンジニアと連携するのは辛いです。

ワイは、ロジックに集中したいし、それ以外のめんどくさいことは本当にやりたくない」というのが、世のデータサイエンティストの本音だと思っています(勝手に)。

具体的にどのくらいデータを用意したら精度がどのくらい上がりそうみたいなのがわかっているケースはないと思いますが、「1万枚アノテーションしたら成果出そうだなぁ」と思った時に、やりたいと思うでしょうか。

そんなことはありません(だって、めんどくさいもの)。

f:id:St_Hakky:20181201113502p:plain

世のデータサイエンティストがKaggleを楽しむ理由はこういうところにありますよね。

やりたいことに集中しよう

ABEJA Platformでは、この手のめんどくさいことをまるっとできるっぽいです。運用にフォーカスを当てて開発されているので、データの用意*2やモデルの学習やそのデプロイ、運用までいい感じでできるらしいですね。今後もいろいろ使ってみて、試してみようと思います。

ということで、今回ABEJA Platformのサービスを社内で使えるので、実際にやってみました。

学習済みモデルをコード0行でABEJA Platformでデプロイしてみる

ABEJA Platform初心者なのと、もっとコアな使い方はこの後の皆さんがやってくれるだろうという勝手な気持ちを込めて(真顔)、一旦学習済みのモデルをデプロイしてみます。

ImageNetのデータセットで学習済みのresnet50をコード0行で登録&デプロイ

まずは最も簡単な方法から試してみます。ABEJA Platformに、ImageNetで学習済みのresnet50があったので、こちらでとりあえずデプロイしてみます。resnet50の説明とかはしませんが、とりあえずDeep Learningのモデルということだと抑えてもらえればここでは大丈夫です。

ログイン

ABEJA Platformのコンソールにログインします。登録したメールアドレスとパスワードを入れるだけの簡単なお仕事です。

モデルを登録

ログインした後に、左側のメニューから、Modelを選びます。すると、以下のような画面が出てくると思います。ここで、左上にある「Create Model」というボタンを押します。

f:id:St_Hakky:20181201120600p:plain

するとフォームが現れるので、言われるがまま入力します。今回は、ありもののモデルを使うので、resnet50を選びます。「Deploy after creating」のチェックボックスにもチェックを入れます。入力したら、右下にある「Create Model」をクリックします。

f:id:St_Hakky:20181201120147p:plain

以下のような画面が出てくると思うので、しばらく待ちます。

f:id:St_Hakky:20181201120153p:plain

なんということでしょう。もう準備完了です。

f:id:St_Hakky:20181201121005p:plain

ここまでコード0行です*3

まさかの数クリックでのモデル登録&デプロイ。。。簡単すぎる。。。

登録したモデルをコード0行でAPI化

さて、モデルの登録ができたので、これをデプロイして、API化してみます。ABEJA Platformでは、登録したモデルはAPIとして利用できるみたいですね。

Deploymentから登録したモデルを確認

左側のメニューから、「Deployment」を選択すると、登録してデプロイしたモデルの一覧がみれます。

f:id:St_Hakky:20181201122027p:plain

登録したモデルをクリックすると、以下のような画面になります。

f:id:St_Hakky:20181201122445p:plain

HTTPサービスの作成

先ほどの画面から、「Create HTTP Service」をクリックすると、以下のような画面が出てきます。

f:id:St_Hakky:20181201122726p:plain

必要事項を入力します。

f:id:St_Hakky:20181201122831p:plain

入力すると、APIが作成されるので、あとは普通にAPIとして使うだけ、って感じです。

まとめ

今回は、2日目ということもあり、最も簡単な部分を試してみました。コード0行でやってみるみたいなところをやりたかったのであれですが、普通にコードを書いて学習やデプロイなどもできます。

これならAPIを無駄に作る必要もないですし、色々と便利ですね。。

それでは〜

*1:正直もっといろいろ書くつもりだったけど、時間がなかったからとりあえずこれで。。笑

*2:厳密には、ABEJA Platformの中にあるAnnotationToolというサービスで提供しています

*3:正確には、resnet50のコードは事前にABEJAで用意してくださっているので、書いていることになるのですがそこらへんの細かいことは気にしない