ローカル学習

本頁では、 ローカル学習 ( train-local ) の利用方法について説明します。

※利用の前提として、ABEJA Platform CLIとDockerのインストールが必須となります。ABEJA Platform CLIのインストール方法はこちら

ローカル学習とは


学習はローカル環境の機械学習環境(GPUマシンなど)で実施、モデル管理やAPI提供をABEJA Platformで実施といった既存のリソースを有効活用できる機能となります。 image.png

training.yaml の作成


ローカル学習には「training.yaml」 が必須となります。以下のコマンドを実行し、training.yamlを作成します。

$ abeja training init [学習ジョブ名]

コマンドを実行後、ディレクトリ上に training.yaml が作成されますので、以下サンプルを参考に、必要に応じて編集してください。
training.yamlの記載方法はこちらをご参考ください。

training.yaml (サンプル)

name: train-local-demo
handler: train:handler
image: abeja-inc/all-cpu:18.10
params:
  NUM_EPOCHS: '1'
  C: '1'
  MODEL_FILENAME: model.pkls

     

学習ジョブ定義の作成


training.yaml がある状態で以下のコマンドを実行します。

$ abeja training create-job-definition

~/.abeja/config にて設定されているオーガニゼーションに training.yaml で定義した学習ジョブ定義が作成されます。

  

学習ジョブ定義バージョンの作成


学習コードに handler 関数を作成します。handlerについての説明はこちら 学習コードが作成できたら次は学習ジョブ定義バージョンの作成をします。

$ abeja training create-version

ローカルで学習ジョブを実行


$ abeja training train-local --help
Usage: abeja training train-local [OPTIONS]

  Local train commands

Options:
  -o, --organization_id, --organization-id TEXT
                                  Organization ID, organization_id of current
                                  credential organization is used by default
                                  [required]
  --name TEXT                     Training Job Definition Name  [required]
  --version TEXT                  Training Job Definition Version  [required]
  --description TEXT              Training Job description
  -d, --datasets DATASETPARAMSTRING
                                  Datasets name
  -e, --environment ENVIRONMENTSTRING
                                  Environment variables
  -v, --volume VOLUMEPARAMSTRING  Volume driver options, ex) /path/source/on/h
                                  ost:/path/destination/on/container
  --v1                            Specify if you use old custom runtime image
  --runtime TEXT                  Runtime, equivalent to docker run
                                  `--runtime` option
  --config PATH                   Read Configuration from PATH. By default
                                  read from `training.yaml`
  --help                          Show this message and exit.

( コマンド実行するディレクトリにtraining.yamlが存在する場合、 training.yaml に定義されている値が優先されて使用されます。 )

■コマンド例


■training.yaml が定義された状態で存在する場合
$ abeja training train-local --version 1 --environment NUM_EPOCHS:100 --environment C:3

上記のコマンドを実行した後は、実行した学習ジョブ・ログ・学習結果などが管理コンソールにて確認できるようになります。
( --environment で学習ジョブ定義バージョンに設定されているバージョンを上書きすることができます

■ローカルのデータを使用する場合
$ abeja training train-local --version 1 --volume `pwd`:/data --environment NUM_EPOCHS:100 --environment C:3
# 例えばカレントディレクトリにデータが存在して、学習ジョブ内の /data に配置したい場合

上記のコマンドで実行するとコマンドを実行する(ホスト側の)環境のデータを学習ジョブが実行される環境(コンテナ)にマウントすることができます。

注意点


  • ログは現時点ではコンソールにリアルタイムで送信されません
  • ローカル学習の場合には TensorBoard が利用できません
  • --volume オプションでマウントするディレクトリは read only にはできません
  • 今までの train-local は debug-local に名前が変更されています