Skip to content

Commit 021b2e1

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 64ac2fd commit 021b2e1

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
@@ -138,89 +138,311 @@ steps:
138138
depends_on: manylinux-x86_64
139139
job_env: manylinux-x86_64
140140

141-
- label: ":tapioca: build: ray py{{matrix}} docker (x86_64)"
142-
key: ray_images
141+
- name: ray-image-cpu-build
142+
label: "wanda: ray py{{matrix}} cpu (x86_64)"
143+
wanda: ci/docker/ray-image-cpu.wanda.yaml
144+
matrix:
145+
- "3.10"
146+
- "3.11"
147+
- "3.12"
148+
env:
149+
PYTHON_VERSION: "{{matrix}}"
150+
ARCH_SUFFIX: ""
143151
tags:
144152
- python_dependencies
145153
- docker
146154
- oss
147-
instance_type: medium
148-
commands:
149-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
150-
--platform cu11.7.1-cudnn8 --platform cu11.8.0-cudnn8
151-
--platform cu12.1.1-cudnn8 --platform cu12.3.2-cudnn9
152-
--platform cu12.4.1-cudnn --platform cu12.5.1-cudnn
153-
--platform cu12.6.3-cudnn --platform cu12.8.1-cudnn
154-
--platform cu12.9.1-cudnn
155-
--platform cpu
156-
--image-type ray --upload
157155
depends_on:
158-
- manylinux-x86_64
159-
- forge
160-
- raycudabase
156+
- ray-wheel-build
161157
- raycpubase
158+
159+
# Push ray CPU images to Docker Hub
160+
- label: ":docker: push: ray py{{matrix}} cpu (x86_64)"
161+
key: ray_images_cpu_push
162+
instance_type: small
163+
commands:
164+
- bazel run //.buildkite:copy_files -- --destination docker_login
165+
- bazel run //ci/ray_ci/automation:push_ray_image --
166+
--python-version {{matrix}}
167+
--platform cpu
168+
--image-type ray
169+
--upload
162170
matrix:
163171
- "3.10"
164172
- "3.11"
165173
- "3.12"
174+
depends_on:
175+
- ray-image-cpu-build
176+
tags:
177+
- python_dependencies
178+
- docker
179+
- skip-on-premerge
180+
- oss
166181

167-
- label: ":tapioca: build: ray-extra py{{matrix}} docker (x86_64)"
168-
key: ray_extra_images
182+
- name: ray-image-cuda-build
183+
label: "wanda: ray py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
184+
wanda: ci/docker/ray-image-cuda.wanda.yaml
185+
matrix:
186+
setup:
187+
python:
188+
- "3.10"
189+
- "3.11"
190+
- "3.12"
191+
cuda:
192+
- "11.7.1-cudnn8"
193+
- "11.8.0-cudnn8"
194+
- "12.1.1-cudnn8"
195+
- "12.3.2-cudnn9"
196+
- "12.4.1-cudnn"
197+
- "12.5.1-cudnn"
198+
- "12.6.3-cudnn"
199+
- "12.8.1-cudnn"
200+
- "12.9.1-cudnn"
201+
env:
202+
PYTHON_VERSION: "{{matrix.python}}"
203+
CUDA_VERSION: "{{matrix.cuda}}"
204+
ARCH_SUFFIX: ""
169205
tags:
170206
- python_dependencies
171207
- docker
172208
- oss
173-
instance_type: medium
209+
depends_on:
210+
- ray-wheel-build
211+
- raycudabase
212+
213+
# Push ray CUDA images to Docker Hub
214+
- label: ":docker: push: ray py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
215+
key: ray_images_cuda_push
216+
instance_type: small
174217
commands:
175-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
176-
--platform cu11.7.1-cudnn8 --platform cu11.8.0-cudnn8
177-
--platform cu12.1.1-cudnn8 --platform cu12.3.2-cudnn9
178-
--platform cu12.4.1-cudnn --platform cu12.5.1-cudnn
179-
--platform cu12.6.3-cudnn --platform cu12.8.1-cudnn
180-
--platform cu12.9.1-cudnn
181-
--platform cpu
182-
--image-type ray-extra --upload
218+
- bazel run //.buildkite:copy_files -- --destination docker_login
219+
- bazel run //ci/ray_ci/automation:push_ray_image --
220+
--python-version {{matrix.python}}
221+
--platform cu{{matrix.cuda}}
222+
--image-type ray
223+
--upload
224+
matrix:
225+
setup:
226+
python:
227+
- "3.10"
228+
- "3.11"
229+
- "3.12"
230+
cuda:
231+
- "11.7.1-cudnn8"
232+
- "11.8.0-cudnn8"
233+
- "12.1.1-cudnn8"
234+
- "12.3.2-cudnn9"
235+
- "12.4.1-cudnn"
236+
- "12.5.1-cudnn"
237+
- "12.6.3-cudnn"
238+
- "12.8.1-cudnn"
239+
- "12.9.1-cudnn"
183240
depends_on:
184-
- manylinux-x86_64
185-
- forge
186-
- raycpubaseextra
187-
- raycudabaseextra
241+
- ray-image-cuda-build
242+
tags:
243+
- python_dependencies
244+
- docker
245+
- skip-on-premerge
246+
- oss
247+
248+
- name: ray-extra-image-cpu-build
249+
label: "wanda: ray-extra py{{matrix}} cpu (x86_64)"
250+
wanda: ci/docker/ray-extra-image-cpu.wanda.yaml
188251
matrix:
189252
- "3.10"
190253
- "3.11"
191254
- "3.12"
255+
env:
256+
PYTHON_VERSION: "{{matrix}}"
257+
ARCH_SUFFIX: ""
258+
tags:
259+
- python_dependencies
260+
- docker
261+
- oss
262+
depends_on:
263+
- ray-wheel-build
264+
- raycpubaseextra
192265

193-
- label: ":tapioca: build: ray-llm py{{matrix}} docker (x86_64)"
266+
- name: ray-extra-image-cuda-build
267+
label: "wanda: ray-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
268+
wanda: ci/docker/ray-extra-image-cuda.wanda.yaml
269+
matrix:
270+
setup:
271+
python:
272+
- "3.10"
273+
- "3.11"
274+
- "3.12"
275+
cuda:
276+
- "11.7.1-cudnn8"
277+
- "11.8.0-cudnn8"
278+
- "12.1.1-cudnn8"
279+
- "12.3.2-cudnn9"
280+
- "12.4.1-cudnn"
281+
- "12.5.1-cudnn"
282+
- "12.6.3-cudnn"
283+
- "12.8.1-cudnn"
284+
- "12.9.1-cudnn"
285+
env:
286+
PYTHON_VERSION: "{{matrix.python}}"
287+
CUDA_VERSION: "{{matrix.cuda}}"
288+
ARCH_SUFFIX: ""
194289
tags:
195290
- python_dependencies
196291
- docker
197292
- oss
198-
instance_type: medium
199-
commands:
200-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
201-
--platform cu12.8.1-cudnn --image-type ray-llm --upload
202293
depends_on:
203-
- manylinux-x86_64
204-
- forge
294+
- ray-wheel-build
295+
- raycudabaseextra
296+
297+
- name: ray-llm-image-cuda-build
298+
label: "wanda: ray-llm py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
299+
wanda: ci/docker/ray-llm-image-cuda.wanda.yaml
300+
matrix:
301+
setup:
302+
python:
303+
- "3.11"
304+
cuda:
305+
- "12.8.1-cudnn"
306+
env:
307+
PYTHON_VERSION: "{{matrix.python}}"
308+
CUDA_VERSION: "{{matrix.cuda}}"
309+
ARCH_SUFFIX: ""
310+
tags:
311+
- python_dependencies
312+
- docker
313+
- oss
314+
depends_on:
315+
- ray-wheel-build
205316
- ray-llmbase
317+
318+
- name: ray-llm-extra-image-cuda-build
319+
label: "wanda: ray-llm-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
320+
wanda: ci/docker/ray-llm-extra-image-cuda.wanda.yaml
321+
matrix:
322+
setup:
323+
python:
324+
- "3.11"
325+
cuda:
326+
- "12.8.1-cudnn"
327+
env:
328+
PYTHON_VERSION: "{{matrix.python}}"
329+
CUDA_VERSION: "{{matrix.cuda}}"
330+
ARCH_SUFFIX: ""
331+
tags:
332+
- python_dependencies
333+
- docker
334+
- oss
335+
depends_on:
336+
- ray-wheel-build
337+
- ray-llmbaseextra
338+
339+
# Push ray-extra CPU images to Docker Hub (goes to rayproject/ray)
340+
- label: ":docker: push: ray-extra py{{matrix}} cpu (x86_64)"
341+
key: ray_extra_images_cpu_push
342+
instance_type: small
343+
commands:
344+
- bazel run //.buildkite:copy_files -- --destination docker_login
345+
- bazel run //ci/ray_ci/automation:push_ray_image --
346+
--python-version {{matrix}}
347+
--platform cpu
348+
--image-type ray-extra
349+
--upload
206350
matrix:
351+
- "3.10"
207352
- "3.11"
353+
- "3.12"
354+
depends_on:
355+
- ray-extra-image-cpu-build
356+
tags:
357+
- python_dependencies
358+
- docker
359+
- skip-on-premerge
360+
- oss
208361

209-
- label: ":tapioca: build: ray-llm-extra py{{matrix}} docker (x86_64)"
362+
# Push ray-extra CUDA images to Docker Hub (goes to rayproject/ray)
363+
- label: ":docker: push: ray-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
364+
key: ray_extra_images_cuda_push
365+
instance_type: small
366+
commands:
367+
- bazel run //.buildkite:copy_files -- --destination docker_login
368+
- bazel run //ci/ray_ci/automation:push_ray_image --
369+
--python-version {{matrix.python}}
370+
--platform cu{{matrix.cuda}}
371+
--image-type ray-extra
372+
--upload
373+
matrix:
374+
setup:
375+
python:
376+
- "3.10"
377+
- "3.11"
378+
- "3.12"
379+
cuda:
380+
- "11.7.1-cudnn8"
381+
- "11.8.0-cudnn8"
382+
- "12.1.1-cudnn8"
383+
- "12.3.2-cudnn9"
384+
- "12.4.1-cudnn"
385+
- "12.5.1-cudnn"
386+
- "12.6.3-cudnn"
387+
- "12.8.1-cudnn"
388+
- "12.9.1-cudnn"
389+
depends_on:
390+
- ray-extra-image-cuda-build
210391
tags:
211392
- python_dependencies
212393
- docker
394+
- skip-on-premerge
213395
- oss
214-
instance_type: medium
396+
397+
# Push ray-llm CUDA images to Docker Hub (goes to rayproject/ray-llm)
398+
- label: ":docker: push: ray-llm py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
399+
key: ray_llm_images_cuda_push
400+
instance_type: small
215401
commands:
216-
- bazel run //ci/ray_ci:build_in_docker -- docker --python-version {{matrix}}
217-
--platform cu12.8.1-cudnn --image-type ray-llm-extra --upload
402+
- bazel run //.buildkite:copy_files -- --destination docker_login
403+
- bazel run //ci/ray_ci/automation:push_ray_image --
404+
--python-version {{matrix.python}}
405+
--platform cu{{matrix.cuda}}
406+
--image-type ray-llm
407+
--upload
408+
matrix:
409+
setup:
410+
python:
411+
- "3.11"
412+
cuda:
413+
- "12.8.1-cudnn"
218414
depends_on:
219-
- manylinux-x86_64
220-
- forge
221-
- ray-llmbaseextra
415+
- ray-llm-image-cuda-build
416+
tags:
417+
- python_dependencies
418+
- docker
419+
- skip-on-premerge
420+
- oss
421+
422+
# Push ray-llm-extra CUDA images to Docker Hub (goes to rayproject/ray-llm)
423+
- label: ":docker: push: ray-llm-extra py{{matrix.python}} cu{{matrix.cuda}} (x86_64)"
424+
key: ray_llm_extra_images_cuda_push
425+
instance_type: small
426+
commands:
427+
- bazel run //.buildkite:copy_files -- --destination docker_login
428+
- bazel run //ci/ray_ci/automation:push_ray_image --
429+
--python-version {{matrix.python}}
430+
--platform cu{{matrix.cuda}}
431+
--image-type ray-llm-extra
432+
--upload
222433
matrix:
223-
- "3.11"
434+
setup:
435+
python:
436+
- "3.11"
437+
cuda:
438+
- "12.8.1-cudnn"
439+
depends_on:
440+
- ray-llm-extra-image-cuda-build
441+
tags:
442+
- python_dependencies
443+
- docker
444+
- skip-on-premerge
445+
- oss
224446

225447
- label: ":tapioca: smoke test build-docker.sh"
226448
tags:
@@ -237,6 +459,7 @@ steps:
237459
depends_on:
238460
- forge
239461

462+
# Generate nightly indexes after images are pushed
240463
- label: ":tapioca: generate nightly indexes"
241464
instance_type: small
242465
tags:
@@ -247,6 +470,7 @@ steps:
247470
- bazel run .buildkite:copy_files -- --destination docker_login
248471
- bazel run //ci/ray_ci/automation:generate_index -- --prefix nightly
249472
depends_on:
250-
- ray_images
473+
- ray_images_cpu_push
474+
- ray_images_cuda_push
251475
- ray_images_aarch64
252476
- 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)