이 가이드에서는 Google Kubernetes Engine (GKE)에서 Cloud Storage FUSE CSI 드라이버의 성능을 최적화하는 방법을 보여줍니다.
Cloud Storage FUSE는 유연성과 확장성을 제공하지만 최적의 성능을 얻으려면 신중한 구성과 조정이 중요합니다. Cloud Storage FUSE의 성능은 지연 시간, 처리량, 일관성 측면에서 POSIX 파일 시스템과 다를 수 있습니다. 조정의 목표는 메타데이터 작업의 오버헤드를 최소화하고 데이터 액세스의 효율성을 극대화하는 것입니다. Cloud Storage 버킷의 데이터를 사용하는 AI/ML 애플리케이션을 실행하는 경우 CSI 드라이버를 조정하면 AI/ML 애플리케이션의 학습 및 추론 시간이 단축될 수 있습니다.
이 가이드는 Cloud Storage 버킷에 저장된 데이터에 액세스하는 애플리케이션의 성능을 개선하려는 개발자 및 머신러닝 (ML) 엔지니어를 위해 작성되었습니다.
이 페이지를 읽기 전에 Cloud Storage, Kubernetes, Cloud Storage FUSE CSI 드라이버의 기본사항을 숙지해야 합니다. 사용하려는 특정 기능의 GKE 버전 요구사항도 확인하세요.
마운트 옵션 구성
Cloud Storage FUSE CSI 드라이버는 Cloud Storage 버킷이 로컬 파일 시스템에 마운트되는 방식을 구성하는 마운트 옵션을 지원합니다. 지원되는 마운트 옵션의 전체 목록은 Cloud Storage FUSE CLI 파일 문서를 참고하세요.
사용 중인 볼륨 유형에 따라 다음과 같은 방법으로 마운트 옵션을 지정할 수 있습니다.
CSI 임시 볼륨
CSI 임시 볼륨을 사용하는 경우 포드 매니페스트의 spec.volumes[n].csi.volumeAttributes.mountOptions
필드에 마운트 옵션을 지정합니다.
마운트 옵션은 플래그를 쉼표로 구분하고 공백 없이 문자열로 지정해야 합니다. 예를 들면 다음과 같습니다.
mountOptions: "implicit-dirs,file-cache:enable-parallel-downloads:true,file-cache:download-chunk-size-mb:3"
영구 볼륨
영구 볼륨을 사용하는 경우 PersistentVolume 매니페스트의 spec.mountOptions
필드에 마운트 옵션을 지정합니다.
마운트 옵션을 목록으로 지정해야 합니다. 예를 들면 다음과 같습니다.
mountOptions:
- implicit-dirs
- file-cache:enable-parallel-downloads:true
- file-cache:download-chunk-size-mb:3
마운트 고려사항
CSI 드라이버로 마운트를 구성할 때는 다음 사항을 고려하세요.
일반적인 고려사항
app-name
,temp-dir
,foreground
,log-file
,log-format
,key-file
,token-url
,reuse-token-from-url
플래그는 허용되지 않습니다.- Cloud Storage FUSE는 기본적으로 암시적 디렉터리를 표시하지 않습니다.
- 전체 버킷 대신 버킷의 디렉터리를 마운트하려면
only-dir=relative/path/to/the/bucket/root
플래그를 사용하여 디렉터리 상대 경로를 전달합니다.
보안 및 권한
- 포드 또는 컨테이너에 대한 보안 컨텍스트를 사용하거나 컨테이너 이미지에서 루트가 아닌 사용자 또는 그룹을 사용하는 경우
uid
및gid
마운트 플래그를 설정해야 합니다. 또한file-mode
및dir-mode
마운트 플래그를 사용하여 파일 시스템 권한을 설정해야 합니다. Cloud Storage FUSE 파일 시스템에 대해chmod
,chown
또는chgrp
명령어를 실행할 수 없으므로 루트가 아닌 사용자 또는 그룹에 액세스하려면uid
,gid
,file-mode
,dir-mode
마운트 플래그를 사용하세요.
Linux 커널 마운트 옵션
- Linux 커널 마운트 옵션을 구성해야 하는 경우
o
플래그를 사용하여 옵션을 전달할 수 있습니다. 예를 들어 마운트된 파일 시스템에서 바이너리의 직접 실행을 허용하지 않으려면o=noexec
플래그를 설정합니다. 각 옵션에는 개별 플래그(예:o=noexec
,o=noatime
)가 필요합니다.exec
,noexec
,atime
,noatime
,sync
,async
,dirsync
옵션만 허용됩니다.
캐싱 구성
이 섹션에서는 Cloud Storage FUSE CSI 드라이버에서 성능을 개선하기 위해 사용할 수 있는 캐싱 옵션을 간략하게 설명합니다.
파일 캐싱
파일 캐싱과 함께 Cloud Storage FUSE CSI 드라이버를 사용하여 Cloud Storage 버킷의 소형 파일을 처리하는 애플리케이션의 읽기 성능을 개선할 수 있습니다. Cloud Storage FUSE 파일 캐시 기능은 개발자가 선택한 캐시 스토리지에서 더 빠른 파일 반복 읽기를 제공하는 클라이언트 기반 읽기 캐시입니다.
가격 대비 성능 니즈에 따라 로컬 SSD, 영구 디스크 기반 스토리지, RAM 디스크 (메모리)를 포함하여 읽기 캐시를 위한 다양한 스토리지 옵션 중에서 선택할 수 있습니다.
파일 캐싱 사용 설정 및 사용
기본적으로 GKE에서는 파일 캐싱 기능이 사용 중지되어 있습니다. Cloud Storage FUSE CSI 드라이버로 파일 캐싱을 사용 설정하려면 선택해야 합니다.
파일 캐싱을 사용 설정하고 제어하려면 볼륨 속성 fileCacheCapacity
을 설정하거나 file-cache:max-size-mb
마운트 옵션을 사용합니다.
GKE는 노드에 구성된 임시 스토리지로 지원되는 Cloud Storage FUSE 파일 캐싱에 기본적으로 emptyDir
볼륨을 사용합니다. 노드에 연결된 부팅 디스크 또는 노드의 로컬 SSD일 수 있습니다. 노드에서 로컬 SSD를 사용 설정하면 GKE는 로컬 SSD를 사용하여 emptyDir
볼륨을 백업합니다.
읽기 작업에서 파일 캐싱의 기본 emptyDir
볼륨을 대체하도록 사이드카 컨테이너의 커스텀 읽기 캐시 볼륨을 구성할 수 있습니다.
파일 캐싱 권장사항에 관한 자세한 내용은 Cloud Storage FUSE 성능을 참고하세요.
파일 캐시를 백업할 저장소 선택
파일 캐시를 백업할 스토리지를 선택하려면 다음 고려사항을 참고하세요.
로컬 SSD를 지원하는 GPU 및 CPU VM 제품군 (예: A3 VM)의 경우 로컬 SSD를 사용하는 것이 좋습니다.
- A3 이상 VM의 경우 GKE는 포드가 사용할 로컬 SSD를 자동으로 설정합니다.
- VM 제품군에서 로컬 SSD를 지원하지 않는 경우 GKE는 캐싱에 부팅 디스크를 사용합니다. GKE의 부팅 디스크에 대한 기본 디스크 유형은
pd-balanced
입니다. VM 제품군에서 로컬 SSD를 지원하지만 기본적으로 로컬 SSD에 임시 스토리지가 사용 설정되어 있지 않은 경우 노드 풀에서 로컬 SSD를 사용 설정할 수 있습니다. 이는 N1 및 N2 머신과 같은 1세대 및 2세대 머신 계열에 적용됩니다. 자세한 내용은 로컬 SSD로 클러스터 만들기를 참고하세요.
노드에 로컬 SSD의 임시 스토리지가 사용 설정되어 있는지 확인하려면 다음 명령어를 실행합니다.
kubectl describe node <code><var>NODE_NAME</var></code> | grep "cloud.google.com/gke-ephemeral-storage-local-ssd"
TPU VM 제품군(특히 v6 이상)의 경우 VM 인스턴스의 RAM이 더 크기 때문에 최상의 성능을 위해 파일 캐시로 RAM을 사용하는 것이 좋습니다.
- RAM을 사용할 때는 메모리 부족 (OOM) 오류에 주의하세요. 이 오류는 Pod 중단을 일으킵니다. Cloud Storage FUSE는 메모리를 사용하기 때문에 사이드카 컨테이너를 사용하도록 파일 캐시를 설정하면 OOM 오류가 발생할 수 있습니다. 이러한 시나리오를 방지하려면 파일 캐시 구성
file-cache:max-size-mb
필드를 더 작은 값으로 조정합니다. - 다른 TPU 제품군의 경우
pd-balanced
또는pd-ssd
을 사용하는 것이 좋습니다. GKE의 부팅 디스크의 기본 디스크 유형은pd-balanced
입니다.
- RAM을 사용할 때는 메모리 부족 (OOM) 오류에 주의하세요. 이 오류는 Pod 중단을 일으킵니다. Cloud Storage FUSE는 메모리를 사용하기 때문에 사이드카 컨테이너를 사용하도록 파일 캐시를 설정하면 OOM 오류가 발생할 수 있습니다. 이러한 시나리오를 방지하려면 파일 캐시 구성
부팅 디스크를 캐싱에 사용하면 성능이 저하되고 예기치 않게 종료될 수 있으므로 사용하지 마세요. 대신 영구 디스크로 지원되는 PersistentVolume을 사용하는 것이 좋습니다.
RAM 디스크 기반 파일 캐싱 사용
충분히 큰 RAM을 사용하는 TPU VM을 사용하는 경우 파일 캐싱 또는 병렬 다운로드에 RAM 디스크를 사용하여 부팅 디스크 또는 영구 디스크 사용 오버헤드를 줄일 수 있습니다.
Cloud Storage FUSE CSI 드라이버에서 RAM 디스크를 사용하려면 매니페스트에 다음을 추가합니다.
volumes:
- name: gke-gcsfuse-cache
emptyDir:
medium: Memory
통계 캐시
Cloud Storage FUSE CSI 드라이버는 크기 및 수정 시간과 같은 파일 메타데이터를 캐시하여 성능을 향상시킵니다. CSI 드라이버는 기본적으로 이 통계 캐시를 사용 설정하고 Cloud Storage에서 정보를 반복적으로 요청하는 대신 로컬에 정보를 저장하여 지연 시간을 줄입니다. 최대 크기 (기본값: 32MB)와 데이터가 캐시에 유지되는 시간 (기본값: 60초)을 구성할 수 있습니다. 메타데이터 캐시를 미세 조정하면 Cloud Storage에 대한 API 호출을 줄여 네트워크 트래픽과 지연 시간을 최소화하여 애플리케이션 성능과 효율성을 개선할 수 있습니다.
통계 캐싱 권장사항에 관한 자세한 내용은 Cloud Storage FUSE 캐싱 개요를 참고하세요.
메타데이터 미리 가져오기를 사용하여 메타데이터 캐시 미리 채우기
메타데이터 미리 가져오기 기능을 사용하면 Cloud Storage FUSE CSI 드라이버가 Cloud Storage 버킷의 객체에 관한 관련 메타데이터를 Cloud Storage FUSE 캐시로 사전에 로드할 수 있습니다. 이 접근 방식은 Cloud Storage 호출을 줄여주며 AI/ML 학습 워크로드와 같이 파일이 많은 대규모 데이터 세트에 액세스하는 애플리케이션에 특히 유용합니다.
이 기능을 사용하려면 GKE 버전 1.31.3-gke.1162000 이상이 필요합니다.
메타데이터 미리 로드로 인한 성능 향상을 확인하려면 메타데이터 캐시 항목의 TTL(수명) 값을 무제한으로 설정해야 합니다. 일반적으로 TTL을 설정하면 캐시된 콘텐츠가 비활성화되지 않습니다. TTL을 무제한으로 설정하는 경우 버킷의 콘텐츠를 비대역으로 변경하지 않도록 주의해야 합니다. 즉, 다른 워크로드나 행위자가 워크로드를 수정하도록 허용해서는 안 됩니다. 이의외 변경사항은 로컬에서 표시되지 않으며 일관성 문제를 일으킬 수 있습니다.
메타데이터 미리 가져오기를 사용 설정하려면 다음과 같이 구성을 변경합니다. 많이 읽히는 볼륨에는 이 기능을 사용 설정하는 것이 좋습니다.
- 볼륨 속성
gcsfuseMetadataPrefetchOnMount: true
를 설정합니다. - 다음 마운트 옵션을 업데이트합니다.
metadata-cache:stat-cache-max-size-mb:-1
: 통계 캐시 용량 한도를 설정 해제합니다.metadata-cache:type-cache-max-size-mb:-1
: 유형 캐시 용량 한도를 설정 해제합니다.file-system:kernel-list-cache-ttl-secs:-1
: 커널 목록 캐시 항목이 만료되지 않도록 합니다.metadata-cache:ttl-secs:-1
: 캐시된 메타데이터 항목이 만료되지 않도록 합니다.
예를 보려면 동시 다운로드를 사용하여 대용량 파일 읽기 성능 개선의 코드 샘플을 참고하세요.
목록 캐시
애플리케이션의 디렉터리 등록정보 속도를 높이려면 목록 캐싱을 사용 설정하세요. 이 기능은 디렉터리 등록정보를 메모리에 저장하므로 반복되는 요청을 더 빠르게 처리할 수 있습니다. 목록 캐시는 기본적으로 사용 중지되어 있습니다. 마운트 옵션에서 kernel-list-cache-ttl-secs
매개변수를 설정하여 사용 설정할 수 있습니다. 등록정보가 캐시되는 기간을 정의합니다.
병렬 다운로드를 사용하여 대용량 파일 읽기 성능 개선
Cloud Storage FUSE 병렬 다운로드를 사용하면 멀티스레드 다운로드를 위해 Cloud Storage에서 대용량 파일을 더 빠르게 읽을 수 있습니다. Cloud Storage FUSE 병렬 다운로드는 크기가 1GB를 초과하는 읽기가 있는 모델 서빙 사용 사례에 특히 유용할 수 있습니다.
일반적인 예시는 다음과 같습니다.
- 인스턴스 부팅 중에 모델 다운로드를 가속화하기 위해 대용량 프리페치 버퍼가 필요한 모델 서빙
- 여러 대용량 파일에 대한 일회성 액세스를 개선하기 위해 읽기 전용 데이터 캐시가 필요한 체크포인트 복원
단일 스레드 대용량 파일 읽기를 실행하는 애플리케이션에는 병렬 다운로드를 사용하세요. 읽기 병렬 처리가 많은 애플리케이션(9개 이상의 스레드 사용)에서는 이 기능으로 인해 성능이 저하될 수 있습니다.
Cloud Storage FUSE CSI 드라이버에서 병렬 다운로드를 사용하려면 다음 단계를 따르세요.
파일 캐싱 사용 설정 및 사용에 설명된 대로 파일 캐싱이 사용 설정된 클러스터를 만듭니다.
매니페스트에서 마운트 옵션을 사용하여 다음과 같은 추가 설정을 구성하여 동시 다운로드를 사용 설정합니다.
(선택사항) 필요한 경우 다음 볼륨 속성을 조정해 보세요.
- 임의 읽기 또는 부분 읽기의 경우
file-cache:cache-file-for-range-read
metadata-cache:stat-cache-max-size-mb
및metadata-cache:type-cache-max-size-mb
: 학습 워크로드
- 임의 읽기 또는 부분 읽기의 경우
액세스 제어 확인에서 할당량 소비 줄이기
기본적으로 CSI 드라이버는 액세스 제어 검사를 실행하여 Pod 서비스 계정이 Cloud Storage 버킷에 액세스할 수 있는지 확인합니다. 이로 인해 Kubernetes Service API, 보안 토큰 서비스, IAM 호출의 형태로 추가 오버헤드가 발생합니다. GKE 버전 1.29.9-gke.1251000부터는 볼륨 속성 skipCSIBucketAccessCheck
를 사용하여 이러한 중복 검사를 건너뛰고 할당량 사용량을 줄일 수 있습니다.
추론 게재 예시
다음 예는 추론 제공을 위해 병렬 다운로드를 사용 설정하는 방법을 보여줍니다.
다음 사양으로 PersistentVolume 및 PersistentVolumeClaim 매니페스트를 만듭니다.
apiVersion: v1 kind: PersistentVolume metadata: name: serving-bucket-pv spec: accessModes: - ReadWriteMany capacity: storage: 64Gi persistentVolumeReclaimPolicy: Retain storageClassName: example-storage-class claimRef: namespace: NAMESPACE name: serving-bucket-pvc mountOptions: - implicit-dirs #avoid if list cache enabled and doing metadata prefetch - metadata-cache:ttl-secs:-1 - metadata-cache:stat-cache-max-size-mb:-1 - metadata-cache:type-cache-max-size-mb:-1 - file-cache:max-size-mb:-1 - file-cache:cache-file-for-range-read:true - file-system:kernel-list-cache-ttl-secs:-1 - file-cache:enable-parallel-downloads:true csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAME volumeAttributes: skipCSIBucketAccessCheck: "true" gcsfuseMetadataPrefetchOnMount: "true" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: serving-bucket-pvc namespace: NAMESPACE spec: accessModes: - ReadWriteMany resources: requests: storage: 64Gi volumeName: serving-bucket-pv storageClassName: example-storage-class
다음 값을 바꿉니다.
NAMESPACE
: 포드를 배포할 Kubernetes 네임스페이스입니다.BUCKET_NAME
: Cloud Storage 버킷에 대한 액세스를 구성할 때 지정한 Cloud Storage 버킷 이름입니다. Kubernetes ServiceAccount가 액세스할 수 있는 모든 버킷을 마운트하도록 밑줄 (_
)을 지정할 수 있습니다. 자세한 내용은 Cloud Storage FUSE 문서의 동적 마운트를 참고하세요.
클러스터에 매니페스트를 적용합니다.
kubectl apply -f PV_FILE_PATH
PV_FILE_PATH
를 YAML 파일의 경로로 바꿉니다.로컬 SSD 지원 파일 캐싱 또는 RAM 디스크 지원 파일 캐싱 중 어떤 것을 사용하느냐에 따라 다음 사양으로 포드 매니페스트를 만들어 PersistentVolumeClaim을 사용합니다.
로컬 SSD
apiVersion: v1 kind: Pod metadata: name: gcs-fuse-csi-example-pod namespace: NAMESPACE annotations: gke-gcsfuse/volumes: "true" gke-gcsfuse/cpu-limit: "0" gke-gcsfuse/memory-limit: "0" gke-gcsfuse/ephemeral-storage-limit: "0" spec: containers: # Your workload container spec ... volumeMounts: - name: serving-bucket-vol mountPath: /serving-data readOnly: true serviceAccountName: KSA_NAME volumes: - name: serving-bucket-vol persistentVolumeClaim: claimName: serving-bucket-pvc
RAM 디스크
apiVersion: v1 kind: Pod metadata: name: gcs-fuse-csi-example-pod namespace: NAMESPACE annotations: gke-gcsfuse/volumes: "true" gke-gcsfuse/cpu-limit: "0" gke-gcsfuse/memory-limit: "0" gke-gcsfuse/ephemeral-storage-limit: "0" spec: containers: # Your workload container spec ... volumeMounts: - name: serving-bucket-vol mountPath: /serving-data readOnly: true serviceAccountName: KSA_NAME volumes: - name: gke-gcsfuse-cache # gcsfuse file cache backed by RAM Disk emptyDir: medium: Memory - name: serving-bucket-vol persistentVolumeClaim: claimName: serving-bucket-pvc
클러스터에 매니페스트를 적용합니다.
kubectl apply -f POD_FILE_PATH
POD_FILE_PATH
를 YAML 파일의 경로로 바꿉니다.
볼륨 속성 구성
볼륨 속성을 사용하면 Cloud Storage FUSE CSI 드라이버의 특정 동작을 구성할 수 있습니다.
Cloud Storage FUSE CSI 드라이버에서는 Cloud Storage FUSE 구성 파일을 직접 지정할 수 없습니다. Cloud Storage FUSE CSI 볼륨 속성을 사용하여 구성 파일의 일부 필드를 구성할 수 있습니다. CSI 드라이버는 볼륨 속성 값을 구성 파일 필드로 변환하는 작업을 처리합니다.
지원되는 볼륨 속성의 전체 목록은 볼륨 속성 참조를 참고하세요.
볼륨 속성은 다음과 같은 방법으로 지정할 수 있습니다.
- 영구 볼륨을 사용하는 경우 PersistentVolume 매니페스트의
spec.csi.volumeAttributes
필드에서 - CSI 임시 볼륨을 사용하는 경우
spec.volumes[n].csi.volumeAttributes
필드에서
매니페스트에서 볼륨 속성은 키-값 쌍으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.
volumeAttributes:
mountOptions: "implicit-dirs"
fileCacheCapacity: "-1"
gcsfuseLoggingSeverity: warning
Cloud Storage FUSE 측정항목
이제 GKE Monitoring API를 통해 다음 Cloud Storage FUSE 측정항목을 사용할 수 있습니다. 라벨, 유형, 단위 등 Cloud Storage FUSE 측정항목에 관한 자세한 내용은 GKE 시스템 측정항목을 참고하세요. 이러한 측정항목은 Cloud Storage FUSE를 사용하는 각 포드에서 사용할 수 있으며, 측정항목을 사용하여 볼륨 및 버킷별로 통계를 구성할 수 있습니다.
측정항목은 기본적으로 사용 중지되어 있습니다. 사용 설정하려면 볼륨 속성 disableMetrics
을 'false'로 설정합니다.
파일 시스템 측정항목
파일 시스템 측정항목은 작업 수, 오류, 작업 속도 등 파일 시스템의 성능과 상태를 추적합니다. 이러한 측정항목은 병목 현상을 파악하고 성능을 최적화하는 데 도움이 될 수 있습니다.
gcsfusecsi/fs_ops_count
gcsfusecsi/fs_ops_error_count
gcsfusecsi/fs_ops_latency
Cloud Storage 측정항목
데이터 양, 속도, 요청 활동을 비롯한 Cloud Storage 측정항목을 모니터링하여 애플리케이션이 Cloud Storage 버킷과 상호작용하는 방식을 파악할 수 있습니다. 이 데이터를 사용하면 읽기 패턴 개선 또는 요청 수 감소와 같은 최적화 영역을 파악하는 데 도움이 됩니다.
gcsfusecsi/gcs_download_bytes_count
gcsfusecsi/gcs_read_count
gcsfusecsi/gcs_read_bytes_count
gcsfusecsi/gcs_reader_count
gcsfusecsi/gcs_request_count
gcsfusecsi/gcs_request_latencies
파일 캐시 측정항목
데이터 읽기 볼륨, 속도, 캐시 적중률을 비롯한 파일 캐시 측정항목을 모니터링하여 Cloud Storage FUSE 및 애플리케이션 성능을 최적화할 수 있습니다. 이러한 측정항목을 분석하여 캐싱 전략을 개선하고 캐시 적중을 극대화하세요.
gcsfusecsi/file_cache_read_bytes_count
gcsfusecsi/file_cache_read_latencies
gcsfusecsi/file_cache_read_count
성능 조정 권장사항
이 섹션에서는 Cloud Storage FUSE CSI 드라이버에 권장되는 성능 조정 및 최적화 기법을 나열합니다.
계층적 네임스페이스 (HNS) 버킷 활용: HNS 버킷을 선택하여 초기 초당 쿼리 수 (QPS)를 8배 크게 늘립니다. 또한 이 선택사항은 Cloud Storage FUSE를 통한 효율적인 체크포인팅에 필수적인 요구사항인 신속하고 원자적인 디렉터리 이름 바꾸기를 용이하게 합니다. HNS 버킷은 초당 40,000개의 객체 읽기 요청과 8,000개의 객체 쓰기 요청을 지원하여 파일과 같은 환경을 개선합니다. 이는 플랫 버킷에서 제공하는 초당 8,000개의 객체 읽기 요청과 1,000개의 객체 쓰기 요청에 비해 크게 개선된 수치입니다.
가능한 경우 특정 디렉터리 마운트: 워크로드에서 버킷 내 특정 디렉터리에 액세스해야 하는 경우 마운트 중에
--only-dir
플래그를 사용합니다. 이 집중된 접근 방식은 지정된 경로의 모든 파일 또는 디렉터리에 대한list+stat
호출이 포함된LookUpInode
호출의 범위를 제한하므로 목록 호출을 신속하게 처리합니다. 마운트를 필요한 하위 디렉터리로 좁히면 이러한 호출이 최소화되어 성능이 향상됩니다.메타데이터 캐싱 최적화: 메타데이터 캐시의 용량을 최대화하도록 구성하고 TTL (수명)을 무한대로 설정합니다. 이렇게 하면 작업 기간 동안 액세스된 모든 메타데이터가 효과적으로 캐시되어 Cloud Storage에 대한 메타데이터 액세스 요청이 최소화됩니다. 이 구성은 반복되는 Cloud Storage 메타데이터 조회를 제거하므로 읽기 전용 볼륨에 특히 유용합니다. 그러나 이러한 대규모 메타데이터 캐시와 관련된 메모리 사용량이 시스템의 기능과 일치하는지 확인합니다.
GKE 사이드카 리소스 최대화: Cloud Storage FUSE는 GKE 환경의 사이드카 컨테이너 내에서 작동합니다. 리소스 병목 현상을 방지하려면 사이드카 컨테이너의 CPU 및 메모리 소비에 대한 제한을 삭제합니다. 이를 통해 Cloud Storage FUSE는 워크로드 수요에 따라 리소스 사용량을 확장하여 제한을 방지하고 최적의 처리량을 보장할 수 있습니다.
메타데이터 캐시 사전 채우기: CSI 드라이버에 메타데이터 프리페치를 사용 설정합니다. 이렇게 하면 메타데이터 및 목록 캐시가 효율적으로 채워져 Cloud Storage에 대한 메타데이터 호출이 최소화되고 초기 실행이 가속화됩니다. 많은 ML 프레임워크가 이를 자동으로 실행하지만 맞춤 학습 코드의 경우 이 단계를 실행하는 것이 중요합니다. 자세한 내용은 메타데이터 미리 가져오기를 사용하여 메타데이터 캐시 미리 채우기를 참고하세요.
파일 캐시 및 병렬 다운로드 활용: 특히 데이터가 반복적으로 읽히는 다중 에포크 학습 워크로드의 경우 파일 캐시 기능을 사용 설정합니다. 파일 캐시는 자주 액세스하는 데이터를 로컬 스토리지(A3 머신의 경우 SSD)에 저장하여 읽기 성능을 개선합니다. 특히 워크로드 제공을 위해 병렬 다운로드 기능을 보완하여 대용량 파일을 더 작은 청크로 분할하고 동시에 다운로드하여 대용량 파일의 다운로드를 가속화합니다.
체크포인트 최적화: Cloud Storage FUSE로 체크포인트 처리를 수행하는 경우 HNS 버킷을 사용하는 것이 좋습니다. HNS가 아닌 버킷을 사용하는 경우 체크포인트 중에 ML 프레임워크에서 자주 사용하는 디렉터리 이름 변경을 수용하도록
rename-dir-limit
매개변수를 높은 값으로 설정합니다. 그러나 HNS가 아닌 버킷에서 디렉터리 이름을 바꾸는 작업은 원자적일 수 없으며 완료하는 데 시간이 더 오래 걸릴 수 있습니다.목록 캐싱 사용 설정:
--kernel-list-cache-ttl-secs
플래그를 사용하여 목록 캐싱을 사용 설정하여 성능을 더욱 개선합니다. 이 기능은 디렉터리 및 파일 목록을 캐시하여ls
작업 속도를 개선합니다. 목록 캐싱은 AI/ML 학습 시나리오에서 흔히 볼 수 있는 전체 디렉터리 목록 반복이 포함된 워크로드에 특히 유용합니다. 데이터 일관성을 유지하려면 읽기 전용 마운트와 함께 목록 캐싱을 사용하는 것이 좋습니다.