kermt-infer について
kermt-infer は、ファインチューニング済み KERMT チェックポイントで SMILES CSV を予測するワークフロー用スキルです。チェックポイントとデータを検証して入力を準備し、推論を実行して予測 CSV を返します。
主な機能
- 01ファインチューニング済みチェックポイントと CSV の検証
- 02SMILES データと特徴量の準備
- 03単一 GPU での推論実行
- 04ターゲット列を含む予測 CSV の生成
- 05再実行コマンドと実行情報の記録
活用シーン
- 01ファインチューニング済みチェックポイントによる分子ターゲット予測
- 02クリーニング済み SMILES CSV の一括推論
- 03推論実行の再現と確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia-bionemo/ bionemo-agent-toolkit --skill kermt-inferインストール後、Claude Code で/kermt-inferを入力して読み込まれたか確認します。
同梱ファイルevals/evals.jsonskill-card.md
詳細
kermt-infer
SMILES のみの CSV に対して、ファインチューニング済み KERMT チェックポイントで予測を実行します。この スキルはワークフローオーケストレーターです。ckpt の検証、CSV の検証、データの準備、ランナーのブロッキング起動を行い、予測 CSV を返します。
ハードウェア要件
- GPU:1(シングル GPU)。マルチ GPU 推論は現在サポートされていません。
- VRAM:デフォルトの
batch_size 32では 4 GB 以上。 - ディスク:実行ごとに数百 MB(クリーン済み CSV +特徴量+予測)。
- ドライバー/CUDA:CUDA 12.6(kermt イメージのベース)をサポートするホストであれば使用できます。
入力
必須:
--ckpt <path>— ファインチューニング済みチェックポイント(タスク FFN ヘッドが必要です)。バリデーターは事前学習 ckpt を拒否し、kermt-finetuneにリダイレクトします。--csv <path>— SMILES のみの CSV。先頭列はsmilesである必要があります。その他の列は無視されます。
任意:
--batch-size N— 設定済みのデフォルト(32)を上書きします。--seed N— 推論用の乱数シード(決定論的な特徴量化パス)。--gpus 0— 単一 GPU の ID(デフォルトは 0)。マルチ GPU は拒否されます。--from-prepare <dir>— prepare ステップをスキップし、<dir>内の既存のprepare_data.jsonを再利用します。
ワークフロー
$KERMT_REPO を kermt リポジトリのチェックアウト先パスとし、
kermt-setup によって kermt:latest がビルド済みであるとします。
-
事前確認:コンテナとシステムプローブを確認します。
$KERMT_REPO/agent/scripts/kermt_container.sh check_systemok: falseの場合は続行しません。 -
実行ディレクトリを計算します。
RUN_DIR=$KERMT_REPO/runs/infer_$(date -u +%Y-%m-%dT%H-%M-%SZ) -
チェックポイントを検証します。
$KERMT_REPO/agent/scripts/kermt_container.sh run --ckpt <user-ckpt> -- \ "python agent/scripts/check_checkpoint.py --mode inference --ckpt /ckpt"JSON を解析します。
ok: falseの場合は中止します。バリデーターは事前学習 ckpt (has_task_ffn: false)を拒否し、kermt-finetuneにリダイレクトします。 -
データを検証します。
$KERMT_REPO/agent/scripts/kermt_container.sh run --data <user-csv> -- \ "python agent/scripts/check_data.py --mode inference --csv /data/<basename>"ok: falseの場合は中止します。 -
データを準備します。
$KERMT_REPO/agent/scripts/kermt_container.sh run --data <user-csv> --run-dir $RUN_DIR -- \ "python agent/scripts/prepare_data.py --mode inference \\ --csv /data/<basename> --out /runs/data"出力は
$RUN_DIR/data/prepare_data.jsonに保存され、clean_csvとclean_npzのパスが含まれます(rdkit_2d_normalized 特徴量)。 -
ランナーを起動します(ブロッキング)。
$KERMT_REPO/agent/scripts/kermt_container.sh run \\ --ckpt <user-ckpt> --run-dir $RUN_DIR -- \\ "python agent/scripts/run_inference.py \\ --ckpt /ckpt \\ --prepare-manifest /runs/data/prepare_data.json \\ --out /runs \\ [--gpus 0 --batch-size N --seed N]"成功すると予測 CSV のパスが返されます。
-
ユーザーに報告します。 次の短い概要を出力します:
- 予測:
$RUN_DIR/out/predictions.csv(smiles +ターゲットごとの列) - マニフェスト:
$RUN_DIR/run.json(cmd_replay +イメージダイジェスト+適用された引数) - ログ:
$RUN_DIR/logs/inference.log - 行数: 個の分子を 個のターゲットについて予測
- 予測:
厳守事項
- ユーザーの ckpt を変更しないでください。 ランナーは ckpt を一意な
<out>/ckpt_link/サブディレクトリにシンボリックリンクし、main.py predict --checkpoint_dirがその ckpt を取得できるようにします。ソースファイルは変更されません。 - アーキテクチャは必ず ckpt から取得し、CLI/デフォルトから取得しないでください。 ランナーはバリデーターの arch ブロックを
run.jsonに記録しますが、main.py predictに arch フラグを渡しません。predict は読み込んだ ckpt の saved_args からそれらを読み取ります。 - シングル GPU のみです。 マルチ GPU 推論は現在サポートされていません。
- 適用されたデフォルト値を表示してください。
run.jsonのargs_appliedフィールドには、すべてのフラグの値とソース(user / default-config)が記録されます。デフォルト値が補完されたフラグの概要を簡潔に示してください。
よくあるエラー
inference requires a finetuned ckpt with task FFN heads→ ckpt は事前学習 ckpt です。先にkermt-finetuneを使用してください。prepare_data manifest reports ok=False→ マニフェストのerrorsを確認し、失敗したステップを調べてください(通常は clean_smiles または save_features)。- save_features または main.py predict からの
could not convert string to float: '<value>'→ 入力 CSV に数値以外のパススルー列(例:splitラベル)があります。推論時、prep ステップで CSV を SMILES のみに絞り込むようになりました。それでもこのエラーが発生する場合は、prepare_data を経由しないランナーが CSV を読み込んでいます。main.pyを直接実行せず、スキル経由で再実行してください。 --gpus '0,1' is single-GPU only→ 単一の ID を渡してください。
再実行可能性
run.json の cmd_replay フィールドは、同じ入力で推論を再実行する 1 行のコマンドです。kermt コンテナ内で再実行するには:
$(jq -r .cmd_replay $RUN_DIR/run.json)
ok_to_replay: false(起動時に kermt リポジトリの作業ツリーに未コミットの変更がある)の場合は、repo.commit でコミットを固定し、先に git checkout してください。