Graphsignal — скилл
GPU-профайлер для ИИ-агентов: агент запускает vLLM или SGLang под graphsignal-run, читает метрики и подбирает флаги для скорости
- 276 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Агент ставит пакеты, запускает серверы моделей на GPU и подгружает CUPTI или ROCm в процесс нагрузки
- Конечная точка `/signals` без аутентификации показывает командные строки процессов и ресурсы, при открытии за пределы `127.0.0.1` их увидит вся сеть
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/graphsignalОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Агент ставит пакеты, запускает серверы моделей на GPU и подгружает CUPTI или ROCm в процесс нагрузки
- Конечная точка `/signals` без аутентификации показывает командные строки процессов и ресурсы, при открытии за пределы `127.0.0.1` их увидит вся сеть
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Graphsignal — профайлер графических процессоров, рассчитанный на управление агентом. Он работает отдельным процессом рядом с движком вывода (vLLM, SGLang, TensorRT-LLM, PyTorch или любым приложением на GPU) и отдает все измерения через локальный JSON API. Агент запускает нагрузку, измеряет, смотрит данные, меняет флаги или код и измеряет снова. Скилл самодостаточен: файл `SKILL.md` кладут в каталог навыков, и агент сам ставит профайлер, запускает нагрузку под ним и читает результат. Запрос звучит как «оптимизируй задержку этого сервера vLLM». Для ручной установки есть `uv tool install 'graphsignal[cu12]'` или `pip install 'graphsignal[cu12]'`, для CUDA 13 берется расширение cu13. Нагрузку оборачивают командой, например `graphsignal-run vllm serve <модель> --port 8001`. Профайлер собирает время ядер и графов CUDA через CUPTI или ROCm, передачи памяти и синхронизацию, телеметрию NVML и AMD SMI (загрузка, память, питание, температура, частоты, NVLink и PCIe, ошибки XID и ECC), метрики процессов, метрики движка из Prometheus и ошибки из консоли. Конечная точка `/signals` на `127.0.0.1:18259` отдает JSON, `/metrics` ту же статистику в формате Prometheus, а `graphsignal-top` показывает живой терминальный вид. Для точной разметки кода есть заголовок C++ `probe.h`.
Для кого. Инженерам по инференсу и MLOps, которые запускают модели на своих GPU и хотят поручить агенту цикл профилирования и подбора флагов.
Подходит, если
- Сервер vLLM или SGLang отвечает медленнее ожидаемого, и нужно понять, какие ядра и синхронизации занимают время
- Хочется поручить агенту подобрать флаги запуска и сразу измерить результат каждой правки
- Надо вывести метрики GPU и движка в Prometheus и Grafana с таблицей самых тяжелых ядер
- Движок падает, а причину прячет консоль: нужны ошибки и трассировки в одном JSON
- Требуется замерить отдельный кусок кода или ядро через вставки `probe.h`
Не подходит, если
- На машине нет GPU NVIDIA или AMD: профайлер собирает данные CUPTI, NVML, ROCm и AMD SMI
- Нужен профайлер с графическим интерфейсом для ручного анализа: основной канал здесь JSON и терминал
- Профилируется Windows или macOS: расширения cu12 и cu13 работают только в Linux
- Требуется подробная трассировка по каждому ядру AMD в продакшене: этот режим заметно замедляет работу
Пример запроса к агенту
Используй graphsignal: оптимизируй задержку на токен для этого сервера vLLM и покажи, какие ядра заняли больше всего времени до и после правокОграничения
- Расширения `cu12` и `cu13` для профилирования GPU работают только в Linux. Для NVIDIA нужны CUDA 12 или 13, для AMD ROCm.
- Режим `--cuda-graph-trace node` и трассировка `--rocm-kernel-trace all` предназначены для разбора причин и дают заметные накладные расходы, в продакшене их не оставляют.
- Адрес `--listen-host 0.0.0.0` открывает конечную точку без аутентификации всей сети, ограничивать доступ нужно сетевыми правилами.
- Раз за запуск профайлер спрашивает у `api.graphsignal.com` о новой версии, отключается переменной `GRAPHSIGNAL_DISABLE_VERSION_CHECK=1`.
Как отключить. Запускайте нагрузку без обертки `graphsignal-run`, и профайлер перестанет работать. Скилл уберите, удалив `~/.claude/skills/graphsignal`. Пакет снимает `uv tool uninstall graphsignal` или `pip uninstall graphsignal`. Переменная `GRAPHSIGNAL_API_KEY` включает загрузку данных на сервер, не задавайте ее без необходимости.
Частые вопросы
Как поставить скилл Graphsignal в Claude Code?
Выполните `mkdir -p ~/.claude/skills/graphsignal`, затем скачайте SKILL.md командой `curl -fsSL https://raw.githubusercontent.com/graphsignal/graphsignal/main/SKILL.md -o ~/.claude/skills/graphsignal/SKILL.md`. Другим агентам достаточно указать на этот файл.
Как запустить профилирование?
Оберните обычную команду запуска: `graphsignal-run vllm serve <модель> --port 8001`. Работает с любой командой, например `graphsignal-run python my_app.py`. Затем читайте `http://127.0.0.1:18259/signals`.
Какие движки поддерживаются?
Метрики движка берутся из Prometheus у vLLM, SGLang и TensorRT-LLM. GPU-профиль CUPTI или ROCm работает с любым приложением на GPU, например с PyTorch.
Уходят ли данные наружу?
Нет, пока не задан `GRAPHSIGNAL_API_KEY`. Профайлер слушает `127.0.0.1`, промпты и ответы не записываются. Сеть открывается только при запросе к `api.graphsignal.com` о новой версии, и это отключается переменной.
Как посмотреть метрики в Grafana?
Тот же слушатель отдает формат Prometheus по адресу `http://127.0.0.1:18259/metrics`. Для таблицы самых тяжелых ядер подойдет запрос `topk(20, rate(cuda_kernels_nanoseconds_total[1m]))`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыОфициальный скилл Vast.ai: агент ищет GPU-предложения, арендует экземпляры и управляет ими через vastai.
Официальный набор скиллов Grafana: PromQL, Loki, Tempo, Alloy, k6, дашборды и алертинг для Claude Code, Cursor и Codex
13 скиллов NVIDIA для агента на устройстве Jetson: диагностика, память, запуск LLM, пакеты и тесты видео и инференса
Runpod Plugins — GPU-облако для агента
Runpod Official Plugins
Плагин Runpod с 16 скиллами и MCP-сервером: агент поднимает поды, разворачивает эндпоинты и считает расходы на GPU
CLI Glyd запускает языковые модели на NVIDIA GPU со сжатыми весами и кешем, чтобы уменьшить расход видеопамяти.
Скилл с локальным индексом 27 700 методов Microsoft Graph: поиск эндпоинтов, права и вызовы API из командной строки
Коротко о README
README представляет профайлер как инструмент для агента, перечисляет, что он собирает, и начинает с установки через скилл, затем идут ручная установка через uv и pip и флаги `graphsignal-run`. Дальше описаны цикл оптимизации через `/signals`, формат Prometheus, живой вид, режимы замера с накладными расходами, зонды и раздел о безопасности и приватности.
Бейдж для README
Исходный SKILL.md
---
name: graphsignal
description: >-
Profile AI inference workloads (vLLM, SGLang, TensorRT-LLM, PyTorch, any GPU
application) with the Graphsignal profiler and read the results from its
local /signals JSON endpoint. Use when the user wants GPU profiling,
kernel/CUDA-graph timing, engine metrics, or error monitoring for a workload,
asks about `graphsignal-run`, or wants an AI agent to inspect a running
workload's performance.
---
# Graphsignal Profiler
Graphsignal is a GPU profiler built to be operated by an AI agent: install it, launch the workload under it, benchmark it, read the signals, change flags or code, measure again.
It observes a workload from a **sidecar process**: `graphsignal-run` launches the workload unmodified — no code changes, no imports — injects the CUPTI/ROCm activity library into it, and starts a watcher process that collects everything and serves it as one JSON document at `http://127.0.0.1:18259/signals`. Collected out of the box: GPU kernel/graph/transfer/sync timing (CUDA and ROCm), NVML device telemetry, process and host metrics, the engine's own Prometheus metrics (vLLM, SGLang, TensorRT-LLM), and errors extracted from console output. No profiling data is uploaded anywhere unless `GRAPHSIGNAL_API_KEY` is set.
## Install
Install as a uv tool, isolated from the workload environment:
```bash
UV_TOOL_BIN_DIR=/usr/local/bin uv tool install 'graphsignal[cu12]' # CUDA 12.x
# or
UV_TOOL_BIN_DIR=/usr/local/bin uv tool install 'graphsignal[cu13]' # CUDA 13.x
```
`UV_TOOL_BIN_DIR=/usr/local/bin` puts `graphsignal-run` on `PATH` for every shell, including non-interactive scripts and containers. `pip install 'graphsignal[cu12]'` works too. The `cu12`/`cu13` extras are Linux-only, needed for GPU profiling; on AMD install without an extra (`uv tool install graphsignal`) — GPU profiling goes through AMD's `rocprofiler-sdk`, which ships with ROCm 7+.
Root is not required. Verify the install with `graphsignal-run --version`, and readiness after a launch with `curl -s http://127.0.0.1:18259/health` → `{"status": "ok"}`.
## Run
Wrap the workload's launch command:
```bash
graphsignal-run vllm serve Qwen/Qwen2.5-1.5B-Instruct --port 8000
graphsignal-run sglang serve --model-path <model> --port 8000
graphsignal-run trtllm-serve <model> --port 8000
graphsignal-run python my_app.py
```
Leading flags (before the command):
- `--metrics-port PORT` — where to scrape the engine's Prometheus metrics (default: derived from the engine's `--port`).