llama-cpp
作者: firecrawl
在CPU、Apple Silicon及消費級GPU上執行LLM推論,無需NVIDIA硬體。適用於邊緣部署、M1/M2/M3 Mac、AMD/Intel GPU,或當CUDA不可用時…
npx skills add https://github.com/firecrawl/ai-research-skills --skill llama-cppllama.cpp
Pure C/C++ LLM inference with minimal dependencies, optimized for CPUs and non-NVIDIA hardware.
When to use llama.cpp
Use llama.cpp when:
- Running on CPU-only machines
- Deploying on Apple Silicon (M1/M2/M3/M4)
- Using AMD or Intel GPUs (no CUDA)
- Edge deployment (Raspberry Pi, embedded systems)
- Need simple deployment without Docker/Python
Use TensorRT-LLM instead when:
- Have NVIDIA GPUs (A100/H100)
- Need maximum throughput (100K+ tok/s)
- Running in datacenter with CUDA
Use vLLM instead when:
- Have NVIDIA GPUs
- Need Python-first API
- Want PagedAttention
Quick start
Installation
# macOS/Linux
brew install llama.cpp
# Or build from source
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
# With Metal (Apple Silicon)
make LLAMA_METAL=1
# With CUDA (NVIDIA)
make LLAMA_CUDA=1
# With ROCm (AMD)
make LLAMA_HIP=1
Download model
# Download from HuggingFace (GGUF format)
huggingface-cli download \
TheBloke/Llama-2-7B-Chat-GGUF \
llama-2-7b-chat.Q4_K_M.gguf \
--local-dir models/
# Or convert from HuggingFace
python convert_hf_to_gguf.py models/llama-2-7b-chat/
Run inference
# Simple chat
./llama-cli \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
-p "Explain quantum computing" \
-n 256 # Max tokens
# Interactive chat
./llama-cli \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
--interactive
Server mode
# Start OpenAI-compatible server
./llama-server \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
-ngl 32 # Offload 32 layers to GPU
# Client request
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-2-7b-chat",
"messages": [{"role": "user", "content": "Hello!"}],
"temperature": 0.7,
"max_tokens": 100
}'
Quantization formats
GGUF format overview
| Format | Bits | Size (7B) | Speed | Quality | Use Case |
|---|---|---|---|---|---|
| Q4_K_M | 4.5 | 4.1 GB | Fast | Good | Recommended default |
| Q4_K_S | 4.3 | 3.9 GB | Faster | Lower | Speed critical |
| Q5_K_M | 5.5 | 4.8 GB | Medium | Better | Quality critical |
| Q6_K | 6.5 | 5.5 GB | Slower | Best | Maximum quality |
| Q8_0 | 8.0 | 7.0 GB | Slow | Excellent | Minimal degradation |
| Q2_K | 2.5 | 2.7 GB | Fastest | Poor | Testing only |
Choosing quantization
# General use (balanced)
Q4_K_M # 4-bit, medium quality
# Maximum speed (more degradation)
Q2_K or Q3_K_M
# Maximum quality (slower)
Q6_K or Q8_0
# Very large models (70B, 405B)
Q3_K_M or Q4_K_S # Lower bits to fit in memory
Hardware acceleration
Apple Silicon (Metal)
# Build with Metal
make LLAMA_METAL=1
# Run with GPU acceleration (automatic)
./llama-cli -m model.gguf -ngl 999 # Offload all layers
# Performance: M3 Max 40-60 tokens/sec (Llama 2-7B Q4_K_M)
NVIDIA GPUs (CUDA)
# Build with CUDA
make LLAMA_CUDA=1
# Offload layers to GPU
./llama-cli -m model.gguf -ngl 35 # Offload 35/40 layers
# Hybrid CPU+GPU for large models
./llama-cli -m llama-70b.Q4_K_M.gguf -ngl 20 # GPU: 20 layers, CPU: rest
AMD GPUs (ROCm)
# Build with ROCm
make LLAMA_HIP=1
# Run with AMD GPU
./llama-cli -m model.gguf -ngl 999
Common patterns
Batch processing
# Process multiple prompts from file
cat prompts.txt | ./llama-cli \
-m model.gguf \
--batch-size 512 \
-n 100
Constrained generation
# JSON output with grammar
./llama-cli \
-m model.gguf \
-p "Generate a person: " \
--grammar-file grammars/json.gbnf
# Outputs valid JSON only
Context size
# Increase context (default 512)
./llama-cli \
-m model.gguf \
-c 4096 # 4K context window
# Very long context (if model supports)
./llama-cli -m model.gguf -c 32768 # 32K context
Performance benchmarks
CPU performance (Llama 2-7B Q4_K_M)
| CPU | Threads | Speed | Cost |
|---|---|---|---|
| Apple M3 Max | 16 | 50 tok/s | $0 (local) |
| AMD Ryzen 9 7950X | 32 | 35 tok/s | $0.50/hour |
| Intel i9-13900K | 32 | 30 tok/s | $0.40/hour |
| AWS c7i.16xlarge | 64 | 40 tok/s | $2.88/hour |
GPU acceleration (Llama 2-7B Q4_K_M)
| GPU | Speed | vs CPU | Cost |
|---|---|---|---|
| NVIDIA RTX 4090 | 120 tok/s | 3-4× | $0 (local) |
| NVIDIA A10 | 80 tok/s | 2-3× | $1.00/hour |
| AMD MI250 | 70 tok/s | 2× | $2.00/hour |
| Apple M3 Max (Metal) | 50 tok/s | ~Same | $0 (local) |
Supported models
LLaMA family:
- Llama 2 (7B, 13B, 70B)
- Llama 3 (8B, 70B, 405B)
- Code Llama
Mistral family:
- Mistral 7B
- Mixtral 8x7B, 8x22B
Other:
- Falcon, BLOOM, GPT-J
- Phi-3, Gemma, Qwen
- LLaVA (vision), Whisper (audio)
Find models: https://huggingface.co/models?library=gguf
References
- Quantization Guide - GGUF formats, conversion, quality comparison
- Server Deployment - API endpoints, Docker, monitoring
- Optimization - Performance tuning, hybrid CPU+GPU
Resources
- GitHub: https://github.com/ggerganov/llama.cpp
- Models: https://huggingface.co/models?library=gguf
- Discord: https://discord.gg/llama-cpp
來自 firecrawl 的更多技能
oracle
firecrawl
使用 oracle CLI 的最佳實踐(提示與檔案捆綁、引擎、會話及檔案附加模式)。
official
firecrawl-monitor
firecrawl
偵測網站內容何時變更,並透過 Webhook 或電子郵件接收通知 — 無需 Cron 任務、爬蟲或比對腳本。當使用者想追蹤頁面變更、監控競爭對手定價、在新職缺或部落格文章出現時收到提醒、監控文件/更新紀錄/狀態頁面,或說出「監控」、「觀察」、「追蹤」、「當...時提醒我」、「當 X 變更時通知我」、「如果...請通知我」、「當...時寄信給我」或「當...時傳送 Webhook」時,請使用此技能。內建的 AI 判斷器會過濾格式、時間戳記及...
officialweb-scrapingresearch
firecrawl-deep-research
firecrawl
使用 Firecrawl 執行多來源深度研究。當使用者要求研究某個主題、比較不同觀點、產出具來源的簡報、調查技術或市場問題,或綜合多個來源的網路證據時使用。
officialresearchweb-scraping
firecrawl-research-papers
firecrawl
使用 Firecrawl 查找並綜合研究論文、白皮書、PDF、技術報告及學術來源。適用於用戶需要文獻回顧、論文摘要、研究現狀分析,或從 PDF 及學術/行業出版物中獲取有來源的綜合資訊時。
officialresearchweb-scraping
firecrawl-market-research
firecrawl
使用 Firecrawl 提取市場、財務、收益、行業及公司指標。適用於用戶查詢市場研究、行業趨勢、上市公司數據、財務比較、收益研究或結構化市場報告時使用。
officialresearchweb-scraping
firecrawl-website-design-clone
firecrawl
使用 Firecrawl 抓取證據,將任何網站的設計系統提取為可供代理程式使用的 DESIGN.md。當使用者需要從網站取得顏色、字型、間距、元件、版面配置模式或品牌/UI 指引,以便 AI 代理程式能建立新網站、複製外觀或根據該設計建構頁面時使用。
officialdesignweb-scraping
firecrawl-knowledge-base
firecrawl
使用 Firecrawl 從網頁內容建立知識庫。適用於本地參考文件、RAG 就緒區塊、微調資料集、文件鏡像、主題語料庫,或從網路來源整理而成的 LLM 就緒 Markdown。
officialweb-scrapingresearch
firecrawl-lead-research
firecrawl
使用 Firecrawl 生成會前潛在客戶情報簡報。適用於用戶在銷售通話、合作會議、投資人對話或客戶訪談前,需要進行公司研究、人物研究、最新新聞、談話要點、痛點分析或外展準備時。
officialresearchweb-scraping