diff --git a/images/runtime/ray/cpu/2.52.1-py311-cpu/Dockerfile b/images/runtime/ray/cpu/2.52.1-py311-cpu/Dockerfile new file mode 100644 index 000000000..be4d10418 --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py311-cpu/Dockerfile @@ -0,0 +1,38 @@ +ARG PYTHON_VERSION=311 +ARG IMAGE_TAG=9.7-1764607342 + +FROM registry.access.redhat.com/ubi9/python-${PYTHON_VERSION}:${IMAGE_TAG} + +ARG CONSTRAINTS_FILE=requirements_compiled.txt + +LABEL name="ray-ubi9-py311-cpu" \ + summary="Python 3.11 image based on UBI9 for Ray (CPU only)" \ + description="CPU-only Python 3.11 image based on UBI9 for Ray" \ + io.k8s.display-name="Python 3.11 base image for Ray (CPU)" \ + io.k8s.description="CPU-only Python 3.11 image based on UBI9 for Ray" \ + authoritative-source-url="https://github.com/opendatahub-io/distributed-workloads" + +USER 0 +WORKDIR /opt/app-root/bin + +# Update base image and install basic build tools +RUN yum upgrade -y && \ + yum install -y \ + openblas \ + openblas-devel \ + make \ + findutils \ + && yum clean all && \ + rm -rf /var/cache/yum/* + +# Copy constraints file +COPY ${CONSTRAINTS_FILE} . + +RUN pip install --no-cache-dir \ + -c ${CONSTRAINTS_FILE} \ + ray[default,data,train,tune,serve]==2.52.1 \ + --extra-index-url https://wheels.developerfirst.ibm.com/ppc64le/linux/+simple/ + +# Restore user workspace +USER 1001 +WORKDIR /opt/app-root/src diff --git a/images/runtime/ray/cpu/2.52.1-py311-cpu/README.md b/images/runtime/ray/cpu/2.52.1-py311-cpu/README.md new file mode 100644 index 000000000..3a52e56a7 --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py311-cpu/README.md @@ -0,0 +1,10 @@ +# Ray Runtime Container Image + +CPU enabled container image for Ray in OpenShift AI. + +It includes the following layers: + +* UBI 9 +* Python 3.11 +* CPU (no GPU acceleration) +* Ray 2.52.1 diff --git a/images/runtime/ray/cpu/2.52.1-py311-cpu/requirements_compiled.txt b/images/runtime/ray/cpu/2.52.1-py311-cpu/requirements_compiled.txt new file mode 100644 index 000000000..eefbfd3ea --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py311-cpu/requirements_compiled.txt @@ -0,0 +1,222 @@ +aiohappyeyeballs==2.6.1 + # via aiohttp +aiohttp==3.13.3 + # via + # aiohttp-cors + # ray +aiohttp-cors==0.8.1 + # via ray +aiosignal==1.4.0 + # via aiohttp +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.12.1 + # via + # starlette + # watchfiles +attrs==25.4.0 + # via + # aiohttp + # jsonschema + # referencing +certifi==2026.2.25 + # via requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.4 + # via requests +click==8.2.1 + # via + # ray + # uvicorn +colorful==0.5.8 + # via ray +cryptography==46.0.5 + # via google-auth +distlib==0.4.0 + # via virtualenv +fastapi==0.133.0 + # via ray +filelock==3.24.3 + # via + # ray + # virtualenv +frozenlist==1.8.0 + # via + # aiohttp + # aiosignal +fsspec==2026.2.0 + # via ray +google-api-core==2.30.0 + # via opencensus +google-auth==2.48.0 + # via google-api-core +googleapis-common-protos==1.72.0 + # via google-api-core +grpcio==1.75.0 + # via ray +h11==0.16.0 + # via uvicorn +httptools==0.7.1 + # via uvicorn +idna==3.11 + # via + # anyio + # requests + # yarl +importlib-metadata==8.7.1 + # via opentelemetry-api +jsonschema==4.26.0 + # via ray +jsonschema-specifications==2025.9.1 + # via jsonschema +msgpack==1.1.2 + # via ray +multidict==6.7.1 + # via + # aiohttp + # yarl +numpy==2.4.2 + # via + # pandas + # ray + # tensorboardx +opencensus==0.11.4 + # via ray +opencensus-context==0.1.3 + # via opencensus +opentelemetry-api==1.39.1 + # via + # opentelemetry-exporter-prometheus + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-prometheus==0.60b1 + # via ray +opentelemetry-proto==1.39.1 + # via ray +opentelemetry-sdk==1.39.1 + # via + # opentelemetry-exporter-prometheus + # ray +opentelemetry-semantic-conventions==0.60b1 + # via opentelemetry-sdk +packaging==26.0 + # via + # ray + # tensorboardx +pandas==3.0.1 + # via ray +platformdirs==4.9.2 + # via virtualenv +prometheus-client==0.24.1 + # via + # opentelemetry-exporter-prometheus + # ray +propcache==0.4.1 + # via + # aiohttp + # yarl +proto-plus==1.27.1 + # via google-api-core +protobuf==6.33.5 + # via + # google-api-core + # googleapis-common-protos + # opentelemetry-proto + # proto-plus + # ray + # tensorboardx +py-spy==0.4.1 + # via ray +pyarrow==20.0.0 + # via ray +pyasn1==0.6.2 + # via + # pyasn1-modules + # rsa +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.12.5 + # via + # fastapi + # ray +pydantic-core==2.41.5 + # via pydantic +python-dateutil==2.9.0.post0 + # via pandas +python-dotenv==1.2.1 + # via uvicorn +pyyaml==6.0.3 + # via + # ray + # uvicorn +ray==2.52.1 + # via -r req.txt +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.32.5 + # via + # google-api-core + # ray +rpds-py==0.30.0 + # via + # jsonschema + # referencing +rsa==4.9.1 + # via google-auth +six==1.17.0 + # via + # opencensus + # python-dateutil +smart-open==7.5.1 + # via ray +starlette==0.52.1 + # via + # fastapi + # ray +tensorboardx==2.6.4 + # via ray +typing-extensions==4.15.0 + # via + # aiosignal + # anyio + # fastapi + # grpcio + # opentelemetry-api + # opentelemetry-sdk + # opentelemetry-semantic-conventions + # pydantic + # pydantic-core + # referencing + # starlette + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # pydantic +urllib3==2.6.3 + # via requests +uvicorn==0.41.0 + # via ray +uvloop==0.22.1 + # via uvicorn +virtualenv==20.39.0 + # via ray +watchfiles==1.1.1 + # via + # ray + # uvicorn +websockets==16.0 + # via uvicorn +wrapt==2.1.1 + # via smart-open +yarl==1.22.0 + # via aiohttp +zipp==3.23.0 + # via importlib-metadata diff --git a/images/runtime/ray/cpu/2.52.1-py312-cpu/Dockerfile b/images/runtime/ray/cpu/2.52.1-py312-cpu/Dockerfile new file mode 100644 index 000000000..8aca774b8 --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py312-cpu/Dockerfile @@ -0,0 +1,38 @@ +ARG PYTHON_VERSION=312 +ARG IMAGE_TAG=9.7-1764607356 + +FROM registry.access.redhat.com/ubi9/python-${PYTHON_VERSION}:${IMAGE_TAG} + +ARG CONSTRAINTS_FILE=requirements_compiled.txt + +LABEL name="ray-ubi9-py312-cpu" \ + summary="Python 3.12 image based on UBI9 for Ray (CPU only)" \ + description="CPU-only Python 3.12 image based on UBI9 for Ray" \ + io.k8s.display-name="Python 3.12 base image for Ray (CPU)" \ + io.k8s.description="CPU-only Python 3.12 image based on UBI9 for Ray" \ + authoritative-source-url="https://github.com/opendatahub-io/distributed-workloads" + +USER 0 +WORKDIR /opt/app-root/bin + +# Update base image and install basic build tools +RUN yum upgrade -y && \ + yum install -y \ + openblas \ + openblas-devel \ + make \ + findutils \ + && yum clean all && \ + rm -rf /var/cache/yum/* + +# Copy constraints file +COPY ${CONSTRAINTS_FILE} . + +RUN pip install --no-cache-dir \ + -c ${CONSTRAINTS_FILE} \ + ray[default,data,train,tune,serve]==2.52.1 \ + --extra-index-url https://wheels.developerfirst.ibm.com/ppc64le/linux/+simple/ + +# Restore user workspace +USER 1001 +WORKDIR /opt/app-root/src diff --git a/images/runtime/ray/cpu/2.52.1-py312-cpu/README.md b/images/runtime/ray/cpu/2.52.1-py312-cpu/README.md new file mode 100644 index 000000000..3bb99e48a --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py312-cpu/README.md @@ -0,0 +1,10 @@ +# Ray Runtime Container Image + +CPU enabled container image for Ray in OpenShift AI. + +It includes the following layers: + +* UBI 9 +* Python 3.12 +* CPU (no GPU acceleration) +* Ray 2.52.1 diff --git a/images/runtime/ray/cpu/2.52.1-py312-cpu/requirements_compiled.txt b/images/runtime/ray/cpu/2.52.1-py312-cpu/requirements_compiled.txt new file mode 100644 index 000000000..45c70ff01 --- /dev/null +++ b/images/runtime/ray/cpu/2.52.1-py312-cpu/requirements_compiled.txt @@ -0,0 +1,222 @@ +aiohappyeyeballs==2.6.1 + # via aiohttp +aiohttp==3.13.3 + # via + # aiohttp-cors + # ray +aiohttp-cors==0.8.1 + # via ray +aiosignal==1.4.0 + # via aiohttp +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.12.1 + # via + # starlette + # watchfiles +attrs==25.4.0 + # via + # aiohttp + # jsonschema + # referencing +certifi==2026.2.25 + # via requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.4 + # via requests +click==8.2.1 + # via + # ray + # uvicorn +colorful==0.5.8 + # via ray +cryptography==46.0.5 + # via google-auth +distlib==0.4.0 + # via virtualenv +fastapi==0.133.0 + # via ray +filelock==3.24.3 + # via + # ray + # virtualenv +frozenlist==1.8.0 + # via + # aiohttp + # aiosignal +fsspec==2026.2.0 + # via ray +google-api-core==2.30.0 + # via opencensus +google-auth==2.48.0 + # via google-api-core +googleapis-common-protos==1.72.0 + # via google-api-core +grpcio==1.75.1 + # via ray +h11==0.16.0 + # via uvicorn +httptools==0.7.1 + # via uvicorn +idna==3.11 + # via + # anyio + # requests + # yarl +importlib-metadata==8.7.1 + # via opentelemetry-api +jsonschema==4.26.0 + # via ray +jsonschema-specifications==2025.9.1 + # via jsonschema +msgpack==1.1.2 + # via ray +multidict==6.7.1 + # via + # aiohttp + # yarl +numpy==2.4.2 + # via + # pandas + # ray + # tensorboardx +opencensus==0.11.4 + # via ray +opencensus-context==0.1.3 + # via opencensus +opentelemetry-api==1.39.1 + # via + # opentelemetry-exporter-prometheus + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-prometheus==0.60b1 + # via ray +opentelemetry-proto==1.39.1 + # via ray +opentelemetry-sdk==1.39.1 + # via + # opentelemetry-exporter-prometheus + # ray +opentelemetry-semantic-conventions==0.60b1 + # via opentelemetry-sdk +packaging==26.0 + # via + # ray + # tensorboardx +pandas==3.0.1 + # via ray +platformdirs==4.9.2 + # via virtualenv +prometheus-client==0.24.1 + # via + # opentelemetry-exporter-prometheus + # ray +propcache==0.4.1 + # via + # aiohttp + # yarl +proto-plus==1.27.1 + # via google-api-core +protobuf==6.33.5 + # via + # google-api-core + # googleapis-common-protos + # opentelemetry-proto + # proto-plus + # ray + # tensorboardx +py-spy==0.4.1 + # via ray +pyarrow==21.0.0 + # via ray +pyasn1==0.6.2 + # via + # pyasn1-modules + # rsa +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.12.5 + # via + # fastapi + # ray +pydantic-core==2.41.5 + # via pydantic +python-dateutil==2.9.0.post0 + # via pandas +python-dotenv==1.2.1 + # via uvicorn +pyyaml==6.0.3 + # via + # ray + # uvicorn +ray==2.52.1 + # via -r req.txt +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.32.5 + # via + # google-api-core + # ray +rpds-py==0.30.0 + # via + # jsonschema + # referencing +rsa==4.9.1 + # via google-auth +six==1.17.0 + # via + # opencensus + # python-dateutil +smart-open==7.5.1 + # via ray +starlette==0.52.1 + # via + # fastapi + # ray +tensorboardx==2.6.4 + # via ray +typing-extensions==4.15.0 + # via + # aiosignal + # anyio + # fastapi + # grpcio + # opentelemetry-api + # opentelemetry-sdk + # opentelemetry-semantic-conventions + # pydantic + # pydantic-core + # referencing + # starlette + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # pydantic +urllib3==2.6.3 + # via requests +uvicorn==0.41.0 + # via ray +uvloop==0.22.1 + # via uvicorn +virtualenv==20.39.0 + # via ray +watchfiles==1.1.1 + # via + # ray + # uvicorn +websockets==16.0 + # via uvicorn +wrapt==2.1.1 + # via smart-open +yarl==1.22.0 + # via aiohttp +zipp==3.23.0 + # via importlib-metadata