본문으로 건너뛰기

raw_block MP 다중 디바이스 sharding & hash sharding

요약

raw_block MP 모드의 다중 디바이스 sharding 은 PR #3210 에서 rank 기반으로 진행 중 (open). 사용자가 tp_and_workers.md:97 에서 자연스럽다고 본 "hash sharding" 자체는 아직 어느 PR/이슈에도 올라오지 않은 빈 자리.

upstream fetch 결과 (origin/dev d9f3438b)

local eaa2bfee 대비 3 commit 앞:

SHA메시지본 주제와 관련?
d9f3438b[CI][Build] CPU-only build (NO_GPU_EXT=1) + CI (#3357)
639df838fix(docker): install CLI requirements (#3355)
50209eca[CI] Rename NO_CUDA_EXT → NO_NATIVE_EXT (#3354)

직접 관련 commit 없음 — PR #3210 은 아직 머지 전.

핵심 PR/이슈

#3210 — [Core][Test] Add single-node raw-block L2 device sharding

  • 상태: open (draft=false), comments=5
  • 작성자: 2xdevv (CONTRIBUTOR)
  • 생성: 2026-05-06 / 마지막 업데이트: 2026-05-13
  • 핵심:
    • raw_block MP L2 adapter 에 device_paths 필드 추가 (string / list / CSV)
    • 디바이스당 RawBlockCore 1 개 → kv_rank.local_rank % device_count 로 라우팅 (= rank-기반 sharding)
    • _shard_pool (ThreadPoolExecutor, max_workers=num_devices) 로 shard 별 IO 병렬화
    • _run_load_task 의 키 순서 버그 수정 (shard-iteration 순서 → 원래 요청 순서)
    • 기존 device_path + multi_device_paths → 단일 device_paths 로 통합
  • 작성자 본인이 본문에 명시: "Shard selection is intentionally simple (local_rank % device_count) and covers only the single-node case. Multi-node device selection can be addressed in a follow-up."

#3119 — [MP] Add raw_block MP L2 adapter support via shared RawBlockCore

  • 상태: closed (병합으로 추정 — 현재 raw_block MP adapter 코드의 base)
  • #3210 의 base. MP raw_block 의 출발점이며, 현재 사용자 환경의 raw_block_l2_adapter.py 는 이 PR 의 결과물.

#2388 — FDP disk backend support

  • 상태: closed (이슈, 본문 미확인 — rate limit)
  • 사용자 관심 키워드 (FDP) 와 직접 매칭. closed 사유 확인 필요 (구현됐는지, won't fix 인지, 다른 이슈로 옮겼는지).

주변 PR/이슈

#상태제목메모
#3274openMissing io_uring changes and introducing nvme io_uring_cmd (passthrough)HC-SSD/FDP 와 직결 — cmd-level passthrough
#3271open[Perf] Replace Condvar polling with eventfd + epoll in iouring worker단일 worker 병목 해소 — tp_and_workers.md:121 의 다중 ring 논의와 인접
#3260open[Fix] Harden raw-block device cleanup and alignment checksraw_block 안정화
#3246closed[Feat][MP] Use io_uring fixed buffers for MP raw_block payload I/Ofixed buffer 도입 — 머지됨
#3203open[CI/CD] Add CI-safe raw-block temp-file tests테스트 인프라
#3154openAdd Rust BlkioBlockDevice backend for libblkio I/O대안 IO backend (libblkio)
#3305openAdd raw-block payload checksum validationdata integrity
#2739open[RFC] SSD Wear Mitigationwear leveling — FDP 와 인접
#2350open[Roadmap] LMCache Roadmap for 2026 Q1전체 방향 확인용
#2923open[Roadmap] LMCache Roadmap for 2026 Q2전체 방향 확인용
#2387closed[RFC] io_uring support (r/w disk better performance)역사적 RFC
#2394closed[RFC] Rust based raw block device support역사적 RFC
#2635closed[6/N][Feat] io_uring support to the Rust raw block backend머지됨 (현재 base)

로컬 코드와의 교차 참조

위치현재 상태PR #3210 머지 시
lmcache/v1/distributed/l2_adapters/raw_block_l2_adapter.py:147-150if "per_tp_device_paths" in d: raise ValueError(...) 차단그대로 유지. 새 device_paths 필드로 우회
lmcache/v1/storage_backend/path_sharder.pyby_gpu strategy (rank 기반) 만 지원, LocalDisk/Gds 전용영향 없음 — raw_block 은 자체 sharding 로직을 가질 예정
lmcache/v1/token_database.py:207_make_key_by_hash 존재 — chunk hash 로 key 만드는 로직영향 없음. 단, hash sharding 도입 시 이 hash 를 sharding key 로 재사용 가능

차단 / 가드

  • raw_block MP adapter 의 per_tp_device_paths 거부 (raw_block_l2_adapter.py:147-150). PR #3210 은 이 키를 풀지 않고 새 필드 device_paths 를 도입.

사용자 시나리오 함의 (FDP/HC-SSD plugin adapter)

  1. MP 다중 디바이스의 토대가 깔리는 중 — PR #3210 이 머지되면 plugin-type L2 adapter 가 다중 디바이스를 다루는 패턴 (device_paths + per-device RawBlockCore + shard pool) 이 표준이 됨. 사용자 adapter 도 이 모양을 따라가는 게 자연스러움.
  2. rank 기반 sharding 의 한계가 곧 드러날 것local_rank % device_count 는 다중 vLLM 인스턴스 / 다중 노드에서는 부족. 사용자가 hash sharding 을 제안하면 follow-up issue 로 받아들여질 자리가 비어있음.
  3. io_uring_cmd passthrough (#3274) 가 진행 중 — HC-SSD 의 zone append 같은 cmd-level 인터페이스에 직결. 사용자 adapter 가 어느 단계 (ring level vs cmd level) 에 끼어들지 결정에 영향.

다음 액션 후보

  • PR #3210 의 review 코멘트 (5 개) 본문 확인 — sharding 정책에 대한 논의가 있는지.
  • Issue #2388 (FDP disk backend, closed) 의 본문/closing 사유 확인 — 이미 시도된 접근이 있는지.
  • PR #3274 (io_uring_cmd passthrough) 의 진행 상황 — HC-SSD 연동 시 base 가 될 수 있음.
  • Roadmap #2923 (Q2) 에 sharding / FDP / HC-SSD 항목이 있는지 확인.
  • 사용자 adapter 의 sharding 정책 결정 — rank vs hash, adapter 내부 vs L2 router 레벨.

재조사 트리거

이 노트를 다시 갱신해야 하는 시점:

  • PR #3210 이 머지되거나, push 가 한 번 더 일어나면 (sharding 인터페이스가 바뀔 수 있음).
  • raw_block_l2_adapter.py:147-150per_tp_device_paths 차단이 풀리면.
  • 새 PR 이 device_paths 또는 RawBlockCore 의 sharding key 정책을 바꾸면.
  • 30 일 경과 (2026-06-21).