Skip to content

feat: 公式マルチシード再現と CI(pytest + repro-smoke) - #58

Closed
koki3070 wants to merge 4 commits into
uda-lab:stack/pr6-losses-trainer-mainfrom
koki3070:pr7-official-repro
Closed

feat: 公式マルチシード再現と CI(pytest + repro-smoke)#58
koki3070 wants to merge 4 commits into
uda-lab:stack/pr6-losses-trainer-mainfrom
koki3070:pr7-official-repro

Conversation

@koki3070

@koki3070 koki3070 commented May 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • 公式のマルチシード・バックエンド比較入口として experiments/run_backend_multiseed.py を追加し、読者向けに REPRODUCIBILITY.mdREADME.md(Known Constraints 含む)を整備する。
  • .github/workflows/ruff.ymlpytest と、run_backend_multiseed.py の軽量 repro-smoke(1 epoch・seed 1・mahalanobis のみ)を追加し、README / REPRODUCIBILITY の CI 記述と一致させる。

Depends on

Test plan

  • CI(ruff / pytest / repro-smoke)が緑になる
  • ローカルで uv run pytest と README の smoke コマンドが通る

Made with Cursor

README / REPRODUCIBILITY と experiments/run_backend_multiseed を追加し、
workflow に pytest と軽量な run_backend_multiseed スモークを載せる。

Co-authored-by: Cursor <cursoragent@cursor.com>
@koki3070
koki3070 changed the base branch from main to stack/pr6-losses-trainer-main May 25, 2026 05:22

t-uda commented May 25, 2026

Copy link
Copy Markdown
Contributor

依存管理まわりで一点、確認・修正した方がよさそうです。

現状、.github/workflows/ruff.ymlREPRODUCIBILITY.mdpytorch-topological について

git submodule update --init --recursive

を実行する前提の記述になっていますが、この PR head では .gitmodules が存在せず、実際には submodule 登録されていないように見えます。そのため、現在の運用は「submodule 優先」ではなく、実質的には pytorch-topological/ という repo root 直下の path dependency を CI で不足時に shallow clone する形になっています。

ただし、pyproject.toml では

torch_topological = { path = "pytorch-topological", editable = true }

としているため、再現性の観点では pytorch-topological の中身の commit も固定されるべきです。単に git clone --depth 1 https://github.com/aidos-lab/pytorch-topological.git pytorch-topological だと、upstream HEAD に依存して将来の CI / 再現実行が変わる可能性があります。

推奨は次のどちらかです。

  1. pytorch-topological を正式に submodule 登録し、.gitmodules と submodule commit を追跡する。CI/docs は git submodule update --init --recursive に寄せ、clone fallback は削除または非常時扱いにする。
  2. submodule にしない方針なら、CI/docs から submodule 前提の記述を消し、clone fallback でも特定 commit を checkout する。

この repo の目的が再現性確保なので、私は 1 の submodule 登録の方が自然だと思います。

t-uda commented May 25, 2026

Copy link
Copy Markdown
Contributor

Codex review item 1(backend comparison の confounding)については、これは現時点の実験設計上ある程度避けられないものとして、明文化して扱う方針がよいと思います。

現状では、Mahalanobis backend は TopologicalLoss から渡される outlier probability を距離重みに織り込めますが、ellphi backend は tangency distance のみを使い、probability weighting は未実装です。したがって、この multiseed driver の比較は厳密には

Mahalanobis distance + outlier-probability weighting
vs
ellphi tangency distance without outlier-probability weighting

であり、「distance backend だけを完全に isolate した比較」ではありません。

ただし、これは必ずしも PR blocker ではないと思います。実装上・数学上、ellphi tangency distance に Mahalanobis 側と同型の probability weighting を直ちに入れるのは自然な一行修正ではなく、むしろ比較対象の定義を曖昧にする危険があります。したがって当面は、README / REPRODUCIBILITY / 実験ログの説明で、次を明確に書くのがよいです。

  • この比較は backend-only ablation ではない。
  • 同一のデータ・学習スケジュール・設定表面の下で、現行実装の二つの位相損失パイプラインを比較している。
  • backend delta は、距離関数そのものの差だけでなく、probability weighting の有無も含む差として解釈する。

もし将来的に backend-only ablation を追加するなら、Mahalanobis 側でも probs=None に固定した variant を別実験として設けるのが自然だと思います。

koki3070 and others added 2 commits May 28, 2026 14:11
…veats

Use ensure script in docs; document Mahalanobis vs ellphi comparison limits.

Co-authored-by: Cursor <cursoragent@cursor.com>
@koki3070

Copy link
Copy Markdown
Contributor Author

Issue 4531819747:
PR1 で third_party/pytorch_topological.refscripts/ensure_pytorch_topological.sh を導入済みです。本 PR の README / REPRODUCIBILITY / CI もその手順に揃え、未 pin の shallow clone を主手順から外しました。

@koki3070

Copy link
Copy Markdown
Contributor Author

Issue 4531912256:
README / REPRODUCIBILITY に、Mahalanobis(確率重みあり)と ellphi(未実装)の差を含む比較である旨を明記しました。backend-only ablation ではないこと、同一スケジュール・設定表面でのパイプライン比較として読む旨を追記しています。

Keep strict finite checks for MCC/recall, but tolerate non-finite val_loss
when parsing metrics.csv so CI repro-smoke does not fail on NaN loss fields.

Co-authored-by: Cursor <cursoragent@cursor.com>
koki3070 added a commit to koki3070/TDA-ML that referenced this pull request May 28, 2026
…ture/optimized-tda-src

Bring in pytorch-topological pin, Copilot/t-uda fixes across config,
topology, ellphi gradient, multiseed driver, and CI repro-smoke handling.
Keep feature-branch training code (models/losses with ellipse_param_dim).

Co-authored-by: Cursor <cursoragent@cursor.com>
@t-uda

t-uda commented May 29, 2026

Copy link
Copy Markdown
Contributor

スカッシュコミット 5b61c98 を main に直接 push して適用済み(squash merge 累積によるコンフリクト回避)。

@t-uda t-uda closed this May 29, 2026
koki3070 added a commit to koki3070/TDA-ML that referenced this pull request Jun 15, 2026
Rebase feature/optimized-tda-src onto uda-lab/TDA-ML main.
Preserves fork-only benchmarks, topology geometry fixes, and experiment
scripts while adopting upstream PR stack (uda-lab#52-uda-lab#58).

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants