diff --git a/.tekton/odh-trustyai-nemo-guardrails-server-pull-request.yaml b/.tekton/odh-trustyai-nemo-guardrails-server-pull-request.yaml index 21790731a8..9931c413c3 100644 --- a/.tekton/odh-trustyai-nemo-guardrails-server-pull-request.yaml +++ b/.tekton/odh-trustyai-nemo-guardrails-server-pull-request.yaml @@ -3,9 +3,9 @@ kind: PipelineRun metadata: annotations: build.appstudio.openshift.io/repo: https://github.com/red-hat-data-services/NeMo-Guardrails?rev={{revision}} - build.appstudio.redhat.com/commit_sha: '{{revision}}' - build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}' - build.appstudio.redhat.com/target_branch: '{{target_branch}}' + build.appstudio.redhat.com/commit_sha: "{{revision}}" + build.appstudio.redhat.com/pull_request_number: "{{pull_request_number}}" + build.appstudio.redhat.com/target_branch: "{{target_branch}}" pipelinesascode.tekton.dev/cancel-in-progress: "true" pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-comment: "^/build-konflux" @@ -21,53 +21,76 @@ metadata: namespace: rhoai-tenant spec: params: - - name: git-url - value: '{{source_url}}' - - name: revision - value: '{{revision}}' - - name: output-image - value: quay.io/rhoai/pull-request-pipelines:odh-trustyai-nemo-guardrails-server-rhel9-{{revision}} - - name: additional-tags - value: - - 'pr-{{pull_request_number}}-into-{{target_branch}}' - - name: additional-labels - value: - - version=on-pr-{{revision}} - - io.openshift.tags=odh-trustyai-nemo-guardrails-server - - name: image-expires-after - value: 5d - - name: dockerfile - value: Dockerfile.konflux - - name: build-platforms - value: - - linux/x86_64 - - linux-m2xlarge/arm64 - - linux/ppc64le - - name: prefetch-input - value: | - [{"type": "generic", "path": "."}] - - name: hermetic - value: false - - name: enable-slack-failure-notification - value: "false" - - name: path-context - value: . + - name: git-url + value: "{{source_url}}" + - name: revision + value: "{{revision}}" + - name: output-image + value: quay.io/rhoai/pull-request-pipelines:odh-trustyai-nemo-guardrails-server-rhel9-{{revision}} + - name: additional-tags + value: + - "pr-{{pull_request_number}}-into-{{target_branch}}" + - name: additional-labels + value: + - version=on-pr-{{revision}} + - io.openshift.tags=odh-trustyai-nemo-guardrails-server + - name: image-expires-after + value: 5d + - name: dockerfile + value: Dockerfile.konflux + - name: build-platforms + value: + - linux/x86_64 + - linux-m2xlarge/arm64 + - linux/ppc64le + - name: prefetch-input + value: | + [ + { + "type": "pip", + "path": ".", + "requirements_files": [ + "ppc64le-requirements/1/1-requirements.txt", + "ppc64le-requirements/1/2-rh.txt", + "ppc64le-requirements/1/3.txt" + ], + "requirements_build_files": [ + "ppc64le-requirements/2/2.txt", + "ppc64le-requirements/2/requirements-devpi-index-2.txt" + ], + "allow_binary": "true" + }, + { + "type": "rpm", + "path": "." + }, + { + "type": "generic", + "path": "." + } + ] + - name: hermetic + value: true + - name: enable-slack-failure-notification + value: "false" + - name: path-context + value: . timeouts: pipeline: 4h tasks: 2h pipelineRef: resolver: git params: - - name: url - value: https://github.com/red-hat-data-services/konflux-central.git - - name: revision - value: '{{ target_branch }}' - - name: pathInRepo - value: pipelines/multi-arch-container-build.yaml + - name: url + value: https://github.com/red-hat-data-services/konflux-central.git + - name: revision + value: "{{ target_branch }}" + - name: pathInRepo + value: pipelines/multi-arch-container-build.yaml taskRunTemplate: serviceAccountName: build-pipeline-pull-request-pipelines workspaces: - - name: git-auth - secret: - secretName: '{{ git_auth_secret }}' + - name: git-auth + secret: + secretName: "{{ git_auth_secret }}" status: {} diff --git a/.tekton/odh-trustyai-nemo-guardrails-server-push.yaml b/.tekton/odh-trustyai-nemo-guardrails-server-push.yaml index 1016a6c6f2..eb9feec4f8 100644 --- a/.tekton/odh-trustyai-nemo-guardrails-server-push.yaml +++ b/.tekton/odh-trustyai-nemo-guardrails-server-push.yaml @@ -47,4 +47,4 @@ spec: - name: git-auth secret: secretName: '{{ git_auth_secret }}' -status: {} \ No newline at end of file +status: {} diff --git a/Dockerfile.konflux b/Dockerfile.konflux index d76a62985a..aca47d3bd4 100644 --- a/Dockerfile.konflux +++ b/Dockerfile.konflux @@ -1,167 +1,16 @@ ############################################################### -# Stage 1 Base builder image with common tooling +# Stage 1 Install all the dependencies ############################################################### -FROM registry.access.redhat.com/ubi9/python-312@sha256:21739f35258f21e23a7e02e79c763f2a69e605416fedd54b6ec9c5ef68fd1f43 as packages-build -USER root -WORKDIR /app - -ENV PATH="$HOME/.cargo/bin:$PATH" -ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ -ARG TARGETARCH - -# Install dependencies -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - dnf install -y \ - make libtool wget patch ninja-build cmake xz bzip2-devel libffi-devel zlib-devel openssl-devel libevent-devel \ - python3.12 python3.12-devel python3.12-pip clang \ - gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-gfortran skopeo && \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \ - dnf clean all && \ - pip install --upgrade setuptools-rust pip 'cmake<4' setuptools wheel maturin ; \ - fi - -COPY requirements* /app/ - -# Create a dummy file to trigger build dependency -RUN touch /tmp/control - -############################################################### -# Stage 2 to build OpenBLAS -############################################################### - -FROM packages-build AS openblas-builder -ENV OPENBLAS_VERSION=0.3.30 -ARG TARGETARCH - -WORKDIR /app - -# Creating a directory for OpenBlas -RUN mkdir /tmp/openblas - -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - source /opt/rh/gcc-toolset-14/enable && \ - wget https://github.com/OpenMathLib/OpenBLAS/releases/download/v${OPENBLAS_VERSION}/OpenBLAS-${OPENBLAS_VERSION}.zip && \ - unzip OpenBLAS-${OPENBLAS_VERSION}.zip -d /tmp/ && mv -T /tmp/OpenBLAS-${OPENBLAS_VERSION} /tmp/openblas && \ - cd /tmp/openblas && \ - make -j$(nproc) TARGET=POWER9 BINARY=64 USE_OPENMP=1 USE_THREAD=1 NUM_THREADS=120 DYNAMIC_ARCH=1 INTERFACE64=0 ; \ - fi - -############################################################### -# Stage 3 to build pyTorch -############################################################### - -FROM packages-build AS torch-builder -USER root - -WORKDIR /app - -ARG MAX_JOBS -ARG _GLIBCXX_USE_CXX11_ABI=1 -ARG TARGETARCH - -RUN mkdir -p /torchwheels - -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - export TORCH_VERSION=$(sed -n "s/^torch==//p" /app/requirements-torch.in) && \ - source /opt/rh/gcc-toolset-14/enable && \ - git clone --recursive https://github.com/pytorch/pytorch.git -b v${TORCH_VERSION} && \ - cd pytorch && pip install -r requirements.txt && \ - rm -f dist/torch*+git*whl && \ - # Set MAX_JOBS to 2 or 4 to prevent OOM - # MAX_JOBS=4 \ - USE_NCCL=0 \ - BUILD_TEST=0 \ - PYTORCH_BUILD_VERSION=${TORCH_VERSION} \ - PYTORCH_BUILD_NUMBER=1 \ - pip wheel . --no-build-isolation --wheel-dir /torchwheels/ \ -; fi - -############################################################### -# Stage 4 to build Tiktoken -############################################################### - -FROM packages-build as tiktoken-builder -ARG TARGETARCH -WORKDIR /app - -RUN mkdir -p /tiktokenwheels - -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - export TIKTOKEN_VERSION=$(sed -n "s/^tiktoken==//p" /app/requirements.txt) && \ - source /opt/rh/gcc-toolset-14/enable && \ - git clone https://github.com/openai/tiktoken.git && \ - cd tiktoken && \ - git checkout ${TIKTOKEN_VERSION} && \ - pip wheel . --wheel-dir /tiktokenwheels ; \ - fi - -############################################################### -# Stage 5 to build onnxruntime -############################################################### -FROM packages-build AS onnxruntime-builder -ARG TARGETARCH -USER root - -WORKDIR /app - -ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/app/.openblas/lib - -# copy built OpenBLAS sources -COPY --from=openblas-builder /tmp/openblas/ /build/openblas - -# Install OpenBLAS -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - PREFIX=/app/.openblas make -C /build/openblas install && \ - ln -sf /app/.openblas/lib/libopenblasp-r0.3.30.so /app/.openblas/lib/libopenblasp.so.0 ; \ - fi - -COPY scripts/build_onnxruntime.sh /build/build_onnxruntime.sh - -RUN mkdir -p /onnxruntime_wheels - -# Build onnxruntime -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - export ONNXRUNTIME_VERSION=$(sed -n "s/^onnxruntime==//p" /app/requirements.txt) && \ - sh /build/build_onnxruntime.sh ; \ - fi - -############################################################### -# Stage 6 Install hf_xet from source ppc64le -############################################################### -FROM packages-build AS hf-xet-builder -ARG TARGETARCH -USER root - -WORKDIR /app -RUN mkdir -p /hf_xet_wheels - -RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ - export HF_XET_VERSION=$(sed -n "s/^hf-xet==//p" /app/requirements.txt) && \ - git clone https://github.com/huggingface/xet-core.git && \ - cd xet-core/hf_xet && git checkout v${HF_XET_VERSION} && \ - sed -i '/python-source = "python"/d' pyproject.toml && \ - maturin build --release --out /hf_xet_wheels ; \ - fi - -############################################################### -# Stage 7 Install all the dependencies -############################################################### - -FROM registry.access.redhat.com/ubi9/python-312@sha256:21739f35258f21e23a7e02e79c763f2a69e605416fedd54b6ec9c5ef68fd1f43 as build +FROM registry.access.redhat.com/ubi9/python-312@sha256:cb818db6c1dc82c70aeaa1139e33f3371f47b97b60ae6f9f23381319746f6f1d as build USER 0 WORKDIR /app ARG TARGETARCH ARG GUARDRAILS_PROFILE=opensource -ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/app/.openblas/lib -ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/app/.openblas/lib/pkgconfig -ENV PATH="$HOME/.cargo/bin:/app/.venv/bin:$PATH" -ENV BLIS_ARCH=generic -ENV GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 -COPY requirements.txt requirements-torch.txt pyproject.toml README.md ./ +COPY requirements.txt requirements-ppc.txt requirements-torch.txt pyproject.toml README.md ./ COPY nemoguardrails/ ./nemoguardrails/ COPY scripts/ ./scripts/ COPY examples/bots/ ./examples/bots/ @@ -180,36 +29,7 @@ ENV HF_HOME=/app/.cache/huggingface \ RUN python3 -m venv /app/.venv -# Copy OpenBLAS -COPY --from=openblas-builder /tmp/openblas/ /tmp/openblas - -# Dummy file to trigger build dependency -COPY --from=torch-builder /tmp/control /dev/null -COPY --from=tiktoken-builder /tmp/control /dev/null -COPY --from=onnxruntime-builder /tmp/control /dev/null -COPY --from=hf-xet-builder /tmp/control /dev/null - -RUN --mount=type=cache,from=torch-builder,source=/torchwheels/,target=/tmp/torchwheels/,ro \ - --mount=type=cache,from=tiktoken-builder,source=/tiktokenwheels/,target=/tmp/tiktokenwheels/,ro \ - --mount=type=cache,from=onnxruntime-builder,source=/onnxruntime_wheels/,target=/tmp/onnxruntime_wheels/,ro \ - --mount=type=cache,from=hf-xet-builder,source=/hf_xet_wheels/,target=/tmp/hf_xet_wheels/,ro \ - if [ "$TARGETARCH" = "ppc64le" ]; then \ - /app/.venv/bin/pip install \ - /tmp/torchwheels/*.whl \ - /tmp/tiktokenwheels/*.whl \ - /tmp/onnxruntime_wheels/*.whl \ - /tmp/hf_xet_wheels/*.whl && \ - PREFIX=/app/.openblas make -C /tmp/openblas install && rm -rf /tmp/openblas ; \ - fi - -# Temporary workaround for ppc64le with the pinned pandas version. Remove after upgrading pandas with v3.x -RUN if [ "$TARGETARCH" == "ppc64le" ]; then \ - export PANDAS_VERSION=$(sed -n "s/^pandas==//p" /app/requirements.txt) && \ - /app/.venv/bin/pip install --no-cache-dir "meson<1.10" meson-python ninja cython numpy versioneer[toml] packaging && \ - /app/.venv/bin/pip install --no-cache-dir --no-build-isolation pandas==${PANDAS_VERSION} ; \ - fi - -RUN /app/.venv/bin/pip install --no-cache-dir -r requirements.txt && \ +RUN /app/.venv/bin/pip install --no-cache-dir -r requirements-ppc.txt && \ /app/.venv/bin/pip install --no-cache-dir --no-deps . && \ rm -rf /root/.cache/pip /tmp/* /var/tmp/* @@ -227,7 +47,7 @@ RUN set -ex && \ rm -rf /app/.cache/huggingface/xet /root/.cache /tmp/* /var/tmp/* ############################################################### -# Stage 8 Final Build +# Stage 2 Final Build ############################################################### FROM registry.access.redhat.com/ubi9/python-312:latest as runtime diff --git a/ppc64le-requirements/1/1-requirements.txt b/ppc64le-requirements/1/1-requirements.txt new file mode 100644 index 0000000000..e054149618 --- /dev/null +++ b/ppc64le-requirements/1/1-requirements.txt @@ -0,0 +1,159 @@ +aiofiles==25.1.0 +aiohappyeyeballs==2.6.1 +aiohttp==3.12.15 +aiohttp-retry==2.9.1 +aiosignal==1.4.0 +annotated-doc==0.0.4 +annotated-types==0.7.0 +anyio==4.11.0 +asgiref==3.11.1 +attrs==25.3.0 +catalogue==2.0.10 +certifi==2025.8.3 +cffi==1.17.1 +charset-normalizer==3.4.3 +click==8.1.8 +cloudpathlib==0.22.0 +coloredlogs==15.0.1 +colorlog==6.10.1 +Cython==3.2.4 +dataclasses-json==0.6.7 +distro==1.9.0 +einops==0.8.1 +fastapi==0.122.0 +filelock==3.19.1 +filetype==1.2.0 +flatbuffers==25.2.10 +frozenlist==1.7.0 +fsspec==2025.9.0 +googleapis-common-protos==1.74.0 +greenlet==3.4.0 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +httpx-sse==0.4.1 +humanfriendly==10.0 +idna==3.10 +importlib_metadata==8.7.0 +jiter==0.14.0 +joblib==1.5.2 +jsonpatch==1.33 +jsonpointer==3.0.0 +langsmith==0.4.30 +lark==1.3.0 +loguru==0.7.3 +markdown-it-py==3.0.0 +marshmallow==3.26.1 +mdurl==0.1.2 +meson==1.9.2 +meson-python==0.19.0 +mmh3==5.2.0 +mpmath==1.3.0 +multidict==6.6.4 +mypy_extensions==1.1.0 +nest-asyncio==1.6.0 +networkx==3.5 +ninja==1.13.0 +nltk==3.9.2 +openai==2.21.0 +opentelemetry-api==1.38.0 +opentelemetry-distro==0.59b0 +opentelemetry-exporter-otlp-proto-common==1.38.0 +opentelemetry-exporter-otlp-proto-http==1.38.0 +opentelemetry-instrumentation==0.59b0 +opentelemetry-instrumentation-asgi==0.59b0 +opentelemetry-instrumentation-fastapi==0.59b0 +opentelemetry-instrumentation-httpx==0.59b0 +opentelemetry-proto==1.38.0 +opentelemetry-sdk==1.38.0 +opentelemetry-semantic-conventions==0.59b0 +opentelemetry-util-http==0.59b0 +orjson==3.11.3 +packaging==25.0 +phonenumbers==9.0.10 +prompt_toolkit==3.0.52 +propcache==0.3.2 +protobuf==6.32.1 +pycparser==2.22 +pydantic==2.11.9 +pydantic-settings==2.10.1 +pydantic_core==2.33.2 +Pygments==2.19.2 +pyproject-metadata==0.11.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.1.1 +pytz==2025.2 +regex==2025.9.18 +requests==2.32.5 +requests-file==2.1.0 +requests-toolbelt==1.0.0 +rich==14.1.0 +robust-downloader==0.0.2 +safetensors==0.6.2 +setuptools==80.9.0 +shellingham==1.5.4 +simpleeval==1.0.3 +six==1.17.0 +smart_open==7.3.1 +sniffio==1.3.1 +spacy-legacy==3.0.12 +spacy-loggers==1.0.5 +SQLAlchemy==2.0.43 +starlette==0.50.0 +sympy==1.14.0 +tenacity==9.1.2 +threadpoolctl==3.6.0 +tldextract==5.3.0 +tqdm==4.67.1 +typer==0.19.2 +typing-inspect==0.9.0 +typing-inspection==0.4.1 +typing_extensions==4.15.0 +tzdata==2025.2 +urllib3==2.5.0 +uuid_utils==0.14.0 +uvicorn==0.37.0 +versioneer==0.29 +wasabi==1.1.3 +watchdog==6.0.0 +wcwidth==0.2.14 +wrapt==1.17.3 +yarl==1.20.1 +zipp==3.23.0 +zstandard==0.25.0 +cryptography==44.0.3 +cymem==2.0.11 +huggingface-hub==0.35.1 +langchain-community==0.3.29 +langcodes==3.5.0 +language_data==1.3.0 +marisa-trie==1.3.1 +MarkupSafe==3.0.2 +murmurhash==1.0.13 +numpy==2.3.3 +pandas==2.3.1 +preshed==3.0.10 +presidio_anonymizer==2.2.359 +PyYAML==6.0.2 +srsly==2.5.1 +tokenizers==0.22.1 +transformers==4.57.1 +weasel==0.4.1 +cryptography==44.0.3 +cymem==2.0.11 +huggingface-hub==0.35.1 +langchain-community==0.3.29 +langcodes==3.5.0 +language_data==1.3.0 +marisa-trie==1.3.1 +MarkupSafe==3.0.2 +murmurhash==1.0.13 +numpy==2.3.3 +pandas==2.3.1 +preshed==3.0.10 +presidio_anonymizer==2.2.359 +PyYAML==6.0.2 +srsly==2.5.1 +tokenizers==0.22.1 +transformers==4.57.1 +weasel==0.4.1 diff --git a/ppc64le-requirements/1/2-rh.txt b/ppc64le-requirements/1/2-rh.txt new file mode 100644 index 0000000000..e4eb106b5c --- /dev/null +++ b/ppc64le-requirements/1/2-rh.txt @@ -0,0 +1,19 @@ +--index-url https://console.redhat.com/api/pypi/public-rhai/rhoai/3.4/cpu-ubi9/simple + +annoy==1.17.3 +fastembed==0.6.0 +grpcio==1.80.0 +langchain-openai==0.3.35 +scikit-learn==1.7.2 +scipy==1.16.3 +tiktoken==0.12.0 +confection==0.1.5 +fasttext-predict==0.9.2.4 +Jinja2==3.1.6 +langchain==0.3.27 +langchain-core==0.3.83 +langchain-nvidia-ai-endpoints==0.3.19 +langchain-text-splitters==0.3.11 +pillow==11.3.0 +py_rust_stemmers==0.1.5 +yara-python==4.5.4 diff --git a/ppc64le-requirements/1/3.txt b/ppc64le-requirements/1/3.txt new file mode 100644 index 0000000000..43ac6b2931 --- /dev/null +++ b/ppc64le-requirements/1/3.txt @@ -0,0 +1,3 @@ +--index-url https://wheels-staging.developerfirst.ibm.com/ppc64le/linux/ --trusted-host wheels-staging.developerfirst.ibm.com + +torch==2.9.0 diff --git a/ppc64le-requirements/1/4.txt b/ppc64le-requirements/1/4.txt new file mode 100644 index 0000000000..d65e574688 --- /dev/null +++ b/ppc64le-requirements/1/4.txt @@ -0,0 +1,3 @@ +--index-url https://wheels.developerfirst.ibm.com/ppc64le/linux +hf-xet==1.2.0 +onnxruntime==1.22.0 #updated diff --git a/ppc64le-requirements/2/2.txt b/ppc64le-requirements/2/2.txt new file mode 100644 index 0000000000..002c4fe73c --- /dev/null +++ b/ppc64le-requirements/2/2.txt @@ -0,0 +1,4 @@ +opentelemetry-exporter-otlp==1.38.0 # requires grpcio==1.80.0 +opentelemetry-exporter-otlp-proto-grpc==1.38.0 # requires grpcio==1.80.0 +sentence-transformers==5.1.2 +presidio_analyzer==2.2.359 diff --git a/ppc64le-requirements/2/requirements-devpi-index-2.txt b/ppc64le-requirements/2/requirements-devpi-index-2.txt new file mode 100644 index 0000000000..fb468ac2dc --- /dev/null +++ b/ppc64le-requirements/2/requirements-devpi-index-2.txt @@ -0,0 +1,5 @@ +--index-url https://wheels-staging.developerfirst.ibm.com/ppc64le/linux/ --trusted-host wheels-staging.developerfirst.ibm.com + +blis==1.3.0 +spacy==3.8.7 +thinc==8.3.6 diff --git a/ppc64le-requirements/requirements-devpi-index-2.txt b/ppc64le-requirements/requirements-devpi-index-2.txt new file mode 100644 index 0000000000..ad902066bc --- /dev/null +++ b/ppc64le-requirements/requirements-devpi-index-2.txt @@ -0,0 +1,7 @@ +--index-url https://wheels-staging.developerfirst.ibm.com/ppc64le/linux/ --trusted-host wheels-staging.developerfirst.ibm.com +blis==1.3.0 +spacy==3.8.7 +thinc==8.3.6 +hf-xet==1.2.0 +onnxruntime==1.22.1 +torch==2.9.0 diff --git a/ppc64le-requirements/requirements-devpi-index.txt b/ppc64le-requirements/requirements-devpi-index.txt new file mode 100644 index 0000000000..b0db63f6ad --- /dev/null +++ b/ppc64le-requirements/requirements-devpi-index.txt @@ -0,0 +1,16 @@ +--index-url https://wheels-staging.developerfirst.ibm.com/ppc64le/linux/ --trusted-host wheels-staging.developerfirst.ibm.com + +blis==1.3.0 +spacy==3.8.7 +thinc==8.3.6 +hf-xet==1.4.2 # updated +onnxruntime==1.22.1 +torch==2.9.0 +grpcio==1.80.0 +scikit-learn==1.7.2 +scipy==1.16.3 +tiktoken==0.12.0 +langchain==0.3.27 +pillow==11.3.0 + +#cryptography==44.0.3 diff --git a/ppc64le-requirements/requirements-rhoai-3.4-index.txt b/ppc64le-requirements/requirements-rhoai-3.4-index.txt new file mode 100644 index 0000000000..e4eb106b5c --- /dev/null +++ b/ppc64le-requirements/requirements-rhoai-3.4-index.txt @@ -0,0 +1,19 @@ +--index-url https://console.redhat.com/api/pypi/public-rhai/rhoai/3.4/cpu-ubi9/simple + +annoy==1.17.3 +fastembed==0.6.0 +grpcio==1.80.0 +langchain-openai==0.3.35 +scikit-learn==1.7.2 +scipy==1.16.3 +tiktoken==0.12.0 +confection==0.1.5 +fasttext-predict==0.9.2.4 +Jinja2==3.1.6 +langchain==0.3.27 +langchain-core==0.3.83 +langchain-nvidia-ai-endpoints==0.3.19 +langchain-text-splitters==0.3.11 +pillow==11.3.0 +py_rust_stemmers==0.1.5 +yara-python==4.5.4 diff --git a/ppc64le-requirements/requirements-sdist-build.txt b/ppc64le-requirements/requirements-sdist-build.txt new file mode 100644 index 0000000000..ae14fff6db --- /dev/null +++ b/ppc64le-requirements/requirements-sdist-build.txt @@ -0,0 +1,20 @@ +cryptography==44.0.3 +cymem==2.0.11 +huggingface-hub==0.35.1 +langchain-community==0.3.29 +langcodes==3.5.0 +language_data==1.3.0 +marisa-trie==1.3.1 +MarkupSafe==3.0.2 +murmurhash==1.0.13 +numpy==2.3.3 +pandas==2.3.1 +preshed==3.0.10 +presidio_anonymizer==2.2.359 +PyYAML==6.0.2 +srsly==2.5.1 +tokenizers==0.22.1 +transformers==4.57.1 +weasel==0.4.1 +opentelemetry-exporter-otlp==1.38.0 # requires grpcio==1.80.0 +opentelemetry-exporter-otlp-proto-grpc==1.38.0 # requires grpcio==1.80.0 diff --git a/ppc64le-requirements/requirements.txt b/ppc64le-requirements/requirements.txt new file mode 100644 index 0000000000..d075a5aae6 --- /dev/null +++ b/ppc64le-requirements/requirements.txt @@ -0,0 +1,141 @@ +aiofiles==25.1.0 +aiohappyeyeballs==2.6.1 +aiohttp==3.12.15 +aiohttp-retry==2.9.1 +aiosignal==1.4.0 +annotated-doc==0.0.4 +annotated-types==0.7.0 +anyio==4.11.0 +asgiref==3.11.1 +attrs==25.3.0 +catalogue==2.0.10 +certifi==2025.8.3 +cffi==1.17.1 +charset-normalizer==3.4.3 +click==8.1.8 +cloudpathlib==0.22.0 +coloredlogs==15.0.1 +colorlog==6.10.1 +Cython==3.2.4 +dataclasses-json==0.6.7 +distro==1.9.0 +einops==0.8.1 +fastapi==0.122.0 +filelock==3.19.1 +filetype==1.2.0 +flatbuffers==25.2.10 +frozenlist==1.7.0 +fsspec==2025.9.0 +googleapis-common-protos==1.74.0 +greenlet==3.4.0 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +httpx-sse==0.4.1 +humanfriendly==10.0 +idna==3.10 +importlib_metadata==8.7.0 +jiter==0.14.0 +joblib==1.5.2 +jsonpatch==1.33 +jsonpointer==3.0.0 +langsmith==0.4.30 +lark==1.3.0 +loguru==0.7.3 +markdown-it-py==3.0.0 +marshmallow==3.26.1 +mdurl==0.1.2 +meson==1.9.2 +meson-python==0.19.0 +mmh3==5.2.0 +mpmath==1.3.0 +multidict==6.6.4 +mypy_extensions==1.1.0 +nest-asyncio==1.6.0 +networkx==3.5 +ninja==1.13.0 +nltk==3.9.2 +openai==2.21.0 +opentelemetry-api==1.38.0 +opentelemetry-distro==0.59b0 +opentelemetry-exporter-otlp-proto-common==1.38.0 +opentelemetry-exporter-otlp-proto-http==1.38.0 +opentelemetry-instrumentation==0.59b0 +opentelemetry-instrumentation-asgi==0.59b0 +opentelemetry-instrumentation-fastapi==0.59b0 +opentelemetry-instrumentation-httpx==0.59b0 +opentelemetry-proto==1.38.0 +opentelemetry-sdk==1.38.0 +opentelemetry-semantic-conventions==0.59b0 +opentelemetry-util-http==0.59b0 +orjson==3.11.3 +packaging==25.0 +phonenumbers==9.0.10 +prompt_toolkit==3.0.52 +propcache==0.3.2 +protobuf==6.32.1 +pycparser==2.22 +pydantic==2.11.9 +pydantic-settings==2.10.1 +pydantic_core==2.33.2 +Pygments==2.19.2 +pyproject-metadata==0.11.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.1.1 +pytz==2025.2 +regex==2025.9.18 +requests==2.32.5 +requests-file==2.1.0 +requests-toolbelt==1.0.0 +rich==14.1.0 +robust-downloader==0.0.2 +safetensors==0.6.2 +setuptools==80.9.0 +shellingham==1.5.4 +simpleeval==1.0.3 +six==1.17.0 +smart_open==7.3.1 +sniffio==1.3.1 +spacy-legacy==3.0.12 +spacy-loggers==1.0.5 +SQLAlchemy==2.0.43 +starlette==0.50.0 +sympy==1.14.0 +tenacity==9.1.2 +threadpoolctl==3.6.0 +tldextract==5.3.0 +tqdm==4.67.1 +typer==0.19.2 +typing-inspect==0.9.0 +typing-inspection==0.4.1 +typing_extensions==4.15.0 +tzdata==2025.2 +urllib3==2.5.0 +uuid_utils==0.14.0 +uvicorn==0.37.0 +versioneer==0.29 +wasabi==1.1.3 +watchdog==6.0.0 +wcwidth==0.2.14 +wrapt==1.17.3 +yarl==1.20.1 +zipp==3.23.0 +zstandard==0.25.0 +cryptography==44.0.3 +cymem==2.0.11 +huggingface-hub==0.35.1 +langchain-community==0.3.29 +langcodes==3.5.0 +language_data==1.3.0 +marisa-trie==1.3.1 +MarkupSafe==3.0.2 +murmurhash==1.0.13 +numpy==2.3.3 +pandas==2.3.1 +preshed==3.0.10 +presidio_anonymizer==2.2.359 +PyYAML==6.0.2 +srsly==2.5.1 +tokenizers==0.22.1 +transformers==4.57.1 +weasel==0.4.1 diff --git a/requirements-ppc.txt b/requirements-ppc.txt new file mode 100644 index 0000000000..c980bc32eb --- /dev/null +++ b/requirements-ppc.txt @@ -0,0 +1 @@ +nemoguardrails diff --git a/rpms.in.yaml b/rpms.in.yaml new file mode 100644 index 0000000000..68317b6cb0 --- /dev/null +++ b/rpms.in.yaml @@ -0,0 +1,9 @@ +arches: + - ppc64le +contentOrigin: + repofiles: + - ubi.repo +packages: + - unzip +context: + containerfile: Dockerfile.konflux diff --git a/rpms.lock.yaml b/rpms.lock.yaml new file mode 100644 index 0000000000..5bf856e5a0 --- /dev/null +++ b/rpms.lock.yaml @@ -0,0 +1,21 @@ +--- +lockfileVersion: 1 +lockfileVendor: redhat +arches: +- arch: ppc64le + packages: + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/ppc64le/baseos/os/Packages/u/unzip-6.0-59.el9.ppc64le.rpm + repoid: ubi-9-for-ppc64le-baseos-rpms + size: 190400 + checksum: sha256:08da7102308f1ad028360ccdf78d0de9c3ff16c9cdb2aab71d7182f600f933be + name: unzip + evr: 6.0-59.el9 + sourcerpm: unzip-6.0-59.el9.src.rpm + source: + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/ppc64le/baseos/source/SRPMS/Packages/u/unzip-6.0-59.el9.src.rpm + repoid: ubi-9-for-ppc64le-baseos-source-rpms + size: 1433595 + checksum: sha256:299d7451195ccb37d8eb90f1870e00eb5ff4c12716c933d4c1657949f0d6aaf8 + name: unzip + evr: 6.0-59.el9 + module_metadata: [] diff --git a/ubi.repo b/ubi.repo new file mode 100644 index 0000000000..984f297683 --- /dev/null +++ b/ubi.repo @@ -0,0 +1,62 @@ +[ubi-9-for-$basearch-baseos-rpms] +name = Red Hat Universal Base Image 9 (RPMs) - BaseOS +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/baseos/os +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[ubi-9-for-$basearch-baseos-debug-rpms] +name = Red Hat Universal Base Image 9 (Debug RPMs) - BaseOS +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/baseos/debug +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[ubi-9-for-$basearch-baseos-source-rpms] +name = Red Hat Universal Base Image 9 (Source RPMs) - BaseOS +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/baseos/source/SRPMS +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[ubi-9-for-$basearch-appstream-rpms] +name = Red Hat Universal Base Image 9 (RPMs) - AppStream +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/appstream/os +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[ubi-9-for-$basearch-appstream-debug-rpms] +name = Red Hat Universal Base Image 9 (Debug RPMs) - AppStream +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/appstream/debug +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[ubi-9-for-$basearch-appstream-source-rpms] +name = Red Hat Universal Base Image 9 (Source RPMs) - AppStream +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/appstream/source/SRPMS +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[codeready-builder-for-ubi-9-$basearch-rpms] +name = Red Hat Universal Base Image 9 (RPMs) - CodeReady Builder +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/codeready-builder/os +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[codeready-builder-for-ubi-9-$basearch-debug-rpms] +name = Red Hat Universal Base Image 9 (Debug RPMs) - CodeReady Builder +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/codeready-builder/debug +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1 + +[codeready-builder-for-ubi-9-$basearch-source-rpms] +name = Red Hat Universal Base Image 9 (Source RPMs) - CodeReady Builder +baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/$basearch/codeready-builder/source/SRPMS +enabled = 1 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +gpgcheck = 1