Skip to content

Commit bdfc4db

Browse files
committed
Add opt-in reshape cache event sync
1 parent 74d5fc7 commit bdfc4db

5 files changed

Lines changed: 42 additions & 22 deletions

File tree

docs/source/user-guide/metrics/metrics.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ The default metrics configuration contains the following UCM metrics.
223223
| `ucm:posix_h2s_bytes_total` | Total bytes transferred from host buffer to Posix storage. |
224224
| `ucm:load_bytes_total` | Total bytes loaded through the UCM connector. |
225225
| `ucm:save_bytes_total` | Total bytes saved through the UCM connector. |
226+
| `ucm:dump_event_reshape_cache_direct_used_total` | Dump submissions synchronized with `attn_metadata.reshape_cache_event`. |
227+
| `ucm:dump_event_reshape_cache_mla_layer_used_total` | Dump submissions synchronized with `attn_metadata[layer_name].reshape_cache_event`. |
228+
| `ucm:dump_event_current_stream_used_total` | Dump submissions synchronized with a UCM-recorded current stream event fallback. |
229+
| `ucm:dump_event_sync_fallback_used_total` | Dump submissions that fell back to device synchronization because no event handle was available. |
226230

227231
### Gauges
228232

docs/source/user-guide/prefix-cache/pipeline_store.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ ucm_connectors:
216216
use_gdr: false
217217
enable_event_sync: true
218218
use_layerwise: true
219+
enable_reshape_cache_event_sync: false
219220
enable_record_traces: false
220221
use_lite: false
221222
persist_token_threshold: 0
@@ -320,4 +321,4 @@ This log indicates that the **Posix Store** has received a **load or dump task**
320321
```text
321322
[UC][D] Posix task({task_id},{operation},{subtask_number},{size}) finished, cost {time}ms. [PID,TID]
322323
```
323-
This log indicates that a load or dump task in the **Posix Store** has completed, along with its execution time in **in ms**.
324+
This log indicates that a load or dump task in the **Posix Store** has completed, along with its execution time in **in ms**.

examples/metrics/metrics_configs.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ counter:
6363
documentation: "Total bytes loaded through the UCM connector (summed across all start_load_kv calls)"
6464
- name: "save_bytes_total"
6565
documentation: "Total bytes saved through the UCM connector (summed across all wait_for_save calls)"
66+
- name: "dump_event_reshape_cache_direct_used_total"
67+
documentation: "Number of dump submissions synchronized with attn_metadata.reshape_cache_event"
68+
- name: "dump_event_reshape_cache_mla_layer_used_total"
69+
documentation: "Number of dump submissions synchronized with attn_metadata[layer_name].reshape_cache_event"
70+
- name: "dump_event_current_stream_used_total"
71+
documentation: "Number of dump submissions synchronized with a UCM-recorded current stream event fallback"
72+
- name: "dump_event_sync_fallback_used_total"
73+
documentation: "Number of dump submissions that fell back to device synchronization because no event handle was available"
6674

6775
# Gauge metrics configuration
6876
gauge:

examples/ucm_config_example.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ ucm_connectors:
2626

2727
# When you use UcmNfsStore, you should set enable_event_sync to false.
2828
enable_event_sync: true
29+
# Use event from vllm ascend to do D2H immediatly after kv cache dump.
30+
# Enable for better dump performance.
31+
enable_reshape_cache_event_sync: false
2932
# Enable UCM metrics so they can be monitored online via Grafana and Prometheus.
3033
# metrics_config_path: "/workspace/unified-cache-management/examples/metrics/metrics_configs.yaml"
3134

ucm/integration/vllm/ucm_connector.py

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,9 @@ def __init__(
364364
self.launch_config = ucm_config.get_config()
365365
self.connector_configs = self.launch_config.get("ucm_connectors", [])
366366
self.enable_event_sync = self.launch_config.get("enable_event_sync", True)
367+
self.enable_reshape_cache_event_sync = self.launch_config.get(
368+
"enable_reshape_cache_event_sync", False
369+
)
367370
self.enable_record_traces = self.launch_config.get(
368371
"enable_record_traces", False
369372
)
@@ -857,36 +860,37 @@ def _get_dump_event_handle(
857860
) -> int:
858861
if not self.enable_event_sync:
859862
self.device.synchronize()
860-
logger.debug("dump event sync disabled; synchronized current stream.")
861863
return 0
862864

863-
reshape_cache_event, event_source = self._get_reshape_cache_event(
864-
layer_name, attn_metadata
865-
)
866-
event_handle = (
867-
self.device.get_event_handle_from_event(reshape_cache_event)
868-
if reshape_cache_event is not None
869-
else 0
870-
)
871-
if event_handle != 0:
872-
logger.debug(
873-
f"dump event handle from reshape_cache_event source={event_source}, "
874-
f"layer_name={layer_name}, handle={event_handle}."
865+
if self.enable_reshape_cache_event_sync:
866+
reshape_cache_event, event_source = self._get_reshape_cache_event(
867+
layer_name, attn_metadata
868+
)
869+
event_handle = (
870+
self.device.get_event_handle_from_event(reshape_cache_event)
871+
if reshape_cache_event is not None
872+
else 0
875873
)
876-
return event_handle
874+
if event_handle != 0:
875+
if event_source == "direct":
876+
ucmmetrics.update_stats(
877+
"dump_event_reshape_cache_direct_used_total", 1.0
878+
)
879+
elif event_source == "mla_layer":
880+
ucmmetrics.update_stats(
881+
"dump_event_reshape_cache_mla_layer_used_total", 1.0
882+
)
883+
return event_handle
877884

878885
event_handle = self.device.get_event_handle()
879886
if event_handle == 0:
880887
self.device.synchronize()
881-
logger.debug(
882-
f"dump event fallback synchronized current stream, "
883-
f"reshape_event_source={event_source}, layer_name={layer_name}."
888+
ucmmetrics.update_stats(
889+
"dump_event_sync_fallback_used_total", 1.0
884890
)
885891
else:
886-
logger.debug(
887-
f"dump event handle from current stream fallback, "
888-
f"reshape_event_source={event_source}, layer_name={layer_name}, "
889-
f"handle={event_handle}."
892+
ucmmetrics.update_stats(
893+
"dump_event_current_stream_used_total", 1.0
890894
)
891895
return event_handle
892896

0 commit comments

Comments
 (0)