diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml
index 4b4c129b0..5b84f6753 100644
--- a/.github/workflows/compile.yml
+++ b/.github/workflows/compile.yml
@@ -76,6 +76,72 @@ jobs:
name: llava-bin-linux-${{ matrix.build }}-x64.so
if-no-files-found: error
+ compile-musl:
+ name: Compile (musl)
+ strategy:
+ fail-fast: true
+ matrix:
+ include:
+ - build: 'noavx'
+ defines: '-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF'
+ - build: 'avx2'
+ defines: ''
+ - build: 'avx'
+ defines: '-DGGML_AVX2=OFF'
+ - build: 'avx512'
+ defines: '-DGGML_AVX512=ON'
+ runs-on: ubuntu-20.04
+ container:
+ image: alpine:latest
+ steps:
+ - name: Install dependencies
+ run: |
+ apk update && apk add --no-cache \
+ build-base \
+ cmake \
+ git \
+ linux-headers \
+ g++
+ - uses: actions/checkout@v4
+ with:
+ repository: ggerganov/llama.cpp
+ fetch-depth: 0
+ ref: '${{ github.event.inputs.llama_cpp_commit }}'
+ - name: Build
+ id: cmake_build_musl
+ run: |
+ mkdir build
+ cd build
+ cmake .. ${{ env.COMMON_DEFINE }} ${{ matrix.defines }}
+ cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
+ ls -R
+ - uses: actions/upload-artifact@v4
+ with:
+ path: ./build/bin/libllama.so
+ name: llama-bin-musl-${{ matrix.build }}-x64.so
+ if-no-files-found: error
+ - uses: actions/upload-artifact@v4
+ with:
+ path: ./build/bin/libggml.so
+ name: ggml-bin-musl-${{ matrix.build }}-x64.so
+ if-no-files-found: error
+ - uses: actions/upload-artifact@v4
+ with:
+ path: ./build/bin/libggml-base.so
+ name: ggml-base-bin-musl-${{ matrix.build }}-x64.so
+ if-no-files-found: error
+ - uses: actions/upload-artifact@v4
+ with:
+ path: ./build/bin/libggml-cpu.so
+ name: ggml-cpu-bin-musl-${{ matrix.build }}-x64.so
+ if-no-files-found: error
+ - name: Upload Llava
+ uses: actions/upload-artifact@v4
+ with:
+ path: ./build/bin/libllava_shared.so
+ name: llava-bin-musl-${{ matrix.build }}-x64.so
+ if-no-files-found: error
+
compile-windows:
name: Compile (Windows)
strategy:
@@ -519,6 +585,7 @@ jobs:
if: ${{ always() }}
needs: [
"compile-linux",
+ "compile-musl",
"compile-windows",
"compile-vulkan",
"compile-cublas",
@@ -534,7 +601,7 @@ jobs:
- name: Rearrange Files
run: |
# Make all directories at once
- mkdir --parents deps/{noavx,avx,avx2,avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan,android-arm64-v8a,android-x86,android-x86_64}
+ mkdir --parents deps/{noavx,avx,avx2,avx512,musl-noavx,musl-avx,musl-avx2,musl-avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.2.0,vulkan,android-arm64-v8a,android-x86,android-x86_64}
# Linux
cp artifacts/ggml-bin-linux-noavx-x64.so/libggml.so deps/noavx/libggml.so
@@ -561,6 +628,31 @@ jobs:
cp artifacts/llama-bin-linux-avx512-x64.so/libllama.so deps/avx512/libllama.so
cp artifacts/llava-bin-linux-avx512-x64.so/libllava_shared.so deps/avx512/libllava_shared.so
+ # Musl
+ cp artifacts/ggml-bin-musl-noavx-x64.so/libggml.so deps/musl-noavx/libggml.so
+ cp artifacts/ggml-base-bin-musl-noavx-x64.so/libggml-base.so deps/musl-noavx/libggml-base.so
+ cp artifacts/ggml-cpu-bin-musl-noavx-x64.so/libggml-cpu.so deps/musl-noavx/libggml-cpu.so
+ cp artifacts/llama-bin-musl-noavx-x64.so/libllama.so deps/musl-noavx/libllama.so
+ cp artifacts/llava-bin-musl-noavx-x64.so/libllava_shared.so deps/musl-noavx/libllava_shared.so
+
+ cp artifacts/ggml-bin-musl-avx-x64.so/libggml.so deps/musl-avx/libggml.so
+ cp artifacts/ggml-base-bin-musl-avx-x64.so/libggml-base.so deps/musl-avx/libggml-base.so
+ cp artifacts/ggml-cpu-bin-musl-avx-x64.so/libggml-cpu.so deps/musl-avx/libggml-cpu.so
+ cp artifacts/llama-bin-musl-avx-x64.so/libllama.so deps/musl-avx/libllama.so
+ cp artifacts/llava-bin-musl-avx-x64.so/libllava_shared.so deps/musl-avx/libllava_shared.so
+
+ cp artifacts/ggml-bin-musl-avx2-x64.so/libggml.so deps/musl-avx2/libggml.so
+ cp artifacts/ggml-base-bin-musl-avx2-x64.so/libggml-base.so deps/musl-avx2/libggml-base.so
+ cp artifacts/ggml-cpu-bin-musl-avx2-x64.so/libggml-cpu.so deps/musl-avx2/libggml-cpu.so
+ cp artifacts/llama-bin-musl-avx2-x64.so/libllama.so deps/musl-avx2/libllama.so
+ cp artifacts/llava-bin-musl-avx2-x64.so/libllava_shared.so deps/musl-avx2/libllava_shared.so
+
+ cp artifacts/ggml-bin-musl-avx512-x64.so/libggml.so deps/musl-avx512/libggml.so
+ cp artifacts/ggml-base-bin-musl-avx512-x64.so/libggml-base.so deps/musl-avx512/libggml-base.so
+ cp artifacts/ggml-cpu-bin-musl-avx512-x64.so/libggml-cpu.so deps/musl-avx512/libggml-cpu.so
+ cp artifacts/llama-bin-musl-avx512-x64.so/libllama.so deps/musl-avx512/libllama.so
+ cp artifacts/llava-bin-musl-avx512-x64.so/libllava_shared.so deps/musl-avx512/libllava_shared.so
+
# Windows
cp artifacts/ggml-bin-win-noavx-x64.dll/ggml.dll deps/noavx/ggml.dll
cp artifacts/ggml-base-bin-win-noavx-x64.dll/ggml-base.dll deps/noavx/ggml-base.dll
diff --git a/LLama/LLamaSharp.Runtime.targets b/LLama/LLamaSharp.Runtime.targets
index 76292aaf5..22a3e04e1 100644
--- a/LLama/LLamaSharp.Runtime.targets
+++ b/LLama/LLamaSharp.Runtime.targets
@@ -200,6 +200,7 @@
PreserveNewest
runtimes/linux-x64/native/avx512/libggml-cpu.so
+
PreserveNewest
@@ -253,6 +254,75 @@
PreserveNewest
runtimes/linux-x64/native/vulkan/libggml-vulkan.so
+
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/noavx/libllama.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/noavx/libggml.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/noavx/libggml-base.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/noavx/libggml-cpu.so
+
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx/libllama.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx/libggml.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx/libggml-base.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx/libggml-cpu.so
+
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx2/libllama.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx2/libggml.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx2/libggml-base.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx2/libggml-cpu.so
+
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx512/libllama.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx512/libggml.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx512/libggml-base.so
+
+
+ PreserveNewest
+ runtimes/linux-musl-x64/native/avx512/libggml-cpu.so
+
diff --git a/LLama/Native/Load/NativeLibraryUtils.cs b/LLama/Native/Load/NativeLibraryUtils.cs
index 13e68be4d..b0e8a792a 100644
--- a/LLama/Native/Load/NativeLibraryUtils.cs
+++ b/LLama/Native/Load/NativeLibraryUtils.cs
@@ -218,10 +218,22 @@ public static void GetPlatformPathParts(OSPlatform platform, out string os, out
if (platform == OSPlatform.Linux)
{
- os = "linux-x64";
- fileExtension = ".so";
- libPrefix = "lib";
- return;
+ if(RuntimeInformation.RuntimeIdentifier.ToLower().StartsWith("alpine"))
+ {
+ // alpine linux distro
+ os = "linux-musl-x64";
+ fileExtension = ".so";
+ libPrefix = "lib";
+ return;
+ }
+ else
+ {
+ // other linux distro
+ os = "linux-x64";
+ fileExtension = ".so";
+ libPrefix = "lib";
+ return;
+ }
}
if (platform == OSPlatform.OSX)
diff --git a/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec b/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
index debc99506..7c69534da 100644
--- a/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
+++ b/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
@@ -65,7 +65,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+