diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml
index faf796c82..6cb80b31b 100644
--- a/.github/workflows/compile.yml
+++ b/.github/workflows/compile.yml
@@ -278,6 +278,8 @@ jobs:
defines: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL_EMBED_LIBRARY=ON'
- build: 'x64'
defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF -DLLAMA_AVX=ON -DLLAMA_AVX2=ON'
+ - build: 'x64-rosetta2'
+ defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF -DLLAMA_AVX=OFF -DLLAMA_AVX2=OFF'
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
@@ -307,7 +309,7 @@ jobs:
path: ./build/examples/llava/libllava_shared.dylib
name: llava-bin-osx-${{ matrix.build }}.dylib
- name: Upload Metal
- if: ${{ matrix.build != 'x64' }}
+ if: ${{ matrix.build == 'arm64' }}
uses: actions/upload-artifact@v4
with:
path: ./build/bin/ggml-metal.metal
@@ -333,7 +335,7 @@ jobs:
- name: Rearrange Files
run: |
# Make all directories at once
- mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,cu11.7.1,cu12.1.0,clblast}
+ mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.1.0,clblast}
cp artifacts/llama-bin-linux-noavx-x64.so/libllama.so deps/libllama.so
cp artifacts/llama-bin-linux-avx-x64.so/libllama.so deps/avx/libllama.so
@@ -364,9 +366,13 @@ jobs:
cp artifacts/llama-bin-osx-arm64.dylib/libllama.dylib deps/osx-arm64/libllama.dylib
cp artifacts/llava-bin-osx-arm64.dylib/libllava_shared.dylib deps/osx-arm64/libllava_shared.dylib
cp artifacts/ggml-metal.metal/ggml-metal.metal deps/osx-arm64/ggml-metal.metal
+
cp artifacts/llama-bin-osx-x64.dylib/libllama.dylib deps/osx-x64/libllama.dylib
cp artifacts/llava-bin-osx-x64.dylib/libllava_shared.dylib deps/osx-x64/libllava_shared.dylib
+ cp artifacts/llama-bin-osx-x64-rosetta2.dylib/libllama.dylib deps/osx-x64-rosetta2/libllama.dylib
+ cp artifacts/llava-bin-osx-x64-rosetta2.dylib/libllava_shared.dylib deps/osx-x64-rosetta2/libllava_shared.dylib
+
cp artifacts/llama-bin-win-cublas-cu11.7.1-x64.dll/llama.dll deps/cu11.7.1/llama.dll
cp artifacts/llava-bin-win-cublas-cu11.7.1-x64.dll/llava_shared.dll deps/cu11.7.1/llava_shared.dll
diff --git a/LLama/LLamaSharp.Runtime.targets b/LLama/LLamaSharp.Runtime.targets
index fa7a018c1..3ebf4acf3 100644
--- a/LLama/LLamaSharp.Runtime.targets
+++ b/LLama/LLamaSharp.Runtime.targets
@@ -58,6 +58,10 @@
PreserveNewest
runtimes/osx-arm64/native/libllama.dylib
+
+ PreserveNewest
+ runtimes/osx-arm64/native/libllava_shared.dylib
+
PreserveNewest
runtimes/osx-arm64/native/ggml-metal.metal
@@ -67,7 +71,20 @@
PreserveNewest
runtimes/osx-x64/native/libllama.dylib
-
+
+ PreserveNewest
+ runtimes/osx-x64/native/libllava_shared.dylib
+
+
+
+ PreserveNewest
+ runtimes/osx-x64/native/rosetta2/libllama.dylib
+
+
+ PreserveNewest
+ runtimes/osx-x64/native/rosetta2/libllava_shared.dylib
+
+
PreserveNewest
runtimes/win-x64/native/noavx/llava_shared.dll
@@ -92,7 +109,6 @@
PreserveNewest
runtimes/win-x64/native/cuda12/llava_shared.dll
-
PreserveNewest
@@ -118,17 +134,5 @@
PreserveNewest
runtimes/linux-x64/native/cuda12/libllava_shared.so
-
-
- PreserveNewest
- runtimes/osx-arm64/native/libllava_shared.dylib
-
-
-
- PreserveNewest
- runtimes/osx-x64/native/libllava_shared.dylib
-
-
-
\ No newline at end of file
diff --git a/LLama/Native/Load/NativeLibraryWithMacOrFallback.cs b/LLama/Native/Load/NativeLibraryWithMacOrFallback.cs
index 5df339307..4bde4dae1 100644
--- a/LLama/Native/Load/NativeLibraryWithMacOrFallback.cs
+++ b/LLama/Native/Load/NativeLibraryWithMacOrFallback.cs
@@ -46,7 +46,8 @@ public IEnumerable Prepare(SystemInfo systemInfo, NativeLogConfig.LLamaL
string relativePath;
if (systemInfo.OSPlatform == OSPlatform.OSX)
{
- relativePath = $"runtimes/{os}/native/{libPrefix}{_libraryName.GetLibraryName()}{fileExtension}";
+ var rosettaStr = os == "osx-x64" && !System.Runtime.Intrinsics.X86.Avx.IsSupported ? "rosetta2/" : "";
+ relativePath = $"runtimes/{os}/native/{rosettaStr}{libPrefix}{_libraryName.GetLibraryName()}{fileExtension}";
}
else
{
diff --git a/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec b/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
index 5c439e14b..95a4d3e20 100644
--- a/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
+++ b/LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec
@@ -29,8 +29,14 @@
+
+
+
+
+
+
@@ -41,10 +47,6 @@
-
-
-
-