Compare commits
46 Commits
Author | SHA1 | Date |
---|---|---|
|
99bbc94348 | |
|
e85acc66a1 | |
|
bb893d5b78 | |
|
e396602c2f | |
|
943227cfd1 | |
|
3b5a11ebf0 | |
|
6c8eeeb731 | |
|
1c362731e7 | |
|
477c9bed82 | |
|
4b6652c24b | |
|
1e9c385485 | |
|
bbc031fdb5 | |
|
68d06a0d82 | |
|
5e388b6699 | |
|
d062690d6f | |
|
d1dae62ea2 | |
|
f1ad3e7936 | |
|
274ff0845b | |
|
8f4a9ccbd3 | |
|
3c9ad15235 | |
|
d2ce3fde6e | |
|
210fc3a954 | |
|
da3eaa659c | |
|
baf7d715b1 | |
|
5c57cf1190 | |
|
caf5c24803 | |
|
2526949467 | |
|
a103cd302a | |
|
416a402b82 | |
|
520ea22cb1 | |
|
8dc551eef0 | |
|
cb27373e11 | |
|
ad0b3ec9e5 | |
|
5b637db4e8 | |
|
bd7faa1033 | |
|
908751f1ee | |
|
4143020fdf | |
|
d51dbef760 | |
|
03df1e1d0c | |
|
20dc744c6e | |
|
3fae2edd7a | |
|
765690a014 | |
|
d86e3941a0 | |
|
1278ddd373 | |
|
8b24f9da20 | |
|
a4abefab3b |
|
@ -1,87 +0,0 @@
|
||||||
---
|
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
name: Build and publish the playground image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build image
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- containerfile: "./chat/base/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat"
|
|
||||||
archs: amd64, arm64
|
|
||||||
- containerfile: "./chat/vulkan/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: amd64
|
|
||||||
- containerfile: "./chat/vulkan/arm64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: arm64
|
|
||||||
- containerfile: "./chat/cuda/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-cuda"
|
|
||||||
archs: amd64
|
|
||||||
fail-fast: false
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install qemu dependency
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y qemu-user-static
|
|
||||||
|
|
||||||
- name: Build Playground Image
|
|
||||||
id: build-image
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
with:
|
|
||||||
image: ${{ matrix.build-image-name }}
|
|
||||||
tags: nightly ${{ github.sha }}
|
|
||||||
containerfiles: |
|
|
||||||
${{ matrix.containerfile }}
|
|
||||||
context: ./chat
|
|
||||||
oci: true
|
|
||||||
archs: ${{ matrix.archs }}
|
|
||||||
|
|
||||||
- name: Echo Outputs
|
|
||||||
run: |
|
|
||||||
echo "Image: ${{ steps.build-image.outputs.image }}"
|
|
||||||
echo "Tags: ${{ steps.build-image.outputs.tags }}"
|
|
||||||
echo "Tagged Image: ${{ steps.build-image.outputs.image-with-tag }}"
|
|
||||||
|
|
||||||
- name: Login to ghcr.io
|
|
||||||
uses: redhat-actions/podman-login@v1
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Push To ghcr.io
|
|
||||||
id: push-to-ghcr
|
|
||||||
uses: redhat-actions/push-to-registry@v2
|
|
||||||
with:
|
|
||||||
image: ${{ steps.build-image.outputs.image }}
|
|
||||||
tags: ${{ steps.build-image.outputs.tags }}
|
|
||||||
registry: ghcr.io/${{ github.repository_owner }}/podman-desktop-extension-ai-lab-playground-images
|
|
|
@ -1,68 +0,0 @@
|
||||||
---
|
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
name: Build the playground image
|
|
||||||
|
|
||||||
on: [pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build image
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- containerfile: "./chat/base/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat"
|
|
||||||
archs: amd64, arm64
|
|
||||||
- containerfile: "./chat/vulkan/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: amd64
|
|
||||||
- containerfile: "./chat/vulkan/arm64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: arm64
|
|
||||||
- containerfile: "./chat/cuda/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-cuda"
|
|
||||||
archs: amd64
|
|
||||||
fail-fast: false
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install qemu dependency
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y qemu-user-static
|
|
||||||
|
|
||||||
- name: Build Playground Image
|
|
||||||
id: build-image
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
with:
|
|
||||||
image: ${{ matrix.build-image-name }}
|
|
||||||
tags: ${{ github.sha }}
|
|
||||||
containerfiles: |
|
|
||||||
${{ matrix.containerfile }}
|
|
||||||
context: ./chat
|
|
||||||
oci: true
|
|
||||||
archs: ${{ matrix.archs }}
|
|
||||||
|
|
||||||
- name: Echo Outputs
|
|
||||||
run: |
|
|
||||||
echo "Image: ${{ steps.build-image.outputs.image }}"
|
|
||||||
echo "Tags: ${{ steps.build-image.outputs.tags }}"
|
|
||||||
echo "Tagged Image: ${{ steps.build-image.outputs.image-with-tag }}"
|
|
|
@ -1,127 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
name: release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: 'Version to release'
|
|
||||||
required: true
|
|
||||||
branch:
|
|
||||||
description: 'Branch to use for the release'
|
|
||||||
required: true
|
|
||||||
default: main
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
build_and_release:
|
|
||||||
name: Build and Release ${{ matrix.build-image-name }}
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- containerfile: "./chat/base/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat"
|
|
||||||
archs: amd64, arm64
|
|
||||||
- containerfile: "./chat/vulkan/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: amd64
|
|
||||||
- containerfile: "./chat/vulkan/arm64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-vulkan"
|
|
||||||
archs: arm64
|
|
||||||
- containerfile: "./chat/cuda/amd64/Containerfile"
|
|
||||||
build-image-name: "ai-lab-playground-chat-cuda"
|
|
||||||
archs: amd64
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{ github.event.inputs.branch }}
|
|
||||||
|
|
||||||
- name: Generate tag utilities
|
|
||||||
id: TAG_UTIL
|
|
||||||
run: |
|
|
||||||
TAG_PATTERN=${{ github.event.inputs.version }}
|
|
||||||
echo "githubTag=v$TAG_PATTERN" >> ${GITHUB_OUTPUT}
|
|
||||||
echo "imageVersion=$TAG_PATTERN" >> ${GITHUB_OUTPUT}
|
|
||||||
echo "imageVersionShort=${TAG_PATTERN%.*}" >> ${GITHUB_OUTPUT}
|
|
||||||
|
|
||||||
- name: tag
|
|
||||||
run: |
|
|
||||||
git config --local user.name ${{ github.actor }}
|
|
||||||
|
|
||||||
echo "Tagging with ${{ steps.TAG_UTIL.outputs.githubTag }}"
|
|
||||||
git tag ${{ steps.TAG_UTIL.outputs.githubTag }}
|
|
||||||
git push origin ${{ steps.TAG_UTIL.outputs.githubTag }}
|
|
||||||
|
|
||||||
- name: Create Release
|
|
||||||
id: create_release
|
|
||||||
uses: ncipollo/release-action@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
tag: ${{ steps.TAG_UTIL.outputs.githubTag }}
|
|
||||||
name: ${{ steps.TAG_UTIL.outputs.githubTag }}
|
|
||||||
draft: true
|
|
||||||
prerelease: false
|
|
||||||
|
|
||||||
- name: Install qemu dependency
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y qemu-user-static
|
|
||||||
|
|
||||||
- name: Build Playground Image
|
|
||||||
id: build-image
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
with:
|
|
||||||
image: ${{ matrix.build-image-name }}
|
|
||||||
tags: latest ${{ steps.TAG_UTIL.outputs.imageVersion }} ${{ steps.TAG_UTIL.outputs.imageVersionShort }}
|
|
||||||
labels: io.podman.ai-lab.version=${{ steps.TAG_UTIL.outputs.imageVersion }}
|
|
||||||
containerfiles: |
|
|
||||||
${{ matrix.containerfile }}
|
|
||||||
context: ./chat
|
|
||||||
oci: true
|
|
||||||
archs: ${{ matrix.archs }}
|
|
||||||
|
|
||||||
- name: Login to ghcr.io
|
|
||||||
uses: redhat-actions/podman-login@v1
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Push To ghcr.io
|
|
||||||
id: push-to-ghcr
|
|
||||||
uses: redhat-actions/push-to-registry@v2
|
|
||||||
with:
|
|
||||||
image: ${{ steps.build-image.outputs.image }}
|
|
||||||
tags: ${{ steps.build-image.outputs.tags }}
|
|
||||||
registry: ghcr.io/${{ github.repository_owner }}/podman-desktop-extension-ai-lab-playground-images
|
|
||||||
|
|
||||||
- name: id
|
|
||||||
run: echo the release id is ${{ steps.create_release.outputs.id}}
|
|
||||||
|
|
||||||
- name: Publish release
|
|
||||||
uses: StuYarrow/publish-release@v1.1.2
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
id: ${{ steps.create_release.outputs.id}}
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
llama-cpp-python
|
|
@ -1,28 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
FROM registry.access.redhat.com/ubi9-minimal:9.4-1227.1726694542
|
|
||||||
|
|
||||||
RUN microdnf install -y python3 python3-pip gcc g++ shadow-utils && microdnf clean all
|
|
||||||
RUN useradd -r -g root -m -d /home/default -s /bin/bash default
|
|
||||||
WORKDIR /home/default
|
|
||||||
COPY requirements.txt requirements.txt
|
|
||||||
RUN pip install --no-cache-dir --upgrade -r requirements.txt
|
|
||||||
USER default
|
|
||||||
COPY run.sh run.sh
|
|
||||||
EXPOSE 8000
|
|
||||||
ENTRYPOINT [ "sh", "run.sh" ]
|
|
|
@ -1,27 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
FROM quay.io/opendatahub/workbench-images:cuda-ubi9-python-3.9-20231206
|
|
||||||
USER root
|
|
||||||
RUN dnf install -y gcc-toolset-13-gcc gcc-toolset-13-gcc-c++
|
|
||||||
USER 1001
|
|
||||||
WORKDIR /locallm
|
|
||||||
COPY requirements.txt .
|
|
||||||
COPY run.sh .
|
|
||||||
ENV CMAKE_ARGS="-DGGML_CUDA=on -DLLAMA_AVX2=OFF -DLLAMA_FMA=OFF -DLLAMA_F16C=OFF"
|
|
||||||
ENV FORCE_CMAKE=1
|
|
||||||
RUN CC="/opt/rh/gcc-toolset-13/root/usr/bin/gcc" CXX="/opt/rh/gcc-toolset-13/root/usr/bin/g++" pip install --no-cache-dir -r ./requirements.txt
|
|
||||||
ENTRYPOINT [ "sh", "run.sh" ]
|
|
|
@ -1,2 +0,0 @@
|
||||||
llama-cpp-python[server]==0.3.1
|
|
||||||
pip==24.2
|
|
24
chat/run.sh
24
chat/run.sh
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
if [ ${MODEL_PATH} ]; then
|
|
||||||
python -m llama_cpp.server --model ${MODEL_PATH} --host ${HOST:=0.0.0.0} --port ${PORT:=8001} --n_gpu_layers ${GPU_LAYERS:=0} --clip_model_path ${CLIP_MODEL_PATH:=None} --chat_format ${MODEL_CHAT_FORMAT:="llama-2"}
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "This image should not be used outside of Podman Desktop AI Lab extension. Missing required MODEL_PATH environment variable."
|
|
||||||
exit 1
|
|
|
@ -1,54 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
# Stage 1: Build dependencies
|
|
||||||
FROM registry.access.redhat.com/ubi9/python-311:1-77.1726664316 AS builder
|
|
||||||
USER 0
|
|
||||||
RUN dnf install -y python3-dnf-plugin-versionlock && \
|
|
||||||
dnf install -y mesa-vulkan-drivers-23.3.3-1.el9.x86_64 && \
|
|
||||||
dnf versionlock mesa-vulkan-drivers-23.3.3-1.el9.x86_64 && \
|
|
||||||
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
|
|
||||||
dnf install -y git cmake ninja-build gcc gcc-c++ && \
|
|
||||||
dnf copr enable -y ligenix/enterprise-sandbox epel-9-x86_64 && \
|
|
||||||
dnf install -y vulkan-headers vulkan-tools vulkan-loader-devel && \
|
|
||||||
dnf copr enable -y ligenix/enterprise-buildtools epel-9-x86_64 && \
|
|
||||||
dnf copr enable -y jeffmaury/shaderc epel-9-x86_64 && \
|
|
||||||
dnf install -y glslc && \
|
|
||||||
dnf clean all
|
|
||||||
|
|
||||||
WORKDIR /locallm
|
|
||||||
COPY requirements.txt ./
|
|
||||||
RUN pip install --upgrade pip
|
|
||||||
ENV CMAKE_ARGS="-DGGML_VULKAN=on"
|
|
||||||
ENV FORCE_CMAKE=1
|
|
||||||
RUN pip install --target=/locallm --no-cache-dir --upgrade -r requirements.txt
|
|
||||||
|
|
||||||
# Stage 2: Create final image with minimal content
|
|
||||||
FROM registry.access.redhat.com/ubi9/python-311:1-77.1726664316
|
|
||||||
COPY --from=builder /locallm/ /locallm
|
|
||||||
COPY --from=builder /usr/bin/vkcube* /usr/bin/
|
|
||||||
COPY --from=builder /usr/bin/vulkaninfo /usr/bin/vulkaninfo
|
|
||||||
COPY --from=builder /usr/lib/ /usr/lib/
|
|
||||||
COPY --from=builder /usr/lib64/ /usr/lib64/
|
|
||||||
COPY --from=builder /usr/share/vulkan /usr/share/vulkan
|
|
||||||
COPY --from=builder /usr/include/vulkan /usr/include/vulkan
|
|
||||||
COPY --from=builder /etc/ /etc/
|
|
||||||
USER 1001
|
|
||||||
WORKDIR /locallm
|
|
||||||
COPY requirements.txt ./
|
|
||||||
COPY run.sh ./
|
|
||||||
ENTRYPOINT [ "sh", "run.sh" ]
|
|
|
@ -1,56 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
# Stage 1: Build dependencies
|
|
||||||
FROM registry.access.redhat.com/ubi9/python-311:1-77.1726664316 AS builder
|
|
||||||
USER 0
|
|
||||||
WORKDIR /locallm
|
|
||||||
RUN dnf install -y python3-dnf-plugin-versionlock && \
|
|
||||||
dnf install -y \
|
|
||||||
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
|
|
||||||
dnf copr enable -y slp/mesa-krunkit epel-9-aarch64 && \
|
|
||||||
dnf install -y mesa-vulkan-drivers-23.3.3-101.el9.aarch64 && \
|
|
||||||
dnf versionlock mesa-vulkan-drivers-23.3.3-101.el9.aarch64 && \
|
|
||||||
dnf install -y git cmake ninja-build gcc gcc-c++ vulkan-loader-devel vulkan-tools && \
|
|
||||||
dnf copr enable -y jeffmaury/shaderc epel-9-aarch64 && \
|
|
||||||
dnf install -y glslc && \
|
|
||||||
dnf clean all
|
|
||||||
COPY requirements.txt ./
|
|
||||||
RUN pip install --upgrade pip
|
|
||||||
ENV CMAKE_ARGS="-DGGML_VULKAN=on"
|
|
||||||
ENV FORCE_CMAKE=1
|
|
||||||
RUN pip install --target=/locallm --no-cache-dir --upgrade -r requirements.txt
|
|
||||||
|
|
||||||
# Stage 2: Create final image with minimal content
|
|
||||||
FROM registry.access.redhat.com/ubi9/python-311:1-77.1726664316
|
|
||||||
COPY --from=builder /locallm/ /locallm
|
|
||||||
COPY --from=builder /usr/bin/vkcube* /usr/bin/
|
|
||||||
COPY --from=builder /usr/bin/vulkaninfo /usr/bin/vulkaninfo
|
|
||||||
COPY --from=builder /usr/lib/ /usr/lib/
|
|
||||||
COPY --from=builder /usr/lib64/libdrm* /usr/lib64/
|
|
||||||
COPY --from=builder /usr/lib64/libvulkan* /usr/lib64/
|
|
||||||
COPY --from=builder /usr/lib64/libVkLayer* /usr/lib64/
|
|
||||||
COPY --from=builder /usr/lib64/libxshmfence* /usr/lib64/
|
|
||||||
COPY --from=builder /usr/lib64/libwayland* /usr/lib64/
|
|
||||||
COPY --from=builder /usr/lib64/llvm16 /usr/lib64/llvm16
|
|
||||||
COPY --from=builder /usr/share/vulkan /usr/share/vulkan
|
|
||||||
COPY --from=builder /usr/include/vulkan /usr/include/vulkan
|
|
||||||
COPY --from=builder /etc/ /etc/
|
|
||||||
USER 1001
|
|
||||||
WORKDIR /locallm
|
|
||||||
COPY run.sh ./
|
|
||||||
ENTRYPOINT [ "sh", "run.sh" ]
|
|
Loading…
Reference in New Issue