LoginSignup
2
0

More than 3 years have passed since last update.

Watson Studio Experiment BuilderでGPUを時間課金利用する

Last updated at Posted at 2019-08-01

はじめに

Watson StudioのExperiment BuilderはDeep Learning用のGPUを時間課金で利用するのに便利な環境です。ただ、バッチ処理の特殊な環境のため、ちょっとしたノウハウが必要です。
そのためのメモ

環境変数

メインプログラムに制御が移る時点で、いくつかの重要な環境変数がセットされています。
その意味と目的を記載します。

変数名 目的 備考
${DATA_DIR} 入力データ用 実体はCOS Bucket
${RESULT_DIR} 出力データ用 実体はCOS Bucket
${MODEL_DIR} プログラム用 制御が移ってくる時点でのカレントディレクトリ
${HOME} ユーザーホームディレクトリ 自由に書き込み可能なワーク用として使う

注意点

ディープラーニングの学習時には数万枚のオーダーの学習用イメージファイルを使う必要があります。
上の役割分担で考えると、${DATA_DIR}に置くのが自然ですが、COSに大量のファイルを置くと、パフォーマンスが悪くなり実用に耐えません。
そこで、次のような対応をすることになります。

  • 学習用データをtar/zipなどなんらかの形でアーカイブしたファイルを${DATA_DIR}に配置
  • pythonのメインプログラムを起動する前処理として、アーカイブファイルを解凍するコマンドを入れる
  • 解凍先はユーザーホーム(${HOME})配下が望ましい
  • pythonアプリ上のデータディレクトリ(学習用データの保存先)は上のステップで解凍したユーザーホーム配下を指定
  • pythonアプリに制御を入れる際には、カレントディレクトリは元の${MODEL_DIR}に戻す

コマンド指定例

解凍コマンドなど、前処理のコマンドはpythonのメインプログラム呼出し前に && でつなぎます。

例えば、次のような形にコマンド指定を行う形になります。

cd ${HOME} && unzip ${DATA_DIR}/TRAIN_IMAGES.zip  && cd ${MODEL_DIR} && python main.py --iters 1000 --input_path ${HOME}/TRAIN_IMAGES --output_path ${RESULT_DIR}

複数ジョブ同時実行時のbest practice

Experiment Builderの便利さが最大限に発揮できるのは、条件を少し変えただけの学習を同時並行でいくつも行える点です。その際は、ジョブごとに出力バケットから別にする(=Experimentを別にする)と、出力がまざらなくて便利です。

2
0
0

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
0