Yuki’s blog

自身の成果物や好きなことを発信していきたいと思います。情報系のジャンルが多いです。

Sagemaker Processingで独自のコードを複数利用方法

はじめに

Sagemaker ProcessingでSKLearnProcessorを利用する際に、複数の自作コードをコンテナに持っていって利用する方法を解説します。processing処理が書いてあるpythonスクリプトで別のpythonファイルの処理を呼び出している時とかに利用できます。

複数の自作コードをコンテナで利用する方法

SKLearnProcessorを利用した例です。

sklearn_processor = SKLearnProcessor(
    framework_version=“0.23-1”,
    role=sagemaker_role,
    instance_count=1,
    instance_type=“ml.m5.2xlarge”
    base_job_name=“test_job”

sklearn_processor.run(
    code=“preprocessing.py”,        # コンテナ内の/opt/ml/processing/input/codeに配置される
    inputs=[
        ProcessingInput(source=“./python”, destination=“/opt/ml/processing/input/code/python”)
    ]
)

code引数に渡したコードはコンテナ内の/opt/ml/processing/input/codeに配置されます。例えばprocessing.pyで./python/配下に配置されているコードをimportしてコンテナ内で実行させたい場合は、inputsとしてprocessing.pyが配置される同階層にフォルダを渡してあげます。こうすることで、複数の自作コードをsagemakerのコンテナ内に持っていけます。

注意点としてdestinationに同じパスを指定するとエラーになるので/opt/ml/processing/input/codeとは違うパスを指定する必要があります。

あとはprosessing.pyで以下のようにインポートして利用できます。

from python.hello import hello