Learning_RoadmapAI_Assistant_BasicsModel_Building_and_APIData_Governance_and_SecurityLLM_Book_IngestionTokenizationAttention_MechanismGPT_ArchitecturePretrainingFineTuningLoRAReasoning_Model_Book_IngestionStarTalent_ArchitectureLLM_Engineer_Handbook_CourseRAG_Building_BlocksLangChain_RunnableAI_Engineering_Chip_HuyenLLM_Ops_FinancePython_BootcampReference_Index
进阶

《LLM Engineer's Handbook》— 知识吞噬 + 第三门课程

《LLM Engineer's Handbook》— 知识吞噬 + 第三门课程

作者: Paul Iusztin, Maxime Labonne (2024)

页数: 892

对应课程: course_C W1-14 (LLM工程与生产部署实战)

难度: ★★★☆ (L3-L4 进阶到高阶)

> 这是生产级 LLM 系统的工程圣经。不教理论,只教怎么把 LLM 部署到生产环境。


一、中国企业 AI 治理六大痛点

从 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/


二、全书脉络 — FTI 工程架构

┌───────────────────────────────────────────────────────────────┐

│ 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/监控/告警 │

└───────────────────────────────────────────────────────────────┘


三、课程大纲: LLM 工程实战 (14周)

融合本书 + StarTalent 架构 + 中国企业痛点

模块一: 工程基础与架构设计 (W1-2)

| 周 | 主题 | 本书章节 | 中国企业痛点对应 |

|:--|:-----|:--------|:--------------|

| W1 | LLM 系统架构 — FTI 管道模式 | Ch1 | 痛点5: 部署成本高, 需标准化架构 |

| W2 | 工具链选型 — Poetry/ZenML/Qdrant/AWS | Ch2 | 痛点4: 技术选型困难, 国产替代方案 |

实战: 搭建 StarTalent 风格的 3 管道基础架构 (用 Docker Compose)

模块二: 数据工程与 RAG 管道 (W3-5)

| 周 | 主题 | 本书章节 | 中国企业痛点对应 |

|:--|:-----|:--------|:--------------|

| 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-8)

| 周 | 主题 | 本书章节 | 中国企业痛点对应 |

|:--|:-----|:--------|:--------------|

| W6 | 指令微调 — SFT 数据准备 + LoRA | Ch5 | 痛点6: 训练数据合规 |

| W7 | 偏好对齐 — DPO 从理论到代码 | Ch6 | 痛点2: 模型行为安全 |

| W8 | LLM 评估 — RAGAS/ARES/领域评估 | Ch7 | 痛点1: 算法备案中的模型评估要求 |

实战: 用 LoRA 微调我们的 Qwen3.5-9B + 生成评估报告

模块四: 推理优化与部署 (W9-11)

| 周 | 主题 | 本书章节 | 中国企业痛点对应 |

|:--|:-----|:--------|:--------------|

| W9 | 推理优化 — KV Cache/量化/连续批处理 | Ch8 | 痛点5: 推理成本 (直接优化我们本地服务) |

| W10 | 模型服务部署 — SageMaker/FastAPI | Ch10 | 痛点5: 私有化部署方案 |

| W11 | 弹性伸缩 — 自动扩缩容/监控 | Ch10 | 痛点5: 生产环境稳定性 |

实战: 用 AWQ 量化 Qwen3.5-9B + 部署到本地推理服务

模块五: MLOps/LLMOps 与治理 (W12-14)

| 周 | 主题 | 本书章节 | 中国企业痛点对应 |

|:--|:-----|:--------|:--------------|

| 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治理', '男性优先'])}")

五、三本书 + StarTalent 课程矩阵 (完整版)

| 课程 | 参考书 | 时长 | 目标岗位 | 薪资区间 | 中国企业痛点 |

|------|-------|------|---------|---------|------------|

| 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 跑通第一条命令,然后按兴趣跳转