# The serving stack, topology B: ONE Triton per GPU, as many as there are GPUs to use. # triton/compose/scale.sh auto # a Triton per GPU, the gateway on the host, prometheus, grafana, dcgm # triton/compose/scale.sh 0 # stop everything (Triton drains in-flight requests: exit timeout 30 s < grace 45 s) # The Triton services (triton-0, triton-1, ...) are not listed here: scale.sh writes one per GPU into # artifacts/compose/tritons.yml and passes it to Compose beside this file, with the settings they share. Each # container sees only its own GPU (NVIDIA_VISIBLE_DEVICES=UUID) and holds that GPU's network model (diar_nn_g, # instance device 0) and resample_cpu; its cpuset is its GPU's NUMA node. # The gateway runs on the host, not in a container: its exactness is tested with the host's libraries (glibc's # exp/log, numpy's OpenBLAS, libsndfile). Every published port binds 127.0.0.1. services: dcgm-exporter: image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.9-3.6.1-ubuntu22.04 profiles: [obs] runtime: nvidia cap_add: [SYS_ADMIN] environment: [NVIDIA_VISIBLE_DEVICES=all] command: ["-f", "/etc/dcgm-exporter/counters.csv", "-c", "1000"] volumes: ["./dcgm_counters.csv:/etc/dcgm-exporter/counters.csv:ro"] ports: ["127.0.0.1:${DCGM_PORT}:9400"] restart: unless-stopped # host network, listening on 127.0.0.1 only: it scrapes the gateway, which listens on the host's loopback. It runs # as your account so that it can read the gateway's token file (mode 0600) and keeps its data under artifacts/. prometheus: image: prom/prometheus:v3.11.0 profiles: [obs] network_mode: host user: "${HOST_UID}:${HOST_GID}" command: ["--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.path=/prometheus", "--storage.tsdb.retention.time=15d", "--web.listen-address=127.0.0.1:${PROM_PORT}"] volumes: ["${PROM_CONFIG}:/etc/prometheus/prometheus.yml:ro", "${GATEWAY_TOKEN_FILE}:/etc/prometheus/gateway_token:ro", "${PROM_DATA}:/prometheus"] restart: unless-stopped grafana: image: grafana/grafana:12.4.2 profiles: [obs] network_mode: host environment: - GF_SERVER_HTTP_ADDR=127.0.0.1 - GF_SERVER_HTTP_PORT=${GRAFANA_PORT} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD} # the loopback is shared by every account on the machine - GF_AUTH_ANONYMOUS_ENABLED=false - PROM_URL=http://127.0.0.1:${PROM_PORT} volumes: ["./grafana/provisioning:/etc/grafana/provisioning:ro", "./grafana/dashboards:/var/lib/grafana/dashboards:ro", "grafana-data:/var/lib/grafana"] restart: unless-stopped volumes: grafana-data: {}