xcode-select --installhttps://github.com/ggml-org/llama.cpp/releases
从Releases直接下载官方构建好的二进制包用就好了,下载 macOS Apple Silicon (arm64) 版本的,下载后解压到自己想放的位置
gaowanlu@gaowanludeMacBook-Pro llama-b9589 % ls
LICENSE libllama-cli-impl.dylib llama-debug-template-parser
libggml-base.0.14.0.dylib libllama-common.0.0.9589.dylib llama-export-lora
libggml-base.0.dylib libllama-common.0.dylib llama-fit-params
libggml-base.dylib libllama-common.dylib llama-gemma3-cli
libggml-blas.0.14.0.dylib libllama-completion-impl.dylib llama-gguf-split
libggml-blas.0.dylib libllama-fit-params-impl.dylib llama-imatrix
libggml-blas.dylib libllama-perplexity-impl.dylib llama-llava-cli
libggml-cpu.0.14.0.dylib libllama-quantize-impl.dylib llama-minicpmv-cli
libggml-cpu.0.dylib libllama-server-impl.dylib llama-mtmd-cli
libggml-cpu.dylib libllama.0.0.9589.dylib llama-mtmd-debug
libggml-metal.0.14.0.dylib libllama.0.dylib llama-perplexity
libggml-metal.0.dylib libllama.dylib llama-quantize
libggml-metal.dylib libmtmd.0.0.9589.dylib llama-qwen2vl-cli
libggml-rpc.0.14.0.dylib libmtmd.0.dylib llama-results
libggml-rpc.0.dylib libmtmd.dylib llama-server
libggml-rpc.dylib llama llama-template-analysis
libggml.0.14.0.dylib llama-batched-bench llama-tokenize
libggml.0.dylib llama-bench llama-tts
libggml.dylib llama-cli models
libllama-batched-bench-impl.dylib llama-completion rpc-server
libllama-bench-impl.dylib llama-cvector-generator run_server.sh创建一个 models 文件夹放我们的模型文件,创建一个 run_server.sh 脚本
gaowanlu@gaowanludeMacBook-Pro llama-b9589 % cd ./models
gaowanlu@gaowanludeMacBook-Pro models % ls -lh
total 53045152
-rw-r--r--@ 1 gaowanlu staff 25G Jun 11 00:59 Qwen3.6-35B-A3B-UD-Q5_K_XL.ggufgaowanlu@gaowanludeMacBook-Pro llama-b9589 % cat run_server.sh
./llama-server \
-m ./models/Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf \
-ngl 99 \
-c 131072 \
-t 16 \
--port 8080 \
--host 0.0.0.0 \
--api-key secret-m 指定要加载的GGUF格式模型文件,例如
Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf
表明这是一个Qwen系列的模型,35B总参数,激活3B,Q5_K_XL
表示量化格式。-ngl GPU层数,n-gpu-layers
指定将多少层神经网络层卸载到GPU上。99
意味着尽可能将所有层都加载到GPU以加速推理,如果模型总层数小于
99,则全部加载;若超过,则剩余层会在 CPU 上运行。-c 上下文窗口大小 context
size,指定模型能处理的最大token数量。16384 表示模型最多可以记住之前
16384 个 token,更大的值需要更多显存 内存。-t
线程数,指定用于推理的CPU线程数,通常建议设置为CPU物理核心数,以获得最佳性能。--port 端口号,执行服务器监听的端口,其他程序可以通过
http://IP:8080 访问该服务。--host 绑定地址,执行服务器监听的IP地址--api-key 自定义的 API Keychmod +x ./*
xattr ./llama-server
# 如果有输出 com.apple.quarantine 说明文件被隔离了
# 针对单个文件
xattr -d com.apple.quarantine ./llama-server
# 针对当前文件夹下所有内容
find . -type f -exec xattr -d com.apple.quarantine {} +先去llama官网,看看大家目前都在用什么, Qwen、Gemma、gpt 等等
https://llama.app
例如 https://huggingface.co/unsloth/Qwen3.6-35B-A3B-MTP-GGUF
在 Hugging Face 下载 guff 文件
Hugging Face 在中国下载太慢的话,可以考虑使用代理
https://hf-mirror.com/unsloth/Qwen3.6-35B-A3B-MTP-GGUF
运行起来基本上会吃掉20多GB的统一内存。
访问8080端口,就能使用llama.cpp提供的聊天面板
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "secret",
baseURL: "http://127.0.0.1:8080/v1",
});
async function main() {
const stream = client.chat.completions.stream({
model: "Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf",
messages: [
{
role: "user",
content: "请用中文介绍一下你自己。"
}
]
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
console.log("\n");
}
main();