debug-local

説明

本コマンドを実行すると、 --image で指定した環境をローカル上に構築し、ローカルに存在するモデルをその環境上で一度だけ実行します。 --input で指定したファイルの中身をモデルの入力として実行し、その結果を出力します。

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

概要

$ abeja training debug-local --handler <value>         \
                             --image <value>           \
                             --organization_id <value> \
                             --datasets <value>        \
                             --environment <value>     \
                             --volume <value>          \
                             --runtime <value>         \
                             --build-only              \
                             --no_cache                \
                             --v1                      \
                             --quiet
[--help]

オプション

--handler

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

--image

使用するイメージを指定します。 各イメージについてはこちらを参照して下さい。

--organization_id

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

--datasets

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

--environment

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

--volume

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

--runtime

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

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

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

--build-only

image のビルドだけを行い、学習自体は実行されません。 ビルドされた image は [指定した image 名]/[指定した image のタグ]/train-local-model という名前になります。

--v1

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

--no_cache

再ビルドを行い、イメージを作り直します。

--quiet

info ログの出力を抑制します。

学習をローカルでデバッグする

前提:

  • 以下のような状態になっているものとします。
$ cat main.py
def handler(context):
    dataset_alias = context.datasets
    dataset_id = dataset_alias['dataset_name']
    ...

コマンド:

$ abeja training debug-local \
    -h main:handler \
    -i abeja/all-cpu:18.10 \
    --organization_id 1234567890123 \
    --datasets dataset_1:1000000000

出力:

[info] preparing image : abeja/all-cpu:18.10
[info] building image
INFO: start installing packages from requirements.txt
INFO: packages are installed from requirements.txt
...