MLFlowとSageMakerのAWSサンプルをデプロイするときの注意点

 MLOpsに興味があり、実験管理のためMLFlowを試してみたいと思っています。ちょうど、AWSでMLFlowを動かすサンプルが公開されていたので、これを動かしてみることにしました。サンプルをデプロイするまでに幾つか躓いたので、注意点をまとめたいと思います。

https://github.com/aws-samples/amazon-sagemaker-mlflow-fargate

Prerequisites

サンプルを動かすのに、パッケージをいくつかインストールする必要があります。

Deploying the stack

コマンドを幾つか実行する必要がありますが、一般ユーザでは権限エラーが発生するのでrootユーザで実行しました。そのため、AWSの認証ファイル(config, credentials)が/root/.awsに格納された状態でコマンドを実行することがポイントです。

ちなみに、このサンプルはDockerfileでコンテナをビルドします。DockerコンテナからDockerは利用できないので、Dockerコンテナ上でこの作業をすることはできません。私は最初Dockerコンテナ上で進めようとしていて、最後のcdk deployで下のようなエラーが発生してハマりました。

Error: write EPIPE
    at afterWriteDispatched (internal/stream_base_commons.js:156:25)
    at writeGeneric (internal/stream_base_commons.js:147:3)
    at Socket._writeGeneric (net.js:798:11)
    at Socket._write (net.js:810:8)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at Socket.Writable.write (internal/streams/writable.js:303:10)
    at /usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/shell.ts:28:19
    at new Promise (<anonymous>)
    at Object.shell (/usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/shell.ts:26:10)
    at Docker.execute (/usr/local/lib/node_modules/aws-cdk/node_modules/cdk-assets/lib/private/docker.ts:75:13