LoginSignup
2
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-12-05

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

概要

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

ABEJA Platformにおける開発

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

Kobito.G7FsoI.png

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

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

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

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上での開発を促進するための機能であるローカル推論・学習機能の使い方について述べました。ガシガシ使っていただければ幸いです。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2