作者: Paul Iusztin, Maxime Labonne (2024)
页数: 892
对应课程: course_C W1-14 (LLM工程与生产部署实战)
难度: ★★★☆ (L3-L4 进阶到高阶)
> 这是生产级 LLM 系统的工程圣经。不教理论,只教怎么把 LLM 部署到生产环境。
从 StarTalent Engine (courseware/L4 + 1043条JD数据分析) 提取:
| 痛点 | 紧急度 | 频率 | 对应本书章节 |
|------|--------|------|------------|
| 1. 算法备案与监管合规 | 5/5 | 42条 | Ch7 模型评估 + Ch11 MLOps 监控 |
| 2. 模型安全威胁 (Prompt注入/泄露) | 5/5 | 35条 | Ch11 Guardrails + 监控 |
| 3. Agent落地困难 | 4/5 | 高频 | Ch4 RAG + Ch9 RAG推理管线 |
| 4. 数据治理合规 (个保法/跨境) | 4/5 | 热门 | Ch3 数据工程 + 清洗 |
| 5. 模型部署与运维 (成本/效率) | 4/5 | 38条 | Ch8 推理优化 + Ch10 部署 |
| 6. 训练数据合规 (版权/溯源) | 3/5 | 热门 | Ch5 SFT 数据治理 |
> 数据来源: ai_product_app_manager_training_outline.md + courseware/L4/references/
┌───────────────────────────────────────────────────────────────┐
│ LLM Twin System │
├───────────────────────────────────────────────────────────────┤
│ FEATURE PIPELINE TRAINING PIPELINE │
│ (Ch3-4) (Ch5-7) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 数据采集 │ ──raw data──→ │ SFT 微调 │ │
│ │ Crawlers │ │ LoRA/QLoRA │ │
│ ├─────────────┤ ├─────────────┤ │
│ │ 数据清洗 │ │ DPO 对齐 │ │
│ │ Chunk/Embed │ │ 评估 │ │
│ ├─────────────┤ └──────┬──────┘ │
│ │ 向量存储 │ │ │
│ │ Qdrant │ ▼ │
│ └─────────────┘ ┌─────────────┐ │
│ │ 模型注册表 │ │
│ INFERENCE PIPELINE │ HuggingFace │ │
│ (Ch8-10) └─────────────┘ │
│ ┌─────────────┐ │
│ │ 推理优化 │ ←── 量化/GQA/KV Cache │
│ ├─────────────┤ │
│ │ RAG 检索 │ ←── 查询扩展/重排序 │
│ ├─────────────┤ │
│ │ 部署服务 │ ←── SageMaker/FastAPI │
│ └──────┬──────┘ │
│ ▼ │
│ MLOps/LLMOps (Ch11) — CI/CD/监控/告警 │
└───────────────────────────────────────────────────────────────┘
融合本书 + StarTalent 架构 + 中国企业痛点
| 周 | 主题 | 本书章节 | 中国企业痛点对应 |
|:--|:-----|:--------|:--------------|
| W1 | LLM 系统架构 — FTI 管道模式 | Ch1 | 痛点5: 部署成本高, 需标准化架构 |
| W2 | 工具链选型 — Poetry/ZenML/Qdrant/AWS | Ch2 | 痛点4: 技术选型困难, 国产替代方案 |
实战: 搭建 StarTalent 风格的 3 管道基础架构 (用 Docker Compose)
| 周 | 主题 | 本书章节 | 中国企业痛点对应 |
|:--|:-----|:--------|:--------------|
| W3 | 数据采集管道 — 爬虫/Dispatcher/ODM | Ch3 | 痛点1: 数据来源合规 |
| W4 | RAG 特征管道 — Chunk/Embed/向量库 | Ch4 | 痛点3: Agent落地困难—RAG是基础 |
| W5 | 高级 RAG — 查询扩展/Self-query/重排序 | Ch9 | 痛点3: RAG 效果优化 |
实战: 构建 StarTalent 的知识库 (与我们本地 Qwen3.5-9B 联动)
| 周 | 主题 | 本书章节 | 中国企业痛点对应 |
|:--|:-----|:--------|:--------------|
| W6 | 指令微调 — SFT 数据准备 + LoRA | Ch5 | 痛点6: 训练数据合规 |
| W7 | 偏好对齐 — DPO 从理论到代码 | Ch6 | 痛点2: 模型行为安全 |
| W8 | LLM 评估 — RAGAS/ARES/领域评估 | Ch7 | 痛点1: 算法备案中的模型评估要求 |
实战: 用 LoRA 微调我们的 Qwen3.5-9B + 生成评估报告
| 周 | 主题 | 本书章节 | 中国企业痛点对应 |
|:--|:-----|:--------|:--------------|
| W9 | 推理优化 — KV Cache/量化/连续批处理 | Ch8 | 痛点5: 推理成本 (直接优化我们本地服务) |
| W10 | 模型服务部署 — SageMaker/FastAPI | Ch10 | 痛点5: 私有化部署方案 |
| W11 | 弹性伸缩 — 自动扩缩容/监控 | Ch10 | 痛点5: 生产环境稳定性 |
实战: 用 AWQ 量化 Qwen3.5-9B + 部署到本地推理服务
| 周 | 主题 | 本书章节 | 中国企业痛点对应 |
|:--|:-----|:--------|:--------------|
| W12 | MLOps 管道 — CI/CD/CT 自动化 | Ch11 | 痛点5: 运维自动化 |
| W13 | LLMOps — Guardrails/监控/告警 | Ch11 | 痛点2: 模型安全护栏 |
| W14 | 毕业项目 — 构建完整的 LLM 系统 | 全书 | 全部痛点整合 |
实战: 从零到部署一个端到端 LLM 应用 (包含治理检查点)
从本书提取的、可直接用于 StarTalent 和我们本地环境的代码模式。
# 1. FTI 管道模式 — Feature/Training/Inference
class FeaturePipeline:
"""特征管道: 采集 → 清洗 → 分块 → 嵌入 → 存入向量库"""
def __init__(self, raw_source, chunk_size=512, embed_model="BAAI/bge-small-zh"):
self.raw_source = raw_source
self.chunk_size = chunk_size
self.embed_model = embed_model
def clean(self, doc):
"""清洗: 去HTML/去敏感信息/标准化"""
return doc
def chunk(self, text):
"""分块: 递归字符分割"""
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=self.chunk_size, chunk_overlap=64)
return splitter.split_text(text)
def embed(self, chunks):
"""嵌入: 用本地模型或 API 转为向量"""
return [f"[embedding_{i}]" for i in range(len(chunks))]
class InferencePipeline:
"""推理管道: 检索 → 增强 → 生成"""
def __init__(self, llm_endpoint="http://localhost:8080/v1"):
self.llm_endpoint = llm_endpoint
def retrieve(self, query, top_k=5):
"""检索: 向量相似度搜索"""
return [f"相关文档_{i}" for i in range(top_k)]
def augment(self, query, docs):
"""增强: 构建带上下文的提示词"""
context = "\n".join(docs)
return f"基于以下上下文回答问题:\n{context}\n\n问题: {query}"
def generate(self, prompt):
"""生成: 调用 LLM"""
import httpx
r = httpx.post(f"{self.llm_endpoint}/chat/completions", json={
"model": "Qwen3.5-9B-Q4_K_M.gguf",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.1
}, timeout=30)
return r.json()["choices"][0]["message"]["content"]
# 使用示例
pipe = InferencePipeline()
print("FTI 管道就绪 ✓")# 2. ODM (对象文档映射) 模式 — 本书 Ch3
# StarTalent 也用同样的模式处理招聘数据
class BaseODM:
"""基础 ODM: 所有数据模型的基类"""
def __init__(self, collection):
self.collection = collection
def to_dict(self):
return {k: v for k, v in self.__dict__.items() if not k.startswith('_')}
def save(self, db):
db[self.collection].insert_one(self.to_dict())
@classmethod
def from_dict(cls, data):
return cls(**data)
class JobPosting(BaseODM):
"""招聘信息 ODM — StarTalent 的核心数据模型"""
def __init__(self, title, company, salary, skills, requirements, **kwargs):
super().__init__(collection="job_postings")
self.title = title
self.company = company
self.salary = salary
self.skills = skills
self.requirements = requirements
self.tags = kwargs.get("tags", [])
job = JobPosting(
title="AI 治理工程师",
company="某金融科技公司",
salary="40K-55K",
skills=["AI安全", "数据合规", "算法备案"],
requirements=["3年经验", "了解个保法"]
)
print(f"ODM 模型: {job.title} @ {job.company}")
print(f"ODM 序列化: {job.to_dict()}")# 3. 中国企业治理检查点集成
# 把治理引擎的检查点注入 FTI 管道
class GovernanceCheck:
"""治理检查点 — 注入 FTI 管道的每一层"""
@staticmethod
def check_source_compliance(url):
"""Layer 1: 来源合规"""
blocked_domains = ["weixin.qq.com", "zhuanlan.zhihu.com"]
return not any(d in url for d in blocked_domains)
@staticmethod
def check_pii(text):
"""Layer 1-2: 个人信息检测 (个保法合规)"""
import re
patterns = {
"手机号": r"1[3-9]\\d{9}",
"邮箱": r"[\\w.+-]+@[\\w-]+\\.[\\w.]+",
"身份证": r"\\d{17}[\\dXx]",
}
findings = {k: re.findall(v, text) for k, v in patterns.items()}
return {k: v for k, v in findings.items() if v}
@staticmethod
def check_bias(skill_list):
"""Layer 3: 偏见检测"""
gender_keywords = {"男性", "女性", "男", "女"}
age_keywords = {"30岁以下", "35岁以下", "年轻"}
bias = []
for skill in skill_list:
if any(g in skill for g in gender_keywords):
bias.append(f"性别偏见: {skill}")
if any(a in skill for a in age_keywords):
bias.append(f"年龄偏见: {skill}")
return bias
gc = GovernanceCheck()
print(f"来源合规 (github.com): {gc.check_source_compliance('https://github.com')}")
print(f"PII 检测: {gc.check_pii('联系: 13800138000, email@test.com')}")
print(f"偏见检测: {gc.check_bias(['AI治理', '男性优先'])}")| 课程 | 参考书 | 时长 | 目标岗位 | 薪资区间 | 中国企业痛点 |
|------|-------|------|---------|---------|------------|
| LLM 基础与模型搭建 | 书1: Build LLM from Scratch | 8周 | AI 工程师 | 30K-60K | 痛点6: 训练数据合规 |
| AI 治理与合规 | L4 课程 + 书1 Ch7 | 6周 | AI治理工程师 | 40K-52K | 痛点1/2: 算法备案+安全 |
| LLM 工程与部署 | 书3: | 14周 | | 45K-120K | 痛点3/5: Agent+部署 |
| 推理模型与优化 | 书2: Build Reasoning Model | 4周 | 推理优化工程师 | 50K-100K | 痛点5: 推理成本 |
| AI 产品管理 | StarTalent产品大纲 | 4周 | AI产品经理 | 35K-65K | 全部痛点的业务视角 |
总课时: 36 周 (覆盖从入门到部署全链路)
# 用本地 LLM 验证: 你的 Qwen3.5-9B 对中国企业痛点的理解
import httpx
r = httpx.post("http://localhost:8080/v1/chat/completions", json={
"model": "Qwen3.5-9B-Q4_K_M.gguf",
"messages": [{"role": "user", "content":
"你是一个AI治理顾问。一家中国中型企业想部署内部RAG+Agent系统,"
"请列出3个最需要注意的合规风险点。用中文。"}],
"temperature": 0.3
}, timeout=30)
print(r.json()["choices"][0]["message"]["content"])如果你是初学者:
AI-Edu-Lab 基础 (01-03) → 05 分词 → 06 注意力 → 07 GPT → 12 StarTalent
如果你是工程背景 (想转LLM工程):
11 推理模型 → 12 StarTalent → 本书 FTI 管道 → 8 推理优化 → 部署实践
如果你是合规/治理背景:
04 全书吞噬 → L4 M4.1/M4.2 → 03 治理实操 → 本书 Ch11 → 毕业项目
当前全部 13 个 notebook:
基础: 00 01
书1(BLLM): 02 03 04 05 06 07 08 09 10
书2(BRM): 11
书3(LEH): 12 (这本书的大型 notebook 待创建)
> 下一步: 打开 01_AI_Assistant_Basics.ipynb 跑通第一条命令,然后按兴趣跳转