[{"data":1,"prerenderedAt":873},["ShallowReactive",2],{"navigation_docs":3,"-install-ico-host":134,"-install-ico-host-surround":868},[4,25,60,75,104],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"How it works","\u002Fgetting-started\u002Fhow-it-works","1.getting-started\u002F2.how-it-works","i-lucide-workflow",{"title":21,"path":22,"stem":23,"icon":24},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F3.quickstart","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Install on rented GPUs","\u002Finstall","2.install",[30,35,40,45,50,55],{"title":31,"path":32,"stem":33,"icon":34},"Overview","\u002Finstall\u002Foverview","2.install\u002F1.overview","i-lucide-map",{"title":36,"path":37,"stem":38,"icon":39},"Set up the ico host","\u002Finstall\u002Fico-host","2.install\u002F2.ico-host","i-lucide-database",{"title":41,"path":42,"stem":43,"icon":44},"Set up the GPU machines","\u002Finstall\u002Fgpu-machines","2.install\u002F3.gpu-machines","i-lucide-cpu",{"title":46,"path":47,"stem":48,"icon":49},"Send traffic through the gateway","\u002Finstall\u002Fsend-traffic","2.install\u002F4.send-traffic","i-lucide-route",{"title":51,"path":52,"stem":53,"icon":54},"Check the install","\u002Finstall\u002Fcheck","2.install\u002F5.check","i-lucide-circle-check",{"title":56,"path":57,"stem":58,"icon":59},"Install help","\u002Finstall\u002Finstall-help","2.install\u002F6.install-help","i-lucide-life-buoy",{"title":61,"icon":6,"path":62,"stem":63,"children":64,"page":6},"The report","\u002Freport","3.report",[65,70],{"title":66,"path":67,"stem":68,"icon":69},"Read the report","\u002Freport\u002Fread-the-report","3.report\u002F1.read-the-report","i-lucide-file-chart-column",{"title":71,"path":72,"stem":73,"icon":74},"How costs are counted","\u002Freport\u002Fhow-costs-are-counted","3.report\u002F2.how-costs-are-counted","i-lucide-calculator",{"title":76,"icon":6,"path":77,"stem":78,"children":79,"page":6},"The replay lab","\u002Freplay","4.replay",[80,84,89,94,99],{"title":31,"path":81,"stem":82,"icon":83},"\u002Freplay\u002Foverview","4.replay\u002F1.overview","i-lucide-flask-conical",{"title":85,"path":86,"stem":87,"icon":88},"Run a replay","\u002Freplay\u002Frun-a-replay","4.replay\u002F2.run-a-replay","i-lucide-play",{"title":90,"path":91,"stem":92,"icon":93},"Launchers","\u002Freplay\u002Flaunchers","4.replay\u002F3.launchers","i-lucide-power",{"title":95,"path":96,"stem":97,"icon":98},"Sweep files","\u002Freplay\u002Fsweep-file","4.replay\u002F4.sweep-file","i-lucide-list-checks",{"title":100,"path":101,"stem":102,"icon":103},"What a replay cannot tell you yet","\u002Freplay\u002Flimits","4.replay\u002F5.limits","i-lucide-triangle-alert",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Reference","\u002Freference","5.reference",[109,114,119,124,129],{"title":110,"path":111,"stem":112,"icon":113},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F1.configuration","i-lucide-settings",{"title":115,"path":116,"stem":117,"icon":118},"CLI","\u002Freference\u002Fcli","5.reference\u002F2.cli","i-lucide-square-terminal",{"title":120,"path":121,"stem":122,"icon":123},"Gateway","\u002Freference\u002Fgateway","5.reference\u002F3.gateway","i-lucide-split",{"title":125,"path":126,"stem":127,"icon":128},"Stored data","\u002Freference\u002Fdata","5.reference\u002F4.data","i-lucide-table",{"title":130,"path":131,"stem":132,"icon":133},"Privacy and security","\u002Freference\u002Fsecurity","5.reference\u002F5.security","i-lucide-shield-check",{"id":135,"title":36,"body":136,"description":861,"extension":862,"links":863,"meta":864,"navigation":865,"path":37,"seo":866,"stem":38,"__hash__":867},"docs\u002F2.install\u002F2.ico-host.md",{"type":137,"value":138,"toc":853},"minimark",[139,143,840,845,849],[140,141,142],"p",{},"The ico host runs two containers: ClickHouse, which stores everything, and the collector, which receives telemetry from the GPU machines and writes it to ClickHouse. It needs Docker with Compose and about ten minutes.",[144,145,147,152,195,199,215,242,246,261,268,683,691,695,698,775,782,786,810,821],"steps",{"level":146},"3",[148,149,151],"h3",{"id":150},"get-the-code","Get the code",[153,154,160],"pre",{"className":155,"code":156,"filename":157,"language":158,"meta":159,"style":159},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone --branch v0.1.1 https:\u002F\u002Fgithub.com\u002FGudjon01\u002Finference-cost-optimizer.git\ncd inference-cost-optimizer\u002Fdeploy\n","ico host","bash","",[161,162,163,185],"code",{"__ignoreMap":159},[164,165,168,172,176,179,182],"span",{"class":166,"line":167},"line",1,[164,169,171],{"class":170},"sBMFI","git",[164,173,175],{"class":174},"sfazB"," clone",[164,177,178],{"class":174}," --branch",[164,180,181],{"class":174}," v0.1.1",[164,183,184],{"class":174}," https:\u002F\u002Fgithub.com\u002FGudjon01\u002Finference-cost-optimizer.git\n",[164,186,188,192],{"class":166,"line":187},2,[164,189,191],{"class":190},"s2Zo4","cd",[164,193,194],{"class":174}," inference-cost-optimizer\u002Fdeploy\n",[148,196,198],{"id":197},"set-the-secrets","Set the secrets",[153,200,202],{"className":155,"code":201,"filename":157,"language":158,"meta":159,"style":159},"cp .env.example .env\n",[161,203,204],{"__ignoreMap":159},[164,205,206,209,212],{"class":166,"line":167},[164,207,208],{"class":170},"cp",[164,210,211],{"class":174}," .env.example",[164,213,214],{"class":174}," .env\n",[140,216,217,218,221,222,225,226,229,230,233,234,237,238,241],{},"In ",[161,219,220],{},".env",", set ",[161,223,224],{},"ICO_ADMIN_TOKEN"," and ",[161,227,228],{},"ICO_CLICKHOUSE_PASSWORD"," to long random strings, such as the output of ",[161,231,232],{},"openssl rand -hex 24",". Keep the admin token: every gateway needs the same one for ",[161,235,236],{},"ico replay"," to drain replicas. The ClickHouse password is the password of the ",[161,239,240],{},"ico"," user.",[148,243,245],{"id":244},"write-the-config","Write the config",[153,247,249],{"className":155,"code":248,"filename":157,"language":158,"meta":159,"style":159},"cp config.example.yaml config.yaml\n",[161,250,251],{"__ignoreMap":159},[164,252,253,255,258],{"class":166,"line":167},[164,254,208],{"class":170},[164,256,257],{"class":174}," config.example.yaml",[164,259,260],{"class":174}," config.yaml\n",[140,262,263,264,267],{},"The collector reads four things from it: your replicas, and how it reaches each engine's ",[161,265,266],{},"\u002Fmetrics","; your GPU exporters; what your GPUs cost; and where ClickHouse is. For two GPU machines on a private network, with one vLLM replica each:",[153,269,274],{"className":270,"code":271,"filename":272,"language":273,"meta":159,"style":159},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","replicas:\n  - name: gpu-1-r1             # unique; the gateway and vLLM's traces use the same name\n    url: http:\u002F\u002F10.0.0.11:8000 # how the ico host reaches this engine\n    host: gpu-1                # matches the exporter's host below\n    gpu_model: H100-SXM        # matches a key of gpu_price_per_hour\n    gpu_count: 1               # GPUs this replica uses (tensor parallel size)\n  - name: gpu-2-r1\n    url: http:\u002F\u002F10.0.0.12:8000\n    host: gpu-2\n    gpu_model: H100-SXM\n    gpu_count: 1\n\n# USD per GPU-hour, what you pay. Idle hours are billed too.\ngpu_price_per_hour:\n  H100-SXM: 2.99\n\n# For the replay's memory check: what each served model weighs.\nmodels:\n  Qwen\u002FQwen3-8B:\n    params: 8_190_735_360\n    weight_bytes_per_param: 2      # BF16\n    kv_bytes_per_token: 147_456    # 2 x layers(36) x kv_heads(8) x head_dim(128) x 2 bytes\n\ncollector:\n  grpc_listen: 0.0.0.0:4317\n  scrape_interval_s: 5\n  gpu_exporters:\n    - kind: dcgm                   # nvidia_smi for nvidia_gpu_exporter on GeForce cards\n      url: http:\u002F\u002F10.0.0.11:9400\u002Fmetrics\n      host: gpu-1\n    - kind: dcgm\n      url: http:\u002F\u002F10.0.0.12:9400\u002Fmetrics\n      host: gpu-2\n\nclickhouse:\n  host: clickhouse                 # the ClickHouse container, inside Compose\n  port: 8123\n  username: ico\n  database: ico\n","deploy\u002Fconfig.yaml","yaml",[161,275,276,286,304,318,332,346,361,373,383,393,403,413,420,426,434,445,450,456,464,472,483,497,511,516,524,535,546,554,571,582,593,605,615,624,629,637,651,662,673],{"__ignoreMap":159},[164,277,278,282],{"class":166,"line":167},[164,279,281],{"class":280},"swJcz","replicas",[164,283,285],{"class":284},"sMK4o",":\n",[164,287,288,291,294,297,300],{"class":166,"line":187},[164,289,290],{"class":284},"  -",[164,292,293],{"class":280}," name",[164,295,296],{"class":284},":",[164,298,299],{"class":174}," gpu-1-r1",[164,301,303],{"class":302},"sHwdD","             # unique; the gateway and vLLM's traces use the same name\n",[164,305,307,310,312,315],{"class":166,"line":306},3,[164,308,309],{"class":280},"    url",[164,311,296],{"class":284},[164,313,314],{"class":174}," http:\u002F\u002F10.0.0.11:8000",[164,316,317],{"class":302}," # how the ico host reaches this engine\n",[164,319,321,324,326,329],{"class":166,"line":320},4,[164,322,323],{"class":280},"    host",[164,325,296],{"class":284},[164,327,328],{"class":174}," gpu-1",[164,330,331],{"class":302},"                # matches the exporter's host below\n",[164,333,335,338,340,343],{"class":166,"line":334},5,[164,336,337],{"class":280},"    gpu_model",[164,339,296],{"class":284},[164,341,342],{"class":174}," H100-SXM",[164,344,345],{"class":302},"        # matches a key of gpu_price_per_hour\n",[164,347,349,352,354,358],{"class":166,"line":348},6,[164,350,351],{"class":280},"    gpu_count",[164,353,296],{"class":284},[164,355,357],{"class":356},"sbssI"," 1",[164,359,360],{"class":302},"               # GPUs this replica uses (tensor parallel size)\n",[164,362,364,366,368,370],{"class":166,"line":363},7,[164,365,290],{"class":284},[164,367,293],{"class":280},[164,369,296],{"class":284},[164,371,372],{"class":174}," gpu-2-r1\n",[164,374,376,378,380],{"class":166,"line":375},8,[164,377,309],{"class":280},[164,379,296],{"class":284},[164,381,382],{"class":174}," http:\u002F\u002F10.0.0.12:8000\n",[164,384,386,388,390],{"class":166,"line":385},9,[164,387,323],{"class":280},[164,389,296],{"class":284},[164,391,392],{"class":174}," gpu-2\n",[164,394,396,398,400],{"class":166,"line":395},10,[164,397,337],{"class":280},[164,399,296],{"class":284},[164,401,402],{"class":174}," H100-SXM\n",[164,404,406,408,410],{"class":166,"line":405},11,[164,407,351],{"class":280},[164,409,296],{"class":284},[164,411,412],{"class":356}," 1\n",[164,414,416],{"class":166,"line":415},12,[164,417,419],{"emptyLinePlaceholder":418},true,"\n",[164,421,423],{"class":166,"line":422},13,[164,424,425],{"class":302},"# USD per GPU-hour, what you pay. Idle hours are billed too.\n",[164,427,429,432],{"class":166,"line":428},14,[164,430,431],{"class":280},"gpu_price_per_hour",[164,433,285],{"class":284},[164,435,437,440,442],{"class":166,"line":436},15,[164,438,439],{"class":280},"  H100-SXM",[164,441,296],{"class":284},[164,443,444],{"class":356}," 2.99\n",[164,446,448],{"class":166,"line":447},16,[164,449,419],{"emptyLinePlaceholder":418},[164,451,453],{"class":166,"line":452},17,[164,454,455],{"class":302},"# For the replay's memory check: what each served model weighs.\n",[164,457,459,462],{"class":166,"line":458},18,[164,460,461],{"class":280},"models",[164,463,285],{"class":284},[164,465,467,470],{"class":166,"line":466},19,[164,468,469],{"class":280},"  Qwen\u002FQwen3-8B",[164,471,285],{"class":284},[164,473,475,478,480],{"class":166,"line":474},20,[164,476,477],{"class":280},"    params",[164,479,296],{"class":284},[164,481,482],{"class":356}," 8_190_735_360\n",[164,484,486,489,491,494],{"class":166,"line":485},21,[164,487,488],{"class":280},"    weight_bytes_per_param",[164,490,296],{"class":284},[164,492,493],{"class":356}," 2",[164,495,496],{"class":302},"      # BF16\n",[164,498,500,503,505,508],{"class":166,"line":499},22,[164,501,502],{"class":280},"    kv_bytes_per_token",[164,504,296],{"class":284},[164,506,507],{"class":356}," 147_456",[164,509,510],{"class":302},"    # 2 x layers(36) x kv_heads(8) x head_dim(128) x 2 bytes\n",[164,512,514],{"class":166,"line":513},23,[164,515,419],{"emptyLinePlaceholder":418},[164,517,519,522],{"class":166,"line":518},24,[164,520,521],{"class":280},"collector",[164,523,285],{"class":284},[164,525,527,530,532],{"class":166,"line":526},25,[164,528,529],{"class":280},"  grpc_listen",[164,531,296],{"class":284},[164,533,534],{"class":174}," 0.0.0.0:4317\n",[164,536,538,541,543],{"class":166,"line":537},26,[164,539,540],{"class":280},"  scrape_interval_s",[164,542,296],{"class":284},[164,544,545],{"class":356}," 5\n",[164,547,549,552],{"class":166,"line":548},27,[164,550,551],{"class":280},"  gpu_exporters",[164,553,285],{"class":284},[164,555,557,560,563,565,568],{"class":166,"line":556},28,[164,558,559],{"class":284},"    -",[164,561,562],{"class":280}," kind",[164,564,296],{"class":284},[164,566,567],{"class":174}," dcgm",[164,569,570],{"class":302},"                   # nvidia_smi for nvidia_gpu_exporter on GeForce cards\n",[164,572,574,577,579],{"class":166,"line":573},29,[164,575,576],{"class":280},"      url",[164,578,296],{"class":284},[164,580,581],{"class":174}," http:\u002F\u002F10.0.0.11:9400\u002Fmetrics\n",[164,583,585,588,590],{"class":166,"line":584},30,[164,586,587],{"class":280},"      host",[164,589,296],{"class":284},[164,591,592],{"class":174}," gpu-1\n",[164,594,596,598,600,602],{"class":166,"line":595},31,[164,597,559],{"class":284},[164,599,562],{"class":280},[164,601,296],{"class":284},[164,603,604],{"class":174}," dcgm\n",[164,606,608,610,612],{"class":166,"line":607},32,[164,609,576],{"class":280},[164,611,296],{"class":284},[164,613,614],{"class":174}," http:\u002F\u002F10.0.0.12:9400\u002Fmetrics\n",[164,616,618,620,622],{"class":166,"line":617},33,[164,619,587],{"class":280},[164,621,296],{"class":284},[164,623,392],{"class":174},[164,625,627],{"class":166,"line":626},34,[164,628,419],{"emptyLinePlaceholder":418},[164,630,632,635],{"class":166,"line":631},35,[164,633,634],{"class":280},"clickhouse",[164,636,285],{"class":284},[164,638,640,643,645,648],{"class":166,"line":639},36,[164,641,642],{"class":280},"  host",[164,644,296],{"class":284},[164,646,647],{"class":174}," clickhouse",[164,649,650],{"class":302},"                 # the ClickHouse container, inside Compose\n",[164,652,654,657,659],{"class":166,"line":653},37,[164,655,656],{"class":280},"  port",[164,658,296],{"class":284},[164,660,661],{"class":356}," 8123\n",[164,663,665,668,670],{"class":166,"line":664},38,[164,666,667],{"class":280},"  username",[164,669,296],{"class":284},[164,671,672],{"class":174}," ico\n",[164,674,676,679,681],{"class":166,"line":675},39,[164,677,678],{"class":280},"  database",[164,680,296],{"class":284},[164,682,672],{"class":174},[140,684,685,686,690],{},"Every key is described in the ",[687,688,689],"a",{"href":111},"configuration reference",".",[148,692,694],{"id":693},"let-the-gpu-machines-reach-the-collector","Let the GPU machines reach the collector",[140,696,697],{},"Compose publishes the collector (4317) and ClickHouse (8123) on 127.0.0.1 only. Publish them on the ico host's private address instead, in an override file Compose reads next to its own:",[153,699,702],{"className":270,"code":700,"filename":701,"language":273,"meta":159,"style":159},"services:\n  collector:\n    ports: !override\n      - \"10.0.0.5:4317:4317\"   # the ico host's private address\n  clickhouse:\n    ports: !override\n      - \"10.0.0.5:8123:8123\"   # for ico replay, which runs on the GPU machines\n","deploy\u002Fdocker-compose.override.yml",[161,703,704,711,718,729,746,753,761],{"__ignoreMap":159},[164,705,706,709],{"class":166,"line":167},[164,707,708],{"class":280},"services",[164,710,285],{"class":284},[164,712,713,716],{"class":166,"line":187},[164,714,715],{"class":280},"  collector",[164,717,285],{"class":284},[164,719,720,723,725],{"class":166,"line":306},[164,721,722],{"class":280},"    ports",[164,724,296],{"class":284},[164,726,728],{"class":727},"spNyl"," !override\n",[164,730,731,734,737,740,743],{"class":166,"line":320},[164,732,733],{"class":284},"      -",[164,735,736],{"class":284}," \"",[164,738,739],{"class":174},"10.0.0.5:4317:4317",[164,741,742],{"class":284},"\"",[164,744,745],{"class":302},"   # the ico host's private address\n",[164,747,748,751],{"class":166,"line":334},[164,749,750],{"class":280},"  clickhouse",[164,752,285],{"class":284},[164,754,755,757,759],{"class":166,"line":348},[164,756,722],{"class":280},[164,758,296],{"class":284},[164,760,728],{"class":727},[164,762,763,765,767,770,772],{"class":166,"line":363},[164,764,733],{"class":284},[164,766,736],{"class":284},[164,768,769],{"class":174},"10.0.0.5:8123:8123",[164,771,742],{"class":284},[164,773,774],{"class":302},"   # for ico replay, which runs on the GPU machines\n",[776,777,778,779,781],"caution",{},"The collector accepts writes without authentication. Publish it only on an address your GPU machines reach privately. ClickHouse asks for the ",[161,780,240],{}," user's password.",[148,783,785],{"id":784},"start-clickhouse-and-the-collector","Start ClickHouse and the collector",[153,787,789],{"className":155,"code":788,"filename":157,"language":158,"meta":159,"style":159},"docker compose up -d clickhouse collector\n",[161,790,791],{"__ignoreMap":159},[164,792,793,796,799,802,805,807],{"class":166,"line":167},[164,794,795],{"class":170},"docker",[164,797,798],{"class":174}," compose",[164,800,801],{"class":174}," up",[164,803,804],{"class":174}," -d",[164,806,647],{"class":174},[164,808,809],{"class":174}," collector\n",[140,811,812,813,816,817,820],{},"Compose pulls the collector's image, ",[161,814,815],{},"ghcr.io\u002Fgudjon01\u002Fico-collector",", at the release you cloned; ",[161,818,819],{},"--build"," builds it from the checkout instead. The collector applies ClickHouse's schema on its first start. Until the GPU machines are set up, its log says that every scrape failed; that is expected:",[153,822,824],{"className":155,"code":823,"filename":157,"language":158,"meta":159,"style":159},"docker compose logs -f collector\n",[161,825,826],{"__ignoreMap":159},[164,827,828,830,832,835,838],{"class":166,"line":167},[164,829,795],{"class":170},[164,831,798],{"class":174},[164,833,834],{"class":174}," logs",[164,836,837],{"class":174}," -f",[164,839,809],{"class":174},[841,842,844],"h2",{"id":843},"next","Next",[140,846,847,690],{},[687,848,41],{"href":42},[850,851,852],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":159,"searchDepth":187,"depth":187,"links":854},[855,856,857,858,859,860],{"id":150,"depth":306,"text":151},{"id":197,"depth":306,"text":198},{"id":244,"depth":306,"text":245},{"id":693,"depth":306,"text":694},{"id":784,"depth":306,"text":785},{"id":843,"depth":187,"text":844},"ClickHouse and the collector on one small machine, with Docker Compose.","md",null,{},{"icon":39},{"title":36,"description":861},"oUbJMCSTycqyhfpDm_PW57oxzDfcu8YGOK5mIcV5oHI",[869,871],{"title":31,"path":32,"stem":33,"description":870,"icon":34,"children":-1},"What runs where on a fleet of rented GPU machines, and what has to reach what.",{"title":41,"path":42,"stem":43,"description":872,"icon":44,"children":-1},"On every GPU machine, turn on tracing in vLLM, run a GPU exporter, and run the gateway.",1792165822949]