- 학습 데이터가 복제본으로 다운로드되지 않고 학습 작업에 스트리밍되므로 작업이 실행될 때 데이터 로드 및 설정 작업 속도가 빨라집니다.
- 학습 작업이 API를 호출하거나 응답을 처리하거나 클라이언트 측 라이브러리와 통합하지 않고도 대량의 입력과 출력을 처리할 수 있습니다.
- Cloud Storage FUSE가 대용량 파일 순차 읽기 및 분산 학습 시나리오에서 높은 처리량을 제공합니다.
사용 사례
다음과 같은 상황에서 학습 데이터를 저장하려면 Cloud Storage를 사용하는 것이 좋습니다.
- 학습 데이터는 이미지, 텍스트, 동영상과 같은 구조화되지 않은 데이터입니다.
- 학습 데이터는 TFRecord와 같은 형식의 구조화된 데이터입니다.
- 학습 데이터에는 원시 동영상과 같은 대용량 파일이 포함됩니다.
- 분산 학습을 사용합니다.
작동 원리
커스텀 학습 작업은 루트 /gcs
디렉터리의 하위 디렉터리인 Cloud Storage 버킷에 액세스할 수 있습니다. 예를 들어 gs://example-bucket/data.csv
에 학습 데이터가 있는 경우 다음과 같이 Python 학습 애플리케이션에서 버킷을 읽고 쓸 수 있습니다.
버킷 읽기
with open('/gcs/example-bucket/data.csv', 'r') as f:
lines = f.readlines()
버킷에 쓰기
with open('/gcs/example-bucket/epoch3.log', 'a') as f:
f.write('success!\n')
버킷 액세스 권한
기본적으로 커스텀 학습 작업은 Vertex AI 커스텀 코드 서비스 에이전트를 사용하여 동일한 Google Cloud 프로젝트 내의 모든 Cloud Storage 버킷에 액세스할 수 있습니다. 버킷에 대한 액세스를 제어하려면 작업에 커스텀 서비스 계정을 할당하면 됩니다. 이 경우 Cloud Storage 버킷에 대한 액세스 권한은 커스텀 서비스 계정의 Cloud Storage 역할과 연결된 권한에 따라 부여됩니다.
예를 들어 커스텀 학습 작업에 버킷 A에 대한 읽기 및 쓰기 액세스 권한을 부여하되 버킷 B에 대한 읽기 액세스 권한만 부여하려면 다음 역할이 있는 서비스 계정을 작업에 할당하면 됩니다.
- 버킷 A에
roles/storage.objectAdmin
- 버킷 B에
roles/storage.objectViewer
학습 작업이 버킷 B에 쓰기를 시도하면 '권한 거부됨' 오류가 반환됩니다.
Cloud Storage 역할에 대한 자세한 내용은 Cloud Storage에 대한 IAM 역할을 참조하세요.
권장사항
- 디렉터리의 이름을 바꾸지 마세요. 이름 변경 작업은 Cloud Storage FUSE에서 원자적으로 적용되지 않습니다. 작업이 중단되면 일부 파일이 이전 디렉터리에 남아 있습니다.
- 불필요하게 닫거나(
close()
) 파일을 플러시(flush()
)하지 않습니다. 파일을 닫거나 플러시하면 파일이 Cloud Storage로 푸시되어 비용이 발생합니다.
성능 최적화 가이드라인
Cloud Storage를 파일 시스템으로 사용할 때 최적의 읽기 처리량을 얻으려면 다음 가이드라인을 구현하는 것이 좋습니다.
- 버킷에서 객체를 찾아 열 때 발생하는 지연 시간을 줄이려면 데이터를 더 큰 파일로 저장하여 파일 개수를 줄입니다.
- 동시 학습을 사용하여 대역폭 사용률을 극대화합니다.
- 자주 액세스하는 파일을 캐시하여 읽기 성능을 개선합니다.
제한사항
Cloud Storage FUSE와 POSIX 파일 시스템의 차이점을 포함하여 Cloud Storage FUSE의 제한사항을 알아보려면 다른 파일 시스템과의 차이점을 참조하세요.
Cloud Storage에 데이터 로드
Cloud Storage로 데이터를 전송하기 위한 옵션에 대해 알아보려면 데이터 전송 옵션을 참조하세요.
다음 단계
- Cloud Storage FUSE 가격 책정에 대해 알아보세요.
- Vertex AI에서 사용할 학습 애플리케이션 준비