Tab-PE 公式デモの再現と下流 utility の分析

環境構築・再現手順・実装メモ

エンジニアリングノート

第三者がこのページだけで環境を再構築できることを目指す。

環境

項目
OS Windows 11 Pro (10.0.26200)
CPU AMD Ryzen 5 7640HS (6C/12T)
RAM 25.8 GB
Python 3.12.13(uv 管理)
uv 0.11.26
DPSDA commit 9078c67995499e6769113780200bbf1d788d3d60(2026-07-01)
パッケージ private-evolution 0.0.1(当該 SHA の Git 依存)

環境再構築

uv sync            # 依存を uv.lock から再現(--frozen でも可)
uv run python -c "from pe.api import TabularAPI"   # import 確認

公式デモスクリプトはインストール対象パッケージに含まれない(pyproject.tomlpackages.findexample* を除外)。そのため DPSDA を同一 SHA で external/DPSDA にチェックアウトして実行する(external/ は gitignore)。

git clone --filter=blob:none https://github.com/microsoft/DPSDA.git external/DPSDA
git -C external/DPSDA checkout 9078c67995499e6769113780200bbf1d788d3d60

パッケージ / 実行方法

Windows / 環境依存の問題と対処

以下は公式アルゴリズム・プライバシー・評価には影響しない最小限の対処である。

  1. azure の import 失敗: from pe.api import TabularAPI が text/LLM 経路 (pe.llm.azure_openaiazure.identity) を eager import する。pe/__init__.pyopenai/transformers 等を generalimport で optional 化するが azure を 含まない。[tabular] のみでは失敗するため azure-identity を追加した (公式 [text]/[image] extras にも含まれる依存)。未使用の Azure-OpenAI 経路を 満たすのみで、Tab-PE・DP・評価には無影響。

  2. tabpfn のライセンスゲート: XOR デモは tabpfn を分類器に固定するが、 tabpfn は重みダウンロードに対話的なライセンス受諾 + TABPFN_TOKEN を要求する。 非対話環境では取得できないため、XOR の分類器精度は NOT_RUN とし、生成のみを 分類器コールバックを外した deviation スクリプトで実行した。他 5 デモが使う tabicl は HuggingFace Hub から重みを取得し、ライセンスゲートなしで CPU 実行可能。

  3. CSVPrint の per-iteration CSV が空: 公式 CSVPrint は指標名でファイルを作る が、表形式指標名にフィルタ辞書由来の : が含まれ、Windows のファイル名に使えない ため 0 バイトになる。per-iteration の時系列は代わりに log.txt を解析して results/summaries/iterations/*.csv に抽出した。

  4. ot の SyntaxWarning: pe 依存の POT が docstring 中の \d で警告を出すが 実行に影響なし。

データダウンロード / seed / checkpoint

結果の監査(元ログへの追跡、#19)

公開している数値は results/summaries/*.json と、そこから集計した experiments.json に由来する。 一方、根拠となる元ログ・合成 CSV・checkpoint は容量のため .gitignore 対象(results/raw/, results/logs/, results/synthetic/, results/checkpoints/, results/figures/)で、clean clone 直後には存在しない。この追跡性を scripts/audit_results.py で担保する。

uv run python scripts/audit_results.py            # 監査マニフェストを生成
uv run python scripts/audit_results.py --verify   # 完全性を検査(不一致で非ゼロ終了)