Cloud Storage FUSE 파일 캐싱은 개발자가 선택한 더 빠른 캐시 스토리지에서 반복 파일 읽기를 제공하여 읽기 작업의 성능을 향상시키는 클라이언트 측 읽기 캐시입니다. 파일 캐싱이 사용 설정되면 Cloud Storage FUSE는 자주 액세스하는 파일의 사본을 로컬에 저장하여 후속 읽기가 캐시에서 직접 제공되도록 하므로 지연 시간이 줄어들고 처리량이 개선됩니다.
파일 캐싱의 이점
파일 캐싱은 다음과 같은 이점을 제공합니다.
소규모 및 임의 I/O의 성능 개선: 파일 캐싱은 캐시 미디어에서 직접 읽기를 제공하여 지연 시간과 처리량을 개선합니다. 캐시에서 제공하면 소규모 및 임의 I/O 작업이 훨씬 더 빠를 수 있습니다.
병렬 다운로드 활용: 파일 캐시가 사용 설정된 경우 Cloud Storage FUSE 버전 2.12 이상에서 병렬 다운로드가 자동으로 사용 설정됩니다. 병렬 다운로드는 파일 캐시 디렉터리를 프리페치 버퍼로 사용하여 여러 작업자가 파일을 동시에 다운로드하므로 모델 로드 시간이 최대 9배 빨라질 수 있습니다. 모델 서빙 및 체크포인트 복원과 같이 대용량 파일을 로드하는 단일 스레드 읽기 시나리오에는 병렬 다운로드를 사용하는 것이 좋습니다.
기존 용량 사용: 파일 캐싱은 추가 스토리지 요금 청구 없이 캐시 디렉터리에 프로비저닝된 기존 머신 용량을 사용할 수 있습니다. 여기에는
a2-ultragpu
및a3-highgpu
같은 Cloud GPU 머신 유형과 함께 번들로 제공되는 로컬 SSD, 각 VM에서 사용되는 부팅 디스크인 Persistent Disk, 또는 인메모리/tmpfs
가 포함됩니다.요금 절감: 캐시 적중은 로컬에서 제공되며 Cloud Storage 작업 또는 네트워크 요금이 발생하지 않습니다.
AI 및 ML 학습의 총소유비용 개선: 파일 캐싱은 데이터를 더 빠르게 로드하여 Cloud GPU 및 Cloud TPU 사용률을 높이고 학습 시간을 단축하며 인공지능 및 머신러닝(AI/ML) 학습 워크로드의 가성비를 높입니다.
병렬 다운로드
병렬 다운로드는 파일 캐시 디렉터리를 프리페치 버퍼로 사용하여 여러 작업자가 파일의 여러 부분을 동시에 다운로드함으로써 읽기 성능을 개선할 수 있습니다. 모델 서빙, 체크포인트 복원, 대형 객체 학습과 같이 대용량 파일을 로드하는 읽기 시나리오에는 병렬 다운로드를 사용하는 것이 좋습니다.
병렬 다운로드로 파일 캐싱을 사용 설정하는 사용 사례는 다음과 같습니다.
사용 사례 유형 | 설명 |
---|---|
학습 | 액세스하려는 데이터를 여러 번 읽는 경우(동일한 파일을 여러 번 읽거나 동일한 파일의 다른 오프셋을 읽는 경우) 파일 캐싱을 사용 설정합니다. 데이터 세트가 파일 캐시보다 큰 경우 파일 캐시를 사용 중지된 상태로 유지하고 대신 다음 방법 중 하나를 사용해야 합니다. |
모델 가중치 및 체크포인트 읽기 제공 | 파일 캐싱과 병렬 다운로드를 사용하지 않는 경우보다 훨씬 빠르게 대용량 파일을 로드하는 병렬 다운로드를 활용할 수 있도록 병렬 다운로드로 파일 캐싱을 사용 설정합니다. |
고려사항
다음 섹션에서는 파일 캐싱 사용 시 중요한 고려사항을 설명합니다.
파일 크기 및 사용 가능한 용량
읽을 파일은 --file-cache-max-size-mb
CLI 옵션 또는 file-cache:max-size-mb
필드를 사용하여 제어할 수 있는 파일 캐시 디렉터리의 사용 가능한 용량 내에 있어야 합니다.
임의 및 부분 읽기 관리
첫 번째 파일 읽기 작업이 파일 시작 부분인 오프셋 0
에서 시작하면 Cloud Storage FUSE 파일 캐시는 좁은 범위의 하위 집합에서만 읽기를 수행 중인 경우에도 전체 파일을 수집하여 캐시에 로드합니다. 이렇게 하면 동일한 객체의 후속 임의 읽기 또는 부분 읽기를 캐시에서 직접 제공할 수 있습니다.
파일의 첫 번째 읽기 작업이 오프셋 0
이 아닌 다른 곳에서 시작되는 경우 Cloud Storage FUSE는 기본적으로 비동기 전체 파일 가져오기를 트리거하지 않습니다.
Cloud Storage FUSE가 초기 무작위 읽기 시 파일을 캐시로 수집하도록 이 동작을 변경하려면 다음 방법 중 하나를 사용하여 동작을 true
로 설정하세요.
동일한 객체에서 여러 임의 또는 부분 읽기 작업이 수행되는 경우 이 속성을 사용 설정하는 것이 좋습니다.
캐시 제거
캐시된 메타데이터 및 데이터의 제거는 --file-cache-max-size-mb
한도당 구성된 공간 기준점에 도달하면 시작되는 가장 최근 사용(LRU) 알고리즘을 기반으로 합니다. 항목이 TTL을 기준으로 만료되면 먼저 GET
메타데이터 가져오기 호출이 수행되고 네트워크 지연 시간이 발생합니다. 데이터와 메타데이터는 별도로 관리되므로 한 항목은 삭제되거나 무효화되지만 다른 항목은 그렇지 않을 수 있습니다.
캐시 지속성
Cloud Storage FUSE 캐시는 마운트 해제 및 다시 시작 시 유지되지 않습니다. 파일 캐싱의 경우 캐시에서 파일을 제공하는 데 필요한 메타데이터 항목은 마운트 해제 및 다시 시작 시 제거되지만 파일 캐시의 데이터는 여전히 파일 디렉터리에 있을 수 있습니다. 마운트 해제 또는 다시 시작 후 파일 캐시 디렉터리의 데이터를 삭제하는 것이 좋습니다.
데이터 보안
캐싱을 사용 설정하면 Cloud Storage FUSE는 다음 방법 중 하나를 사용하여 지정한 캐시 디렉터리를 캐시의 기본 디렉터리로 사용하여 Cloud Storage 버킷의 파일을 암호화된 형식으로 유지합니다.
이 캐시 디렉터리에 대한 액세스 권한이 있는 모든 사용자 또는 프로세스는 이러한 파일에 액세스할 수 있습니다. 이 디렉터리에 대한 액세스를 제한하는 것이 좋습니다.
파일 캐시에 대한 직접 또는 다중 액세스
Cloud Storage FUSE 이외의 프로세스를 사용하여 캐시 디렉터리의 파일에 액세스하거나 파일을 수정하면 데이터가 손상될 수 있습니다. Cloud Storage FUSE 캐시는 동일하거나 다른 머신에서 실행되는 다양한 Cloud Storage FUSE 프로세스를 인식하지 못한 채 각 Cloud Storage FUSE 실행 프로세스에만 적용됩니다. 따라서 다양한 Cloud Storage FUSE 프로세스에 동일한 캐시 디렉터리를 사용하지 않는 것이 좋습니다.
동일한 머신에서 여러 Cloud Storage FUSE 프로세스를 실행해야 하는 경우 각 Cloud Storage FUSE 프로세스는 고유한 특정 캐시 디렉터리를 가져오거나 다음 방법 중 하나를 사용하여 데이터가 손상되지 않도록 해야 합니다.
공유 캐시로 모든 버킷 마운트: 동적 마운트를 사용하여 공유 캐시에서 단일 프로세스로 액세스할 수 있는 모든 버킷을 마운트합니다. 자세한 내용은 Cloud Storage FUSE 동적 마운트를 참조하세요.
특정 버킷에 캐싱 사용 설정: 정적 마운트를 사용하여 지정된 버킷에만 캐싱을 사용 설정합니다. 자세한 내용은 Cloud Storage FUSE 정적 마운트를 참조하세요.
특정 폴더 또는 디렉터리만 캐시: 전체 버킷을 마운트하는 대신 특정 버킷 수준 폴더만 마운트하고 캐시합니다. 자세한 내용은 버킷 내에 디렉터리 마운트를 참고하세요.
시작하기 전에
파일 캐시를 사용하려면 파일을 캐시하는 데 사용할 디렉터리 경로가 필요합니다. 기존 파일 시스템에 새 디렉터리를 만들거나 프로비저닝된 스토리지에 새 파일 시스템을 만들 수 있습니다. 사용할 새 스토리지를 프로비저닝하는 경우 다음 안내에 따라 새 파일 시스템을 만듭니다.
Google Cloud Hyperdisk의 경우 새 Google Cloud Hyperdisk 볼륨 만들기를 참고하세요.
Persistent Disk의 경우 새 Persistent Disk 볼륨 만들기를 참고하세요.
로컬 SSD의 경우 VM에 로컬 SSD 추가를 참고하세요.
인메모리 RAM 디스크에 관한 자세한 내용은 인메모리 RAM 디스크 만들기를 참고하세요.
파일 캐싱 동작 사용 설정 및 구성
다음 옵션 중 하나를 사용하여 파일 캐싱을 사용 설정하고 구성합니다.
- Cloud Storage FUSE CLI 옵션
- Cloud Storage FUSE 구성 파일
- 샘플 구성을 사용할 수도 있습니다(파일 캐싱 및 병렬 다운로드를 사용 설정하기 위한 샘플 구성 참고).
다음 방법 중 하나를 사용하여 사용할 캐시 디렉터리를 지정합니다. 이렇게 하면 Google Kubernetes Engine이 아닌 배포에 대해 파일 캐시를 사용 설정할 수 있습니다.
Google Kubernetes Engine용 Cloud Storage FUSE CSI 드라이버를 사용하는 Google Kubernetes Engine 배포를 사용하는 경우 다음 옵션 중 하나를 지정합니다.
(선택사항) 병렬 다운로드가 자동으로 사용 설정되지 않은 경우 다음 옵션 중 하나를
true
로 설정하여 병렬 다운로드를 사용 설정합니다.캐시 디렉터리를 지정하면 자동으로
-1
값으로 설정되는 다음 옵션 중 하나를 조정하여 Cloud Storage FUSE 캐시가 마운트된 디렉터리 내에서 사용할 수 있는 총 용량을 제한합니다.MiB 또는 GiB 단위로 값을 지정하여 캐시 크기를 제한할 수도 있습니다.
(선택사항) 다음 방법 중 하나를 사용하여 캐시된 항목의 TTL 만료를 우회하고
-1
값을 설정하여 사용 가능한 경우 캐시에서 파일 메타데이터를 제공합니다.기본값은 60초이며
-1
값을 사용하면 무제한으로 설정됩니다. 요구사항에 따라 높은 값을 지정할 수도 있습니다.ttl-secs
값을 워크로드에서 허용하는 만큼 높게 설정하는 것이 좋습니다. 캐시된 항목의 TTL 설정에 관한 자세한 내용은 수명을 참고하세요.(선택사항) 파일의 첫 번째 읽기 작업이
offset 0
이 아닌 다른 곳에서 시작되는 경우 파일 캐시가 전체 파일을 비동기식으로 캐시에 로드할 수 있도록 하여 동일한 파일에서 서로 다른 오프셋을 후속 읽을 때도 캐시에서 제공할 수 있도록 합니다. 다음 방법 중 하나를 사용하여 옵션을true
로 설정합니다.(선택사항) 통계 캐싱 및 유형 캐싱을 구성합니다. 통계 및 유형 캐시에 대한 자세한 내용은 유형 캐싱 개요 또는 통계 캐싱 개요를 참고하세요.
워크로드를 실행하기 전에 마운트된 버킷에서
ls -R
명령어를 수동으로 실행하여 메타데이터를 자동 입력하면 더 빠른 일괄 처리 방식으로 첫 번째 읽기 전에 유형 캐시가 채워지게 할 수 있습니다. 최초 읽기 성능을 개선하는 방법에 관한 자세한 내용은 최초 읽기 개선을 참고하세요.
파일 캐싱을 사용 설정하면 Cloud Storage FUSE 버전 2.12 이상에서 병렬 다운로드가 자동으로 사용 설정됩니다. 이전 버전의 Cloud Storage FUSE를 사용하는 경우 enable-parallel-downloads
옵션을 true
로 설정하여 병렬 다운로드를 사용 설정합니다.
병렬 다운로드를 위한 지원 속성 구성
Cloud Storage FUSE CLI 또는 Cloud Storage FUSE 구성 파일을 사용하여 병렬 다운로드에 대해 다음 지원 속성을 선택적으로 구성할 수 있습니다.
속성 설명 | CLI 옵션 | 구성 파일 필드 |
---|---|---|
Cloud Storage에서 파일 캐시로 객체를 다운로드하기 위해 파일당 생성할 수 있는 최대 작업자 수입니다. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
모든 파일 다운로드 작업에서 특정 시점에 생성할 수 있는 최대 작업자 수입니다. 기본값은 머신 CPU 코어 수의 두 배로 설정됩니다. 한도가 없다고 지정하려면 값을 `-1`로 입력합니다. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
각 작업자가 객체를 파일 캐시로 다운로드할 때 Cloud Storage에 전송하는 각 읽기 요청의 크기(MiB)입니다. 읽는 파일의 크기가 지정된 크기인 경우에만 병렬 다운로드가 트리거됩니다. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
병렬 다운로드 사용 중지
병렬 다운로드를 사용 중지하려면 다음 옵션 중 하나를 false
로 설정하세요.
--file-cache-enable-parallel-downloads
CLI 옵션file-cache:enable-parallel-downloads
필드
다음 단계
Cloud Storage FUSE 성능을 개선하는 방법 알아보기