Skip to content

Commit 6979fe1

Browse files
committed
Add packaging step for llama.cpp
Signed-off-by: Ettore Di Giacinto <[email protected]>
1 parent 8e99317 commit 6979fe1

File tree

3 files changed

+50
-17
lines changed

3 files changed

+50
-17
lines changed

backend/Dockerfile.llama-cpp

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -195,22 +195,13 @@ if [ "${TARGETARCH}" = "arm64" ] || [ "${BUILD_TYPE}" = "hipblas" ]; then \
195195
fi
196196
EOT
197197

198+
199+
# Copy libraries using a script to handle architecture differences
200+
RUN make -C /LocalAI/backend/cpp/llama-cpp package
201+
202+
198203
FROM scratch
199204

200-
ARG BACKEND
201-
ENV BACKEND=${BACKEND}
202-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-avx ./
203-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-avx2 ./
204-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-avx512 ./
205-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-fallback ./
206-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-grpc ./
207-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/llama-cpp-rpc-server ./
208-
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/run.sh ./
209-
210-
# copy ld.so from the base image in lib/ld.so
211-
COPY --from=builder /lib64/ld-linux-x86-64.so.2 ./lib/ld.so
212-
COPY --from=builder /lib/x86_64-linux-gnu/libc.so.6 ./lib/libc.so.6
213-
COPY --from=builder /lib/x86_64-linux-gnu/libgcc_s.so.1 ./lib/libgcc_s.so.1
214-
COPY --from=builder /lib/x86_64-linux-gnu/libstdc++.so.6 ./lib/libstdc++.so.6
215-
COPY --from=builder /lib/x86_64-linux-gnu/libm.so.6 ./lib/libm.so.6
216-
COPY --from=builder /lib/x86_64-linux-gnu/libgomp.so.1 ./lib/libgomp.so.1
205+
206+
# Copy all available binaries (the build process only creates the appropriate ones for the target architecture)
207+
COPY --from=builder /LocalAI/backend/cpp/llama-cpp/package/. ./

backend/cpp/llama-cpp/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ rebuild:
138138
rm -rf grpc-server
139139
$(MAKE) grpc-server
140140

141+
package:
142+
bash package.sh
143+
141144
purge:
142145
rm -rf llama.cpp/build
143146
rm -rf llama.cpp/tools/grpc-server

backend/cpp/llama-cpp/package.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
# Script to copy the appropriate libraries based on architecture
4+
# This script is used in the final stage of the Dockerfile
5+
6+
set -e
7+
8+
CURDIR=$(dirname "$(realpath $0)")
9+
10+
# Create lib directory
11+
mkdir -p $CURDIR/package/lib
12+
13+
cp -rf $CURDIR/llama-cpp-* $CURDIR/package/
14+
15+
# Detect architecture and copy appropriate libraries
16+
if [ -f "/lib64/ld-linux-x86-64.so.2" ]; then
17+
# x86_64 architecture
18+
echo "Detected x86_64 architecture, copying x86_64 libraries..."
19+
cp /lib64/ld-linux-x86-64.so.2 $CURDIR/package/lib/ld.so
20+
cp /lib/x86_64-linux-gnu/libc.so.6 $CURDIR/package/lib/libc.so.6
21+
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1
22+
cp /lib/x86_64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6
23+
cp /lib/x86_64-linux-gnu/libm.so.6 $CURDIR/package/lib/libm.so.6
24+
cp /lib/x86_64-linux-gnu/libgomp.so.1 $CURDIR/package/lib/libgomp.so.1
25+
elif [ -f "/lib/ld-linux-aarch64.so.1" ]; then
26+
# ARM64 architecture
27+
echo "Detected ARM64 architecture, copying ARM64 libraries..."
28+
cp /lib/ld-linux-aarch64.so.1 $CURDIR/package/lib/ld.so
29+
cp /lib/aarch64-linux-gnu/libc.so.6 $CURDIR/package/lib/libc.so.6
30+
cp /lib/aarch64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1
31+
cp /lib/aarch64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6
32+
cp /lib/aarch64-linux-gnu/libm.so.6 $CURDIR/package/lib/libm.so.6
33+
cp /lib/aarch64-linux-gnu/libgomp.so.1 $CURDIR/package/lib/libgomp.so.1
34+
else
35+
echo "Error: Could not detect architecture"
36+
exit 1
37+
fi
38+
39+
echo "Packaging completed successfully"

0 commit comments

Comments
 (0)