Skip to content

Commit d1db672

Browse files
authored
Merge branch 'ggml-org:master' into master
2 parents 2d482eb + fe7c8b2 commit d1db672

169 files changed

Lines changed: 11852 additions & 4245 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devops/openvino.Dockerfile

Lines changed: 63 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
ARG OPENVINO_VERSION_MAJOR=2026.0
2-
ARG OPENVINO_VERSION_FULL=2026.0.0.20965.c6d6a13a886
1+
ARG OPENVINO_VERSION_MAJOR=2026.2
2+
ARG OPENVINO_VERSION_FULL=2026.2.0.21903.52ddc073857
33
ARG UBUNTU_VERSION=24.04
44

55
# Intel GPU driver versions. https://github.com/intel/compute-runtime/releases
6-
ARG IGC_VERSION=v2.30.1
7-
ARG IGC_VERSION_FULL=2_2.30.1+20950
8-
ARG COMPUTE_RUNTIME_VERSION=26.09.37435.1
9-
ARG COMPUTE_RUNTIME_VERSION_FULL=26.09.37435.1-0
10-
ARG IGDGMM_VERSION=22.9.0
6+
ARG IGC_VERSION=v2.34.4
7+
ARG IGC_VERSION_FULL=2_2.34.4+21428
8+
ARG COMPUTE_RUNTIME_VERSION=26.18.38308.1
9+
ARG COMPUTE_RUNTIME_VERSION_FULL=26.18.38308.1-0
10+
ARG IGDGMM_VERSION=22.10.0
1111

1212
# Intel NPU driver versions. https://github.com/intel/linux-npu-driver/releases
13-
ARG NPU_DRIVER_VERSION=v1.32.0
14-
ARG NPU_DRIVER_FULL=v1.32.0.20260402-23905121947
13+
ARG NPU_DRIVER_VERSION=v1.33.0
14+
ARG NPU_DRIVER_FULL=v1.33.0.20260529-26625960453
1515
ARG LIBZE1_VERSION=1.27.0-1~24.04~ppa2
1616

1717
# Optional proxy build arguments
@@ -46,13 +46,18 @@ RUN apt-get update && \
4646
intel-opencl-icd && \
4747
rm -rf /var/lib/apt/lists/*
4848

49-
# Install OpenVINO for Ubuntu 24.04
49+
# OpenVINO toolkit and GPU/NPU drivers are cached via BuildKit cache mounts to avoid re-downloading on rebuilds.
50+
# Install OpenVINO for Ubuntu 24.04.
5051
ARG OPENVINO_VERSION_MAJOR
5152
ARG OPENVINO_VERSION_FULL
52-
RUN mkdir -p /opt/intel && \
53-
wget https://storage.openvinotoolkit.org/repositories/openvino/packages/${OPENVINO_VERSION_MAJOR}/linux/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz && \
54-
tar -xf openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz && \
55-
mv openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64 /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} && \
53+
RUN --mount=type=cache,target=/var/cache/openvino,sharing=locked \
54+
mkdir -p /opt/intel && \
55+
TGZ=/var/cache/openvino/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz && \
56+
if [ ! -f "$TGZ" ]; then \
57+
wget -O "$TGZ" https://storage.openvinotoolkit.org/repositories/openvino/packages/${OPENVINO_VERSION_MAJOR}/linux/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz; \
58+
fi && \
59+
tar -xf "$TGZ" -C /opt/intel/ && \
60+
mv /opt/intel/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64 /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} && \
5661
cd /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} && \
5762
echo "Y" | ./install_dependencies/install_openvino_dependencies.sh && \
5863
cd - && \
@@ -68,14 +73,14 @@ COPY . .
6873
RUN bash -c "source ${OpenVINO_DIR}/setupvars.sh && \
6974
cmake -B build/ReleaseOV -G Ninja \
7075
-DCMAKE_BUILD_TYPE=Release \
76+
-DLLAMA_BUILD_TESTS=OFF \
7177
-DGGML_OPENVINO=ON && \
72-
cmake --build build/ReleaseOV -j$(nproc)"
78+
cmake --build build/ReleaseOV --parallel "
7379

74-
# Copy all necessary libraries
80+
# Copy all necessary libraries (build outputs + OpenVINO runtime libs)
7581
RUN mkdir -p /app/lib && \
76-
find build/ReleaseOV -name '*.so*' -exec cp {} /app/lib \; && \
77-
find ${OpenVINO_DIR}/runtime/lib/intel64 -name '*.so*' -exec cp -P {} /app/lib \; 2>/dev/null || \
78-
find ${OpenVINO_DIR}/lib/intel64 -name '*.so*' -exec cp -P {} /app/lib \;
82+
find build/ReleaseOV -name '*.so*' -exec cp -P {} /app/lib \; && \
83+
find "${OpenVINO_DIR}/runtime/lib/intel64" -name '*.so*' -exec cp -P {} /app/lib \;
7984

8085
# Create runtime directories and copy binaries
8186
RUN mkdir -p /app/full \
@@ -120,33 +125,41 @@ ARG IGC_VERSION_FULL
120125
ARG COMPUTE_RUNTIME_VERSION
121126
ARG COMPUTE_RUNTIME_VERSION_FULL
122127
ARG IGDGMM_VERSION
123-
RUN mkdir /tmp/neo/ && cd /tmp/neo/ \
124-
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-core-${IGC_VERSION_FULL}_amd64.deb \
125-
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-opencl-${IGC_VERSION_FULL}_amd64.deb \
126-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-ocloc-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
127-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-ocloc_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
128-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-opencl-icd-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
129-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-opencl-icd_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
130-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libigdgmm12_${IGDGMM_VERSION}_amd64.deb \
131-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libze-intel-gpu1-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
132-
&& wget https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libze-intel-gpu1_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
133-
&& dpkg --install *.deb \
134-
&& rm -rf /tmp/neo/
128+
RUN --mount=type=cache,target=/var/cache/intel-gpu,sharing=locked \
129+
set -eux; \
130+
cd /var/cache/intel-gpu; \
131+
for url in \
132+
https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-core-${IGC_VERSION_FULL}_amd64.deb \
133+
https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-opencl-${IGC_VERSION_FULL}_amd64.deb \
134+
https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-ocloc_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
135+
https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-opencl-icd_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
136+
https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libigdgmm12_${IGDGMM_VERSION}_amd64.deb \
137+
https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libze-intel-gpu1_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb ; do \
138+
f=$(basename "$url"); \
139+
[ -f "$f" ] || wget -q -O "$f" "$url"; \
140+
done; \
141+
apt-get update; \
142+
apt-get install -y --no-install-recommends ./*.deb; \
143+
rm -rf /var/lib/apt/lists/*
135144

136145
# Install NPU drivers
137146
ARG NPU_DRIVER_VERSION
138147
ARG NPU_DRIVER_FULL
139148
ARG LIBZE1_VERSION
140-
RUN mkdir /tmp/npu/ && cd /tmp/npu/ \
141-
&& wget https://github.com/intel/linux-npu-driver/releases/download/${NPU_DRIVER_VERSION}/linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz \
142-
&& tar -xf linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz \
143-
&& dpkg --install *.deb \
144-
&& rm -rf /tmp/npu/
145-
146-
RUN cd /tmp \
147-
&& wget https://snapshot.ppa.launchpadcontent.net/kobuk-team/intel-graphics/ubuntu/20260324T100000Z/pool/main/l/level-zero-loader/libze1_${LIBZE1_VERSION}_amd64.deb \
148-
&& dpkg --install libze1_${LIBZE1_VERSION}_amd64.deb \
149-
&& rm libze1_${LIBZE1_VERSION}_amd64.deb
149+
RUN --mount=type=cache,target=/var/cache/intel-npu,sharing=locked \
150+
set -eux; \
151+
TGZ=/var/cache/intel-npu/linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz; \
152+
if [ ! -f "$TGZ" ]; then \
153+
wget -q -O "$TGZ" https://github.com/intel/linux-npu-driver/releases/download/${NPU_DRIVER_VERSION}/linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz; \
154+
fi; \
155+
DEB=/var/cache/intel-npu/libze1_${LIBZE1_VERSION}_amd64.deb; \
156+
if [ ! -f "$DEB" ]; then \
157+
wget -q -O "$DEB" https://snapshot.ppa.launchpadcontent.net/kobuk-team/intel-graphics/ubuntu/20260324T100000Z/pool/main/l/level-zero-loader/libze1_${LIBZE1_VERSION}_amd64.deb; \
158+
fi; \
159+
mkdir /tmp/npu/ && cd /tmp/npu/ && tar -xf "$TGZ" && cp "$DEB" .; \
160+
apt-get update; \
161+
apt-get install -y --no-install-recommends ./*.deb; \
162+
rm -rf /tmp/npu/ /var/lib/apt/lists/*
150163

151164
COPY --from=build /app/lib/ /app/
152165

@@ -166,22 +179,26 @@ RUN apt-get update && \
166179
python3 \
167180
python3-venv \
168181
python3-pip && \
169-
python3 -m venv /ov-venv && \
170-
/ov-venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel && \
171-
/ov-venv/bin/pip install --no-cache-dir -r requirements.txt && \
182+
python3 -m venv /openvino-venv && \
183+
/openvino-venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel && \
184+
/openvino-venv/bin/pip install --no-cache-dir -r requirements.txt && \
172185
apt-get autoremove -y && \
173186
apt-get clean && \
174187
rm -rf /tmp/* /var/tmp/* && \
175188
find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete && \
176189
find /var/cache -type f -delete
177190

178-
ENTRYPOINT ["/bin/bash", "-c", "source /ov-venv/bin/activate && exec /app/tools.sh \"$@\"", "--"]
191+
# Activate the venv
192+
ENV VIRTUAL_ENV=/openvino-venv \
193+
PATH=/openvino-venv/bin:$PATH
194+
195+
ENTRYPOINT ["/app/tools.sh"]
179196

180197

181198
### Light, CLI only
182199
FROM base AS light
183200

184-
COPY --from=build /app/full/llama-cli /app/
201+
COPY --from=build /app/full/llama-cli /app/full/llama-completion /app/
185202

186203
WORKDIR /app
187204

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: "Windows - Setup OpenVINO Toolkit"
2+
description: "Setup OpenVINO Toolkit for Windows"
3+
inputs:
4+
path:
5+
description: "Installation path"
6+
required: true
7+
version_major:
8+
description: "OpenVINO major version (e.g., 2026.2)"
9+
required: true
10+
version_full:
11+
description: "OpenVINO full version"
12+
required: true
13+
14+
runs:
15+
using: "composite"
16+
steps:
17+
- name: Download and extract OpenVINO Runtime
18+
shell: powershell
19+
run: |
20+
$url = "https://storage.openvinotoolkit.org/repositories/openvino/packages/${{ inputs.version_major }}/windows/openvino_toolkit_windows_${{ inputs.version_full }}_x86_64.zip"
21+
$out = "openvino.zip"
22+
Invoke-WebRequest -Uri $url -OutFile $out
23+
Expand-Archive -Path $out -DestinationPath ${{ inputs.path }} -Force
24+
Remove-Item $out

.github/workflows/build-cache.yml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ jobs:
6868

6969
env:
7070
# Sync versions in build.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile
71-
OPENVINO_VERSION_MAJOR: "2026.0"
72-
OPENVINO_VERSION_FULL: "2026.0.0.20965.c6d6a13a886"
71+
OPENVINO_VERSION_MAJOR: "2026.2"
72+
OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857"
7373

7474
steps:
7575
- name: Clone
@@ -91,6 +91,34 @@ jobs:
9191
version_major: ${{ env.OPENVINO_VERSION_MAJOR }}
9292
version_full: ${{ env.OPENVINO_VERSION_FULL }}
9393

94+
windows-2022-openvino-cache:
95+
runs-on: windows-2022
96+
97+
env:
98+
# Sync versions in build.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile
99+
OPENVINO_VERSION_MAJOR: "2026.2"
100+
OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857"
101+
102+
steps:
103+
- name: Clone
104+
id: checkout
105+
uses: actions/checkout@v6
106+
107+
- name: Setup Cache
108+
uses: actions/cache@v5
109+
id: cache-openvino
110+
with:
111+
path: ./openvino_toolkit
112+
key: cache-gha-openvino-toolkit-v${{ env.OPENVINO_VERSION_FULL }}-${{ runner.os }}
113+
114+
- name: Setup OpenVINO Toolkit
115+
if: steps.cache-openvino.outputs.cache-hit != 'true'
116+
uses: ./.github/actions/windows-setup-openvino
117+
with:
118+
path: ./openvino_toolkit
119+
version_major: ${{ env.OPENVINO_VERSION_MAJOR }}
120+
version_full: ${{ env.OPENVINO_VERSION_FULL }}
121+
94122
windows-2022-rocm-cache:
95123
runs-on: windows-2022
96124

.github/workflows/build-openvino.yml

Lines changed: 81 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,10 @@ jobs:
3737
ubuntu-24-openvino:
3838
runs-on: [self-hosted, Linux, Intel, OpenVINO]
3939

40-
concurrency:
41-
group: openvino-gpu-${{ github.head_ref || github.ref }}
42-
cancel-in-progress: false
43-
4440
env:
4541
# Sync versions in build-openvino.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile
46-
OPENVINO_VERSION_MAJOR: "2026.0"
47-
OPENVINO_VERSION_FULL: "2026.0.0.20965.c6d6a13a886"
42+
OPENVINO_VERSION_MAJOR: "2026.2"
43+
OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857"
4844

4945
steps:
5046
- name: Clone
@@ -78,7 +74,7 @@ jobs:
7874
cmake -B build/ReleaseOV -G Ninja \
7975
-DCMAKE_BUILD_TYPE=Release \
8076
-DGGML_OPENVINO=ON
81-
time cmake --build build/ReleaseOV --config Release -j $(nproc)
77+
time cmake --build build/ReleaseOV --config Release --parallel
8278
8379
- name: Test (CPU)
8480
id: cmake_test_cpu
@@ -93,4 +89,81 @@ jobs:
9389
run: |
9490
cd ${{ github.workspace }}
9591
export GGML_OPENVINO_DEVICE=GPU
96-
ctest --test-dir build/ReleaseOV -L main -E "test-llama-archs" --verbose --timeout 2000
92+
ctest --test-dir build/ReleaseOV -L main -E "test-llama-archs" --verbose --timeout 3000
93+
94+
openvino-windows-2022:
95+
runs-on: windows-2022
96+
97+
env:
98+
# Sync versions in build-openvino.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile
99+
OPENVINO_VERSION_MAJOR: "2026.2"
100+
OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857"
101+
102+
steps:
103+
- name: Clone
104+
id: checkout
105+
uses: actions/checkout@v6
106+
107+
- name: ccache
108+
uses: ggml-org/ccache-action@v1.2.21
109+
with:
110+
key: openvino-windows-2022
111+
variant: ccache
112+
evict-old-files: 1d
113+
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
114+
115+
- name: Setup Cache
116+
uses: actions/cache@v5
117+
id: cache-openvino
118+
with:
119+
path: ./openvino_toolkit
120+
key: cache-gha-openvino-toolkit-v${{ env.OPENVINO_VERSION_FULL }}-${{ runner.os }}
121+
122+
- name: Setup OpenVINO Toolkit
123+
if: steps.cache-openvino.outputs.cache-hit != 'true'
124+
uses: ./.github/actions/windows-setup-openvino
125+
with:
126+
path: ./openvino_toolkit
127+
version_major: ${{ env.OPENVINO_VERSION_MAJOR }}
128+
version_full: ${{ env.OPENVINO_VERSION_FULL }}
129+
130+
- name: Install OpenCL using vcpkg
131+
shell: powershell
132+
run: |
133+
git clone https://github.com/microsoft/vcpkg C:\vcpkg
134+
C:\vcpkg\bootstrap-vcpkg.bat
135+
C:\vcpkg\vcpkg install opencl
136+
137+
- name: Build
138+
id: cmake_build
139+
shell: cmd
140+
run: |
141+
REM Find extracted OpenVINO folder dynamically
142+
for /d %%i in (openvino_toolkit\*) do set OPENVINO_ROOT=%%i
143+
144+
if not exist "%OPENVINO_ROOT%\runtime\cmake\OpenVINOConfig.cmake" (
145+
echo ERROR: OpenVINOConfig.cmake not found
146+
exit /b 1
147+
)
148+
149+
call "%OPENVINO_ROOT%\setupvars.bat"
150+
151+
cmake -B build\ReleaseOV -G "Visual Studio 17 2022" ^
152+
-A x64 ^
153+
-DCMAKE_BUILD_TYPE=Release ^
154+
-DGGML_OPENVINO=ON ^
155+
-DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake
156+
157+
cmake --build build\ReleaseOV --config Release -- /m
158+
159+
- name: Test (CPU)
160+
id: cmake_test_cpu
161+
shell: cmd
162+
# TODO: fix and re-enable the `test-llama-archs` test below
163+
run: |
164+
REM Find extracted OpenVINO folder dynamically
165+
for /d %%i in (openvino_toolkit\*) do set OPENVINO_ROOT=%%i
166+
call "%OPENVINO_ROOT%\setupvars.bat"
167+
168+
cd build
169+
ctest --test-dir ReleaseOV -L main -E "test-llama-archs" -C Release --verbose --timeout 3000

.github/workflows/build-self-hosted.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,10 @@ jobs:
264264
gpu-openvino-low-perf:
265265
runs-on: [self-hosted, Linux, Intel, OpenVINO]
266266

267-
concurrency:
268-
group: openvino-gpu-${{ github.head_ref || github.ref }}
269-
cancel-in-progress: false
270-
271267
env:
272268
# Sync versions in build.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile
273-
OPENVINO_VERSION_MAJOR: "2026.0"
274-
OPENVINO_VERSION_FULL: "2026.0.0.20965.c6d6a13a886"
269+
OPENVINO_VERSION_MAJOR: "2026.2"
270+
OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857"
275271

276272
steps:
277273
- name: Clone

0 commit comments

Comments
 (0)