NVIDIA / NVIDIA/Personal-AI-Router

[Bug]: Node card header shows only the first GPU, so multi-GPU hosts are misreported as single-GPU

オープン
#33 コメント 1 件 リアクション 0 件 担当者 1 名 GitHub で見る

@ckelseynv がすでに取り組んでいます。

2026年9月11日 から。

主要言語
Go
スター
1.4k
フォーク
250
平均マージ
23時間 27分
マージ済み PR(30日)
1

説明

PAIR version or commit

0.1.1 (13b68115fa2c9c1d94f1ead1358f8d5a527cfecf), installed from NVPAIR-Setup-0.1.1-arm64.dmg and reproduced against a source build of the same commit.

Affected component

Desktop application

Environment
OS:               macOS 26.6.2 (viewing node), Rocky Linux 9.8 (affected node)
Architecture:     arm64 (viewer), x86_64 (affected node)
GPU and driver:   affected node has TWO GPUs -
                  Tesla P100-PCIE-16GB + NVIDIA GeForce RTX 3060,
                  driver 580.159.04, CUDA 13.0
Engine and version: Ollama (PAIR-managed)
Model:            qwen3:1.7b
Cluster size:     4 nodes
Steps to reproduce
  1. Run PAIR on a host with two or more GPUs.
  2. Pair it into a cluster and open the desktop application's Overview.
  3. Look at that node's card header.
  4. For comparison, read the same node's raw inventory: curl http://<node>:14318/v1/node-info.
Expected behavior

The node card header identifies the host's GPUs. A machine with a P100 and a 3060 should not be indistinguishable from a machine with only a 3060.

Actual behavior

The header shows exactly one GPU name. The second card is absent, with no +1, no count, and no other indication that more GPUs exist — so a multi-GPU host is silently misreported as single-GPU in the summary view.

The data is correct at every other layer:

  • /v1/node-info returns both GPUs with correct VRAM totals.
  • The detailed performance view charts both, per its own comment: "The detailed performance view intentionally charts EVERY detected GPU."
  • inferenceHardwareIds is absent from the payload, which by the contract in src/ui/utils/gpu-inference.ts means "show every GPU" — so nothing is being filtered as un-ready.

Only the header label drops them.

Causedesktop/src/ui/components/NodeList/NodeCardDetails.tsx:276 passes only the first element:

gpuLabel={gpuInfo.length > 0 ? gpuInfo[0].name : undefined}

NodeLabel accepts a single gpuLabel: string | undefined and pushes one gpu segment, so every GPU after the first is unrepresentable by construction.

Worth noting the fix is not simply joining the names into one string: NodeLabel applies wrapping, · separators and truncation per segment, so a joined string is a single segment that truncates after the first name on a narrow card — the same blind spot in a different form. One segment per GPU preserves the existing layout behavior.

This matters more on larger hosts: an 8-GPU server currently presents as a 1-GPU server in the node list.

Sanitized logs or screenshots
# /v1/node-info from the affected node - both GPUs present and correct.
# Host/cluster identifiers and addresses removed per the template.
{
  "GPUs": [
    { "name": "Tesla P100-PCIE-16GB",    "vram_bytes": 17179869184, "vram_used_bytes": 16077815808 },
    { "name": "NVIDIA GeForce RTX 3060", "vram_bytes": 12884901888, "vram_used_bytes": 12120489984 }
  ],
  "cpu": { "name": "AMD Ryzen 5 5600X 6-Core Processor", "cores": 6, "utilization_percent": 1 },
  "memory": { "total_bytes": 139586437120, "used_bytes": 14764740608 },
  "telemetryValid": true
}

# Desktop node card header for that same node:
#   <NODE> - <address> - NVIDIA GeForce RTX 3060
# The Tesla P100 does not appear.
Confirmations
  • I searched existing issues for duplicates. The closest is #4 (local node's GPU/CPU/memory enrichment never refreshed), which concerns stale discovery data and explicitly notes the UI is unaffected; this is a rendering defect with fresh, correct data.
  • This is not a security vulnerability.
  • I agree to follow the Code of Conduct.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。