openlake-project/openlake
OpenLake is a high performance storage engine for efficient LLM inference and GPU Training
OpenLake – LLM 추론 및 훈련을 위한 빠른 분산 스토리지
개요
- OpenLake는 Rust로 작성된 오픈소스 스토리지 엔진으로, Linux
io_uring및 RDMA를 기반으로 합니다. NVMe/SSD, 네트워크, GPU 메모리 간 데이터 이동을 초저지연으로 유지하도록 설계되었으며, 대규모 언어 모델(LLM) 워크로드의 대규모 KV 캐시 및 체크포인트 요구를 대상으로 합니다.
중요성
- LLM 추론 및 훈련은 작은 무작위 읽기/쓰기(예: KV 캐시 조회, 체크포인트 샤드)를 기다리는 데 많은 시간을 소비합니다. OpenLake는 백만 이상의 IOPS 및 서브밀리초 지연 시간을 약속하며, 저자의 벤치마크에서 최대 8배 높은 처리량 및 66배 빠른 첫 토큰 생성 시간으로 이어집니다.
주요 기능
| 기능 | 설명 |
|---|---|
| KV 캐시 오프로드 | GPU 호스트 노드의 분산 풀에 페타바이트 규모의 키-값 캐시를 저장하여 여러 GPU가 동일한 캐시를 공유하고 반복적인 프리필 작업을 피할 수 있습니다. |
| 벡터 DB 지원 | 스토리지 계층에서 직접 빠른 인덱스 구축 및 벡터 서비스를 제공합니다. |
| 초고속 체크포인트 | 강화 학습 및 훈련 체크포인트를 위한 저지연 객체 스토어로 GPU 유휴 시간을 줄입니다. |
| 모델 훈련 I/O | 소규모 파일 무작위 읽기/쓰기에 최적화되어 훈련 시간 오버헤드를 줄입니다. |
| 컨텍스트 스토리지 | 검색 증강 에이전트를 위해 대규모 대화 기록을 영구 저장합니다. |
| 제로카피 GPUDirect | RDMA 또는 GPUDirect-Storage를 사용하면 데이터가 호스트 RAM에서 스테이징 없이 NVMe/NIC에서 GPU 메모리로 직접 이동할 수 있습니다. |
| 버스트 인지 RDMA(PacedRDMA) | 크레딧 기반 흐름 제어로 요청 급증 시 네트워크 혼잡을 방지하여 꼬리 지연 시간을 낮게 유지합니다. |
| 이레이저 코딩 내구성 | SIMD Reed-Solomon 코딩으로 데이터와 패리티를 드라이브 전체에 분산하여 전체 복제보다 오버헤드를 줄이면서 내결함성을 제공합니다. |
일반적인 사용 사례
- 다중 GPU 추론 서버(예: vLLM, DeepSpeed)의 KV 캐시 확장.
- 대규모 훈련 파이프라인의 체크포인트 파일을 위한 고처리량 객체 스토어 제공.
- 서브밀리초 벡터 조회가 필요한 벡터 DB의 백엔드.
- 대규모 대화 기록을 실시간으로 저장하고 검색하는 에이전트 시스템 지원.
시작하기
- Python 커넥터 설치(vLLM 통합용):
pip install openlake-vllm openlaked # 로컬 OpenLake 데몬 시작 - 커넥터로 vLLM 실행:
다중 노드 클러스터의 경우 각 GPU 호스트에서export PYTHONHASHSEED=0 vllm serve <model_name> \ --kv-transfer-config '{"kv_connector":"OpenLakeConnector","kv_connector_module_path":"openlake_client.openlake_connector","kv_role":"kv_both","kv_connector_extra_config":{"openlake_nodes":["127.0.0.1:9400"],"openlake_device":"local"}}'openlaked를 시작하고(선택적으로 RDMA 특정 TOML 구성 사용) vLLM을 노드 주소 목록으로 지정합니다. - 또는 S3 호환 객체 스토어로 사용:
# 소스에서 빌드(Ubuntu 예시) sudo apt-get install -y build-essential pkg-config clang cmake libhwloc-dev libudev-dev curl git awscli curl -sSf https://sh.rustup.rs | sh -s -- -y && . $HOME/.cargo/env git clone https://github.com/openlake-project/openlake.git && cd openlake cargo build --release --bin openlaked mkdir -p data/d0 data/d1 data/d2 data/d3 ./target/release/openlaked --config crates/openlake_server/configs/storage-tcp-local.toml # 모든 S3 클라이언트로 통신 export AWS_ACCESS_KEY_ID=openlakeadmin export AWS_SECRET_ACCESS_KEY=openlakeadmin export AWS_DEFAULT_REGION=us-east-1 aws --endpoint-url http://127.0.0.1:9000 s3 mb s3://demo aws --endpoint-url http://127.0.0.1:9000 s3 cp ./checkpoint.safetensors s3://demo/
아키텍처 개요
- 코어 런타임 – 물리적 CPU 코어당 하나의 고정
compio비동기 런타임을 사용하며, Linuxio_uring으로 낮은 오버헤드 I/O를 구현합니다. - 제로카피 경로 – GPUDirect Storage + RDMA를 통해 데이터가 NVMe 또는 NIC에서 GPU 메모리로 직접 전송될 수 있습니다.
- 버스트 인지 네트워킹 – PacedRDMA는 트래픽 급증 시 전송자를 제한하여 지연 시간을 보호합니다.
- 내구성 – SIMD Reed-Solomon 이레이저 코딩으로 데이터를 드라이브 전체에 분산하여 최소한의 공간 오버헤드로 내결함성을 제공합니다.
커뮤니티 및 지원
- Discord 커뮤니티: https://discord.gg/TNXqVSnP6x
- 성능 결과 및 심층 게시물이 있는 블로그: https://theopenlake.com/blog
- 문서 및 구성 예제는
docs/및crates/openlake_server/configs/에 있습니다.
라이선스
- Apache License 2.0(허용적, 상업적으로 친화적).
OpenLake는 최신 GPU 팜에 데이터를 지속적으로 공급하는 스토리지 계층으로 자리매김하여 대규모 언어 모델의 추론과 훈련 모두에서 유휴 시간과 비용을 줄입니다.
관련
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch