lakeFS와 Amazon SageMaker 함께 사용하기
Amazon SageMaker는 ML을 위해 특별히 설계된 폭넓은 기능 세트를 한곳에 모아, ML 모델을 빠르게 준비·구축·학습·배포할 수 있게 도와줘요. lakeFS를 S3 엔드포인트로 사용해 SageMaker에서 데이터를 업로드·다운로드할 수 있어요.
출처: 문서
본문
Amazon SageMaker는 ML 전용으로 만들어진 다양한 기능을 모아서, ML 모델을 빠르게 준비하고, 구축하고, 학습시키고, 배포할 수 있게 도와줘요.
세션과 클라이언트 초기화
lakeFS를 엔드포인트로 사용해서 Sagemaker 세션과 S3 클라이언트를 초기화해요:
import sagemaker
import boto3
endpoint_url = '<LAKEFS_ENDPOINT>'
aws_access_key_id = '<LAKEFS_ACCESS_KEY_ID>'
aws_secret_access_key = '<LAKEFS_SECRET_ACCESS_KEY>'
repo = 'example-repo'
sm = boto3.client('sagemaker',
endpoint_url=endpoint_url,
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key)
s3_resource = boto3.resource('s3',
endpoint_url=endpoint_url,
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key)
session = sagemaker.Session(boto3.Session(), sagemaker_client=sm, default_bucket=repo)
session.s3_resource = s3_resource
사용 예제
학습/테스트 데이터 업로드
만들어 둔 세션으로 'main' 브랜치에 데이터를 업로드해 볼게요:
prefix = "/prefix-within-branch"
branch = 'main'
train_file = 'train_data.csv';
train_data.to_csv(train_file, index=False, header=True)
train_data_s3_path = session.upload_data(path=train_file, key_prefix=branch + prefix + "/train")
test_file = 'test_data.csv';
test_data_no_target.to_csv(test_file, index=False, header=False)
test_data_s3_path = session.upload_data(path=test_file, key_prefix=branch + prefix + "/test")
오브젝트 다운로드
lakeFS 연동을 활용하면 원하는 범위의 데이터만 골라 내려받을 수 있어요:
repo = 'example-repo'
prefix = "/prefix-to-download"
branch = 'main'
localpath = './' + branch
session.download_data(path=localpath, bucket=repo, key_prefix = branch + prefix)
Note
Autopilot 잡 같은 고급 AWS SageMaker 기능은 내부적으로 캡슐화되어 있어서 S3 엔드포인트를 재정의할 방법이 없어요. 다만 lakeFS에서 필요한 입력을 S3로 내보내는 방법으로 해결할 수는 있어요.
lakeFS가 지원하지 않는 SageMaker 기능을 사용 중이라면, 여러분의 이야기를 꼭 들려주세요.
더 알아보기 (Learn more)
공식 문서의 자세한 내용은 https://docs.lakefs.io/integrations/sagemaker/에서 확인하실 수 있어요.