1부 - Amazon FSx for NetApp ONTAP(FSx ONTAP)를 프라이빗 S3 버킷으로 AWS SageMaker에 통합
이 섹션에서는 AWS SageMaker를 사용하여 FSx ONTAP를 프라이빗 S3 버킷으로 구성하는 방법에 대해 설명합니다.
-
작성자: *
Jian Jian(Ken), NetApp 수석 데이터 및 응용 과학자
소개
SageMaker를 예로 들어 보겠습니다. 이 페이지에서는 FSx ONTAP을 프라이빗 S3 버킷으로 구성하는 방법에 대한 지침을 제공합니다.
FSx ONTAP에 대한 자세한 내용은 이 프레젠테이션()을 참조하십시오"비디오 링크".
사용 설명서
서버 생성
SageMaker 전자 필기장 인스턴스를 만듭니다
-
AWS 콘솔을 엽니다. 검색 패널에서 SageMaker를 검색하고 서비스 * Amazon SageMaker * 를 클릭합니다.
-
노트북 탭에서 * 노트북 인스턴스 * 를 열고 주황색 버튼 * 노트북 인스턴스 만들기 * 를 클릭합니다.
-
생성 페이지에서 * Notebook instance name * 을 입력합니다. * Network * 패널을 확장하면 다른 항목은 기본값으로 두고 * VPC *, * Subnet * 및 * Security group(s) * 을 선택합니다. (이 * VPC * 및 * 서브넷 * 은 나중에 FSx ONTAP 파일 시스템을 생성하는 데 사용됩니다.) 오른쪽 하단에 있는 주황색 버튼 * 노트북 인스턴스 생성 * 을 클릭합니다.
FSx ONTAP 파일 시스템을 생성합니다
-
AWS 콘솔을 엽니다. 검색 패널에서 FSX를 검색하고 서비스 * FSx * 를 클릭합니다.
-
Create file system * 을 클릭합니다.
-
첫 번째 카드 * FSx ONTAP * 를 선택하고 * Next * 를 클릭합니다.
-
세부 정보 구성 페이지
-
표준 생성 * 옵션을 선택합니다.
-
파일 시스템 이름 * 과 * SSD 스토리지 용량 * 을 입력합니다.
-
SageMaker Notebook * 인스턴스와 동일한 * VPC * 및 * 서브넷 * 을 사용해야 합니다.
-
스토리지 가상 머신 * 이름을 입력하고 * SVM(스토리지 가상 머신)에 대한 암호 * 를 지정합니다.
-
다른 항목은 기본값으로 두고 오른쪽 하단에 있는 주황색 버튼 * Next * 를 클릭합니다.
-
검토 페이지 오른쪽 아래에 있는 주황색 버튼 * 파일 시스템 생성 * 을 클릭합니다.
-
-
FSx 파일 시스템을 구동하는 데 약 * 20-40분 * 정도 걸릴 수 있습니다.
서버 구성
ONTAP 구성
-
생성된 FSx 파일 시스템을 엽니다. 상태가 * 사용 가능 * 인지 확인하십시오.
-
관리 * 탭을 선택하고 * 관리 끝점 - IP 주소 * 및 * ONTAP 관리자 사용자 이름 * 을 유지합니다.
-
생성된 * SageMaker Notebook Instance * 를 열고 * Open JupyterLab * 을 클릭합니다.
-
Jupyter Lab 페이지에서 새 * Terminal * 을 엽니다.
-
ssh 명령 ssh <admin 사용자 이름> @ <ONTAP server IP> 를 입력하여 FSx ONTAP 파일 시스템에 로그인합니다. (사용자 이름 및 IP 주소는 2단계에서 검색됨) * 스토리지 가상 시스템 * 을 생성할 때 사용한 암호를 사용하십시오.
-
명령을 다음 순서로 실행합니다. FSx ONTAP 전용 S3 버킷 이름 * 의 이름으로 * fsxn-ONTAP * 을 사용합니다. vserver * 인수에 * 스토리지 가상 머신 이름 * 을 사용하십시오.
vserver object-store-server create -vserver fsxn-svm-demo -object-store-server fsx_s3 -is-http-enabled true -is-https-enabled false vserver object-store-server user create -vserver fsxn-svm-demo -user s3user vserver object-store-server group create -name s3group -users s3user -policies FullAccess vserver object-store-server bucket create fsxn-ontap -vserver fsxn-svm-demo -type nas -nas-path /vol1
-
아래 명령을 실행하여 FSx ONTAP 프라이빗 S3에 대한 엔드포인트 IP 및 자격 증명을 검색합니다.
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
나중에 사용할 수 있도록 끝점 IP 및 자격 증명을 유지합니다.
클라이언트 구성
-
SageMaker Notebook 인스턴스에서 새 Jupyter 노트북을 만듭니다.
-
아래 코드를 사용하여 FSx ONTAP 프라이빗 S3 버킷에 파일을 업로드하는 해결 방법으로 사용하십시오. 포괄적인 코드 예제는 이 노트북을 참조하십시오. "fsxn_demo.ipynb 를 참조하십시오"
# Setup configurations # -------- Manual configurations -------- seed: int = 77 # Random seed bucket_name: str = 'fsxn-ontap' # The bucket name in ONTAP aws_access_key_id = '<Your ONTAP bucket key id>' # Please get this credential from ONTAP aws_secret_access_key = '<Your ONTAP bucket access key>' # Please get this credential from ONTAP fsx_endpoint_ip: str = '<Your FSx ONTAP IP address>' # Please get this IP address from FSx ONTAP # -------- Manual configurations -------- # Workaround ## Permission patch !mkdir -p vol1 !sudo mount -t nfs $fsx_endpoint_ip:/vol1 /home/ec2-user/SageMaker/vol1 !sudo chmod 777 /home/ec2-user/SageMaker/vol1 ## Authentication for FSx ONTAP as a Private S3 Bucket !aws configure set aws_access_key_id $aws_access_key_id !aws configure set aws_secret_access_key $aws_secret_access_key ## Upload file to the FSx ONTAP Private S3 Bucket %%capture local_file_path: str = <Your local file path> !aws s3 cp --endpoint-url http://$fsx_endpoint_ip /home/ec2-user/SageMaker/$local_file_path s3://$bucket_name/$local_file_path # Read data from FSx ONTAP Private S3 bucket ## Initialize a s3 resource client import boto3 # Get session info region_name = boto3.session.Session().region_name # Initialize Fsxn S3 bucket object # --- Start integrating SageMaker with FSXN --- # This is the only code change we need to incorporate SageMaker with FSXN s3_client: boto3.client = boto3.resource( 's3', region_name=region_name, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, use_ssl=False, endpoint_url=f'http://{fsx_endpoint_ip}', config=boto3.session.Config( signature_version='s3v4', s3={'addressing_style': 'path'} ) ) # --- End integrating SageMaker with FSXN --- ## Read file byte content bucket = s3_client.Bucket(bucket_name) binary_data = bucket.Object(data.filename).get()['Body']
이것으로 FSx ONTAP와 SageMaker 인스턴스 간의 통합을 마치겠습니다.
유용한 디버깅 체크리스트
-
SageMaker 노트북 인스턴스와 FSx ONTAP 파일 시스템이 동일한 VPC에 있는지 확인합니다.
-
ONTAP에서 * set dev * 명령을 실행하여 권한 수준을 * dev * 로 설정해야 합니다.
FAQ(2023년 9월 27일 기준)
Q: 파일을 FSx ONTAP에 업로드할 때 "* CreateMultipartUpload 작업을 호출할 때 오류가 발생했습니다(구현되지 않음). 요청한 S3 명령이 구현되지 않았습니다 * " 오류가 발생하는 이유는 무엇입니까?
A: 전용 S3 버킷으로, FSx ONTAP는 최대 100MB의 파일 업로드를 지원합니다. S3 프로토콜을 사용할 때는 100MB 이상의 파일을 100MB 청크로 나누고 'CreateMultipartUpload' 기능을 호출한다. 그러나 현재 FSx ONTAP 프라이빗 S3의 구현에서는 이 기능을 지원하지 않습니다.
Q: 파일을 FSx ONTAP에 업로드할 때 "* PutObject 작업을 호출할 때 오류가 발생했습니다(액세스 거부). * " 오류가 발생하는 이유는 무엇입니까?
A: SageMaker 노트북 인스턴스에서 FSx ONTAP 프라이빗 S3 버킷에 액세스하려면 AWS 자격 증명을 FSx ONTAP 자격 증명으로 전환합니다. 그러나 인스턴스에 쓰기 권한을 부여하려면 버킷을 마운트하고 'chmod' 셸 명령을 실행하여 권한을 변경하는 해결 방법이 필요합니다.
Q: FSx ONTAP 전용 S3 버킷을 다른 SageMaker ML 서비스와 어떻게 통합할 수 있습니까?
A: 안타깝게도 SageMaker 서비스 SDK는 전용 S3 버킷의 끝점을 지정하는 방법을 제공하지 않습니다. 따라서 FSx ONTAP S3는 Sagemaker 데이터 랭글러, Sagemaker Clarify, Sagemaker 글루, Sagemaker Athena, Sagemaker AutoML 등의 SageMaker 서비스와 호환되지 않습니다.