docker について
Feynmanをホスト側に残したまま、Dockerコンテナ内で研究コードを実行するスキルです。プロジェクトファイルをマウントし、実験結果をホストに同期します。
主な機能
- 01コンテナ内で研究コマンドを実行
- 02プロジェクトファイルのマウントと結果同期
- 03言語に応じたベースイメージの選択
- 04GPUワークロードへの対応
- 05反復実験でコンテナを再利用
活用シーン
- 01論文リポジトリのコード実行
- 02ホストを変更せずにパッケージを導入
- 03反復実験の実行
- 04ネットワークワークロードの隔離
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ companion-inc/ feynman --skill dockerインストール後、Claude Code で/dockerを入力して読み込まれたか確認します。
詳細
Docker サンドボックス
Feynman はホスト上に置いたまま、Docker コンテナ内で研究コードを実行します。コンテナにはプロジェクトファイルが渡され、コマンドを実行し、結果は同期されます。
使用する場面
/replicateまたは/autoresearchで、実行環境として「Docker Sandbox」を選択する場合- 論文のリポジトリに含まれる信頼できないコードを実行する場合
- パッケージのインストールやシステム状態の変更を伴う実験
- Feynman のワークフローで研究コードを安全に、または隔離して実行するよう求められた場合
仕組み
- 研究コードに適したベースイメージをビルドするか、プルします
- プロジェクトディレクトリをコンテナにマウントします
- コンテナ内で実験コマンドを実行します
- 結果はマウントされたディレクトリに書き戻されます
コンテナ内でコマンドを実行する
Python の研究コードの場合(最も一般的):
docker run --rm -v "$(pwd)":/workspace -w /workspace python:3.11 bash -c "
pip install -r requirements.txt &&
python train.py
"
Dockerfile があるプロジェクトの場合:
docker build -t feynman-experiment .
docker run --rm -v "$(pwd)/results":/workspace/results feynman-experiment
GPU ワークロードの場合:
docker run --rm --gpus all -v "$(pwd)":/workspace -w /workspace pytorch/pytorch:latest bash -c "
pip install -r requirements.txt &&
python train.py
"
ベースイメージの選択
| 研究の種類 | ベースイメージ |
|---|---|
| Python ML/DL | pytorch/pytorch:latest または tensorflow/tensorflow:latest-gpu |
| Python 汎用 | python:3.11 |
| Node.js | node:20 |
| R/統計 | rocker/r-ver:4 |
| Julia | julia:1.10 |
| 複数言語 | 手動でインストールした ubuntu:24.04 |
永続コンテナ
/autoresearch のような反復実験では、--rm の代わりに名前付きコンテナを作成します。実験に基づいて、内容がわかる名前を付けます。
docker create --name <name> -v "$(pwd)":/workspace -w /workspace python:3.11 tail -f /dev/null
docker start <name>
docker exec <name> bash -c "pip install -r requirements.txt"
docker exec <name> bash -c "python train.py"
これにより、反復をまたいでインストール済みパッケージが保持されます。クリーンアップするには、次を実行します。
docker stop <name> && docker rm <name>
注意事項
- マウントされたワークスペースの結果は、自動的にホストへ同期されます
- コンテナではデフォルトでネットワークが有効です。完全に隔離するには
--network noneを追加します - GPU にアクセスするには、Docker に NVIDIA Container Toolkit を設定する必要があります
コメント
Markdown 対応