Ollama 使用指南
学习如何在 ByteBuddy 中使用 Ollama 来运行本地大语言模型,实现完全离线的 AI 开发体验。
Ollama 简介
Ollama 是一个开源的大语言模型运行器,让您可以在本地运行各种开源模型,包括:
- 隐私保护:所有数据都在本地处理
- 离线使用:无需网络连接
- 成本控制:无 API 调用费用
- 高度定制:可以微调和定制模型
安装 Ollama
系统要求
最低配置
- CPU: 4 核心以上
- 内存: 8GB RAM
- 存储: 10GB 可用空间
- 操作系统: macOS, Linux, Windows (WSL2)
推荐配置
- CPU: 8 核心以上
- 内存: 16GB RAM
- GPU: 8GB+ VRAM (NVIDIA)
- 存储: 20GB+ SSD
安装步骤
macOS
bash
# 使用 Homebrew 安装
brew install ollama
# 或者直接下载
curl -fsSL https://ollama.ai/install.sh | sh
# 启动 Ollama 服务
ollama serveLinux
bash
# 官方安装脚本
curl -fsSL https://ollama.ai/install.sh | sh
# 使用包管理器
# Ubuntu/Debian
sudo apt update && sudo apt install ollama
# Arch Linux
sudo pacman -S ollama
# 启动服务
sudo systemctl start ollama
sudo systemctl enable ollamaDocker
bash
# 拉取镜像
docker pull ollama/ollama
# 运行容器
docker run -d \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama
# 带 GPU 支持
docker run -d \
-v ollama:/root/.ollama \
-p 11434:11434 \
--gpus all \
--name ollama \
ollama/ollama常用模型
推荐模型列表
对话模型
bash
# 7B 模型 (适合日常使用)
ollama pull llama2:7b
ollama pull mistral:7b
ollama pull phi:2.7b
# 13B 模型 (平衡性能和资源)
ollama pull llama2:13b
ollama pull codellama:13b
ollama pull mixtral:8x7b
# 70B 模型 (高性能,需要大量资源)
ollama pull llama2:70b代码专用模型
bash
# 代码生成和理解
ollama pull codellama:7b
ollama pull codellama:13b
ollama pull codellama:33b
ollama pull deepseek-coder:6.7b
ollama pull starcoder多语言模型
bash
# 中文友好模型
ollama pull qwen:7b
ollama pull qwen:14b
ollama pull baichuan2:7b
ollama pull baichuan2:13b模型选择指南
| 使用场景 | 推荐模型 | 内存需求 | 性能 | 特点 |
|---|---|---|---|---|
| 日常对话 | mistral:7b | 4GB | 优秀 | 响应快,质量好 |
| 代码开发 | codellama:7b | 4GB | 优秀 | 专为代码优化 |
| 中文对话 | qwen:7b | 4GB | 良好 | 中文支持好 |
| 高性能需求 | llama2:13b | 8GB | 优秀 | 综合能力强 |
| 资源受限 | phi:2.7b | 2GB | 良好 | 轻量级,快速 |
ByteBuddy 集成配置
基础配置
yaml
# bytebuddy.config.yaml
models:
chat:
provider: ollama
model: mistral:7b
apiBase: "http://localhost:11434"
temperature: 0.7
maxTokens: 2048完整配置示例
yaml
models:
# 对话模型
chat:
provider: ollama
model: mistral:7b
apiBase: "http://localhost:11434"
temperature: 0.7
maxTokens: 2048
topP: 0.9
topK: 40
# 代码模型
code:
provider: ollama
model: codellama:7b
apiBase: "http://localhost:11434"
temperature: 0.1
maxTokens: 4096
# 轻量级模型
quick:
provider: ollama
model: phi:2.7b
apiBase: "http://localhost:11434"
temperature: 0.7
maxTokens: 1000高级配置
yaml
models:
chat:
provider: ollama
model: mistral:7b
apiBase: "http://localhost:11434"
# GPU 配置
gpu:
enabled: true
deviceId: 0
memoryFraction: 0.8
# 性能优化
performance:
numCtx: 4096 # 上下文长度
numBatch: 512 # 批处理大小
numGpu: 1 # GPU 数量
numThread: 8 # CPU 线程数
useMMap: true # 内存映射
useMlock: false # 内存锁定
# 缓存配置
cache:
enabled: true
keepAlive: "5m" # 模型保活时间
unloadTimeout: "10m" # 卸载超时
# 重试配置
retry:
maxAttempts: 3
backoff: "exponential"
initialDelay: 1000多模型策略
yaml
models:
# 智能模型选择
chat:
provider: ollama
modelSelection: auto
models:
- name: mistral:7b
weight: 0.6
priority: 1
- name: llama2:7b
weight: 0.3
priority: 2
- name: phi:2.7b
weight: 0.1
priority: 3
# 选择策略
strategy:
type: weighted
fallback: true
healthCheck: true
# 基于任务的模型选择
taskBased:
provider: ollama
rules:
- condition: "task.type == 'code'"
model: "codellama:7b"
- condition: "task.type == 'chat'"
model: "mistral:7b"
- condition: "task.complexity == 'high'"
model: "llama2:13b"
- condition: "resource.limited == true"
model: "phi:2.7b"使用场景和最佳实践
1. 完全离线开发
yaml
# 离线配置
models:
chat:
provider: ollama
model: mistral:7b
offline: true
cache:
persistent: true
path: "./.bytebuddy/cache"
# 工具配置
tools:
filesystem:
enabled: true
offline: true
terminal:
enabled: true
offline: true
# 禁用在线功能
features:
webSearch: false
onlineDocs: false
cloudSync: false2. 隐私敏感项目
yaml
models:
secure:
provider: ollama
model: codellama:7b
security:
dataRetention: 0
auditLogging: true
encryption: true
tools:
filesystem:
permissions:
read: ["./src/**"]
write: []
blocked: ["./secrets/**"]
privacy:
anonymization: true
localProcessing: true
noTelemetry: true3. 资源受限环境
yaml
models:
lightweight:
provider: ollama
model: phi:2.7b
optimization:
quantization: "4bit"
contextCompression: true
batchProcessing: true
performance:
memory:
limit: "2GB"
swap: true
cpu:
threads: 2
priority: "low"性能优化
硬件优化
GPU 加速配置
yaml
# NVIDIA GPU 配置
gpu:
enabled: true
deviceIds: [0]
memoryFraction: 0.8
computeCapabilities: ["7.5+", "8.0+", "8.6+", "8.9+", "9.0"]
# 多 GPU 配置
multiGpu:
enabled: false
deviceIds: [0, 1]
loadBalancing: "round-robin"内存优化
yaml
memory:
# 虚拟内存配置
swap:
enabled: true
path: "./.bytebuddy/swap"
size: "4GB"
# 内存映射
mmap:
enabled: true
lockPages: false
prefetch: true
# 垃圾回收
gc:
strategy: "g1gc"
heapSize: "1GB"
maxHeapSize: "2GB"模型优化
量化配置
yaml
models:
chat:
provider: ollama
model: mistral:7b
quantization:
enabled: true
bits: 4 # 4bit 量化
calibration: true
accuracy: "balanced"上下文优化
yaml
context:
# 上下文压缩
compression:
enabled: true
strategy: "semantic"
ratio: 0.7
# 滑动窗口
slidingWindow:
enabled: true
size: 4096
overlap: 512
# 智能截断
truncation:
strategy: "importance"
preserveKey: true监控和管理
性能监控
yaml
monitoring:
enabled: true
# 系统指标
system:
cpu: true
memory: true
gpu: true
disk: true
# 模型指标
model:
responseTime: true
throughput: true
accuracy: true
errorRate: true
# 告警配置
alerts:
- name: "High Memory Usage"
condition: "memory.usage > 90%"
action: "notify"
- name: "Slow Response"
condition: "model.responseTime > 5000ms"
action: "log"模型管理
yaml
modelManagement:
# 自动下载
autoDownload:
enabled: false
requireConfirmation: true
# 自动更新
autoUpdate:
enabled: false
schedule: "weekly"
# 清理策略
cleanup:
enabled: true
schedule: "daily"
keepUnused: 7 # days
maxDiskUsage: "50GB"管理命令
bash
# 查看 Ollama 状态
ollama ps
# 查看已安装模型
ollama list
# 删除模型
ollama rm mistral:7b
# 更新模型
ollama pull mistral:7b
# 查看模型信息
ollama show mistral:7b
# 测试模型
time ollama run mistral:7b "Hello, how are you?"
# 查看系统资源使用
ollama stats
# 查看日志
tail -f ~/.ollama/logs/ollama.log故障排除
常见问题
1. 模型下载失败
bash
# 检查网络连接
curl -I https://ollama.ai
# 手动下载
curl -L https://ollama.ai/download/mistral:7b -o mistral.7b.gguf
# 检查磁盘空间
df -h
# 检查权限
ls -la ~/.ollama2. 内存不足
bash
# 检查内存使用
free -h
# 增加交换空间
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 使用更小的模型
ollama pull phi:2.7b
# 启用 4bit 量化
# 在配置中设置 quantization: 4bit3. GPU 不工作
bash
# 检查 NVIDIA 驱动
nvidia-smi
# 检查 CUDA
nvcc --version
# 检查 Docker GPU 支持
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
# 重新安装 GPU 版本
# 卸载: docker rm ollama
# 重新安装带 GPU 支持
docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama4. 响应很慢
yaml
# 优化配置
models:
chat:
provider: ollama
model: mistral:7b
# 减少上下文长度
maxTokens: 1000
# 启用批处理
numBatch: 1024
# 增加线程数
numThread: 8
# 使用 GPU
numGpu: 1调试工具
bash
# 启用详细日志
OLLAMA_DEBUG=1 ollama serve
# 测试连接
curl http://localhost:11434/api/tags
# 测试模型调用
curl -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{"model": "mistral:7b", "prompt": "Hello"}'
# 查看配置
ollama show --format json mistral:7b最佳实践
1. 模型选择
- 开始学习:使用 mistral:7b 或 llama2:7b
- 代码开发:使用 codellama:7b
- 资源有限:使用 phi:2.7b
- 中文支持:使用 qwen:7b
2. 系统优化
- 使用 SSD 存储
- 配置足够的内存
- 启用 GPU 加速(如果可用)
- 定期清理不需要的模型
3. 安全考虑
- 隔离 Ollama 服务
- 限制网络访问
- 定期更新模型
- 监控异常使用
4. 开发工作流
bash
# 启动脚本示例
#!/bin/bash
# 启动 Ollama
echo "Starting Ollama..."
ollama serve &
# 等待服务启动
sleep 5
# 检查模型
if ! ollama list | grep -q "mistral:7b"; then
echo "Downloading mistral:7b..."
ollama pull mistral:7b
fi
# 启动 ByteBuddy
echo "Starting ByteBuddy..."
bytebuddy start
echo "Setup complete!"