You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/guides/checkpoint-engine-refit.md
+55-10Lines changed: 55 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,13 @@ policy:
36
36
device: cuda
37
37
cleanup_after_load: false
38
38
topology: auto
39
+
transfer_mode: staged
40
+
buffer_count: 2
41
+
background_progress: false
42
+
load_batch_bucket_count: 1
43
+
direct_min_bytes: 2147483648
44
+
direct_stripe_count: 1
45
+
metadata_batch_size: 1
39
46
backend_name: UCX
40
47
backend_init_params:
41
48
ucx_error_handling_mode: none
@@ -57,7 +64,14 @@ participating worker. `2048` MiB is a good starting point for large models.
57
64
|---|---|
58
65
| `device` | Transfer-buffer device. Use `cuda` for the fast GPU-RDMA path when the NIXL/UCX runtime supports CUDA memory registration. Use `cpu` only as a host-pinned fallback when CUDA buffers are unavailable. |
59
66
| `cleanup_after_load` | Whether vLLM should run garbage collection and `torch.cuda.empty_cache()` after loading each refit. Disabling this avoids extra steady-state overhead when memory is stable. |
60
-
| `topology` | Transfer topology. `auto` keeps the paired topology when policy workers cover rollout workers and falls back to `leader_chain` otherwise. Use `leader_chain` to force one policy sender and rollout-side NIXL forwarding. |
67
+
| `topology` | Transfer topology. `auto` keeps the paired topology when policy workers cover rollout workers and falls back to `leader_tree` otherwise. Use `leader_chain` to force the older single chain for comparison. |
68
+
| `transfer_mode` | Source-side transfer mode. `staged` copies policy tensors into reusable NIXL buckets. `direct` exposes contiguous policy tensor chunks directly through NIXL and stages only tensors that cannot be directly exposed. `auto` stages sub-bucket tensors but uses direct descriptors for contiguous tensors at or above `max(direct_min_bytes, update_weights_bucket_megabytes)`. |
69
+
| `buffer_count` | Number of reusable staged transfer buffers. `2` is the original ping-pong path. `3` or higher allows more outstanding staged reads before a sender reuses a buffer. |
70
+
| `background_progress` | Whether the receiver starts a lightweight background progress thread for in-flight NIXL reads. This lets NIXL progress continue while vLLM synchronously loads the previous batch. Keep this `false` unless the target cluster shows stable tail latency with it enabled. |
71
+
| `load_batch_bucket_count` | Number of received transfer buckets to coalesce into one vLLM load batch. Keep this at `1` unless enough buffers are available to coalesce without starving receive prefetch; benchmark `2` with `buffer_count >= 4`. |
72
+
| `direct_min_bytes` | Minimum tensor size for `transfer_mode: auto` direct transfer. Auto mode also floors this at the staged bucket size, because direct descriptors for sub-bucket tensors lose the coalescing benefit of staged buckets. Start at the bucket size, for example `2147483648` with 2048 MiB buckets, and tune against the staged baseline. |
73
+
| `direct_stripe_count` | Number of stripes to split each direct-transfer bucket into. This only affects `transfer_mode: auto` or `direct`; `1` preserves the existing one-read-per-bucket behavior. Try `2` or `4` only with enough `buffer_count` headroom for concurrent receiver reads. |
74
+
| `metadata_batch_size` | Number of bucket metadata records to publish together on the control path. `1` preserves one ZMQ object per bucket. Values above `1` mainly help direct-striped runs where many direct stripe descriptors are emitted together. |
61
75
| `backend_name` | NIXL backend plugin name, usually `UCX`. |
62
76
| `backend_init_params` | Optional NIXL backend initialization parameters. Values are converted to strings before NIXL receives them. |
0 commit comments