[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"learning-part-14-open-models":3,"learning-all":13},{"id":4,"slug":5,"title":6,"description":7,"level":8,"topic":9,"url":10,"content":11,"sortOrder":12},12,"part-14-open-models","Part 14 · 开源模型与私有化部署","目标：把主流开源模型在本地\u002F服务器跑通，理解服务化工程（显存、量化、并发）。","ADVANCED","模型部署",null,"# Part 12 · 开源模型与私有化部署\n\n\n---\n\n## Section 1 · Ollama 复习（跑通 qwen2.5:1.5b）\n\n**Subsection 1 · 确认 Ollama 可用**\n- cmd 输入 `ollama list`\n- ✅ 预期看到：你 Part 2 下的 qwen2.5:1.5b 在列表里。没有就：`ollama run qwen2.5:1.5b` 先下一个。\n\n**Subsection 2 · 跑对话**\n`ollama run qwen2.5:1.5b` 进对话，问它一句中文，`\u002Fbye` 退出。\n- 💡 记住：**Ollama 是\"个人级\"部署，一行命令跑本地模型**。\n\n**过关**：ollama 能跑 qwen = Section 1 完成。\n\n---\n\n## Section 2 · 下载并对比多个开源模型\n\n**Subsection 1 · 下载两个模型**\ncmd 分别执行：\n```\nollama pull llama3.2:1b\nollama pull qwen2.5:1.5b\n```\n- ✅ 预期看到：下载完成（各 1GB 左右）。\n\n**Subsection 2 · 对比中文效果**\n两个模型各问一遍：`中国的首都是哪里？请用中文回答`\n- 记录：哪个中文更流畅？哪个更快？\n- 💡 结论通常：**中文场景 Qwen 明显强于同体量 Llama**。这就是\"选型\"的第一课。\n\n**过关**：能对比出差异 = Section 2 完成。\n\n---\n\n## Section 3 · Ollama 的 OpenAI 兼容 API\n\n**Subsection 1 · 用代码调本地模型**\n新建 `ollama_api.py`：\n```python\nfrom openai import OpenAI\n\n# Ollama 提供 OpenAI 兼容接口，base_url 指向本地\nclient = OpenAI(base_url=\"http:\u002F\u002Flocalhost:11434\u002Fv1\", api_key=\"ollama\")\n\nresp = client.chat.completions.create(\n    model=\"qwen2.5:1.5b\",\n    messages=[{\"role\": \"user\", \"content\": \"用一句话介绍你自己\"}],\n)\nprint(resp.choices[0].message.content)\n```\n- ✅ 预期看到：本地模型回答（不需要联网、不需要花钱）。\n- 💡 **关键价值**：代码几乎不用改，就能在\"云端 API\"和\"本地模型\"之间切换——这就是本地部署的意义。\n\n**过关**：代码调本地模型跑通 = Section 3 完成。\n\n---\n\n## Section 4 · 显存计算（能跑多大模型）\n\n**Subsection 1 · 记公式**\n```\n模型显存 ≈ 参数量 × 每参数字节数\nFP32 = 4字节\u002F参数   FP16\u002FBF16 = 2字节   INT8 = 1字节   INT4 ≈ 0.5字节\n例：7B 模型 FP16 ≈ 7×10^9 × 2字节 = 14GB 显存；INT4 量化后 ≈ 4GB\n（再加 KV Cache 和开销，实际再加 20~50%）\n```\n\n**Subsection 2 · 算自己的机器**\n- cmd `nvidia-smi` 看你的显存（或 `wmic path win32_videocontroller get name` 看核显\u002F独显）。\n- 在备忘录写：`我的显存 = X GB → 能跑 FP16 的 ~X\u002F2\u002F参数(B) 模型，或量化后更大的模型`。\n\n**过关**：会算显存 = Section 4 完成。\n\n---\n\n## Section 5 · 装 vLLM 并部署（服务级）\n\n**Subsection 1 · 装 vLLM**\ncmd：`pip install vllm`（需要 GPU；没有 GPU 会装失败，跳去 Section 6 做概念笔记，或改用 CPU 版参数 `--device cpu`）\n- ✅ 预期看到：Successfully installed vllm...\n\n**Subsection 2 · 启动服务**\ncmd 运行：\n```\nvllm serve Qwen\u002FQwen2.5-1.5B-Instruct --port 8001\n```\n- ✅ 预期看到：服务启动，最后出现 `Uvicorn running on http:\u002F\u002F0.0.0.0:8001`。\n- 另开一个 cmd 用 OpenAI 客户端调它（base_url 改成 `http:\u002F\u002Flocalhost:8001\u002Fv1`）。\n\n**Subsection 3 · 概念**\n```\nvLLM = 高吞吐推理框架，核心是 PagedAttention（显存分页管理）\n适合：并发大、要求高的生产环境；Ollama 适合个人\u002F小团队\n```\n\n**过关**：vLLM 部署（或 CPU 版）跑通 = Section 5 完成。\n\n---\n\n## Section 6 · 并发压测（vLLM vs Ollama）\n\n**Subsection 1 · 写压测脚本**\n新建 `bench.py`（先装 `pip install httpx`）：\n```python\nimport asyncio, httpx, time\n\nasync def call_one(client, url):\n    t0 = time.time()\n    r = await client.post(url, json={\n        \"model\": \"qwen2.5:1.5b\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"写一句关于秋天的话\"}],\n        \"max_tokens\": 30,\n    })\n    return time.time() - t0\n\nasync def bench(url, n=10):\n    async with httpx.AsyncClient(timeout=60) as c:\n        ts = await asyncio.gather(*[call_one(c, url) for _ in range(n)])\n    print(f\"{url} 平均耗时: {sum(ts)\u002Flen(ts):.2f}s  总并发 {n}\")\n\n# 分别对 Ollama 和 vLLM 测（vLLM 若没起来就先只测 Ollama）\nasyncio.run(bench(\"http:\u002F\u002Flocalhost:11434\u002Fv1\u002Fchat\u002Fcompletions\", 5))\n```\n- ✅ 预期看到：并发耗时数据。\n- 💡 记录数据，写进笔记：**并发越高，vLLM 优势越明显**。\n\n**过关**：压测数据拿到 = Section 6 完成。\n\n---\n\n## Section 7 · Dify 接入本地模型\n\n**Subsection 1 · Dify 里配 Ollama**\n- 打开 Dify → 右上角设置 → 模型供应商 → 添加 \"Ollama\"\n- 填 base_url `http:\u002F\u002Fhost.docker.internal:11434`（Docker 访问宿主机的地址）→ 模型名 `qwen2.5:1.5b`\n- 在应用里把模型切成刚配的本地模型，跑一次问答\n- ✅ 预期看到：Dify 用本地模型回答。\n- 💡 至此你打通了：**本地模型 → Dify 编排 → 前端应用** 的私有化全链路。\n\n**过关**：Dify 用本地模型跑通 = Section 7 完成。\n\n---\n\n## Section 8 · 开源模型盘点（国外）\n\n**Subsection 1 · 记清单**\n```\nLlama 系列  Meta：Llama3.1 8B\u002F70B\u002F405B，生态最全\nFalcon      阿联酋TII：早期开源代表\nMistral     法国：7B 小而强，Mixtral 是 MoE 混合专家\nGemma       Google：轻量，适合端侧\nQwen 系列   阿里（算国产但国际通用）：多语言强\n```\n- 💡 打开 https:\u002F\u002Fhuggingface.co\u002Fmodels 按 Downloads 排序，扫一眼当前主流。\n\n**过关**：能报出国外主流开源模型 = Section 8 完成。\n\n---\n\n## Section 9 · 开源模型盘点（国产）\n\n**Subsection 1 · 记清单**\n```\nChatGLM    智谱：GLM-4 系列，中文对话不错\nQwen       阿里：0.5B~72B+，开源最全，微调生态最好\nDeepSeek   深度求索：R1 推理强，开源的 V3\u002FR1 影响巨大\nBaichuan   百川：通用开源\nMoss       复旦：早期中文开源\nInternLM   上海AI实验室：书生，学术向\n```\n\n**Subsection 2 · 选型决策**\n写笔记：`我接下来的微调\u002F部署实验，优先选 Qwen（教程多、体量全、社区大）`。\n\n**过关**：能说出国产清单 + 自己的选型 = Section 9 完成。\n\n---\n\n## Section 10 · ModelScope 下载模型\n\n**Subsection 1 · 从国内源下载**\n- 打开 https:\u002F\u002Fmodelscope.cn 注册\n- 安装：`pip install modelscope`\n- 用代码下载一个 Qwen 模型：\n```python\nfrom modelscope import snapshot_download\nsnapshot_download(\"Qwen\u002FQwen2.5-0.5B-Instruct\")\n```\n- ✅ 预期看到：模型下载到 `~\u002F.cache\u002Fmodelscope\u002F...`。\n- 💡 **ModelScope = 国内版 HuggingFace**，下载不走外网，速度快。\n\n**过关**：能下载一个模型 = Section 10 完成。\n\n---\n\n## Section 11 · GGUF 与 llama.cpp\n\n**Subsection 1 · 概念**\n```\nGGUF = llama.cpp 的模型格式，专门支持 CPU\u002F边缘设备运行\nllama.cpp = 纯 C++ 推理框架，能在没 GPU 的机器跑量化模型\n```\n\n**Subsection 2 · 用 Ollama 体验 GGUF**\nOllama 里的模型底层就是 GGUF。`ollama pull qwen2.5:0.5b` 再 `ollama run qwen2.5:0.5b` 感受小模型在 CPU 上也能跑。\n\n**过关**：能说出 GGUF 与 llama.cpp 关系 = Section 11 完成。\n\n---\n\n## Section 12 · Open WebUI（给本地模型加界面）\n\n**Subsection 1 · 装 Open WebUI**\n- 打开 https:\u002F\u002Fgithub.com\u002Fopen-webui\u002Fopen-webui 按文档安装（Docker 方式最省事）。\n- 启动后浏览器打开，登录，接入你的 Ollama。\n- ✅ 预期看到：一个类似 ChatGPT 的界面，但背后是本地模型。\n- 💡 这就是\"私有化 ChatGPT\"——数据不出你的电脑。\n\n**过关**：Open WebUI 跑通 = Section 12 完成。\n\n---\n\n## Section 13 · 私有化部署综合项目\n\n**Subsection 1 · 搭私有化\"公司知识库\"**\n组合已有能力：Ollama\u002FQwen（本地模型）+ Part 7 RAG（检索）+ Open WebUI 或 Dify（界面）：\n1. Ollama 跑 qwen2.5\n2. 用Part 5 的 rag_tool 改成调用本地模型（把 OpenAI 的 base_url 换成 `http:\u002F\u002Flocalhost:11434\u002Fv1`）\n3. 问它 company.md 的问题\n- ✅ 预期看到：**全程不联网、不花钱**的私有知识库问答。\n- 💡 这就是\"数据不出内网\"的私有化 AI 方案，企业买单的核心场景。\n\n**过关**：私有化知识库跑通 = Section 13 完成。\n\n---\n\n## Section 14 · 推理优化：量化选型\n\n**Subsection 1 · 记量化选型**\n```\nFP16   效果好，显存贵\nINT8   效果损失小，显存减半\nINT4   显存最省，效果下降（中文可能明显）\n选型：显存够 → FP16；不够 → INT8；再不够 → INT4 + 小模型\n```\n- 💡 Part 17 会系统学量化，这里先有概念。\n\n**过关**：能说出量化选型原则 = Section 14 完成。\n\n---\n\n## Section 15 · 生产部署注意（工程经验）\n\n**Subsection 1 · 记生产要点**\n```\n① 模型网关：用 vLLM\u002FTriton 统一暴露 API，业务层不直连\n② 并发与排队：压测定上限，超出排队，防止 OOM\n③ 监控：吞吐、延迟、显存、GPU 利用率（Prometheus + Grafana）\n④ 弹性：多副本水平扩展\n⑤ 安全：鉴权、限流、输入输出过滤\n```\n\n**Subsection 2 · 对照你自己的部署**\n写笔记：`我的部署缺哪几项？接下来补什么`。\n\n**过关**：能说出 5 条生产要点 = Section 15 完成。\n\n---\n\n## Section 16 · 综合实战：端到端私有化聊天助手\n\n**Subsection 1 · 做项目**\n把Part 12 全部能力串成一个项目 `private_chat`：\n1. Ollama 起本地模型\n2. FastAPI 封装聊天接口（流式）\n3. 前端一个简单 HTML 页面（或直接命令行）\n4. 加 RAG：能回答私有文档\n5. README 写清架构图和启动步骤\n- ✅ 预期看到：一个\"本地大模型 + 私有知识库 + Web 界面\"的完整应用。\n\n**过关**：端到端项目跑通 = Section 16 完成。\n\n---\n\n## Section 17 · 项目打磨 + 推 GitHub\n\n**Subsection 1 · 打磨**\n- 给 private_chat 写 README（架构图\u002F启动命令\u002F截图占位）\n- 处理 .gitignore（排除 .env、模型缓存）\n\n**Subsection 2 · 推 GitHub**\n```\ngit init\ngit add .\ngit commit -m \"private chat with local LLM + RAG\"\ngit remote add origin \u003C你的仓库地址>\ngit push -u origin main\n```\n- ✅ 预期看到：GitHub 上有你的私有化部署项目。\n\n**过关**：项目上线 GitHub = Section 17 完成。\n\n---\n\n## Section 18 · 常见坑\n\n**Subsection 1 · 记坑**\n```\n坑1  显存溢出 OOM → 换更小模型\u002F量化\u002F减小 max_tokens\n坑2  中文乱码 → 确认模型是中文优化版（Qwen 系），输出加 utf-8\n坑3  vLLM 无 GPU 装不了 → 用 CPU 版参数或只做概念\n坑4  Docker 里连不上宿主机 Ollama → 用 host.docker.internal\n坑5  模型\"发烧\"回答怪 → 降到 INT8 或换原版（非量化）\n```\n\n**过关**：坑笔记写完 = Section 18 完成。\n\n---\n\n## Section 19 · 面试题\n\n**Subsection 1 · 练习作答**\n1. 你部署过哪些开源模型？怎么评估和切换？\n2. Ollama 和 vLLM 的区别？\n3. 一个 7B 模型 FP16 要多少显存？INT4 呢？\n4. 私有化部署的关键工程问题？\n5. 中文场景选什么开源模型，为什么？\n- 每题先自己答，再让 DeepSeek 帮忙补充标准答案。\n\n**过关**：5 题能流畅作答 = Section 19 完成。\n\n---\n\n## Section 20 · 站 12 验收\n\n**勾选**\n- [ ] 两个开源模型对比过，知道中文选谁\n- [ ] 用 OpenAI 兼容代码调本地模型（Section 3）\n- [ ] 会算显存，知道自己的机器能跑什么\n- [ ] vLLM 部署 + 压测（Section 5\u002F6）\n- [ ] Dify 接入本地模型（Section 7）\n- [ ] 能报出国外 + 国产开源清单\n- [ ] ModelScope 下载过模型（Section 10）\n- [ ] 了解 GGUF \u002F llama.cpp（Section 11）\n- [ ] Open WebUI 或类似界面跑通（Section 12）\n- [ ] 私有化知识库项目跑通（Section 13\u002F16）\n- [ ] 能说出 5 条生产部署要点\n- [ ] 项目推上 GitHub（Section 17）\n\n**写 400 字Part 12 总结**：你部署了什么、显存多少、私有化和云端各适合什么。\n\n**全勾选 = Part 14 通过** → 进入下一站 Part 15 · 模型微调 Fine-Tuning，15 天）。\n\n\n\n",14,[14,21,27,33,40,46,52,58,63,69,75,81,86,92,93,99,105,111,117,123,129],{"id":15,"slug":16,"title":17,"description":18,"level":19,"topic":20,"url":10,"content":10,"sortOrder":15},1,"part-1-llm-basics","Part 1 · 大模型基础认知","小白零基础友好。这一站不写代码，只建立\"大模型到底是什么\"的骨架。","BEGINNER","大模型认知",{"id":22,"slug":23,"title":24,"description":25,"level":19,"topic":26,"url":10,"content":10,"sortOrder":22},2,"part-2-llm-principles","Part 2 · 大模型原理 · 入门实操","这一站不卷数学，只把\"理解模型所需的知识\"讲透。；站 2A 解决\"理解模型\"，站 2B 解决\"面试能答\"。；这一层是\"有余力再做\"，不做也不影响你进入站 3。","大模型原理",{"id":28,"slug":29,"title":30,"description":31,"level":19,"topic":26,"url":10,"content":10,"sortOrder":32},100,"part-3-llm-principles-deep","Part 3 · 大模型原理 · 面试深入","数学基础、机器学习、神经网络、词向量、思维链等面试必考原理",3,{"id":34,"slug":35,"title":36,"description":37,"level":38,"topic":26,"url":10,"content":10,"sortOrder":39},101,"part-4-llm-principles-advanced","Part 4 · 大模型原理 · 进阶可选","从零写迷你模型、RLHF、PPO、分布式训练实操等进阶内容","INTERMEDIATE",4,{"id":32,"slug":41,"title":42,"description":43,"level":19,"topic":44,"url":10,"content":10,"sortOrder":45},"part-5-prompt-engineering","Part 5 · Prompt 提示词工程","从这里开始，你每天都要真的调大模型 API。","提示工程",5,{"id":39,"slug":47,"title":48,"description":49,"level":19,"topic":50,"url":10,"content":10,"sortOrder":51},"part-6-llm-api","Part 6 · 大模型 API 调用","站 3 你已经调通了 API。这一站把\"调用\"做成专业水准：","API 工程",6,{"id":45,"slug":53,"title":54,"description":55,"level":38,"topic":56,"url":10,"content":10,"sortOrder":57},"part-7-rag","Part 7 · RAG 检索增强生成","这一站是\"能落地\"的关键：让模型回答**你的私有知识**。","RAG",7,{"id":51,"slug":59,"title":60,"description":61,"level":38,"topic":56,"url":10,"content":10,"sortOrder":62},"part-8-rag-optimization","Part 8 · RAG 优化与评估","站 5 你做出了\"能跑\"的 RAG。这一站把它做到\"能打\"：",8,{"id":57,"slug":64,"title":65,"description":66,"level":38,"topic":67,"url":10,"content":10,"sortOrder":68},"part-9-langchain","Part 9 · LangChain 框架","目标：用 LangChain 把\"模型、提示词、检索、记忆、工具\"串成可复用的链和 Agent。","LangChain",9,{"id":62,"slug":70,"title":71,"description":72,"level":38,"topic":73,"url":10,"content":10,"sortOrder":74},"part-10-agent","Part 10 · Agent 基础","让模型从\"会聊天\"变成\"能干活\"：自己拆任务、调工具、看结果、再行动。","Agent",10,{"id":68,"slug":76,"title":77,"description":78,"level":8,"topic":79,"url":10,"content":10,"sortOrder":80},"part-11-multi-agent","Part 11 · 多 Agent 与 Agent IDE","从\"单个 Agent\"升级到\"多 Agent 协作\"，并掌握 AutoGen \u002F LangGraph \u002F GPTs \u002F Coze \u002F Dify 五个工具。","多 Agent",11,{"id":74,"slug":82,"title":83,"description":84,"level":8,"topic":85,"url":10,"content":10,"sortOrder":4},"part-12-llamaindex","Part 12 · LlamaIndex","站 5~7 你用了 LangChain 做 RAG。LlamaIndex 是另一条专攻\"数据 + LLM\"的路线。","LlamaIndex",{"id":80,"slug":87,"title":88,"description":89,"level":8,"topic":90,"url":10,"content":10,"sortOrder":91},"part-13-transformer","Part 13 · Transformer 深入","站 2A 建立了直觉，这一站把手写代码跑通——从\"懂概念\"到\"写得出\"。","Transformer",13,{"id":4,"slug":5,"title":6,"description":7,"level":8,"topic":9,"url":10,"content":10,"sortOrder":12},{"id":91,"slug":94,"title":95,"description":96,"level":8,"topic":97,"url":10,"content":10,"sortOrder":98},"part-15-finetuning","Part 15 · 模型微调 Fine-Tuning","目标：理解\"什么时候必须微调、怎么选基座、怎么备数据\"，并完整跑通一次业务微调。","微调",15,{"id":12,"slug":100,"title":101,"description":102,"level":8,"topic":103,"url":10,"content":10,"sortOrder":104},"part-16-peft-lora","Part 16 · PEFT 参数高效微调","重点吃透 **LoRA**：用极少量可训练参数微调大模型（消费级显卡就能跑）。","PEFT\u002FLoRA",16,{"id":98,"slug":106,"title":107,"description":108,"level":8,"topic":109,"url":10,"content":10,"sortOrder":110},"part-17-quantization","Part 17 · 模型量化","目标：理解\"为什么量化、主流算法各自思路\"，能动手量化并评估效果。","量化",17,{"id":104,"slug":112,"title":113,"description":114,"level":8,"topic":115,"url":10,"content":10,"sortOrder":116},"part-18-data-evaluation","Part 18 · 训练数据与模型评估","数据决定模型上限，评估决定你\"能不能交付\"。","数据与评估",18,{"id":110,"slug":118,"title":119,"description":120,"level":8,"topic":121,"url":10,"content":10,"sortOrder":122},"part-19-multimodal","Part 19 · 多模态应用","让 AI 同时\"看得懂图、听得了音、说得出话\"。","多模态",19,{"id":116,"slug":124,"title":125,"description":126,"level":8,"topic":127,"url":10,"content":10,"sortOrder":128},"part-20-projects-career","Part 20 · 项目实战 + 求职备战","把 0→1 到 1→100 学到的全部收敛成**能展示、能讲、能面试**的项目。","项目与求职",20,{"id":130,"slug":131,"title":132,"description":133,"level":8,"topic":134,"url":10,"content":10,"sortOrder":135},102,"extra-2026-ai-tech","额外篇 · 2026 年 AI 应用开发必学的 5 项成熟技术","从近半年爆发的技术里，挑出已经过了尝鲜期、能真正用在项目里的 5 项：推理模型、MCP、多模态、GraphRAG、AI 编程工具链，每项都给到能跑通的代码。","AI 工程实践",21]