返回学习路线

AI 学习路线 · 深入

Part 14 · 开源模型与私有化部署

目标:把主流开源模型在本地/服务器跑通,理解服务化工程(显存、量化、并发)。


Section 1 · Ollama 复习(跑通 qwen2.5:1.5b)

Subsection 1 · 确认 Ollama 可用

  • cmd 输入 ollama list
  • 预期看到:你 Part 2 下的 qwen2.5:1.5b 在列表里。没有就:ollama run qwen2.5:1.5b 先下一个。

Subsection 2 · 跑对话 ollama run qwen2.5:1.5b 进对话,问它一句中文,/bye 退出。

  • 记住:Ollama 是"个人级"部署,一行命令跑本地模型。

过关:ollama 能跑 qwen = Section 1 完成。


Section 2 · 下载并对比多个开源模型

Subsection 1 · 下载两个模型 cmd 分别执行:

ollama pull llama3.2:1bollama pull qwen2.5:1.5b
  • 预期看到:下载完成(各 1GB 左右)。

Subsection 2 · 对比中文效果 两个模型各问一遍:中国的首都是哪里?请用中文回答

  • 记录:哪个中文更流畅?哪个更快?
  • 结论通常:中文场景 Qwen 明显强于同体量 Llama。这就是"选型"的第一课。

过关:能对比出差异 = Section 2 完成。


Section 3 · Ollama 的 OpenAI 兼容 API

Subsection 1 · 用代码调本地模型 新建 ollama_api.py:

python
from openai import OpenAI# Ollama 提供 OpenAI 兼容接口,base_url 指向本地client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")resp = client.chat.completions.create(    model="qwen2.5:1.5b",    messages=[{"role": "user", "content": "用一句话介绍你自己"}],)print(resp.choices[0].message.content)
  • 预期看到:本地模型回答(不需要联网、不需要花钱)。
  • 关键价值:代码几乎不用改,就能在"云端 API"和"本地模型"之间切换——这就是本地部署的意义。

过关:代码调本地模型跑通 = Section 3 完成。


Section 4 · 显存计算(能跑多大模型)

Subsection 1 · 记公式

模型显存 ≈ 参数量 × 每参数字节数FP32 = 4字节/参数   FP16/BF16 = 2字节   INT8 = 1字节   INT4 ≈ 0.5字节例:7B 模型 FP16 ≈ 7×10^9 × 2字节 = 14GB 显存;INT4 量化后 ≈ 4GB(再加 KV Cache 和开销,实际再加 20~50%)

Subsection 2 · 算自己的机器

  • cmd nvidia-smi 看你的显存(或 wmic path win32_videocontroller get name 看核显/独显)。
  • 在备忘录写:我的显存 = X GB → 能跑 FP16 的 ~X/2/参数(B) 模型,或量化后更大的模型。

过关:会算显存 = Section 4 完成。


Section 5 · 装 vLLM 并部署(服务级)

Subsection 1 · 装 vLLM cmd:pip install vllm(需要 GPU;没有 GPU 会装失败,跳去 Section 6 做概念笔记,或改用 CPU 版参数 --device cpu)

  • 预期看到:Successfully installed vllm…

Subsection 2 · 启动服务 cmd 运行:

vllm serve Qwen/Qwen2.5-1.5B-Instruct --port 8001
  • 预期看到:服务启动,最后出现 Uvicorn running on http://0.0.0.0:8001。
  • 另开一个 cmd 用 OpenAI 客户端调它(base_url 改成 http://localhost:8001/v1)。

Subsection 3 · 概念

vLLM = 高吞吐推理框架,核心是 PagedAttention(显存分页管理)适合:并发大、要求高的生产环境;Ollama 适合个人/小团队

过关:vLLM 部署(或 CPU 版)跑通 = Section 5 完成。


Section 6 · 并发压测(vLLM vs Ollama)

Subsection 1 · 写压测脚本 新建 bench.py(先装 pip install httpx):

python
import asyncio, httpx, timeasync def call_one(client, url):    t0 = time.time()    r = await client.post(url, json={        "model": "qwen2.5:1.5b",        "messages": [{"role": "user", "content": "写一句关于秋天的话"}],        "max_tokens": 30,    })    return time.time() - t0async def bench(url, n=10):    async with httpx.AsyncClient(timeout=60) as c:        ts = await asyncio.gather(*[call_one(c, url) for _ in range(n)])    print(f"{url} 平均耗时: {sum(ts)/len(ts):.2f}s  总并发 {n}")# 分别对 Ollama 和 vLLM 测(vLLM 若没起来就先只测 Ollama)asyncio.run(bench("http://localhost:11434/v1/chat/completions", 5))
  • 预期看到:并发耗时数据。
  • 记录数据,写进笔记:并发越高,vLLM 优势越明显。

过关:压测数据拿到 = Section 6 完成。


Section 7 · Dify 接入本地模型

Subsection 1 · Dify 里配 Ollama

  • 打开 Dify → 右上角设置 → 模型供应商 → 添加 “Ollama”
  • 填 base_url http://host.docker.internal:11434(Docker 访问宿主机的地址)→ 模型名 qwen2.5:1.5b
  • 在应用里把模型切成刚配的本地模型,跑一次问答
  • 预期看到:Dify 用本地模型回答。
  • 至此你打通了:本地模型 → Dify 编排 → 前端应用 的私有化全链路。

过关:Dify 用本地模型跑通 = Section 7 完成。


Section 8 · 开源模型盘点(国外)

Subsection 1 · 记清单

Llama 系列  Meta:Llama3.1 8B/70B/405B,生态最全Falcon      阿联酋TII:早期开源代表Mistral     法国:7B 小而强,Mixtral 是 MoE 混合专家Gemma       Google:轻量,适合端侧Qwen 系列   阿里(算国产但国际通用):多语言强

过关:能报出国外主流开源模型 = Section 8 完成。


Section 9 · 开源模型盘点(国产)

Subsection 1 · 记清单

ChatGLM    智谱:GLM-4 系列,中文对话不错Qwen       阿里:0.5B~72B+,开源最全,微调生态最好DeepSeek   深度求索:R1 推理强,开源的 V3/R1 影响巨大Baichuan   百川:通用开源Moss       复旦:早期中文开源InternLM   上海AI实验室:书生,学术向

Subsection 2 · 选型决策 写笔记:我接下来的微调/部署实验,优先选 Qwen(教程多、体量全、社区大)。

过关:能说出国产清单 + 自己的选型 = Section 9 完成。


Section 10 · ModelScope 下载模型

Subsection 1 · 从国内源下载

  • 打开 https://modelscope.cn 注册
  • 安装:pip install modelscope
  • 用代码下载一个 Qwen 模型:
python
from modelscope import snapshot_downloadsnapshot_download("Qwen/Qwen2.5-0.5B-Instruct")
  • 预期看到:模型下载到 ~/.cache/modelscope/...。
  • ModelScope = 国内版 HuggingFace,下载不走外网,速度快。

过关:能下载一个模型 = Section 10 完成。


Section 11 · GGUF 与 llama.cpp

Subsection 1 · 概念

GGUF = llama.cpp 的模型格式,专门支持 CPU/边缘设备运行llama.cpp = 纯 C++ 推理框架,能在没 GPU 的机器跑量化模型

Subsection 2 · 用 Ollama 体验 GGUF Ollama 里的模型底层就是 GGUF。ollama pull qwen2.5:0.5b 再 ollama run qwen2.5:0.5b 感受小模型在 CPU 上也能跑。

过关:能说出 GGUF 与 llama.cpp 关系 = Section 11 完成。


Section 12 · Open WebUI(给本地模型加界面)

Subsection 1 · 装 Open WebUI

  • 打开 https://github.com/open-webui/open-webui 按文档安装(Docker 方式最省事)。
  • 启动后浏览器打开,登录,接入你的 Ollama。
  • 预期看到:一个类似 ChatGPT 的界面,但背后是本地模型。
  • 这就是"私有化 ChatGPT"——数据不出你的电脑。

过关:Open WebUI 跑通 = Section 12 完成。


Section 13 · 私有化部署综合项目

Subsection 1 · 搭私有化"公司知识库" 组合已有能力:Ollama/Qwen(本地模型)+ Part 7 RAG(检索)+ Open WebUI 或 Dify(界面):

  1. Ollama 跑 qwen2.5
  2. 用Part 5 的 rag_tool 改成调用本地模型(把 OpenAI 的 base_url 换成 http://localhost:11434/v1)
  3. 问它 company.md 的问题
  • 预期看到:全程不联网、不花钱的私有知识库问答。
  • 这就是"数据不出内网"的私有化 AI 方案,企业买单的核心场景。

过关:私有化知识库跑通 = Section 13 完成。


Section 14 · 推理优化:量化选型

Subsection 1 · 记量化选型

FP16   效果好,显存贵INT8   效果损失小,显存减半INT4   显存最省,效果下降(中文可能明显)选型:显存够 → FP16;不够 → INT8;再不够 → INT4 + 小模型
  • Part 17 会系统学量化,这里先有概念。

过关:能说出量化选型原则 = Section 14 完成。


Section 15 · 生产部署注意(工程经验)

Subsection 1 · 记生产要点

① 模型网关:用 vLLM/Triton 统一暴露 API,业务层不直连② 并发与排队:压测定上限,超出排队,防止 OOM③ 监控:吞吐、延迟、显存、GPU 利用率(Prometheus + Grafana)④ 弹性:多副本水平扩展⑤ 安全:鉴权、限流、输入输出过滤

Subsection 2 · 对照你自己的部署 写笔记:我的部署缺哪几项?接下来补什么。

过关:能说出 5 条生产要点 = Section 15 完成。


Section 16 · 综合实战:端到端私有化聊天助手

Subsection 1 · 做项目 把Part 12 全部能力串成一个项目 private_chat:

  1. Ollama 起本地模型
  2. FastAPI 封装聊天接口(流式)
  3. 前端一个简单 HTML 页面(或直接命令行)
  4. 加 RAG:能回答私有文档
  5. README 写清架构图和启动步骤
  • 预期看到:一个"本地大模型 + 私有知识库 + Web 界面"的完整应用。

过关:端到端项目跑通 = Section 16 完成。


Section 17 · 项目打磨 + 推 GitHub

Subsection 1 · 打磨

  • 给 private_chat 写 README(架构图/启动命令/截图占位)
  • 处理 .gitignore(排除 .env、模型缓存)

Subsection 2 · 推 GitHub

git initgit add .git commit -m "private chat with local LLM + RAG"git remote add origin <你的仓库地址>git push -u origin main
  • 预期看到:GitHub 上有你的私有化部署项目。

过关:项目上线 GitHub = Section 17 完成。


Section 18 · 常见坑

Subsection 1 · 记坑

坑1  显存溢出 OOM → 换更小模型/量化/减小 max_tokens坑2  中文乱码 → 确认模型是中文优化版(Qwen 系),输出加 utf-8坑3  vLLM 无 GPU 装不了 → 用 CPU 版参数或只做概念坑4  Docker 里连不上宿主机 Ollama → 用 host.docker.internal坑5  模型"发烧"回答怪 → 降到 INT8 或换原版(非量化)

过关:坑笔记写完 = Section 18 完成。


Section 19 · 面试题

Subsection 1 · 练习作答

  1. 你部署过哪些开源模型?怎么评估和切换?
  2. Ollama 和 vLLM 的区别?
  3. 一个 7B 模型 FP16 要多少显存?INT4 呢?
  4. 私有化部署的关键工程问题?
  5. 中文场景选什么开源模型,为什么?
  • 每题先自己答,再让 DeepSeek 帮忙补充标准答案。

过关:5 题能流畅作答 = Section 19 完成。


Section 20 · 站 12 验收

勾选

  • 两个开源模型对比过,知道中文选谁
  • 用 OpenAI 兼容代码调本地模型(Section 3)
  • 会算显存,知道自己的机器能跑什么
  • vLLM 部署 + 压测(Section 5/6)
  • Dify 接入本地模型(Section 7)
  • 能报出国外 + 国产开源清单
  • ModelScope 下载过模型(Section 10)
  • 了解 GGUF / llama.cpp(Section 11)
  • Open WebUI 或类似界面跑通(Section 12)
  • 私有化知识库项目跑通(Section 13/16)
  • 能说出 5 条生产部署要点
  • 项目推上 GitHub(Section 17)

写 400 字Part 12 总结:你部署了什么、显存多少、私有化和云端各适合什么。

全勾选 = Part 14 通过 → 进入下一站 Part 15 · 模型微调 Fine-Tuning,15 天)。