mcpField
C
ci-metrics

ci-metrics

github.com/pytorchクラウド・DevOps105.2k42 回インストール今日更新
リポジトリ

ci-metrics について

ci-metricsは、PyTorchのコントリビューターがGrafana上のCI、テスト実行、インフラ指標を調べるためのスキルです。Grafanaの設定と読み取り専用認証をラッパーで行い、ClickHouseとPrometheusのクエリ例を示します。

主な機能

  1. 01ラッパー経由のGrafanaアクセス
  2. 02ClickHouseによるCI・テストのクエリ
  3. 03Prometheusによるインフラ指標のクエリ
  4. 04固定バージョンgcxの自動セットアップ

活用シーン

  1. 01失敗頻度の高いワークフロージョブの特定
  2. 02テスト実行回数と結果の集計
  3. 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 データ
  • テスト
    • データベース: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

コメント