経緯
機械学習の学習済みモデルなど大きいバイナリファイルをAmazon SageMaker上で使用しようとしたが、直接アップロードしようとすると大きすぎるためか途中でセッションが途切れてしまいアップロードすることが出来なかった。大きいファイルはS3を使わないといけないのかと思い、S3に取り込んだところまでは良かったが結局Sagemakerに転送しなければ意味がないのだが、ちょっと手こずったので備忘録。
##コード
このコードで 'S3のバケット名' の下にあるバイナリファイルをSageMakerのカレントディレクトリの下のmodelの下に転送。
S3toSagemaker
import os
import boto3
import io
import sagemaker
s3_client = boto3.client('s3')
data_bucket_name='S3のバケット名'
file = 'S3のバケットの下にあるファイル名'
response = s3_client.get_object(Bucket=data_bucket_name, Key=file)
response_body = response["Body"].read()
type(response_body)
with open('./model/'+file, mode='wb') as f:
f.write(response_body)
##そもそも
SageMakerはデフォルトの容量が5Gなので、最初にインスタンスを立ち上げる時に50Gなり大き目に領域を設定しておく必要がある(後からインスタンスの容量設定を変えられない模様)。