日常の開発で使うコマンドの一覧.コマンドを推測せず必ず本ファイルを参照する(新しく確定・変更された時は本ファイルに反映する).
※ Git Bash ではログの日本語が文字化けする.先頭に PYTHONIOENCODING=utf-8 を付けると正しく表示される.
| 目的 | コマンド | 備考 |
|---|---|---|
| 依存の同期 | uv sync | 初回・pyproject.toml 変更後.手元には CPU 版 PyTorch が入る |
| 依存の追加 | uv add <パッケージ> | uv.lock が更新されるのでコミットする |
| 開発用依存の追加 | uv add --dev <パッケージ> | pytest・ruff 等 |
| Python の実行 | uv run python <スクリプト> | 仮想環境を明示的に有効化しなくてよい |
| 目的 | コマンド | 備考 |
|---|---|---|
| 合成データの生成 | uv run python scripts/make_synthetic_dataset.py | 出力は data/synthetic/(images/<label>_<severity>/ と manifest.csv).既定は 1 ディレクトリ 10 枚・seed 0 |
| 合成データの作り直し | uv run python scripts/make_synthetic_dataset.py --overwrite | 目印ファイル .synthetic_dataset がある出力先だけを削除して作り直す(実データの誤削除を防ぐため) |
| 枚数・seed の指定 | uv run python scripts/make_synthetic_dataset.py --per-dir 50 --seed 1 | 出力先は --out で変更できる |
| manifest の生成 | uv run tias-dataset build-manifest --config <設定> | images/ を走査して manifest.csv を書く.既存があれば --overwrite が必要 |
| データセットの集計 | uv run tias-dataset survey --config <設定> | runs/<実験ID>/ に集計値だけを書く.最後に実験 ID を出力する(SPEC_01「データセット集計の出力」) |
実データ(サーバ上)での実行例(GPU を使わないので --cpu):
uv run tias-remote run --name manifest --cpu --server Newton -- tias-dataset build-manifest --config configs/newton.yaml uv run tias-remote run --name survey --cpu --server Newton -- tias-dataset survey --config configs/newton.yaml uv run tias-remote logs survey # 最後の行に実験 ID が出る uv run tias-remote pull <実験ID> # 集計値と図だけが手元の runs/ に届く
設定ファイルは configs/synthetic.yaml(手元の合成データ)と configs/newton.yaml(サーバの実データ).環境変数 TIAS_DATA_ROOT を設定すると data.root より優先される.
研究室の GPU サーバ(Newton・Archimedes)で計算するときは tias-remote を使う.コマンドはすべて手元で実行する.空いている GPU を両サーバから自動で選ぶ(未使用の GPU を最優先.仕様は SPEC_03).サーバ設定は configs/remote.yaml.
| 目的 | コマンド |
|---|---|
GPU の状況と run が選ぶ GPU | uv run tias-remote gpus |
| 実行中ジョブと GPU の状況 | uv run tias-remote status |
| コードを送る(全サーバ) | uv run tias-remote push |
| 送る一覧だけ見る | uv run tias-remote push --dry-run |
| ジョブを起動(GPU 自動選択) | uv run tias-remote run --name exp1 -- python scripts/xxx.py |
| GPU を指定して起動 | uv run tias-remote run --name exp2 --server Newton --gpu 1 -- python ... |
| 選ばれる GPU だけ確かめる | uv run tias-remote run --name exp1 --dry-run -- python ... |
| GPU を使わないジョブ | uv run tias-remote run --name job --cpu [--server Newton] -- ...(GPU の空きを待たない.CUDA_VISIBLE_DEVICES は空) |
| ログの末尾・追従 | uv run tias-remote logs exp1・uv run tias-remote logs exp1 -f |
| ジョブを止める | uv run tias-remote kill exp1 |
| 実験結果を持ち帰る | uv run tias-remote pull <実験ID>(重みも要るときは --with-checkpoints) |
gpus・run・status は GPU を 10 秒観測してから判定するため,1 回に 13 秒ほどかかる.急ぐときは --observe 0(瞬間値のみ.約 2 秒.gpus・run のみ)run は起動前に選んだサーバへ自動でコードを送る(--no-push で省略).ジョブには CUDA_VISIBLE_DEVICES・TIAS_DATA_ROOT(そのサーバのデータの場所)が渡るpull は回収ホワイトリストに名前が一致するファイルだけを runs/<実験ID>/ に持ち帰る.回収しなかったファイルは件数だけ表示されるruns/_remote_logs/<ジョブ名>.log.末尾に === [日時] exit <終了コード> の行が付くTIAS_REMOTE_JUMP を空文字にすると速い(Git Bash: TIAS_REMOTE_JUMP= uv run tias-remote gpus.PowerShell: $env:TIAS_REMOTE_JUMP = "")uv run tias-remote <サブコマンド> --help| 目的 | コマンド | 備考 |
|---|---|---|
| 5-fold 交差検証 | uv run tias-train cv --config <設定> | 学習・評価して runs/<実験ID>/ に書き出す.最後に実験 ID を出力する(SPEC_02「交差検証の実行」) |
| 手元での試運転 | uv run tias-train cv --config configs/cv_synthetic.yaml | 合成データ・小さなモデル・事前学習なし.CPU で十数秒 |
| 回収した結果の集計 | uv run python scripts/summarize_cv.py runs | runs/*_cv_* を読み,モデル × 学習率 × 条件ごとの表と「除外 − 込み」の対応比較を Markdown で出す(TEST_03 の表) |
設定ファイル:
| 設定 | 内容 |
|---|---|
configs/cv_with_mild.yaml・configs/cv_without_mild.yaml | ConvNeXt-Tiny・ややあり込み/除外(サーバの実データ) |
configs/cv_<effb0 \| resnet50 \| vits>_<with_mild \| without_mild>.yaml | モデル比較用(モデル名以外は上と同一) |
configs/repeat/*_s43.yaml・*_s44.yaml | 分割 seed を変えた繰り返し(seed 以外は元の設定と同一) |
configs/lr1e-3/*.yaml | ResNet-50・EfficientNet-B0 を学習率 1e-3 で回す設定(1e-4 では学習不足だったため.TEST_03) |
サーバでの実行例:
# 1 本だけ(空いている GPU を自動で選ぶ) uv run tias-remote run --name cv1 -- tias-train cv --config configs/cv_with_mild.yaml # 複数本を同じ GPU で順に回す(キュー).; で区切るので 1 本が失敗しても次へ進む uv run tias-remote run --name q1 --server Archimedes --gpu 1 -- bash -c "tias-train cv --config configs/cv_with_mild.yaml; tias-train cv --config configs/cv_effb0_with_mild.yaml;" uv run tias-remote logs q1 # 各実験の最後の行に実験 ID が出る uv run tias-remote pull <実験ID> # 指標・図・ログだけが手元の runs/ に届く
~/.cache/huggingface)lr_scheduler.step() before optimizer.step() の警告は,混合精度で最初の数ステップの勾配がオーバーフローして捨てられたときに出るもので無害| 目的 | コマンド |
|---|---|
| 全テスト | uv run pytest |
| 特定ファイル | uv run pytest tests/data/test_split.py |
| 詳細表示 | uv run pytest -v |
臨床データに依存するテストは書かない(合成データで動くテストのみ).
| 目的 | コマンド |
|---|---|
| Lint | uv run ruff check . |
| Lint(自動修正) | uv run ruff check --fix . |
| Format | uv run ruff format . |
※ .claude/ はテンプレート所有のため ruff の対象外(pyproject.toml の extend-exclude).テンプレート由来のフックのテストは uv run pytest .claude/hooks/tests で実行する.
| 目的 | コマンド | 備考 |
|---|---|---|
| フックのテスト | bash .claude/hooks/tests/test_hooks.py 相当を uv run pytest .claude/hooks/tests | テンプレート由来..claude/ の変更時に確認する |