mcpField
I
i4h-workflow-dataset-annotate

i4h-workflow-dataset-annotate

github.com/nvidiaデータ・データベース3.8k67 回インストール今日更新
リポジトリ

i4h-workflow-dataset-annotate について

i4h-workflow-dataset-annotateは、ワークフロー録画から抽出したカメラフレームを自然言語の成功基準で評価するスキルです。HDF5エピソードを確認するユーザー向けに、VLMの判定をシミュレーター上の成功状態と分けて扱います。

主な機能

  1. 01各エピソードの抽出フレームを評価
  2. 02自然言語の基準を使用
  3. 03OpenAI互換のビジョンエンドポイントに対応
  4. 04カメラ抽出のドライラン
  5. 05判定による録画の任意フィルタリング

活用シーン

  1. 01選択したHDF5内の全エピソードを評価
  2. 02画像送信前にカメラ抽出を確認
  3. 03評価後にフィルタ済み録画を作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nvidia/skills --skill i4h-workflow-dataset-annotate

インストール後、Claude Code で/i4h-workflow-dataset-annotateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json

詳細

ワークフローの記録に注釈を付ける

目的

サンプリングしたカメラフレームを自然言語の成功基準に照らして評価し、VLM のラベルとシミュレーターの成功判定を分けて扱います。

手順

  1. チェックアウト解決ツールを実行し、HDF5 ファイルを 1 つ、基準を 1 つ選択します。
  2. カメラのサンプリングとビジョンエンドポイントをテストします。
  3. 選択したすべてのエピソードについて、評価と必要に応じたフィルタリングを実行します。
  4. 判定と出力件数を比較します。

入力と基準を解決する

export I4H_WORKFLOWS_REPO_URL="${I4H_WORKFLOWS_REPO_URL:-https://github.com/isaac-for-healthcare/i4h-workflows}"
I4H_REPO_DIR_NAME="${I4H_WORKFLOWS_REPO_URL%/}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME##*/}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME##*:}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME%.git}"
[ -n "$I4H_REPO_DIR_NAME" ] || { echo "Cannot derive a checkout name from I4H_WORKFLOWS_REPO_URL" >&2; exit 2; }
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/i4h_workflows" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/$I4H_REPO_DIR_NAME}"
  [ -d "$ROOT/workflows/i4h_workflows" ] || git clone "$I4H_WORKFLOWS_REPO_URL" "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"
cd "$ROOT"
find runs -name '*.hdf5' -type f -printf '%T@ %p\n' | sort -nr | head

上記の解決ツールをスキルの契約の一部として扱ってください。ホストされたコピーはベースリポジトリの外で実行される場合があるため、現在のチェックアウトに workflows/i4h_workflows が含まれていると決めつけないでください。I4H_WORKFLOWS_REPO_URL でクローン元を指定します。I4H_WORKFLOWS が未設定の場合は、その URL からフォールバックディレクトリを導出してください。特定の保存先を再利用または選択する場合に限り、I4H_WORKFLOWS を設定してください。既存のチェックアウトを置き換えてはいけません。

明示的に指定された、または現在のチェーンにある HDF5 ファイルを使用してください。「記録されたすべてのエピソード」とは、過去の全実行ではなく、選択したファイル内のすべてのエピソードを指します。ファイルを調べ、ユーザーが成功基準を明示している場合はそれを使用してください。明示されていない場合は、ソースの Scene マニフェストの指示と、ワークフローで確認できる最終目標の意味を組み合わせてください。配置の成功は、ロボットが対象物を持ち続けることではなく、対象物が目標位置に到達し、その位置にとどまることとして表現してください。

エンドポイントを解決する

呼び出し元が OpenAI 互換のビジョンエンドポイント/モデルを指定している場合は、まずそれを使用してください。ローカル Agent では、その設定は I4H_AGENT_VL_BASE_URL、I4H_AGENT_VL_MODEL、および I4H_AGENT_VL_API_KEY または I4H_AGENT_API_KEY として公開されています。認証情報を表示せずに、これらの汎用エージェント変数をアノテーターに割り当ててください。

VLM_ARGS=()
if [ -n "${I4H_AGENT_VL_BASE_URL:-}" ] && [ -n "${I4H_AGENT_VL_MODEL:-}" ]; then
  I4H_VLM_URL="${I4H_AGENT_VL_BASE_URL%/}"
  case "$I4H_VLM_URL" in */v1) ;; *) I4H_VLM_URL="$I4H_VLM_URL/v1" ;; esac
  export I4H_VLM_URL
  export OPENAI_API_KEY="${I4H_AGENT_VL_API_KEY:-${I4H_AGENT_API_KEY:-EMPTY}}"
  VLM_ARGS=(--model "$I4H_AGENT_VL_MODEL")
fi

呼び出し元がエンドポイント/モデルを指定していない場合は、リポジトリのローカルサービスを起動してください。

tools/annotator/scripts/vllm.sh ensure

この実行でサービスを起動したかどうかを記録してください。スキル内でモデル名をハードコードしてはいけません。ユーザーが指定していない場合は、CLI/サービスのデフォルトを使用してください。

必要に応じてドライランでサンプリングする

uv run --project tools/annotator i4h-annotator \
  --task "<success criterion>" \
  --dry-run \
  offline /absolute/path/to/recording.hdf5

画像を送信せずに、カメラとサンプリングされたフレームを確認するために使用してください。

評価とフィルタリング

RUN_DIR="$(pwd)/runs/<workflow>/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$RUN_DIR"
uv run --project tools/annotator i4h-annotator \
  --task "<success criterion>" \
  "${VLM_ARGS[@]}" \
  offline /absolute/path/to/recording.hdf5 \
  --write

選択した場合に限り、グローバルオプションの --base-url、--model、--camera、または --frames を追加してください。オフラインの --node は、要求されたセグメントに限って追加してください。フィルタリングが要求された場合に限り、--filter "$RUN_DIR/filtered.hdf5" を追加してください。要約のみを求めるプロンプトでは、少なくとも 1 件の成功を必須とせずに、すべてのエピソードを評価してください。認証情報は環境変数に保持し、決して表示しないでください。

この実行で起動した場合に限り、ローカル VLM を停止してください。

tools/annotator/scripts/vllm.sh stop

検証

アノテーターの概要を確認してください。フィルタリングが要求された場合は、フィルタリング後のファイルも確認してください。

uv run --project tools/dataset i4h-dataset inspect "$RUN_DIR/filtered.hdf5" --segments

選択したすべてのエピソードに判定があることを確認し、合格/不合格の件数と、該当する場合はフィルタリング後の件数を照合してください。エンドポイントのエラー、カメラの欠落、部分的な書き込み、説明のつかないエピソード数 0 の出力は失敗として扱ってください。要約のみを求めるプロンプトでは、すべて不合格という判定結果でも評価の完了として有効です。ただし、有効なフィルタリング済みデータセットとは見なせません。

トラブルシューティング

エンドポイント/認証エラーを確認する前に、カメラのサンプリングを確認してください。部分的な書き込みや、説明のつかない件数 0 のフィルタリング済みファイルを受け入れてはいけません。

前提条件

カメラフレームを含む、読み取り可能なワークフロー HDF5 ファイルと、ドライラン以外の場合は到達可能な OpenAI 互換ビジョンエンドポイントが必要です。

制限事項

視覚的な評価では、欠落したフレームを復元できず、視認できないシミュレーターの状態を証明することもできません。

例

  • Run annotation on all recorded episodes and summarize. → 現在の HDF5 ファイルを選択し、すべてのエピソードを評価して、フィルタリング後のファイルを検証し、合格/不合格の件数を報告します。

完了条件

ソース HDF5、選択した基準/カメラ/モデル/エンドポイントの由来、評価したエピソードの合格/不合格件数、要求された場合はフィルタリング後のパス/件数、使用した場合はドライランの結果、ローカルサービスの停止状況を報告してください。

コメント