Skip to content

Commit 1d3471a

Browse files
docs(gateway): describe tensor-parallel device groups in the architecture guide (#299)
1 parent a62c676 commit 1d3471a

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

packages/sie_gateway/docs/architecture-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ optional client traceparent
630630

631631
Streaming generation goes through the worker-sidecar. The gateway opens `gateway.proxy_generate` (the OTel-renamed export of the internal `gateway.proxy` tracing span) for native generation or `gateway.proxy_chat` for OpenAI-compatible chat, injects that context into the streaming work item, and publishes the item to the worker-direct generation stream. The sidecar receives the generation item, resolves any offloaded payload, selects the model's placed child GPU, forwards `ProcessGenerate` over that child's IPC socket, and publishes Python's streaming events back to the gateway reply subject. The Python worker extracts the gateway trace context before `worker.streaming_processor`.
632632

633-
Multi-GPU caveat: one hot generation model is still bound to one child GPU at a time. This does not shard one model across N GPUs and does not replicate the same model across all child GPUs. Multiple generation models can be placed across children; the same model stays sticky to its child unless that child becomes unready or fails.
633+
Multi-GPU caveat: one hot generation model is bound to one child at a time and is not replicated across children. Multiple generation models can be placed across children; the same model stays sticky to its child unless that child becomes unready or fails. Sharding happens inside a child: in a pool with `gpu.deviceGroup: true`, the single child owns every GPU in the pod, and a model whose profile declares `tensor_parallel_size` runs one engine across that many of them. The gateway and sidecar still see one child.
634634

635635
Batch fan-in parents on the first valid inbound context and records the remaining distinct valid contexts as OpenTelemetry links. The sidecar does this before `sidecar.dispatch`; Python and Rust workers do the same before `worker.run_batch`. The propagator is installed even when export is off, so trace context flows with tracing disabled. Runtime shutdown uses a bounded ~3 s trace flush. The Helm default sampler is `parentbased_traceidratio` at `0.05`, which preserves inbound sampling decisions and samples 5% of new roots.
636636

0 commit comments

Comments
 (0)