train-local

本ページはバージョン0.11以降を利用しているユーザーにのみ有効です。 バージョン 0.11 以前の train-local コマンドは 0.11 以降から debug-local に名称が変更しました。ご利用のユーザーは debug-local を参照ください。

説明

本コマンドを実行すると、 --version で指定した学習ジョブ定義バージョンをローカル環境上で実行します。

train-local コマンドを使用するためには、 docker がインストールされている必要があります。

概要

$ 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.

オプション

-o, --organization_id, --organization-id

オーガニゼーションIDを指定します。ここで指定したオーガニゼーションIDは、ABEJA_ORGANIZATION_ID というキーで環境変数に登録され、実行する学習コードから参照可能になります。

--name

学習ジョブ定義名を指定します。

--version

呼び出す関数のパスを指定します。 --handler main:handler とした場合には、 main.py のファイル内に定義されている handler を呼び出します。 呼び出すファイルが src ディレクトリ直下に置かれている場合は、 src.main:handler になります。

--description

学習ジョブの説明です。

-d, --datasets

使用するデータセットを次のフォーマットにて指定します。 {dataset_name}:{dataset_id} 登録されたデータセットは学習コードの引数として与えられるコンテキストから参照できるようになります。

( バージョン 0.14.0 以降 ) training.yaml が存在すれば、 training.yamldatasets の値が使用されます。
このオプションで training.yamldatasets に定義されている環境変数を上書きすることができます。

-e, --environment

環境変数を指定します。登録された環境変数はコードから参照できるようになります。 例)IMAGE_WIDTH:100

( バージョン 0.14.0 以降 ) training.yaml が存在すれば、 training.yamlenvironment ( params ) の値が使用されます。
このオプションで training.yamlenvironment に定義されている環境変数を上書きすることができます。

-v, --volume

docker run コマンドの --volume オプションに相当します。 --volume /path/source/on/host:/path/destination/on/container の形式で、マウント元となるホスト側のパスとマウント先となるコンテナ側のパスを指定します。 複数指定することも可能です。 なお、 docker run コマンドの --read-only オプションには対応しておりません。

--runtime

docker run コマンドの --runtime オプションに相当します。

train-local コマンドでは学習ジョブをコンテナとして実行します。 --runtime オプションでは、そのコンテナを起動するランタイムを指定します。

例えば、コマンドを実行する環境に nvidia-docker2 がインストールされていることを前提に、 --runtime nvidia と指定することで GPU を使用する学習を実行することが出来ます。

--v1

18.10 系のカスタムイメージを使用する際にはこのオプションを与える必要があります。

--config

設定ファイルを指定します。 デフォルトではカレントディレクトリに存在する training.yaml を参照します。

学習をローカル実行する

前提:オーガニゼーション 1234567890123 に “cats_dogs” という名前の学習ジョブ定義と、その学習ジョブ定義バージョン 1 が登録されているものとします。

コマンド:

$ abeja training train-local \
    --organization_id 1234567890123 \
    --name cats_dogs \
    --version 1

出力:

[info] preparing ...
[info] start training job
{"log_id": "2e56cf01-8dee-444b-84f0-719bc5543c80", "log_level": "INFO", "timestamp": "2019-07-09T04:17:55.796421+00:00", "source": "model:run.download_training_source_code.80", "requester_id": "-", "message": "downloading training source code", "exc_info": null}
{"log_id": "7eefd9b3-56d9-4925-b5c2-aab77d77ff06", "log_level": "INFO", "timestamp": "2019-07-09T04:17:57.518125+00:00", "source": "model:run.download_training_source_code.89", "requester_id": "-", "message": "successfully downloaded training source code", "exc_info": null}
INFO: start installing packages from requirements.txt
INFO: requirements.txt not found, skipping
...

ハンドラーの環境変数

train-local で実行したハンドラー関数で使用できる環境変数については トレイニングハンドラー関数 を参照ください。