Skip to content

Commit 2791f20

Browse files
authored
Add Rosetta2 Binaries (SciSharp#755)
* Add Rosetta2 Binaries * More robust handling for rosetta file placement * Add rosetta2 to mkdir * Update LLamaSharp.Backend.Cpu.nuspec
1 parent bd704ee commit 2791f20

File tree

4 files changed

+34
-21
lines changed

4 files changed

+34
-21
lines changed

.github/workflows/compile.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ jobs:
278278
defines: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL_EMBED_LIBRARY=ON'
279279
- build: 'x64'
280280
defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF -DLLAMA_AVX=ON -DLLAMA_AVX2=ON'
281+
- build: 'x64-rosetta2'
282+
defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF -DLLAMA_AVX=OFF -DLLAMA_AVX2=OFF'
281283
runs-on: macos-latest
282284
steps:
283285
- uses: actions/checkout@v4
@@ -307,7 +309,7 @@ jobs:
307309
path: ./build/examples/llava/libllava_shared.dylib
308310
name: llava-bin-osx-${{ matrix.build }}.dylib
309311
- name: Upload Metal
310-
if: ${{ matrix.build != 'x64' }}
312+
if: ${{ matrix.build == 'arm64' }}
311313
uses: actions/upload-artifact@v4
312314
with:
313315
path: ./build/bin/ggml-metal.metal
@@ -333,7 +335,7 @@ jobs:
333335
- name: Rearrange Files
334336
run: |
335337
# Make all directories at once
336-
mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,cu11.7.1,cu12.1.0,clblast}
338+
mkdir --parents deps/{avx,avx2,avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu11.7.1,cu12.1.0,clblast}
337339
338340
cp artifacts/llama-bin-linux-noavx-x64.so/libllama.so deps/libllama.so
339341
cp artifacts/llama-bin-linux-avx-x64.so/libllama.so deps/avx/libllama.so
@@ -359,9 +361,13 @@ jobs:
359361
cp artifacts/llama-bin-osx-arm64.dylib/libllama.dylib deps/osx-arm64/libllama.dylib
360362
cp artifacts/llava-bin-osx-arm64.dylib/libllava_shared.dylib deps/osx-arm64/libllava_shared.dylib
361363
cp artifacts/ggml-metal.metal/ggml-metal.metal deps/osx-arm64/ggml-metal.metal
364+
362365
cp artifacts/llama-bin-osx-x64.dylib/libllama.dylib deps/osx-x64/libllama.dylib
363366
cp artifacts/llava-bin-osx-x64.dylib/libllava_shared.dylib deps/osx-x64/libllava_shared.dylib
364367
368+
cp artifacts/llama-bin-osx-x64-rosetta2.dylib/libllama.dylib deps/osx-x64-rosetta2/libllama.dylib
369+
cp artifacts/llava-bin-osx-x64-rosetta2.dylib/libllava_shared.dylib deps/osx-x64-rosetta2/libllava_shared.dylib
370+
365371
cp artifacts/llama-bin-win-cublas-cu11.7.1-x64.dll/llama.dll deps/cu11.7.1/llama.dll
366372
cp artifacts/llava-bin-win-cublas-cu11.7.1-x64.dll/llava_shared.dll deps/cu11.7.1/llava_shared.dll
367373

LLama/LLamaSharp.Runtime.targets

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
5959
<Link>runtimes/osx-arm64/native/libllama.dylib</Link>
6060
</None>
61+
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/libllava_shared.dylib">
62+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
63+
<Link>runtimes/osx-arm64/native/libllava_shared.dylib</Link>
64+
</None>
6165
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/ggml-metal.metal">
6266
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
6367
<Link>runtimes/osx-arm64/native/ggml-metal.metal</Link>
@@ -67,7 +71,20 @@
6771
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
6872
<Link>runtimes/osx-x64/native/libllama.dylib</Link>
6973
</None>
70-
74+
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64/libllava_shared.dylib">
75+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
76+
<Link>runtimes/osx-x64/native/libllava_shared.dylib</Link>
77+
</None>
78+
79+
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64-rosetta2/libllama.dylib">
80+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
81+
<Link>runtimes/osx-x64/native/rosetta2/libllama.dylib</Link>
82+
</None>
83+
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64-rosetta2/libllava_shared.dylib">
84+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
85+
<Link>runtimes/osx-x64/native/rosetta2/libllava_shared.dylib</Link>
86+
</None>
87+
7188
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/llava_shared.dll">
7289
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
7390
<Link>runtimes/win-x64/native/noavx/llava_shared.dll</Link>
@@ -92,7 +109,6 @@
92109
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
93110
<Link>runtimes/win-x64/native/cuda12/llava_shared.dll</Link>
94111
</None>
95-
96112

97113
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/libllava_shared.so">
98114
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -118,17 +134,5 @@
118134
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
119135
<Link>runtimes/linux-x64/native/cuda12/libllava_shared.so</Link>
120136
</None>
121-
122-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/libllava_shared.dylib">
123-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
124-
<Link>runtimes/osx-arm64/native/libllava_shared.dylib</Link>
125-
</None>
126-
127-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64/libllava_shared.dylib">
128-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
129-
<Link>runtimes/osx-x64/native/libllava_shared.dylib</Link>
130-
</None>
131-
132-
133137
</ItemGroup>
134138
</Project>

LLama/Native/Load/NativeLibraryWithMacOrFallback.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ public IEnumerable<string> Prepare(SystemInfo systemInfo, NativeLogConfig.LLamaL
4646
string relativePath;
4747
if (systemInfo.OSPlatform == OSPlatform.OSX)
4848
{
49-
relativePath = $"runtimes/{os}/native/{libPrefix}{_libraryName.GetLibraryName()}{fileExtension}";
49+
var rosettaStr = os == "osx-x64" && !System.Runtime.Intrinsics.X86.Avx.IsSupported ? "rosetta2/" : "";
50+
relativePath = $"runtimes/{os}/native/{rosettaStr}{libPrefix}{_libraryName.GetLibraryName()}{fileExtension}";
5051
}
5152
else
5253
{

LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,14 @@
2929
<file src="runtimes/deps/avx512/libllama.so" target="runtimes\linux-x64\native\avx512\libllama.so" />
3030

3131
<file src="runtimes/deps/osx-x64/libllama.dylib" target="runtimes\osx-x64\native\libllama.dylib" />
32+
<file src="runtimes/deps/osx-x64/libllava_shared.dylib" target="runtimes\osx-x64\native\libllava_shared.dylib" />
33+
34+
<file src="runtimes/deps/osx-x64-rosetta2/libllama.dylib" target="runtimes\osx-x64\native\rosetta2\libllama.dylib" />
35+
<file src="runtimes/deps/osx-x64-rosetta2/libllava_shared.dylib" target="runtimes\osx-x64\native\rosetta2\libllava_shared.dylib" />
36+
3237
<file src="runtimes/deps/osx-arm64/libllama.dylib" target="runtimes\osx-arm64\native\libllama.dylib" />
3338
<file src="runtimes/deps/osx-arm64/ggml-metal.metal" target="runtimes\osx-arm64\native\ggml-metal.metal" />
39+
<file src="runtimes/deps/osx-arm64/libllava_shared.dylib" target="runtimes\osx-arm64\native\libllava_shared.dylib" />
3440

3541
<file src="runtimes/deps/llava_shared.dll" target="runtimes\win-x64\native\llava_shared.dll" />
3642
<file src="runtimes/deps/avx/llava_shared.dll" target="runtimes\win-x64\native\avx\llava_shared.dll" />
@@ -41,10 +47,6 @@
4147
<file src="runtimes/deps/avx/libllava_shared.so" target="runtimes\linux-x64\native\avx\libllava_shared.so" />
4248
<file src="runtimes/deps/avx2/libllava_shared.so" target="runtimes\linux-x64\native\avx2\libllava_shared.so" />
4349
<file src="runtimes/deps/avx512/libllava_shared.so" target="runtimes\linux-x64\native\avx512\libllava_shared.so" />
44-
45-
<file src="runtimes/deps/osx-x64/libllava_shared.dylib" target="runtimes\osx-x64\native\libllava_shared.dylib" />
46-
<file src="runtimes/deps/osx-arm64/libllava_shared.dylib" target="runtimes\osx-arm64\native\libllava_shared.dylib" />
47-
4850
<file src="icon512.png" target="icon512.png" />
4951
</files>
5052
</package>

0 commit comments

Comments
 (0)