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의 백엔드.
  • 대규모 대화 기록을 실시간으로 저장하고 검색하는 에이전트 시스템 지원.

시작하기

  1. Python 커넥터 설치(vLLM 통합용):
    pip install openlake-vllm
    openlaked   # 로컬 OpenLake 데몬 시작
    
  2. 커넥터로 vLLM 실행:
    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"}}'
    
    다중 노드 클러스터의 경우 각 GPU 호스트에서 openlaked를 시작하고(선택적으로 RDMA 특정 TOML 구성 사용) vLLM을 노드 주소 목록으로 지정합니다.
  3. 또는 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 비동기 런타임을 사용하며, Linux io_uring으로 낮은 오버헤드 I/O를 구현합니다.
  • 제로카피 경로 – GPUDirect Storage + RDMA를 통해 데이터가 NVMe 또는 NIC에서 GPU 메모리로 직접 전송될 수 있습니다.
  • 버스트 인지 네트워킹 – PacedRDMA는 트래픽 급증 시 전송자를 제한하여 지연 시간을 보호합니다.
  • 내구성 – SIMD Reed-Solomon 이레이저 코딩으로 데이터를 드라이브 전체에 분산하여 최소한의 공간 오버헤드로 내결함성을 제공합니다.

커뮤니티 및 지원

라이선스

  • Apache License 2.0(허용적, 상업적으로 친화적).

OpenLake는 최신 GPU 팜에 데이터를 지속적으로 공급하는 스토리지 계층으로 자리매김하여 대규모 언어 모델의 추론과 훈련 모두에서 유휴 시간과 비용을 줄입니다.

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch