从ChatGLM到Llama 3:手把手教你用Xinference和Ollama在本地跑通第一个大模型
从ChatGLM到Llama 3:手把手教你用Xinference和Ollama在本地跑通第一个大模型
当你第一次听说"大模型"这个词时,可能会觉得它遥不可及——那些动辄数十亿参数的人工智能模型,似乎只属于科技巨头的服务器机房。但事实上,如今在个人电脑上运行这些模型已经变得触手可及。本文将带你体验两种最流行的本地大模型运行方案:强调易用性的Ollama和功能更强大的Xinference。
1. 环境准备与工具选择
在开始之前,我们需要明确一点:大模型对硬件的要求确实不低,但并不意味着你必须拥有顶级配置。以下是两种典型场景的硬件适配建议:
| 硬件配置 | 推荐模型大小 | 适用工具 | 预期性能 |
|---|---|---|---|
| 高端GPU(如4090) | 7B-13B | 两者皆可 | 流畅交互体验 |
| 中端GPU(如3060) | 7B以下 | Ollama优先 | 可接受延迟 |
| 仅有CPU | 3B以下 | Ollama | 较慢响应 |
提示:如果你不确定自己的硬件是否足够,可以先从最小的模型开始尝试。许多模型都提供量化版本,能在保持不错效果的同时大幅降低资源需求。
对于软件环境,两个工具都支持主流操作系统:
- Ollama:提供一键安装包,几乎不需要额外配置
- Xinference:需要Python环境(建议3.8+)和基础命令行知识
2. Ollama极速体验:5分钟运行Llama 3
Ollama就像是大模型界的"傻瓜相机",它的设计哲学是让任何人都能在最短时间内体验大模型的能力。让我们从安装开始:
# Linux/macOS安装命令
curl -fsSL https://ollama.com/install.sh | sh
# Windows用户可以直接下载安装包
安装完成后,拉取并运行Llama 3 8B模型只需要一条命令:
ollama run llama3:8b
第一次运行时会自动下载模型(约4.8GB),完成后你将直接进入交互界面。试试输入:
你好!请用中文回答
常见问题解决方案:
- 下载速度慢:可以设置镜像源
OLLAMA_HOST=镜像地址 ollama run... - 内存不足:尝试更小的模型,如
llama3:7b-instruct-q4_0(仅需3.5GB) - GPU未启用:检查CUDA驱动,或添加
--gpu参数
3. Xinference专业部署:构建你的本地模型服务
如果你需要更强大的功能,如多模型管理、API服务等,Xinference是更好的选择。它的安装稍复杂但提供了企业级能力:
pip install "xinference[all]"
xinference-local --host 0.0.0.0 --port 9997
启动服务后,我们可以通过Web界面(http://localhost:9997)或命令行管理模型。以下是通过CLI部署ChatGLM3的示例:
from xinference.client import Client
client = Client("http://localhost:9997")
model_uid = client.launch_model(
model_name="chatglm3",
model_size_in_billions=6,
quantization="q4_0"
)
模型启动后,可以通过REST API调用:
curl -X POST http://localhost:9997/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "chatglm3",
"messages": [{"role": "user", "content": "请介绍你自己"}]
}'
Xinference的高级功能包括:
- 多模型并行:同时运行不同模型满足不同需求
- 性能监控:实时查看GPU利用率和内存消耗
- 自定义模型:支持加载本地训练的模型权重
4. 工具对比与实战选择指南
经过实际体验,我们可以总结出两个工具的核心差异:
| 功能维度 | Ollama | Xinference |
|---|---|---|
| 安装难度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 模型支持范围 | 主流LLM | LLM+多模态+嵌入 |
| 资源占用 | 轻量 | 中等 |
| API丰富度 | 基础 | 专业 |
| 适用场景 | 个人快速体验 | 开发/小规模生产 |
选择建议:
- 只想快速体验:无脑选Ollama
- 需要API集成:Xinference更合适
- 硬件有限:Ollama的量化模型表现更好
- 多模型需求:只能选Xinference
5. 进阶技巧与优化建议
为了让你的本地大模型运行得更顺畅,这里分享几个实战经验:
内存优化配置(针对Xinference):
# 在启动模型时指定资源限制
model_uid = client.launch_model(
model_name="llama3",
model_size_in_billions=8,
quantization="q4_1",
n_gpu=1, # 指定GPU数量
max_tokens=512 # 控制最大生成长度
)
Ollama的实用命令:
- 查看已下载模型:
ollama list - 删除旧模型:
ollama rm 模型名 - 创建自定义模型:编写Modelfile
性能提升技巧:
- 优先选择量化模型(名称中含q4/q8)
- 关闭不必要的后台程序释放内存
- 对于长文本交互,适当降低
max_tokens - 在Linux系统下通常能获得更好性能
6. 应用场景扩展
本地运行大模型不只是为了聊天,你还可以:
自动化办公:
- 用模型批量处理Excel数据
- 自动生成会议纪要
- 编写标准化邮件模板
学习辅助:
- 解释复杂概念
- 生成练习题
- 代码调试助手
内容创作:
- 生成文案草稿
- 多语言翻译
- 风格化写作
实现这些只需要简单的脚本集成,例如用Python调用Ollama:
import requests
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "llama3",
"prompt": "将以下文字翻译成英文:人工智能正在改变世界",
"stream": False
}
)
print(response.json()["response"])
7. 常见问题深度解决
在实际使用中,你可能会遇到以下典型问题:
模型响应速度慢:
- 检查是否启用了GPU加速
- 尝试更小的模型尺寸
- 调整
temperature参数降低随机性
中文输出质量差:
- 确保选择了中文优化模型(如ChatGLM3)
- 在提示中明确要求中文回答
- 尝试不同的提示词工程
内存溢出(OOM)错误:
- 使用量化版本模型
- 减少
batch_size参数 - 关闭其他占用内存的程序
对于更复杂的问题,建议查阅工具的问题跟踪系统:
- Ollama: https://github.com/jmorganca/ollama/issues
- Xinference: https://github.com/xorbitsai/inference/issues
8. 安全与隐私考量
在本地运行大模型的最大优势就是数据不会离开你的设备,但仍有几点需要注意:
- 模型来源:只从官方渠道下载模型权重
- 网络隔离:生产环境建议在内网部署
- 权限控制:Xinference默认不加密,需配置防火墙规则
- 资源监控:避免长时间高负载运行导致硬件损耗
一个简单的安全实践是为Xinference添加基础认证:
xinference-local --host 0.0.0.0 --port 9997 --api-key my_secret_key
然后调用时需携带Header:
client = Client("http://localhost:9997", api_key="my_secret_key")
9. 成本控制与长期使用
虽然本地运行避免了API费用,但仍需考虑:
电力成本估算(以RTX 4090为例):
| 使用场景 | 功耗(W) | 月成本(8小时/天) |
|---|---|---|
| 空闲状态 | 30 | ~$5 |
| 中等负载 | 200 | ~$30 |
| 满负荷运行 | 450 | ~$70 |
节省成本的实用建议:
- 使用完成后及时关闭模型释放资源
- 对不常用模型设置自动卸载
- 考虑使用节能模式(如NVIDIA的"静音模式")
- 批量处理任务而非持续交互
10. 生态整合与扩展
这两个工具都能与其他流行技术栈集成:
与LangChain整合:
from langchain_community.llms import Ollama
llm = Ollama(model="llama3")
result = llm.invoke("请用100字简介人工智能")
在Docker中部署Xinference:
FROM python:3.10
RUN pip install "xinference[all]"
EXPOSE 9997
CMD ["xinference-local", "--host", "0.0.0.0"]
自动化脚本示例(定时生成报告):
#!/bin/bash
ollama run llama3 "根据以下数据生成周报:$(cat data.txt)" > report.md
通过这些扩展,你可以将大模型能力融入现有工作流,实现真正的生产力提升。
更多推荐

所有评论(0)