Skip to content

Commit 73822f5

Browse files
Add wanda ray image builds for Docker Hub
This adds wanda-based builds for ray Docker Hub images. Changes: - Add ray-image-cpu/cuda.wanda.yaml for ray images - Add ray-extra-image-cpu/cuda.wanda.yaml for extra dependencies - Add ray-llm-image-cuda.wanda.yaml and ray-llm-extra variant - Add push_ray_image.py for pushing to Docker Hub via crane - Update build.rayci.yml with wanda image build and push steps Topic: ray-image Relative: ray-cpp-wheel Labels: draft Signed-off-by: andrew <andrew@anyscale.com>
1 parent 9e43825 commit 73822f5

11 files changed

+991
-46
lines changed

.buildkite/build.rayci.yml

Lines changed: 270 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -148,89 +148,311 @@ steps:
148148
depends_on: manylinux-x86_64
149149
job_env: manylinux-x86_64
150150

151-
- label: ":tapioca: build: ray py{{matrix}} docker (x86_64)"
152-
key: ray_images
151+
- name: ray-image-cpu-build
152+
label: "wanda: ray py{{matrix}} cpu (x86_64)"
153+
wanda: ci/docker/ray-image-cpu.wanda.yaml
154+
matrix:
155+
- "3.10"
156+
- "3.11"
157+
- "3.12"
158+
env:
159+
PYTHON_VERSION: "{{matrix}}"
160+
ARCH_SUFFIX: ""
153161
tags:
154162
- python_dependencies
155163
- docker
156164
- oss
157-
instance_type: medium
158-
commands:
159-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
160-
--platform cu11.7.1-cudnn8 --platform cu11.8.0-cudnn8
161-
--platform cu12.1.1-cudnn8 --platform cu12.3.2-cudnn9
162-
--platform cu12.4.1-cudnn --platform cu12.5.1-cudnn
163-
--platform cu12.6.3-cudnn --platform cu12.8.1-cudnn
164-
--platform cu12.9.1-cudnn
165-
--platform cpu
166-
--image-type ray --upload
167165
depends_on:
168-
- manylinux-x86_64
169-
- forge
170-
- raycudabase
166+
- ray-wheel-build
171167
- raycpubase
168+
169+
# Push ray CPU images to Docker Hub
170+
- label: ":docker: push: ray py{{matrix}} cpu (x86_64)"
171+
key: ray_images_cpu_push
172+
instance_type: small
173+
commands:
174+
- bazel run //.buildkite:copy_files -- --destination docker_login
175+
- bazel run //ci/ray_ci/automation:push_ray_image --
176+
--python-version {{matrix}}
177+
--platform cpu
178+
--image-type ray
179+
--upload
172180
matrix:
173181
- "3.10"
174182
- "3.11"
175183
- "3.12"
184+
depends_on:
185+
- ray-image-cpu-build
186+
tags:
187+
- python_dependencies
188+
- docker
189+
- skip-on-premerge
190+
- oss
176191

177-
- label: ":tapioca: build: ray-extra py{{matrix}} docker (x86_64)"
178-
key: ray_extra_images
192+
- name: ray-image-cuda-build
193+
label: "wanda: ray py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
194+
wanda: ci/docker/ray-image-cuda.wanda.yaml
195+
matrix:
196+
setup:
197+
python:
198+
- "3.10"
199+
- "3.11"
200+
- "3.12"
201+
cuda:
202+
- "11.7.1-cudnn8"
203+
- "11.8.0-cudnn8"
204+
- "12.1.1-cudnn8"
205+
- "12.3.2-cudnn9"
206+
- "12.4.1-cudnn"
207+
- "12.5.1-cudnn"
208+
- "12.6.3-cudnn"
209+
- "12.8.1-cudnn"
210+
- "12.9.1-cudnn"
211+
env:
212+
PYTHON_VERSION: "{{matrix.python}}"
213+
CUDA_VERSION: "{{matrix.cuda}}"
214+
ARCH_SUFFIX: ""
179215
tags:
180216
- python_dependencies
181217
- docker
182218
- oss
183-
instance_type: medium
219+
depends_on:
220+
- ray-wheel-build
221+
- raycudabase
222+
223+
# Push ray CUDA images to Docker Hub
224+
- label: ":docker: push: ray py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
225+
key: ray_images_cuda_push
226+
instance_type: small
184227
commands:
185-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
186-
--platform cu11.7.1-cudnn8 --platform cu11.8.0-cudnn8
187-
--platform cu12.1.1-cudnn8 --platform cu12.3.2-cudnn9
188-
--platform cu12.4.1-cudnn --platform cu12.5.1-cudnn
189-
--platform cu12.6.3-cudnn --platform cu12.8.1-cudnn
190-
--platform cu12.9.1-cudnn
191-
--platform cpu
192-
--image-type ray-extra --upload
228+
- bazel run //.buildkite:copy_files -- --destination docker_login
229+
- bazel run //ci/ray_ci/automation:push_ray_image --
230+
--python-version {{matrix.python}}
231+
--platform cu{{matrix.cuda}}
232+
--image-type ray
233+
--upload
234+
matrix:
235+
setup:
236+
python:
237+
- "3.10"
238+
- "3.11"
239+
- "3.12"
240+
cuda:
241+
- "11.7.1-cudnn8"
242+
- "11.8.0-cudnn8"
243+
- "12.1.1-cudnn8"
244+
- "12.3.2-cudnn9"
245+
- "12.4.1-cudnn"
246+
- "12.5.1-cudnn"
247+
- "12.6.3-cudnn"
248+
- "12.8.1-cudnn"
249+
- "12.9.1-cudnn"
193250
depends_on:
194-
- manylinux-x86_64
195-
- forge
196-
- raycpubaseextra
197-
- raycudabaseextra
251+
- ray-image-cuda-build
252+
tags:
253+
- python_dependencies
254+
- docker
255+
- skip-on-premerge
256+
- oss
257+
258+
- name: ray-extra-image-cpu-build
259+
label: "wanda: ray-extra py{{matrix}} cpu (x86_64)"
260+
wanda: ci/docker/ray-extra-image-cpu.wanda.yaml
198261
matrix:
199262
- "3.10"
200263
- "3.11"
201264
- "3.12"
265+
env:
266+
PYTHON_VERSION: "{{matrix}}"
267+
ARCH_SUFFIX: ""
268+
tags:
269+
- python_dependencies
270+
- docker
271+
- oss
272+
depends_on:
273+
- ray-wheel-build
274+
- raycpubaseextra
202275

203-
- label: ":tapioca: build: ray-llm py{{matrix}} docker (x86_64)"
276+
- name: ray-extra-image-cuda-build
277+
label: "wanda: ray-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
278+
wanda: ci/docker/ray-extra-image-cuda.wanda.yaml
279+
matrix:
280+
setup:
281+
python:
282+
- "3.10"
283+
- "3.11"
284+
- "3.12"
285+
cuda:
286+
- "11.7.1-cudnn8"
287+
- "11.8.0-cudnn8"
288+
- "12.1.1-cudnn8"
289+
- "12.3.2-cudnn9"
290+
- "12.4.1-cudnn"
291+
- "12.5.1-cudnn"
292+
- "12.6.3-cudnn"
293+
- "12.8.1-cudnn"
294+
- "12.9.1-cudnn"
295+
env:
296+
PYTHON_VERSION: "{{matrix.python}}"
297+
CUDA_VERSION: "{{matrix.cuda}}"
298+
ARCH_SUFFIX: ""
204299
tags:
205300
- python_dependencies
206301
- docker
207302
- oss
208-
instance_type: medium
209-
commands:
210-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
211-
--platform cu12.8.1-cudnn --image-type ray-llm --upload
212303
depends_on:
213-
- manylinux-x86_64
214-
- forge
304+
- ray-wheel-build
305+
- raycudabaseextra
306+
307+
- name: ray-llm-image-cuda-build
308+
label: "wanda: ray-llm py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
309+
wanda: ci/docker/ray-llm-image-cuda.wanda.yaml
310+
matrix:
311+
setup:
312+
python:
313+
- "3.11"
314+
cuda:
315+
- "12.8.1-cudnn"
316+
env:
317+
PYTHON_VERSION: "{{matrix.python}}"
318+
CUDA_VERSION: "{{matrix.cuda}}"
319+
ARCH_SUFFIX: ""
320+
tags:
321+
- python_dependencies
322+
- docker
323+
- oss
324+
depends_on:
325+
- ray-wheel-build
215326
- ray-llmbase
327+
328+
- name: ray-llm-extra-image-cuda-build
329+
label: "wanda: ray-llm-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
330+
wanda: ci/docker/ray-llm-extra-image-cuda.wanda.yaml
331+
matrix:
332+
setup:
333+
python:
334+
- "3.11"
335+
cuda:
336+
- "12.8.1-cudnn"
337+
env:
338+
PYTHON_VERSION: "{{matrix.python}}"
339+
CUDA_VERSION: "{{matrix.cuda}}"
340+
ARCH_SUFFIX: ""
341+
tags:
342+
- python_dependencies
343+
- docker
344+
- oss
345+
depends_on:
346+
- ray-wheel-build
347+
- ray-llmbaseextra
348+
349+
# Push ray-extra CPU images to Docker Hub (goes to rayproject/ray)
350+
- label: ":docker: push: ray-extra py{{matrix}} cpu (x86_64)"
351+
key: ray_extra_images_cpu_push
352+
instance_type: small
353+
commands:
354+
- bazel run //.buildkite:copy_files -- --destination docker_login
355+
- bazel run //ci/ray_ci/automation:push_ray_image --
356+
--python-version {{matrix}}
357+
--platform cpu
358+
--image-type ray-extra
359+
--upload
216360
matrix:
361+
- "3.10"
217362
- "3.11"
363+
- "3.12"
364+
depends_on:
365+
- ray-extra-image-cpu-build
366+
tags:
367+
- python_dependencies
368+
- docker
369+
- skip-on-premerge
370+
- oss
218371

219-
- label: ":tapioca: build: ray-llm-extra py{{matrix}} docker (x86_64)"
372+
# Push ray-extra CUDA images to Docker Hub (goes to rayproject/ray)
373+
- label: ":docker: push: ray-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
374+
key: ray_extra_images_cuda_push
375+
instance_type: small
376+
commands:
377+
- bazel run //.buildkite:copy_files -- --destination docker_login
378+
- bazel run //ci/ray_ci/automation:push_ray_image --
379+
--python-version {{matrix.python}}
380+
--platform cu{{matrix.cuda}}
381+
--image-type ray-extra
382+
--upload
383+
matrix:
384+
setup:
385+
python:
386+
- "3.10"
387+
- "3.11"
388+
- "3.12"
389+
cuda:
390+
- "11.7.1-cudnn8"
391+
- "11.8.0-cudnn8"
392+
- "12.1.1-cudnn8"
393+
- "12.3.2-cudnn9"
394+
- "12.4.1-cudnn"
395+
- "12.5.1-cudnn"
396+
- "12.6.3-cudnn"
397+
- "12.8.1-cudnn"
398+
- "12.9.1-cudnn"
399+
depends_on:
400+
- ray-extra-image-cuda-build
220401
tags:
221402
- python_dependencies
222403
- docker
404+
- skip-on-premerge
223405
- oss
224-
instance_type: medium
406+
407+
# Push ray-llm CUDA images to Docker Hub (goes to rayproject/ray-llm)
408+
- label: ":docker: push: ray-llm py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
409+
key: ray_llm_images_cuda_push
410+
instance_type: small
225411
commands:
226-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
227-
--platform cu12.8.1-cudnn --image-type ray-llm-extra --upload
412+
- bazel run //.buildkite:copy_files -- --destination docker_login
413+
- bazel run //ci/ray_ci/automation:push_ray_image --
414+
--python-version {{matrix.python}}
415+
--platform cu{{matrix.cuda}}
416+
--image-type ray-llm
417+
--upload
418+
matrix:
419+
setup:
420+
python:
421+
- "3.11"
422+
cuda:
423+
- "12.8.1-cudnn"
228424
depends_on:
229-
- manylinux-x86_64
230-
- forge
231-
- ray-llmbaseextra
425+
- ray-llm-image-cuda-build
426+
tags:
427+
- python_dependencies
428+
- docker
429+
- skip-on-premerge
430+
- oss
431+
432+
# Push ray-llm-extra CUDA images to Docker Hub (goes to rayproject/ray-llm)
433+
- label: ":docker: push: ray-llm-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
434+
key: ray_llm_extra_images_cuda_push
435+
instance_type: small
436+
commands:
437+
- bazel run //.buildkite:copy_files -- --destination docker_login
438+
- bazel run //ci/ray_ci/automation:push_ray_image --
439+
--python-version {{matrix.python}}
440+
--platform cu{{matrix.cuda}}
441+
--image-type ray-llm-extra
442+
--upload
232443
matrix:
233-
- "3.11"
444+
setup:
445+
python:
446+
- "3.11"
447+
cuda:
448+
- "12.8.1-cudnn"
449+
depends_on:
450+
- ray-llm-extra-image-cuda-build
451+
tags:
452+
- python_dependencies
453+
- docker
454+
- skip-on-premerge
455+
- oss
234456

235457
- label: ":tapioca: smoke test build-docker.sh"
236458
tags:
@@ -247,6 +469,7 @@ steps:
247469
depends_on:
248470
- forge
249471

472+
# Generate nightly indexes after images are pushed
250473
- label: ":tapioca: generate nightly indexes"
251474
instance_type: small
252475
tags:
@@ -257,6 +480,7 @@ steps:
257480
- bazel run .buildkite:copy_files -- --destination docker_login
258481
- bazel run //ci/ray_ci/automation:generate_index -- --prefix nightly
259482
depends_on:
260-
- ray_images
483+
- ray_images_cpu_push
484+
- ray_images_cuda_push
261485
- ray_images_aarch64
262486
- forge
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Ray Extra CPU Image
2+
# Installs ray wheel into the CPU base-extra image
3+
#
4+
# This produces the final rayproject/ray image with -extra tag for CPU-only deployments.
5+
# The base-extra image includes additional Python dependencies beyond base.
6+
#
7+
name: "ray-extra-py$PYTHON_VERSION-cpu$ARCH_SUFFIX"
8+
disable_caching: true
9+
froms:
10+
- "cr.ray.io/rayproject/ray-py$PYTHON_VERSION-cpu-base-extra$ARCH_SUFFIX" # CPU base-extra image
11+
- "cr.ray.io/rayproject/ray-wheel-py$PYTHON_VERSION$ARCH_SUFFIX" # Ray wheel
12+
dockerfile: ci/docker/ray-image.Dockerfile
13+
srcs:
14+
- python/requirements_compiled.txt
15+
build_args:
16+
- PYTHON_VERSION
17+
- ARCH_SUFFIX
18+
- BASE_IMAGE=cr.ray.io/rayproject/ray-py$PYTHON_VERSION-cpu-base-extra$ARCH_SUFFIX
19+
- RAY_WHEEL_IMAGE=cr.ray.io/rayproject/ray-wheel-py$PYTHON_VERSION$ARCH_SUFFIX

0 commit comments

Comments
 (0)