Skip to content

[queue-split 1/3, merge FIRST — backward compatible] Explicit isGPUWorker label on every prod worker Dockerfile#153

Open
arjunrajlab wants to merge 1 commit into
masterfrom
feature/gpu-worker-labels
Open

[queue-split 1/3, merge FIRST — backward compatible] Explicit isGPUWorker label on every prod worker Dockerfile#153
arjunrajlab wants to merge 1 commit into
masterfrom
feature/gpu-worker-labels

Conversation

@arjunrajlab

@arjunrajlab arjunrajlab commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Part 1 of 3 of the cpu/gpu Celery queue split (AWSDeploy cost review Rec A): CPU-only jobs move to a cheap always-on CPU box so they stop contending for the GPU fleet.

What this PR does

Adds an explicit isGPUWorker="true" (13 GPU workers) or isGPUWorker="false" (25 CPU workers) Docker label to every production worker Dockerfile — in the final build stage for multi-stage files — plus the 9 Dockerfile_M1 variants and the sample_interface template. The NimbusImage dispatcher (PR 3/3) will read this label at dispatch time to route each job to the gpu or cpu queue; both classes are labeled explicitly so a missing label is a logged fail-safe, never the path for a known worker. Classification verified 38/38 against AWSDeploy's scripts/workers.tsv queue column (25 cpu / 13 gpu). Also documents the new label requirement in CLAUDE.md.

Coupling / merge order

How to test

docker build -f workers/annotations/cellpose/Dockerfile -t label-test .
docker inspect --format '{{index .Config.Labels "isGPUWorker"}}' label-test   # expect: true

Any worker runs identically to before — the label changes no behavior.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VjwUGizxeWLUxYs4yGa3me

…file

Adds a literal isGPUWorker="true"/"false" LABEL to the final build stage
of every one of the 38 production worker Dockerfiles (per AWSDeploy's
scripts/workers.tsv manifest), their Dockerfile_M1 variants where present,
and the sample_interface copy-paste template (labeled "false"). This lets
NimbusImage's dispatcher route each worker to the gpu or cpu Celery queue
by image label instead of guessing; an unlabeled image falls back to gpu
with a warning.

25 CPU workers -> isGPUWorker="false", 13 GPU/ML workers -> isGPUWorker="true",
per the classification table in AWSDeploy's task-6 constraints. Also documents
the requirement in CLAUDE.md's Docker Structure section for future workers.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 68036a4c58

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

WORKDIR /

LABEL isUPennContrastWorker="" \
isGPUWorker="false" \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route Deconwolf to the GPU queue

With the new dispatcher consuming isGPUWorker, this line sends the production Deconwolf image to the CPU queue even though this Dockerfile is CUDA/OpenCL-enabled and the worker interface defaults Use GPU to true. In that context, Deconwolf jobs that should run on the GPU fleet will land on CPU workers and either fall back to CPU or run much slower, so the production Dockerfile should be labeled true (the M1 variant can remain CPU-only).

Useful? React with 👍 / 👎.

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.

1 participant