Edited at

ABEJA Platform向けのモデル開発を促進するためのローカル推論・学習機能

ABEJA Platform Advent Calendar 2018の6日目です。


概要

学習コードの開発は機械学習を使って独自サービスを作る上で必須になってくると思います。本記事は、ABEJA Platformのための学習コードを効率よく開発するためのtipsについて解説します。学習コードをローカル環境で動かすための、ローカル推論と学習機能について簡単に紹介します。


ABEJA Platformにおける開発

ABEJA Platformは一言で言えば、コードをアップロードすると、クラウド上で学習や推論を行なってくれるプラットフォームです。コードには、プラットフォーム特有の作法が幾つかあるため、直接はローカルのPCでは動きません。例えば、推論コードは以下のようなルールになりますし、学習も同様です。

この場合、どうやって開発をすれば良いでしょう。

直接コードをアップロードして動作を確認しようとするのでは、後ろのクラウド側のリソースの確保やログの出力に多少の時間がかかってしまいます。数分待ってインデントエラーで終了とか、残念すぎますよね。モジュール単位でならテストコードである程度は確認できるものの、学習全体パスについては実際に動かしてみないと分かりません。


ローカル学習機能と推論機能

ABEJA Platformは、ローカル推論および学習機能というものを備えています。これらは、プラットフォームにコードをアップロードせずとも、手元の環境で動作させることのできる機能です。手元のリソースで実行できるため、通常のコードと同様に立ち上げることができ、素早く動作を確認できます。これにより、素早くバグのチェックを行うことができます。バグが取れたら、最後にプラットフォームで実行することで、効率良い開発が可能となります。


ABEJA CLIのインストール

はじめに、ABEJA Platformをコンソールから叩くためのツールであるABEJA CLIをインストールします。プラットフォームを叩くだけであれば、pythonが入っていれば良いです。ただし、今回のローカル推論・学習機能を使うためにはDockerもインストールされている必要がありますので、予め環境に応じてインストールしておいてください。


CLIのインストール

ABEJA CLIは以下のようにしてインストールします。

$ curl -s https://packagecloud.io/install/repositories/abeja/platform-public/script.python.sh | bash

$ pip install abejacli


初期設定

CLIのインストールが完了したら、まずはクレデンシャルを設定します。abeja configureコマンドを叩くことで、クレデンシャルを設定できますので、自身のユーザー名・アクセストークンを入力してください。

$ abeja configure

abeja-platform-user : {User-ID}
personal-access-token: {Token}
organization-name : {Organization-ID or Organization-Name}


  • 注意点


    • user名にはuser-は入れないこと


      • 1234567890123

      • × user-1234567890123






ローカル推論推論機能の使い方

ローカル推論機能は以下の様に使います。

$ abeja model run-local \

-h main:handler \
-i abeja/all-cpu:18.10 \
--input image.jpg

-hでエントリポイントを指定します。-iは推論のベースイメージです。ABEJA PlatformのコードはDockerの技術を使っており、上記ベースイメージから作成したコンテナに、アップロードしたコードを載せて実行されます。--inputが入力データとなります。


ローカル学習機能の使い方

ローカル学習は以下のように使います。

$ abeja training train-local -h train:handler \

-i abeja/all-cpu:18.10 \
-o XXXXXXXXXX \
-d train:XXXXXXX

-hでエントリポイントを指定します。-iは学習のベースイメージです。-oはオーガニゼーション、-dは学習データの指定となります。上記であれば、IDがXXXXXXというDataSet(アノテーション済みデータ)にtrainという名前をつけることを意味します。上記を実行すると手元の環境で学習が走ります。詳細な使い方は公式ドキュメントを参照してください。なお、一度上記を実行した後に-dパラメータを変更したい場合は、--no_cacheオプションをつけて、再作成する必要があるので注意してください。


終わりに

高速な開発はPoCを進めるために重要となります。本記事ではABEJA Platform上での開発を促進するための機能であるローカル推論・学習機能の使い方について述べました。ガシガシ使っていただければ幸いです。