ci-metrics について
ci-metricsは、PyTorchのコントリビューターがGrafana上のCI、テスト実行、インフラ指標を調べるためのスキルです。Grafanaの設定と読み取り専用認証をラッパーで行い、ClickHouseとPrometheusのクエリ例を示します。
主な機能
- 01ラッパー経由のGrafanaアクセス
- 02ClickHouseによるCI・テストのクエリ
- 03Prometheusによるインフラ指標のクエリ
- 04固定バージョンgcxの自動セットアップ
活用シーン
- 01失敗頻度の高いワークフロージョブの特定
- 02テスト実行回数と結果の集計
- 03ランナーのキューやクラスター稼働状況の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pytorch/ pytorch --skill ci-metricsインストール後、Claude Code で/ci-metricsを入力して読み込まれたか確認します。
同梱ファイルgcx-wrapper.sh
詳細
PyTorch CI メトリクス
PyTorch の CI とインフラストラクチャのメトリクスは Grafana で公開されています。Grafana へのアクセスにはすべて .agents/skills/ci-metrics/gcx-wrapper.sh を使用してください。このスクリプトは PyTorch の Grafana サーバー、コンテキスト、認証を設定します。Grafana にアクセスできるのは、リポジトリへの書き込み権限を持つユーザーのみです。認証で許可されるのは読み取り専用アクセスのみです。
要件
ラッパーを使用するには、次のツールが PATH に必要です。
gh- Grafana トークンを取得します。認証が必要です。認証されていない場合は、gh auth login --hostname github.com --git-protocol ssh --webを実行してください。curl-gcxをダウンロードし、HUD からトークンを取得します。
初回使用時に、ラッパーは固定バージョンでチェックサム検証済みの gcx バイナリをプライベートキャッシュ(~/.cache/pytorch-ci-metrics/)にダウンロードし、自動的に認証します。PATH には何もインストールされません。必要なツールが見つからない場合、または gh が認証されていない場合は、修正方法を説明するエラーを表示して終了します。
データソース
利用可能なデータソースの一覧を取得します。
.agents/skills/ci-metrics/gcx-wrapper.sh datasources list
データには、PyTorch リポジトリが所有する多数のリポジトリのメトリクスが含まれています。可能な場合は、クエリ対象を pytorch/pytorch リポジトリのみに絞ってください。
CI およびテスト実行データ
CI とテスト実行データは grafana-clickhouse-datasource に保存されています。利用可能なテーブルをすべて一覧表示します。
.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse list-tables
重要なデータセット:
- GitHub webhook データ
- データベース:default
- 注:default データベースには、webhook に関連しないテーブルも含まれています。
- イベントとペイロードの詳細:https://docs.github.com/en/webhooks/webhook-events-and-payloads
- データベース:default
- テスト
- データベース:tests
- tests.all_test_runs - すべてのテスト実行が含まれます。非常に大きなテーブルなので、フィルタリングと実行タイミングに配慮してください。
- 部分的なデータしか含まれないため、tests.test_run_s3 は使用しないでください。
一般的なクエリに関する追加のガイダンスを得るには、https://github.com/pytorch/test-infra を一時ディレクトリにクローンし、torchci フォルダーを参照してください。
クエリの例
pytorch/pytorch リポジトリの main ブランチで、過去 2 週間に最も失敗したワークフロージョブを一覧表示します。
.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"
あるテストファイルは過去 1 週間に何回実行されましたか?成功または失敗した回数はいくつですか?
.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"
CI インフラストラクチャ
CI インフラストラクチャのメトリクスは grafanacloud-pytorchci-prom に保存されています。データへの理解を深めるには、次のリポジトリを一時ディレクトリにクローンしてください。
- https://github.com/pytorch/ci-infra -
/osdcには、PyTorch の CI を実行するインフラである OSDC のコードが含まれています。メトリクスのエクスポート方法と利用可能なメトリクスを理解するために参照してください。対象範囲とプロジェクトの設定を理解するには、/osdc/docs のドキュメントを参照してください。 - https://github.com/jeanschmidt/actions-runner-controller - actions-runner-controller がデータをどのように公開するかを理解するために参照してください。
クエリの例
現在、キューが最も深いランナーの種類はどれですか(ジョブが割り当て済みで、まだ実行されていない状態)?
.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))'
過去 6 時間に、クラスターごとに実行中だったジョブ数はいくつですか?30 分ごとにサンプリングしてください。範囲クエリには --since/--step(または --from/--to)を使用します。
.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'sum by (cluster) (gha_running_jobs)' --since 6h --step 30m