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.
- poly_hammer_worker-0.3.8/.dockerignore +35 -0
- poly_hammer_worker-0.3.8/.gitignore +19 -0
- poly_hammer_worker-0.3.8/PKG-INFO +14 -0
- poly_hammer_worker-0.3.8/README.md +191 -0
- poly_hammer_worker-0.3.8/compose.yml +165 -0
- poly_hammer_worker-0.3.8/docs/index.md +320 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/__init__.py +1 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/api_client.py +74 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/base_job.py +248 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/cli.py +551 -0
- {poly_hammer_worker-0.1.1.dev12 → poly_hammer_worker-0.3.8}/poly_hammer_worker/hardware.py +30 -41
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/__init__.py +115 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/_recipe_lib/harness.ps1 +170 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/_recipe_lib/harness.sh +164 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/Dockerfile +34 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/__init__.py +19 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/config.py +11 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/job.py +172 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/mock-event.json +10 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/motion.npz +0 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/install.ps1 +93 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/install.sh +106 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/recipe.toml +12 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/recipes/verify.py +18 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hello_motion/requirements.txt +6 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/Dockerfile +99 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/__init__.py +37 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/config.py +34 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/job.py +372 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/mock-event.json +10 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/install.ps1 +122 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/install.sh +143 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/recipe.toml +17 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/recipes/verify.py +25 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/hy_motion/requirements.txt +20 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/Dockerfile +66 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/Dockerfile.cuda +80 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/__init__.py +1 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/artifact.py +153 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/config.py +30 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/constraints.txt +17 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/job.py +447 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/mock-event.json +10 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/install.ps1 +170 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/install.sh +202 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/recipe.toml +35 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/jobs/kimodo/recipes/verify.py +35 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/logging_setup.py +74 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/progress.py +336 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/telemetry.py +129 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/utilities.py +391 -0
- poly_hammer_worker-0.3.8/poly_hammer_worker/worker.py +392 -0
- poly_hammer_worker-0.3.8/pyproject.toml +66 -0
- poly_hammer_worker-0.3.8/tests/test_download_token.py +81 -0
- poly_hammer_worker-0.3.8/tests/test_hardware.py +52 -0
- poly_hammer_worker-0.3.8/tests/test_job_discovery.py +54 -0
- poly_hammer_worker-0.3.8/tests/test_job_phases.py +155 -0
- poly_hammer_worker-0.3.8/tests/test_kimodo_artifact.py +140 -0
- poly_hammer_worker-0.3.8/tests/test_kimodo_job.py +162 -0
- poly_hammer_worker-0.3.8/tests/test_progress.py +97 -0
- poly_hammer_worker-0.3.8/tests/test_recipe_contract.py +88 -0
- poly_hammer_worker-0.3.8/tests/test_recipe_packaging.py +41 -0
- poly_hammer_worker-0.3.8/tests/test_storage_upload.py +23 -0
- poly_hammer_worker-0.3.8/tests/test_telemetry.py +101 -0
- poly_hammer_worker-0.3.8/uv.lock +1638 -0
- poly_hammer_worker-0.1.1.dev12/.gitignore +0 -12
- poly_hammer_worker-0.1.1.dev12/PKG-INFO +0 -101
- poly_hammer_worker-0.1.1.dev12/README.md +0 -88
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/__init__.py +0 -1
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/api_client.py +0 -128
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/cli.py +0 -158
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/docker_runner.py +0 -393
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/image_discovery.py +0 -188
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/logging_config.py +0 -73
- poly_hammer_worker-0.1.1.dev12/poly_hammer_worker/worker_loop.py +0 -337
- poly_hammer_worker-0.1.1.dev12/pyproject.toml +0 -25
- poly_hammer_worker-0.1.1.dev12/uv.lock +0 -491
- {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:
|