본문 바로가기
WIKI 기술 지식 베이스

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/에서 확인하실 수 있어요.