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) | ✗ |
639df838 | fix(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) - 디바이스당
RawBlockCore1 개 →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로 통합
- raw_block MP L2 adapter 에
- 작성자 본인이 본문에 명시: "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/이슈
| # | 상태 | 제목 | 메모 |
|---|---|---|---|
| #3274 | open | Missing io_uring changes and introducing nvme io_uring_cmd (passthrough) | HC-SSD/FDP 와 직결 — cmd-level passthrough |
| #3271 | open | [Perf] Replace Condvar polling with eventfd + epoll in iouring worker | 단일 worker 병목 해소 — tp_and_workers.md:121 의 다중 ring 논의와 인접 |
| #3260 | open | [Fix] Harden raw-block device cleanup and alignment checks | raw_block 안정화 |
| #3246 | closed | [Feat][MP] Use io_uring fixed buffers for MP raw_block payload I/O | fixed buffer 도입 — 머지됨 |
| #3203 | open | [CI/CD] Add CI-safe raw-block temp-file tests | 테스트 인프라 |
| #3154 | open | Add Rust BlkioBlockDevice backend for libblkio I/O | 대안 IO backend (libblkio) |
| #3305 | open | Add raw-block payload checksum validation | data integrity |
| #2739 | open | [RFC] SSD Wear Mitigation | wear leveling — FDP 와 인접 |
| #2350 | open | [Roadmap] LMCache Roadmap for 2026 Q1 | 전체 방향 확인용 |
| #2923 | open | [Roadmap] LMCache Roadmap for 2026 Q2 | 전체 방향 확인용 |
| #2387 | closed | [RFC] io_uring support (r/w disk better performance) | 역사적 RFC |
| #2394 | closed | [RFC] Rust based raw block device support | 역사적 RFC |
| #2635 | closed | [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-150 | if "per_tp_device_paths" in d: raise ValueError(...) 차단 | 그대로 유지. 새 device_paths 필드로 우회 |
| lmcache/v1/storage_backend/path_sharder.py | by_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)
- MP 다중 디바이스의 토대가 깔리는 중 — PR #3210 이 머지되면 plugin-type L2 adapter 가 다중 디바이스를 다루는 패턴 (
device_paths+ per-deviceRawBlockCore+ shard pool) 이 표준이 됨. 사용자 adapter 도 이 모양을 따라가는 게 자연스러움. - rank 기반 sharding 의 한계가 곧 드러날 것 —
local_rank % device_count는 다중 vLLM 인스턴스 / 다중 노드에서는 부족. 사용자가 hash sharding 을 제안하면 follow-up issue 로 받아들여질 자리가 비어있음. - 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-150 의
per_tp_device_paths차단이 풀리면. - 새 PR 이
device_paths또는RawBlockCore의 sharding key 정책을 바꾸면. - 30 일 경과 (2026-06-21).