poly-hammer-worker 0.1.1.dev12__tar.gz → 0.3.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. poly_hammer_worker-0.3.8/.dockerignore +35 -0
  2. poly_hammer_worker-0.3.8/.gitignore +19 -0
  3. poly_hammer_worker-0.3.8/PKG-INFO +14 -0
  4. poly_hammer_worker-0.3.8/README.md +191 -0
  5. poly_hammer_worker-0.3.8/compose.yml +165 -0
  6. poly_hammer_worker-0.3.8/docs/index.md +320 -0
  7. poly_hammer_worker-0.3.8/poly_hammer_worker/__init__.py +1 -0
  8. poly_hammer_worker-0.3.8/poly_hammer_worker/api_client.py +74 -0
  9. poly_hammer_worker-0.3.8/poly_hammer_worker/base_job.py +248 -0
  10. poly_hammer_worker-0.3.8/poly_hammer_worker/cli.py +551 -0
  11. {poly_hammer_worker-0.1.1.dev12 → poly_hammer_worker-0.3.8}/poly_hammer_worker/hardware.py +30 -41
  12. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/__init__.py +115 -0
  13. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/_recipe_lib/harness.ps1 +170 -0
  14. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/_recipe_lib/harness.sh +164 -0
  15. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/Dockerfile +34 -0
  16. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/__init__.py +19 -0
  17. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/config.py +11 -0
  18. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/job.py +172 -0
  19. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/mock-event.json +10 -0
  20. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/motion.npz +0 -0
  21. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/install.ps1 +93 -0
  22. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/install.sh +106 -0
  23. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/recipe.toml +12 -0
  24. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/verify.py +18 -0
  25. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/requirements.txt +6 -0
  26. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/Dockerfile +99 -0
  27. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/__init__.py +37 -0
  28. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/config.py +34 -0
  29. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/job.py +372 -0
  30. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/mock-event.json +10 -0
  31. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/install.ps1 +122 -0
  32. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/install.sh +143 -0
  33. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/recipe.toml +17 -0
  34. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/verify.py +25 -0
  35. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/requirements.txt +20 -0
  36. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/Dockerfile +66 -0
  37. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/Dockerfile.cuda +80 -0
  38. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/__init__.py +1 -0
  39. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/artifact.py +153 -0
  40. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/config.py +30 -0
  41. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/constraints.txt +17 -0
  42. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/job.py +447 -0
  43. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/mock-event.json +10 -0
  44. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/install.ps1 +170 -0
  45. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/install.sh +202 -0
  46. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/recipe.toml +35 -0
  47. poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/verify.py +35 -0
  48. poly_hammer_worker-0.3.8/poly_hammer_worker/logging_setup.py +74 -0
  49. poly_hammer_worker-0.3.8/poly_hammer_worker/progress.py +336 -0
  50. poly_hammer_worker-0.3.8/poly_hammer_worker/telemetry.py +129 -0
  51. poly_hammer_worker-0.3.8/poly_hammer_worker/utilities.py +391 -0
  52. poly_hammer_worker-0.3.8/poly_hammer_worker/worker.py +392 -0
  53. poly_hammer_worker-0.3.8/pyproject.toml +66 -0
  54. poly_hammer_worker-0.3.8/tests/test_download_token.py +81 -0
  55. poly_hammer_worker-0.3.8/tests/test_hardware.py +52 -0
  56. poly_hammer_worker-0.3.8/tests/test_job_discovery.py +54 -0
  57. poly_hammer_worker-0.3.8/tests/test_job_phases.py +155 -0
  58. poly_hammer_worker-0.3.8/tests/test_kimodo_artifact.py +140 -0
  59. poly_hammer_worker-0.3.8/tests/test_kimodo_job.py +162 -0
  60. poly_hammer_worker-0.3.8/tests/test_progress.py +97 -0
  61. poly_hammer_worker-0.3.8/tests/test_recipe_contract.py +88 -0
  62. poly_hammer_worker-0.3.8/tests/test_recipe_packaging.py +41 -0
  63. poly_hammer_worker-0.3.8/tests/test_storage_upload.py +23 -0
  64. poly_hammer_worker-0.3.8/tests/test_telemetry.py +101 -0
  65. poly_hammer_worker-0.3.8/uv.lock +1638 -0
  66. poly_hammer_worker-0.1.1.dev12/.gitignore +0 -12
  67. poly_hammer_worker-0.1.1.dev12/PKG-INFO +0 -101
  68. poly_hammer_worker-0.1.1.dev12/README.md +0 -88
  69. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/__init__.py +0 -1
  70. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/api_client.py +0 -128
  71. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/cli.py +0 -158
  72. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/docker_runner.py +0 -393
  73. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/image_discovery.py +0 -188
  74. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/logging_config.py +0 -73
  75. poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/worker_loop.py +0 -337
  76. poly_hammer_worker-0.1.1.dev12/pyproject.toml +0 -25
  77. poly_hammer_worker-0.1.1.dev12/uv.lock +0 -491
  78. {poly_hammer_worker-0.1.1.dev12 → poly_hammer_worker-0.3.8}/poly_hammer_worker/banner.py +0 -0
@@ -0,0 +1,35 @@
1
+ # Dependencies
2
+ node_modules
3
+ **/node_modules
4
+ frontend/node_modules
5
+
6
+ # Build outputs
7
+ dist
8
+ **/dist
9
+ frontend/dist
10
+
11
+ # Python
12
+ __pycache__
13
+ *.pyc
14
+ .venv
15
+ backend/.venv
16
+
17
+ # Git
18
+ .git
19
+ .gitignore
20
+
21
+ # IDE
22
+ .vscode
23
+ .idea
24
+
25
+ # Test artifacts
26
+ htmlcov
27
+ .coverage
28
+ .pytest_cache
29
+ playwright-report
30
+ test-results
31
+
32
+ # Misc
33
+ *.log
34
+ .DS_Store
35
+ Thumbs.db
@@ -0,0 +1,19 @@
1
+ node_modules/
2
+ /test-results/
3
+ /playwright-report/
4
+ /blob-report/
5
+ /playwright/.cache/
6
+ scratches
7
+ reports
8
+ backend/reports
9
+ .terraform
10
+ .terraform-*
11
+ *.tfvars
12
+ infra/terraform/keys
13
+ .vite/
14
+ secret.env
15
+ __pycache__/
16
+ .hatchet/
17
+
18
+ # Prebuilt wheels staged into the image build contexts by CI.
19
+ workers/self-hosted/wheelhouse/
@@ -0,0 +1,14 @@
1
+ Metadata-Version: 2.5
2
+ Name: poly-hammer-worker
3
+ Version: 0.3.8
4
+ Summary: Poly Hammer self-hosted GPU worker — runs AI inference inside Docker
5
+ License-Expression: MIT
6
+ Requires-Python: <4,>=3.10
7
+ Requires-Dist: hatchet-sdk>=1.32.0
8
+ Requires-Dist: hf-transfer>=0.1.9
9
+ Requires-Dist: httpx>=0.27
10
+ Requires-Dist: modal>=1.3.2
11
+ Requires-Dist: psutil>=5.9
12
+ Requires-Dist: rich>=13.0
13
+ Requires-Dist: sentry-sdk>=2.20
14
+ Requires-Dist: typer>=0.27.1
@@ -0,0 +1,191 @@
1
+ # Self-Hosted Worker Images
2
+
3
+ Docker images for running Poly Hammer AI inference workers on your own hardware.
4
+ Model weights are volume-mounted at runtime via named Docker volumes.
5
+
6
+ > **Most people should use the `ph` CLI instead of the commands in this file.**
7
+ > It picks the right CUDA build for your GPU and driver, manages tokens and
8
+ > volumes, and starts the worker for you:
9
+ >
10
+ > ```bash
11
+ > ph config
12
+ > ph start
13
+ > ```
14
+ >
15
+ > See [`workers/cli/README.md`](../cli/README.md). The rest of this document
16
+ > covers building images locally and driving Docker by hand.
17
+
18
+ ## CUDA build variants
19
+
20
+ Each GPU image is published in several CUDA builds. The portal's image catalog
21
+ (`GET /v1/workers/images`) is the source of truth, and `ph` selects a build
22
+ from it using your GPU's compute capability and driver version.
23
+
24
+ | Image | Variant | CUDA / torch | Min driver | Compute capability |
25
+ |-------|---------|--------------|-----------|--------------------|
26
+ | `ph-hy-motion` | `cu121` | 12.1 / 2.5.1 | 530 | sm_75–sm_90 |
27
+ | `ph-hy-motion` | **`cu128`** (default) | 12.8 / 2.7.1 | 570 | sm_75–**sm_120** |
28
+ | `ph-hy-motion` | `cu130` | 13.0 / 2.9.0 | 580 | sm_75–sm_120 |
29
+ | `ph-kimodo` | `cu126` | 12.6 / 2.5 | 525 | sm_75–sm_90 |
30
+ | `ph-kimodo` | **`cu128`** (default) | 12.8 / 2.6 | 570 | sm_75–**sm_120** |
31
+ | `ph-kimodo` | `cu130` | 13.0 / 2.9 | 580 | sm_75–sm_120 |
32
+
33
+ The default variant is published as the bare tag (`:latest` / `:staging`) and
34
+ also as an explicit `:latest-cu128`. Other variants use `:latest-<variant>`.
35
+
36
+ Picking the wrong build is not a hard failure, which is what makes it
37
+ dangerous: running Blackwell (RTX 50xx, sm_120) on a pre-12.8 build makes CUDA
38
+ JIT-compile every kernel from PTX, costing minutes on each cold container.
39
+ Prefer `ph`, which will not select such a build.
40
+
41
+ CUDA 13 requires a 580+ driver, while every CUDA 12.x build works on any
42
+ driver at or above its own floor thanks to minor-version compatibility.
43
+
44
+ ## Quick Start
45
+
46
+ ```bash
47
+ # From workers/self-hosted/:
48
+ docker compose build
49
+
50
+ # Or build a single image / variant:
51
+ docker compose build hy-motion
52
+ docker compose build kimodo
53
+ docker compose build kimodo-cu126
54
+ docker compose build ph-hello-motion
55
+ ```
56
+
57
+ This produces locally-tagged images:
58
+
59
+ | Service | Image Tag | GPU Required |
60
+ |---------|-----------|-------------|
61
+ | HY-Motion | `ghcr.io/poly-hammer/ph-hy-motion:latest` | Yes |
62
+ | HY-Motion (cu121) | `ghcr.io/poly-hammer/ph-hy-motion:latest-cu121` | Yes |
63
+ | HY-Motion (cu130) | `ghcr.io/poly-hammer/ph-hy-motion:latest-cu130` | Yes |
64
+ | Kimodo | `ghcr.io/poly-hammer/ph-kimodo:latest` | Yes |
65
+ | Kimodo (cu126) | `ghcr.io/poly-hammer/ph-kimodo:latest-cu126` | Yes |
66
+ | Kimodo (cu130) | `ghcr.io/poly-hammer/ph-kimodo:latest-cu130` | Yes |
67
+ | Hello Motion | `ghcr.io/poly-hammer/ph-hello-motion:latest` | No |
68
+
69
+
70
+ ## Crash reports
71
+
72
+ The worker reports crashes to Sentry unless told not to. `ph start` stamps
73
+ `PH_TELEMETRY=0` or `=1` onto the container from the machine's `telemetry`
74
+ setting, so declining in `ph config` silences the agent inside the image too.
75
+ Driving Docker by hand, pass it yourself:
76
+
77
+ ```bash
78
+ docker run --gpus all -e PH_TELEMETRY=0 ghcr.io/poly-hammer/ph-kimodo:latest
79
+ ```
80
+
81
+ `PH_NO_TELEMETRY=1` does the same. Reports carry the exception, the package
82
+ version, and the GPU model — never the machine name, an IP address, a token, or
83
+ a prompt.
84
+
85
+
86
+ ## Hardware Requirements
87
+
88
+ ### HY-Motion (`ph-hy-motion`)
89
+
90
+ | Resource | Minimum |
91
+ |----------|---------|
92
+ | GPU VRAM | 24 GB (Lite model) / 40 GB (full model) |
93
+ | System RAM | 16–32 GB |
94
+ | Disk (image) | ~40 GB |
95
+ | Disk (build) | ~80 GB (temporary build layers) |
96
+
97
+ ### Hello Motion (`ph-hello-motion`)
98
+
99
+ No GPU required. Uses a bundled motion.npz fixture to simulate the full
100
+ inference pipeline. Useful for end-to-end testing of the worker system.
101
+
102
+ ### Kimodo (`ph-kimodo`)
103
+
104
+ | Resource | Full GPU | CPU Text Encoder |
105
+ |----------|----------|------------------|
106
+ | GPU VRAM | 17 GB | 3 GB |
107
+ | System RAM | 32 GB | 48 GB |
108
+ | CUDA driver API | 12.6+ | 12.6+ |
109
+
110
+ Kimodo is tested upstream on recent NVIDIA GPUs including RTX 3090/4090,
111
+ A100, L4, and L40S. Set `TEXT_ENCODER_DEVICE=cpu` to use the lower-VRAM
112
+ profile. On RTX 50xx use the default `cu128` build — see
113
+ [CUDA build variants](#cuda-build-variants).
114
+
115
+ ## License Notices
116
+
117
+ **You must review and accept the following licenses before building these images.**
118
+
119
+ ### HY-Motion (`ph-hy-motion`)
120
+
121
+ - **Tencent Hunyuan Community License**: The HY-Motion model weights are released by Tencent under the [Tencent Hunyuan Community License Agreement](https://github.com/Tencent/HunyuanVideo/blob/main/LICENSE.txt). This license includes territory restrictions and usage conditions. Review it carefully.
122
+ - **CLIP (OpenAI)**: The CLIP text encoder is released under the [MIT License](https://github.com/openai/CLIP/blob/main/LICENSE).
123
+ - **Qwen3 (Alibaba)**: The Qwen3 text encoder is released under the [Apache 2.0 License](https://huggingface.co/Qwen/Qwen3-8B/blob/main/LICENSE).
124
+
125
+ ### Kimodo (`ph-kimodo`)
126
+
127
+ - **Kimodo-SOMA-RP-v1.1**: NVIDIA Open Model License. The model is pinned to Hugging Face revision `6c9233af1180b8151e3c4703477104af5dce9dd5`.
128
+ - **Kimodo code and MotionCorrection**: Apache 2.0, pinned to Kimodo commit `1aece8c124d73d255ceff5086d983b844c9f4e94`.
129
+ - **LLM2Vec code/adapters**: MIT.
130
+ - **Meta Llama 3 8B Instruct**: Meta Llama 3 Community License and Acceptable Use Policy. The model is manually gated on Hugging Face. Accept its terms before downloading and include the required notices in customer-facing deployments.
131
+
132
+ Kimodo production deployment remains subject to legal approval of the complete
133
+ model/encoder stack and required attribution. No Bones Rigplay or BONES-SEED
134
+ dataset files are distributed by this worker.
135
+
136
+ ## Downloading Weights
137
+
138
+ Weights are not baked into the image — download them once into a named volume:
139
+
140
+ ```bash
141
+ docker volume create hy-motion-weights
142
+
143
+ # Allocate a TTY (-it) so the live progress panel renders:
144
+ docker run --rm -it --gpus all \
145
+ -v hy-motion-weights:/weights \
146
+ ph-hy-motion download-weights --job hy-motion --all
147
+ ```
148
+
149
+ Expect roughly **50 GB** for `--all` and 20–60 minutes on a typical
150
+ residential connection (`hf-transfer` is enabled by default).
151
+
152
+ Kimodo requires the complete checkpoint and text-encoder closure. Its Meta
153
+ Llama base model is gated, so pass an approved token:
154
+
155
+ ```bash
156
+ docker volume create kimodo-weights
157
+
158
+ docker run --rm -it --gpus all \
159
+ -v kimodo-weights:/weights \
160
+ -e HF_TOKEN \
161
+ ghcr.io/poly-hammer/ph-kimodo:latest \
162
+ download-weights --job kimodo --all
163
+
164
+ docker run --rm --gpus all \
165
+ -v kimodo-weights:/weights \
166
+ -v "${PWD}/kimodo-output:/output" \
167
+ ghcr.io/poly-hammer/ph-kimodo:latest \
168
+ test-job --output-dir /output
169
+ ```
170
+
171
+ The download command pins and verifies the Kimodo checkpoint, both LLM2Vec
172
+ repositories, and `meta-llama/Meta-Llama-3-8B-Instruct`. Inference then runs
173
+ with Hugging Face offline mode enabled so missing assets fail before a user job.
174
+
175
+ ### Helpful flags
176
+
177
+ | Flag | Purpose |
178
+ |------|---------|
179
+ | `--hf-token <token>` | Authenticate with HuggingFace. Lifts anonymous rate limits and unlocks gated repos. Also reads `HF_TOKEN` / `HUGGING_FACE_HUB_TOKEN` env vars. |
180
+ | `--no-progress` | Disable the live panel (use under `docker run -d` or in CI where there is no TTY). |
181
+ | `--dry-run` | Print the download plan and exit without contacting HuggingFace. |
182
+ | `--retries N` | Retry attempts per step on transient failures (default: 3, exponential backoff). |
183
+ | `-v` / `--verbose` | Enable DEBUG logging from `ph-worker` and `huggingface_hub`. |
184
+ | `-q` / `--quiet` | Suppress INFO logs; only show warnings, errors, and the progress panel. |
185
+
186
+ ### Why doesn't it look like anything is happening?
187
+
188
+ If you ran `docker run` without `-t` (no TTY), Rich's live panel can't draw
189
+ and you'll only see the periodic INFO log lines from `huggingface_hub`
190
+ (e.g. `Fetching N files`). Pass `-it` for the panel, or `--no-progress` to
191
+ opt into log-only mode.
@@ -0,0 +1,165 @@
1
+ # =============================================================================
2
+ # Self-Hosted Worker Images — Local Build
3
+ #
4
+ # Each image IS a Hatchet worker. Run directly:
5
+ # docker run --gpus all ph-hy-motion start --token <WORKER_TOKEN>
6
+ #
7
+ # Build all images (from workers/self-hosted/):
8
+ # docker compose build
9
+ #
10
+ # Build a single image:
11
+ # docker compose --env-file secret.env build hy-motion
12
+ # docker compose build ph-hello-motion
13
+ #
14
+ # Build a specific CUDA variant:
15
+ # docker compose build hy-motion-cu121
16
+ #
17
+ # Variant tags mirror the WORKER_IMAGES matrix in
18
+ # backend/app/core/config/services.py — keep the two in sync.
19
+ #
20
+ # See README.md for license notices and hardware requirements.
21
+ # =============================================================================
22
+
23
+ services:
24
+ # ---------------------------------------------------------------------------
25
+ # HY-Motion — cu128 DEFAULT (CUDA 12.8 / torch 2.7.1, driver >=570)
26
+ # sm_75..sm_120 — native Blackwell (RTX 50xx) support.
27
+ # ---------------------------------------------------------------------------
28
+ hy-motion:
29
+ image: ghcr.io/poly-hammer/ph-hy-motion:latest
30
+ build:
31
+ context: .
32
+ dockerfile: poly_hammer_worker/jobs/hy_motion/Dockerfile
33
+ volumes:
34
+ - hy-motion-weights:/weights
35
+ deploy:
36
+ resources:
37
+ reservations:
38
+ devices:
39
+ - driver: nvidia
40
+ count: 1
41
+ capabilities: [gpu]
42
+
43
+ # ---------------------------------------------------------------------------
44
+ # HY-Motion — cu121 (CUDA 12.1 / torch 2.5.1, driver >=530)
45
+ # sm_75..sm_90 — for older drivers. No RTX 50xx support.
46
+ # ---------------------------------------------------------------------------
47
+ hy-motion-cu121:
48
+ image: ghcr.io/poly-hammer/ph-hy-motion:latest-cu121
49
+ build:
50
+ context: .
51
+ dockerfile: poly_hammer_worker/jobs/hy_motion/Dockerfile
52
+ args:
53
+ CUDA_TAG: 12.1.1-cudnn8-devel-ubuntu22.04
54
+ TORCH_INDEX_URL: https://download.pytorch.org/whl/cu121
55
+ TORCH_VERSION: "2.5.1"
56
+ TORCHVISION_VERSION: "0.20.1"
57
+ volumes:
58
+ - hy-motion-weights:/weights
59
+ deploy:
60
+ resources:
61
+ reservations:
62
+ devices:
63
+ - driver: nvidia
64
+ count: 1
65
+ capabilities: [gpu]
66
+
67
+ # ---------------------------------------------------------------------------
68
+ # HY-Motion — cu130 (CUDA 13.0 / torch 2.9.0, driver >=580)
69
+ # ---------------------------------------------------------------------------
70
+ hy-motion-cu130:
71
+ image: ghcr.io/poly-hammer/ph-hy-motion:latest-cu130
72
+ build:
73
+ context: .
74
+ dockerfile: poly_hammer_worker/jobs/hy_motion/Dockerfile
75
+ args:
76
+ CUDA_TAG: 13.0.1-cudnn-devel-ubuntu24.04
77
+ TORCH_INDEX_URL: https://download.pytorch.org/whl/cu130
78
+ TORCH_VERSION: "2.9.0"
79
+ TORCHVISION_VERSION: "0.24.0"
80
+ volumes:
81
+ - hy-motion-weights:/weights
82
+ deploy:
83
+ resources:
84
+ reservations:
85
+ devices:
86
+ - driver: nvidia
87
+ count: 1
88
+ capabilities: [gpu]
89
+
90
+ # ---------------------------------------------------------------------------
91
+ # Kimodo — cu128 DEFAULT (NGC 25.02 / CUDA 12.8 / torch 2.7, driver >=570)
92
+ # sm_75..sm_120 — native Blackwell (RTX 50xx) support.
93
+ # ---------------------------------------------------------------------------
94
+ kimodo:
95
+ image: ghcr.io/poly-hammer/ph-kimodo:latest
96
+ build:
97
+ context: .
98
+ dockerfile: poly_hammer_worker/jobs/kimodo/Dockerfile
99
+ volumes:
100
+ - kimodo-weights:/weights
101
+ deploy:
102
+ resources:
103
+ reservations:
104
+ devices:
105
+ - driver: nvidia
106
+ count: 1
107
+ capabilities: [gpu]
108
+
109
+ # ---------------------------------------------------------------------------
110
+ # Kimodo — cu126 (CUDA 12.6 / torch 2.6.0, driver >=525)
111
+ # sm_75..sm_90 — for older drivers. No RTX 50xx support.
112
+ # Plain CUDA base, not NGC: NGC's 12.6 images ship a pre-release torch that
113
+ # Kimodo's pinned transformers cannot import.
114
+ # ---------------------------------------------------------------------------
115
+ kimodo-cu126:
116
+ image: ghcr.io/poly-hammer/ph-kimodo:latest-cu126
117
+ build:
118
+ context: .
119
+ dockerfile: poly_hammer_worker/jobs/kimodo/Dockerfile.cuda
120
+ args:
121
+ CUDA_TAG: 12.6.3-cudnn-devel-ubuntu24.04
122
+ TORCH_INDEX_URL: https://download.pytorch.org/whl/cu126
123
+ TORCH_VERSION: "2.6.0"
124
+ volumes:
125
+ - kimodo-weights:/weights
126
+ deploy:
127
+ resources:
128
+ reservations:
129
+ devices:
130
+ - driver: nvidia
131
+ count: 1
132
+ capabilities: [gpu]
133
+
134
+ # ---------------------------------------------------------------------------
135
+ # Kimodo — cu130 (NGC 25.10 / CUDA 13.0 / torch 2.9, driver >=580)
136
+ # ---------------------------------------------------------------------------
137
+ kimodo-cu130:
138
+ image: ghcr.io/poly-hammer/ph-kimodo:latest-cu130
139
+ build:
140
+ context: .
141
+ dockerfile: poly_hammer_worker/jobs/kimodo/Dockerfile
142
+ args:
143
+ NGC_TAG: 25.10-py3
144
+ volumes:
145
+ - kimodo-weights:/weights
146
+ deploy:
147
+ resources:
148
+ reservations:
149
+ devices:
150
+ - driver: nvidia
151
+ count: 1
152
+ capabilities: [gpu]
153
+
154
+ # ---------------------------------------------------------------------------
155
+ # Hello Motion — Debug Image (no GPU)
156
+ # ---------------------------------------------------------------------------
157
+ ph-hello-motion:
158
+ image: ghcr.io/poly-hammer/ph-hello-motion:latest
159
+ build:
160
+ context: .
161
+ dockerfile: poly_hammer_worker/jobs/hello_motion/Dockerfile
162
+
163
+ volumes:
164
+ hy-motion-weights:
165
+ kimodo-weights: