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 は 100 万を超える 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 コアごとに 1 つの固定 compio 非同期ランタイムを使用し、Linux io_uring で低オーバーヘッド I/O を実現。
  • ゼロコピーパス – GPUDirect Storage + RDMA により、データは NVMe または NIC から GPU メモリに直接転送できます。
  • バースト対応ネットワーク – PacedRDMA はトラフィックスパイク時に送信者をスロットルしてレイテンシを保護します。
  • 耐久性 – SIMD Reed-Solomon イレイジャーコーディングにより、データをドライブ全体に分散し、最小限のスペースオーバーヘッドでフォールトトレランスを提供します。

コミュニティとサポート

ライセンス

  • Apache License 2.0(寛容、商用利用に適しています)。

OpenLake は、最新の GPU ファームにデータを供給し続けるストレージ層として位置付けられ、大規模言語モデルの推論とトレーニングの両方でアイドル時間とコストを削減します。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch