Skip to content

Commit 6978eec

Browse files
authored
feat(whisper.cpp): gpu support (#5344)
* fix(whisper.cpp): gpu support Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Try to fix apple tests Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
1 parent 2fcfe54 commit 6978eec

File tree

2 files changed

+38
-28
lines changed

2 files changed

+38
-28
lines changed

.github/workflows/image-pr.yml

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jobs:
3333
# Pushing with all jobs in parallel
3434
# eats the bandwidth of all the nodes
3535
max-parallel: ${{ github.event_name != 'pull_request' && 4 || 8 }}
36+
fail-fast: false
3637
matrix:
3738
include:
3839
# This is basically covered by the AIO test
@@ -56,26 +57,35 @@ jobs:
5657
runs-on: 'arc-runner-set'
5758
base-image: "ubuntu:22.04"
5859
makeflags: "--jobs=3 --output-sync=target"
59-
# - build-type: 'hipblas'
60-
# platforms: 'linux/amd64'
61-
# tag-latest: 'false'
62-
# tag-suffix: '-hipblas'
63-
# ffmpeg: 'false'
64-
# image-type: 'extras'
65-
# base-image: "rocm/dev-ubuntu-22.04:6.1"
66-
# grpc-base-image: "ubuntu:22.04"
67-
# runs-on: 'arc-runner-set'
68-
# makeflags: "--jobs=3 --output-sync=target"
69-
# - build-type: 'sycl_f16'
70-
# platforms: 'linux/amd64'
71-
# tag-latest: 'false'
72-
# base-image: "quay.io/go-skynet/intel-oneapi-base:latest"
73-
# grpc-base-image: "ubuntu:22.04"
74-
# tag-suffix: 'sycl-f16-ffmpeg'
75-
# ffmpeg: 'true'
76-
# image-type: 'extras'
77-
# runs-on: 'arc-runner-set'
78-
# makeflags: "--jobs=3 --output-sync=target"
60+
- build-type: 'hipblas'
61+
platforms: 'linux/amd64'
62+
tag-latest: 'false'
63+
tag-suffix: '-hipblas'
64+
ffmpeg: 'false'
65+
image-type: 'extras'
66+
base-image: "rocm/dev-ubuntu-22.04:6.1"
67+
grpc-base-image: "ubuntu:22.04"
68+
runs-on: 'arc-runner-set'
69+
makeflags: "--jobs=3 --output-sync=target"
70+
- build-type: 'sycl_f16'
71+
platforms: 'linux/amd64'
72+
tag-latest: 'false'
73+
base-image: "quay.io/go-skynet/intel-oneapi-base:latest"
74+
grpc-base-image: "ubuntu:22.04"
75+
tag-suffix: 'sycl-f16-ffmpeg'
76+
ffmpeg: 'true'
77+
image-type: 'extras'
78+
runs-on: 'arc-runner-set'
79+
makeflags: "--jobs=3 --output-sync=target"
80+
- build-type: 'vulkan'
81+
platforms: 'linux/amd64'
82+
tag-latest: 'false'
83+
tag-suffix: '-vulkan-ffmpeg-core'
84+
ffmpeg: 'true'
85+
image-type: 'core'
86+
runs-on: 'ubuntu-latest'
87+
base-image: "ubuntu:22.04"
88+
makeflags: "--jobs=4 --output-sync=target"
7989
# core-image-build:
8090
# uses: ./.github/workflows/image_build.yml
8191
# with:

Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,11 @@ ifeq ($(OS),Darwin)
119119
WHISPER_CMAKE_ARGS+=-DGGML_METAL=OFF
120120
export GGML_NO_ACCELERATE=1
121121
export GGML_NO_METAL=1
122+
GO_LDFLAGS_WHISPER+=-lggml-blas
123+
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-blas
122124
endif
123125

124126
ifeq ($(BUILD_TYPE),metal)
125-
# -lcblas removed: it seems to always be listed as a duplicate flag.
126127
CGO_LDFLAGS += -framework Accelerate
127128
CGO_LDFLAGS_WHISPER+=-lggml-metal -lggml-blas
128129
CMAKE_ARGS+=-DGGML_METAL=ON
@@ -137,6 +138,9 @@ ifeq ($(OS),Darwin)
137138
WHISPER_CMAKE_ARGS+=-DWHISPER_BUILD_SERVER=OFF
138139
WHISPER_CMAKE_ARGS+=-DGGML_OPENMP=OFF
139140
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-metal/:$(WHISPER_DIR)/build/ggml/src/ggml-blas
141+
else
142+
CGO_LDFLAGS_WHISPER+=-lggml-blas
143+
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-blas
140144
endif
141145
else
142146
CGO_LDFLAGS_WHISPER+=-lgomp
@@ -184,8 +188,7 @@ ifeq ($(BUILD_TYPE),hipblas)
184188
GPU_TARGETS ?= gfx803,gfx900,gfx906,gfx908,gfx90a,gfx942,gfx1010,gfx1030,gfx1032,gfx1100,gfx1101,gfx1102
185189
AMDGPU_TARGETS ?= "$(GPU_TARGETS)"
186190
CMAKE_ARGS+=-DGGML_HIP=ON -DAMDGPU_TARGETS="$(AMDGPU_TARGETS)" -DGPU_TARGETS="$(GPU_TARGETS)"
187-
CGO_LDFLAGS += -O3 --rtlib=compiler-rt -unwindlib=libgcc -lhipblas -lrocblas --hip-link -L${ROCM_HOME}/lib/llvm/lib -lggml-hip
188-
export WHISPER_LIBRARY_PATH:=$(WHISPER_LIBRARY_PATH):$(WHISPER_DIR)/build/ggml/src/ggml-hip/
191+
CGO_LDFLAGS += -O3 --rtlib=compiler-rt -unwindlib=libgcc -lhipblas -lrocblas --hip-link -L${ROCM_HOME}/lib/llvm/lib
189192
endif
190193

191194
ifeq ($(BUILD_TYPE),metal)
@@ -787,11 +790,8 @@ ifneq ($(UPX),)
787790
endif
788791

789792
backend-assets/grpc/whisper: sources/whisper.cpp sources/whisper.cpp/build/src/libwhisper.a backend-assets/grpc
790-
CGO_LDFLAGS="$(CGO_LDFLAGS) $(CGO_LDFLAGS_WHISPER)" \
791-
C_INCLUDE_PATH="${WHISPER_INCLUDE_PATH}" \
792-
LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" \
793-
LD_LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" \
794-
$(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o backend-assets/grpc/whisper ./backend/go/transcribe/whisper
793+
CGO_LDFLAGS="$(CGO_LDFLAGS) $(CGO_LDFLAGS_WHISPER)" C_INCLUDE_PATH="${WHISPER_INCLUDE_PATH}" LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" LD_LIBRARY_PATH="${WHISPER_LIBRARY_PATH}" \
794+
$(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o backend-assets/grpc/whisper ./backend/go/transcribe/whisper
795795
ifneq ($(UPX),)
796796
$(UPX) backend-assets/grpc/whisper
797797
endif

0 commit comments

Comments
 (0)