Métriques CI PyTorch
Les métriques de CI et d'infrastructure PyTorch sont exposées via Grafana. Utilisez .agents/skills/ci-metrics/gcx-wrapper.sh pour tous les accès Grafana ; il configure le serveur Grafana PyTorch, le contexte et l'authentification. Seuls les utilisateurs avec une permission d'écriture sur le repo ont accès à Grafana. L'authentification fournit un accès en lecture seule.
Requirements
Le wrapper a besoin de ces outils sur PATH :
gh- récupère le token Grafana et doit être authentifié ; sinon, exécutezgh auth login --hostname github.com --git-protocol ssh --web.curl- téléchargegcxet récupère le token depuis HUD.
Lors de la première utilisation, le wrapper télécharge un binaire gcx épinglé et vérifié par checksum dans un cache privé (~/.cache/pytorch-ci-metrics/) et s'authentifie automatiquement. Rien n'est installé sur votre PATH. Si un outil manque ou si gh n'est pas authentifié, il se termine avec une erreur décrivant ce qu'il faut corriger.
Datasources
Obtenez la liste des datasources disponibles :
.agents/skills/ci-metrics/gcx-wrapper.sh datasources list
Les données contiennent des métriques pour de nombreux repos appartenant au repo PyTorch. Quand possible, limitez les requêtes au seul repo pytorch/pytorch.
Données CI et Test Run
Les données CI et test run sont stockées dans grafana-clickhouse-datasource. Listez toutes les tables disponibles :
.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse list-tables
Dataset important :
- Données webhook GitHub
- Database : default
- Remarque : la base default contient aussi d'autres tables non liées aux webhooks.
- En savoir plus sur l'event et le payload : https://docs.github.com/en/webhooks/webhook-events-and-payloads
- Database : default
- Tests
- Database : tests
- tests.all_test_runs - contient chaque test run. C'est une table extrêmement grande, soyez réfléchi avec le filtrage et le timing.
- N'utilisez pas tests.test_run_s3 car elle ne contient que des données partielles.
Pour obtenir des conseils supplémentaires sur les requêtes courantes, clonez https://github.com/pytorch/test-infra dans un répertoire temporaire et lisez le dossier torchci.
Exemples de Requêtes
Dans le repo pytorch/pytorch sur main, listez les top jobs de workflow les plus défaillants des 2 dernières semaines :
.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
SELECT name, count(DISTINCT id) AS failures
FROM default.workflow_job
WHERE conclusion = 'failure'
AND completed_at >= now() - INTERVAL 2 WEEK
AND repository_full_name = 'pytorch/pytorch'
AND head_branch = 'main'
GROUP BY name ORDER BY failures DESC LIMIT 10"
Pour un fichier de test, combien de fois a-t-il été exécuté la semaine dernière ? Combien de fois a-t-il réussi ou échoué ?
.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
SELECT
file,
classname,
name,
count() AS runs,
countIf(failure_count = 0 AND error_count = 0 AND skipped_count = 0) AS successful,
countIf(failure_count > 0 OR error_count > 0) AS fails,
countIf(skipped_count > 0) AS skipped
FROM tests.all_test_runs
WHERE time_inserted >= now() - INTERVAL 7 DAY
AND file = 'lazy/test_ts_opinfo.py'
GROUP BY file, classname, name
ORDER BY runs DESC"
Infrastructure CI
Les métriques d'infrastructure CI sont stockées dans grafanacloud-pytorchci-prom. Pour mieux comprendre les données, clonez ces repos dans un répertoire temporaire :
- https://github.com/pytorch/ci-infra - Dans
/osdccontient le code d'OSDC, l'infra exécutant le CI de PyTorch. Lisez-le pour comprendre comment les métriques sont exportées et quelles métriques sont disponibles. Lisez les docs dans /osdc/docs pour comprendre l'étendue et la configuration du projet. - https://github.com/jeanschmidt/actions-runner-controller - Pour comprendre comment actions-runner-controller expose les données.
Exemples de Requêtes
Quels types de runner ont la queue la plus profonde en ce moment (jobs assignés mais pas encore en cours) ?
.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'topk(10, clamp_min(sum by (name) (gha_assigned_jobs) - sum by (name) (gha_running_jobs), 0))'
Combien de jobs ont tourné par cluster sur les 6 dernières heures, échantillonné toutes les 30 minutes ? Utilisez --since/--step (ou --from/--to) pour une requête de plage :
.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'sum by (cluster) (gha_running_jobs)' --since 6h --step 30m