성능 조정

Singularity는 데이터 준비 성능을 최적화하기 위해 다양한 구성을 제공합니다. 이 가이드에서는 이러한 구성을 설명하고 효과적으로 조정하는 지침을 제공합니다.

인라인 준비

  • 설명: 인라인 준비는 CAR 파일을 저장하는 데 필요한 추가 디스크 공간이 없어집니다. 그러나 데이터베이스 조회와 저장에 약간의 오버헤드가 발생합니다.

  • 영향: 오버헤드는 일반적으로 무시할 수 있습니다. 그러나 많은 작은 파일이 포함된 데이터셋의 경우 중요해질 수 있습니다.

  • 구성: 비활성화하려면 singularity prep create와 함께 --no-inline을 사용하십시오.

  • 더 읽어보기: 인라인 준비

DAG 업데이트

  • 설명: 준비 과정에서 Singularity는 각 디렉토리에 대해 DAG와 CID를 새로 고칩니다. 이는 변경 사항을 실시간으로 추적하는 데 유용합니다.

  • 영향: CAR 파일이 준비될 때마다 디렉토리가 업데이트되므로 약간의 데이터베이스 오버헤드가 발생합니다.

  • 구성: 비활성화하려면 singularity prep create와 함께 --no-dag를 사용하십시오.

데이터 준비의 병렬 처리

스캔

  • 설명: 스캔은 소스 저장소를 탐색하여 파일 목록을 만드는 작업입니다. 로컬 저장소에서는 빠르지만 S3와 같은 원격 저장소에서는 느릴 수 있습니다.

  • 구성:

    • 병렬 처리 활성화: singularity storage create 또는 singularity storage update와 함께 --client-scan-concurrency <숫자>를 사용하십시오.

    • 참고: 활성화하면 파일이 결정적인 순서로 처리되지 않을 수 있습니다.

패킹

  • 설명: 패킹은 여러 파일을 단일 CAR 파일로 병합하는 것으로, CPU와 IO 모두를 많이 사용하는 작업입니다. 네트워크 제약이 있는 원격 저장소의 경우, 병렬 처리를 늘리는 것이 유리합니다.

  • 구성:

    • 병렬 처리 조정: singularity run dataset-worker와 함께 --concurrency <숫자>를 사용하십시오.

서버의 수정 시간 사용

  • 설명: AWS S3와 같은 일부 원격 저장소는 사용자 정의 mtime 및 서버 측의 최종 수정 시간을 제공합니다. 기본적으로 Singularity는 사용자 정의 mtime을 확인하고 사용할 수 있으면 사용합니다. 그렇지 않으면 서버의 최종 수정 시간을 사용합니다.

  • 영향: 사용자 정의 mtime 확인을 건너뛰고 직접 서버의 최종 수정 시간을 사용하면 원격 저장소로의 요청 수를 줄일 수 있습니다.

  • 구성: singularity storage create 또는 singularity storage update와 함께 --client-use-server-mod-time을 사용하여 서버의 시간을 우선시하고 객체 메타데이터 검색을 우회하십시오.

재시도 전략

네트워크 요청 재시도

  • 설명: 실패한 원격 폴더 목록 또는 파일 개방에 대해 Singularity는 RClone의 재시도 메커니즘을 활용합니다.

  • 구성: 재시도 횟수를 늘리려면 singularity storage create 또는 singularity storage update와 함께 --client-low-level-retries <숫자>를 사용하십시오.

네트워크 IO 재시도

  • 설명: 성공한 네트워크 요청에도 불구하고, 불안정한 네트워크 연결로 인해 네트워크 IO가 실패할 수 있습니다. Singularity는 재시도와 마지막 성공 지점부터 재개를 지원합니다.

  • 구성: 아래 플래그를 singularity storage create 또는 singularity storage update와 함께 사용하십시오.

 --client-retry-backoff value      # IO 읽기 오류를 재시도하는 데 대한 지연 백오프 (기본값: 1초)
 --client-retry-backoff-exp value  # IO 읽기 오류를 재시도하는 데 대한 지수적인 지연 백오프 (기본값: 1.0)
 --client-retry-delay value        # IO 읽기 오류를 재시도하기 전의 초기 지연 (기본값: 1초)
 --client-retry-max value          # IO 읽기 오류의 최대 재시도 횟수 (기본값: 10)

접근 불가능한 파일 건너뛰기

  • 설명: 권한 문제로 인해 원격 저장소의 일부 파일에 액세스할 수 없는 경우가 있습니다. 이러한 문제는 파일을 열 때만 나타나며, 이로 인해 패킹 작업이 실패할 수 있습니다.

  • 구성: singularity storage create 또는 singularity storage update와 함께 --client-skip-inaccessible-files를 사용하여 접근할 수 없는 파일을 건너뛰십시오.

Last updated