diff --git a/llm/llama.cpp/generate_darwin_amd64.go b/llm/llama.cpp/generate_darwin_amd64.go index 7cbc36f5..804b29e1 100644 --- a/llm/llama.cpp/generate_darwin_amd64.go +++ b/llm/llama.cpp/generate_darwin_amd64.go @@ -14,6 +14,6 @@ package llm //go:generate git submodule update --force gguf //go:generate git -C gguf apply ../patches/0001-update-default-log-target.patch //go:generate git -C gguf apply ../patches/0001-metal-handle-ggml_scale-for-n-4-0-close-3754.patch -//go:generate cmake -S gguf -B gguf/build/cpu -DLLAMA_ACCELERATE=on -DLLAMA_K_QUANTS=on -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 +//go:generate cmake -S gguf -B gguf/build/cpu -DLLAMA_METAL=off -DLLAMA_ACCELERATE=on -DLLAMA_K_QUANTS=on -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DLLAMA_NATIVE=off -DLLAMA_AVX=on -DLLAMA_AVX2=off -DLLAMA_AVX512=off -DLLAMA_FMA=off -DLLAMA_F16C=off //go:generate cmake --build gguf/build/cpu --target server --config Release //go:generate mv gguf/build/cpu/bin/server gguf/build/cpu/bin/ollama-runner diff --git a/llm/llama.go b/llm/llama.go index d8859393..a7561f8d 100644 --- a/llm/llama.go +++ b/llm/llama.go @@ -71,9 +71,10 @@ func chooseRunners(workDir, runnerType string) []ModelRunner { // IMPORTANT: the order of the runners in the array is the priority order switch runtime.GOOS { case "darwin": - runners = []ModelRunner{ - {Path: path.Join(buildPath, "metal", "bin", "ollama-runner")}, - {Path: path.Join(buildPath, "cpu", "bin", "ollama-runner")}, + if runtime.GOARCH == "arm64" { + runners = []ModelRunner{{Path: path.Join(buildPath, "metal", "bin", "ollama-runner")}} + } else { + runners = []ModelRunner{{Path: path.Join(buildPath, "cpu", "bin", "ollama-runner")}} } case "linux": runners = []ModelRunner{ diff --git a/scripts/build_darwin.sh b/scripts/build_darwin.sh index 54aef9a4..c35a3d8d 100755 --- a/scripts/build_darwin.sh +++ b/scripts/build_darwin.sh @@ -10,6 +10,7 @@ mkdir -p dist for TARGETARCH in arm64 amd64; do GOOS=darwin GOARCH=$TARGETARCH go generate ./... GOOS=darwin GOARCH=$TARGETARCH go build -o dist/ollama-darwin-$TARGETARCH + rm -rf llm/llama.cpp/*/build done lipo -create -output dist/ollama dist/ollama-darwin-*