목록으로
GitHub - deepseek-ai/3FS: A high-performance distributed file system designed to address the challenges of AI training and inference workloads.
Service2025.03.08

GitHub - deepseek-ai/3FS: A high-performance distributed file system designed to address the challenges of AI training and inference workloads.

요약

3FS는 AI 훈련 및 추론 워크로드를 위해 설계된 고성능 분산 파일 시스템으로, 현대적인 SSD와 RDMA 네트워크를 활용하여 공유 스토리지 레이어를 제공합니다.
이 시스템은 Disaggregated Architecture와 CRAQ(Chain Replication with Apportioned Queries)를 통한 Strong Consistency를 특징으로 하며, 파일 인터페이스를 통해 데이터 준비, Dataloader, Checkpointing 및 KVCache를 지원합니다.
3FS는 최대 6.6 TiB/s의 읽기 Throughput, 110.5 TiB 데이터를 약 30분 만에 처리하는 GraySort 성능, 그리고 KVCache에서 40 GiB/s의 피크 Throughput을 시연하며 뛰어난 성능을 입증했습니다.

상세 내용

Fire-Flyer File System (3FS)는 AI 훈련 및 추론 워크로드의 도전을 해결하기 위해 설계된 고성능 분산 파일 시스템입니다. 이 시스템은 최신 SSD와 RDMA 네트워크를 활용하여 분산 애플리케이션 개발을 간소화하는 공유 스토리지 레이어를 제공합니다.

핵심 특징 및 이점:

* 성능 및 사용성 (Performance and Usability):
* 분산 아키텍처 (Disaggregated Architecture): 수천 개의 SSD 처리량과 수백 개 스토리지 노드의 네트워크 대역폭을 결합하여, 애플리케이션이 locality-oblivious 방식으로 스토리지 리소스에 접근할 수 있도록 합니다.
* 강력한 일관성 (Strong Consistency): Chain Replication with Apportioned Queries (CRAQ)를 구현하여 강력한 일관성을 보장하며, 이를 통해 애플리케이션 코드 작성을 단순화하고 추론을 용이하게 합니다. CRAQ는 복제 체인을 따라 업데이트가 순서대로 전파되고, 읽기 요청이 체인 내의 다양한 복제본에 분산될 수 있도록 하여 높은 처리량과 강력한 일관성을 동시에 달성하는 복제 프로토콜입니다.
* 파일 인터페이스 (File Interfaces): FoundationDB와 같은 transactional key-value store를 기반으로 하는 stateless metadata service를 개발하여, 기존의 잘 알려진 파일 인터페이스를 통해 새로운 스토리지 API 학습 없이 사용할 수 있습니다.
* 다양한 워크로드 (Diverse Workloads):
* 데이터 준비 (Data Preparation): 데이터 분석 파이프라인의 출력을 계층적 디렉토리 구조로 구성하고, 대량의 중간 출력을 효율적으로 관리합니다.
* 데이터 로더 (Dataloaders): 컴퓨팅 노드 전반에서 훈련 샘플에 대한 무작위 접근을 가능하게 하여, 사전 페치(prefetching) 또는 데이터셋 셔플링(shuffling)의 필요성을 제거합니다.
* 체크포인팅 (Checkpointing): 대규모 훈련을 위한 고처리량 병렬 체크포인팅을 지원합니다.
* 추론용 KVCache (KVCache for Inference): DRAM 기반 캐싱에 대한 비용 효율적인 대안을 제공하며, 높은 처리량과 상당히 큰 용량을 자랑합니다.

핵심 방법론 및 기술적 세부 사항:

3FS의 핵심은 스토리지와 컴퓨팅 자원을 분리하는 disaggregated architecture에 있습니다. 이는 수많은 SSD의 방대한 IOPS(초당 입출력 작업 수)와 RDMA 네트워크의 낮은 지연 시간 및 높은 대역폭을 활용하여, 스토리지 병목 현상 없이 AI 워크로드를 확장할 수 있도록 합니다.

* 강력한 일관성 모델: CRAQ 프로토콜을 통해 데이터 일관성을 유지합니다. 이 프로토콜은 모든 쓰기 작업이 복제본 체인의 헤드에 전송된 다음 순차적으로 다운스트림으로 전파되도록 보장합니다. 읽기 작업은 체인 내의 여러 노드에서 수행될 수 있어 읽기 처리량을 최적화하면서도 항상 최신 데이터를 제공합니다.
* 메타데이터 관리: 파일 시스템의 메타데이터(예: 디렉토리 구조, 파일 속성)는 stateless service로 구현되며, 이는 FoundationDB와 같은 분산 트랜잭션 키-값 저장소에 저장됩니다. 이는 메타데이터 서비스의 확장성과 가용성을 높이고, 일관성 있는 메타데이터 업데이트를 보장합니다.
* 성능 최적화:
* random access pattern: 특히 훈련 데이터셋 로딩 시 중요한 무작위 접근을 최적화하여, 기존 파일 시스템에서 필요했던 데이터 전처리(예: 셔플링) 오버헤드를 줄입니다.
* RDMA 활용: 고속 RDMA 네트워크를 통해 스토리지 노드와 클라이언트 노드 간의 데이터 전송 지연 시간을 최소화하고 대역폭을 극대화합니다.
* KVCache 최적화: LLM(대규모 언어 모델) 추론에서 KVCache는 이전에 계산된 키(key) 및 값(value) 벡터를 저장하여 중복 계산을 피합니다. 3FS는 이를 비용 효율적인 방식으로, 높은 처리량으로 제공하여 추론 성능을 향상시킵니다.

성능 벤치마크:

* 최대 처리량 (Peak throughput): 180개 스토리지 노드와 500개 이상의 클라이언트 노드로 구성된 대규모 클러스터에서 배경 트래픽과 함께 약 6.6 TiB/s의 총 읽기 처리량을 달성했습니다.
* GraySort: 25개 스토리지 노드와 50개 컴퓨팅 노드 클러스터에서 110.5 TiB의 데이터를 30분 14초 만에 정렬하여, 평균 3.66 TiB/min의 처리량을 기록했습니다. 이는 데이터 파티셔닝과 in-partition 정렬의 두 단계를 통해 이루어집니다.
* KVCache: KVCache 클라이언트에서 최대 40 GiB/s의 읽기 처리량을 시연했습니다.

빌드 및 설치:

3FS는 GitHub에서 소스 코드를 클론한 후, 서브모듈 업데이트 및 패치 적용 과정을 거쳐 빌드할 수 있습니다. Ubuntu, openEuler, OpenCloudOS, TencentOS 등 다양한 Linux 배포판에 대한 종속성 설치 지침을 제공합니다. cmake 명령어를 사용하여 빌드하며, 특히 컴파일러 버전에 따른 std::shuffle의 비호환성 문제를 해결하기 위해 -DSHUFFLE_METHOD 옵션을 명시해야 합니다. libfuse 3.16.1 이상, FoundationDB 7.1 이상, Rust toolchain 1.75.0 이상이 빌드 전제 조건으로 요구됩니다. Docker를 통한 빌드도 지원합니다.

원본 보기
GitHub
Shared by Anonymous