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 @@ - - - -