LoginSignup
0
0

More than 3 years have passed since last update.

SageMakerの学習インスタンスのディレクトリ構成

Last updated at Posted at 2020-08-04

概要

AWS SageMakerで学習用インスタンスを立ち上げ、学習させる際に
依存ライブラリや独自のソースコードを使うための方法をまとめる。

ディレクトリ構成

- notebook.ipynb
- src
 - train.py
 - requirements.txt
 - my_source/
- lib
 - library/

Notebook

今回はMXNetの例を用いる。
notebookで学習インスタンスを立ち上げるパラメータを以下のように設定する。
パラメータsource_dirdependenciesが依存するディレクトリの設定である。

notebook.py
from sagemaker.mxnet import MXNet

gluon_bert = MXNet("train.py", 
                  role=sagemaker.get_execution_role(), 
                  source_dir = "src",
                  train_instance_count=1, 
                  train_instance_type="ml.m4.xlarge",
                  framework_version="1.6.0",
                  dependencies=['lib'],
                  distributions={'parameter_server': {'enabled': True}},
                  py_version = "py3",
                  hyperparameters={'batch-size': 16, 
                                   'epochs': 1, 
                                   'log-interval': 1})

src

このディレクトリには、

  • 学習用コードtrain.py
  • pipでインストールするリストrequirements.txt
  • train.pyで依存する独自コード(※my_source/などディレクトリに分けてもよい)

等を格納する。
requirements.txtは学習時にインストールされる。

lib

srcとの違いはlibにはnotebook上でインストールしたライブラリを入れる点である。
例えばgithubからcloneし、元コードを書き換える必要がある場合に使用する。
注意する点は、notenookインスタンスのOSはamazon linuxであり、学習インスタンスのOSはubuntsである点である。
そのため、OSに依存するパッケージや特に書き換えが必要ない場合はrequirements.txtに書く方ことをオススメする。

学習用コードの書き換え

libのディレクトリを反映するためtrain.py内でpathを通す。

import sys
sys.path.append('./lib/')

参考文献

Amazon SageMaker コンテナライブラリを使用した Docker コンテナの作成

0
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
0
0