30 lines
1.5 KiB
Docker
30 lines
1.5 KiB
Docker
# llama-swap mit ROCm (LLMs) + whisper-server (Transkription) + sd-server (Bilder)
|
||
#
|
||
# Das offizielle unified-Image mit whisper-/sd-server gibt es für AMD nur als
|
||
# Vulkan-Build, und unter Vulkan ist die Prompt-Verarbeitung von llama.cpp auf
|
||
# der RX 6950 XT nur halb so schnell wie unter ROCm (siehe PLAN-multimodal.md).
|
||
# Deshalb: ROCm-Image als Basis, die beiden Server aus dem unified-Image dazu.
|
||
# Beide Basis-Images sind Ubuntu 24.04 mit identischen Mesa-/Vulkan-Paketen.
|
||
ARG LLAMA_SWAP_TAG
|
||
ARG UNIFIED_TAG
|
||
|
||
FROM ghcr.io/mostlygeek/llama-swap:${UNIFIED_TAG} AS unified
|
||
|
||
FROM ghcr.io/mostlygeek/llama-swap:${LLAMA_SWAP_TAG}
|
||
|
||
# Vulkan-Treiber (RADV) für sd-server; ffmpeg ist schon enthalten (whisper --convert)
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends mesa-vulkan-drivers libvulkan1 libgomp1 \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# sd-server ist statisch gegen ggml gelinkt
|
||
COPY --from=unified /usr/local/bin/sd-server /usr/local/bin/sd-server
|
||
|
||
# whisper-server bringt eigene ggml-Bibliotheken mit, die dieselben Namen tragen
|
||
# wie die von llama.cpp in /app – daher getrennt ablegen und per Wrapper laden
|
||
COPY --from=unified /usr/local/bin/whisper-server /opt/whisper/bin/whisper-server
|
||
COPY --from=unified /usr/local/lib/libwhisper.so* /usr/local/lib/libggml*.so* /opt/whisper/lib/
|
||
RUN printf '#!/bin/sh\nLD_LIBRARY_PATH=/opt/whisper/lib exec /opt/whisper/bin/whisper-server "$@"\n' \
|
||
> /usr/local/bin/whisper-server \
|
||
&& chmod 755 /usr/local/bin/whisper-server
|