0
0

More than 3 years have passed since last update.

SageMaker 独自アルゴリズム作成方法

Last updated at Posted at 2021-06-24

今回はsagemaker-training-toolkitを使用して独自アルゴリズムをSageMaker上に作成する方法をまとめる.

予めインストールし,設定しておくパッケージ

Dockerについて

unix ///var/run/docker.sock. is the docker daemon running?

上のエラーが出た場合はdocker.sockに関する権限を設定しておく.

$ sudo chmod 755 /var/run/docker.sock

Docker imageの作成

独自アルゴリズムを使用する場合,DockerコンテナをECR上に作成する必要がある.今回はAWS提供のsagemaker-training-toolkitを使用する.


1 :train.pyを作成(詳しくはsagemaker-training-toolkitのREADMEを参照)
2 :train.pyで使用するmoduleをrequirements.txtに記入する.
3 :train.pyと同じディレクトリ内でDockerfileの作成.(Vscodeの場合は[code],Vimの場合は[vim])

$ code Dockerfile

4 :Dockerfileを編集(参考https://blog.codecamp.jp/docker-file-how-to,https://github.com/aws/sagemaker-training-toolkit](https://github.com/aws/sagemaker-training-toolkit))

point: vimは入れといた方が良い.dockerimageにしたは良いけど変更部分が反映されてるか確認できる.ECRにプッシュしてエラー出たら時間がもったいない.

# FROM:ベースとなるDockerimageの指定.詳しくはDockerHubのBase Imagesを参照.
FROM python
USER root

ENV PROGRAM_DIR=/opt/ml/code

RUN apt-get update
RUN apt-get install -y vim less

RUN pip install sagemaker-training
# /opt/ml/code ディレクトリの作成
RUN mkdir -p $PROGRAM_DIR
#作業ディレクトリの設定
WORKDIR $PROGRAM_DIR
#作業ディレクトリにrequirements.txtのコピー
COPY requirements.txt $PROGRAM_DIR/requirements.txt
#train.pyを移動
COPY train.py  $PROGRAM_DIR/train.py
#train.pyで必要パッケージをインストール
RUN pip install -r requirements.txt 
#永続的な環境変数を設定
ENV SAGEMAKER_PROGRAM train.py

5 :docker imageの作成(最後のピリオド忘れずに)

image nameは小文字のみ

$ sudo docker build -t <dockerimage Name> .

EX :docker コンテナを作成して起動してみる.

(参考https://kure.hatenablog.jp/entry/2020/12/03/162027,)

docker run --name <コンテナ名を決める> -it <Docker image名> bash

コンテナの削除

docker rm <コンテナ名>

Docker imageをECRにpushする.

1 :ECR上にプライベートレポジトリを作成する.
ECRrepo.jpg

2 :レポジトリの[プッシュコマンドを表示]をクリックし,順次コマンドをターミナル上で実行する.

注意点

tag付で:latestにするのは避けたほうが良い.結構な割合でPUSHしたはいいが,いざプログラムを実行すると変更が反映されていなくてドツボにはまる.
image.png
ファイルの内容を変更してimageをPUSHしたのにサイズが2263.25 MBから変わっていない.


SageMakerで独自アルゴリズムを作成する.

ECRにPushしたDockerImageを使用し,SageMaker上に独自アルゴリズムを作成する.
Untitled 5.png

終わりに

沼にハマったことまとめ

Docker全般

  • windowsのwslを利用してUbuntuをインストールした後Dockerをインストールしたが動かない.
docker build -t XXX .
------------------------------------------------------------
=>unix ///var/run/docker.sock. is the docker daemon running?

/var/run/に移動したがdocker.sockがない.

⇒ Docker Desktopをダウンロードする.その後Setting⇒Generalに移動し,以下のようにチェックボックスを押す.
Untitled 6.png

SageMakeでのトレーニング時

  • AlgorithmError: ExecuteUserScriptError: Command "/usr/local/bin/python train.py

Untitled 7.png
⇒[ログを表示]からエラー内容を確認する.
確認するべきチェックリスト

  • 必要なモジュールがrequirements.txt内で指定してあるか?(boto3,argparseは確実に必要.その他torchvisionなど.)
  • dockerimageをtag付するときにイメージタブをlatestのままにしていないか.
  • argである—train-dirのデフォルトは正しいか.(os.environ("SM_CHANNEL_TRAINING")⇒os.environ["SM_CHANNEL_TRAIN"])などのミス.

  • ClientError: Artifact upload failed:Error 5: Received a failed archive status. Untitled 9.png

ログ内容
Untitled 10.png
⇒トレーニングのインスタンス設定時に追加ボリュームを増やす.通常Dockerコンテナのボリュームは10 GBだが,トレーニング後にモデルの保存を行う必要があるが容量が足りなくなる(100 epochで大体20 GBくらい必要).


実行環境

OS: Ubuntu LTS 20.04,Windows Subsystem for Linux:Ubuntu LTS 20.04
IDE :Visual Studio Code,Vim

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