start-MLLM TASK01 https://github.com/datawhalechina/start-mllm/blob/main/docs/%E5%89%8D%E8%A8%80.md一、为什么要系统学习多模态大模型多态大模型MLLMMultimodal Large Language Model尝试进一步处理图片、文档、截图、表格、视频帧、语音等多种输入形式。它的真正价值不是“接了一个图片入口”而是让模型逐步具备接近真实世界任务的感知能力。在现实应用中用户很少只提供纯文本。更常见的输入是一张报错截图外加一句“这是什么意思”一份发票或合同外加一句“帮助我提取关键信息”一张商品图外加一句“帮我写标题和卖点”一段视频封面、多张图片、语音说明、构成表格的组合输入如果你限制文本模型你只能做的事情会被输入形式如果你理解了多模态模型你就可以开始做真正贴近业务的AI系统。如果你刚开始学多模态先把这条路线记在脑子里概念地图 → 架构原理 → 数据与训练 → 评测与部署 → 推理实操 → Demo → Agent后面遇到新术语时你能立刻知道它属于哪一段很容易越读越乱。建立认识与训练侧概念任务版图、视觉令牌与瞄准、生成式架构Connector LLM、数据配方与敏感性策略。第4章的JSONL与加密脚本重在「格式与质量意识」不等于必须立即训练大模型。建立了验收与落地能力场景剧情、配置与部署、推理脚本与Gradio Demo、多模态代理、以及将全书收成的重建路线。命令行与环境变量实战篇里部分示例在Windowscmd / PowerShell下使用set VARvalue在Linux / macOSBash / Zsh下请改为export VARvalue。相同指标名与取值不变仅语法不同。文档中的相对路径默认以仓库根目录start-mllm/为当前工作目录除非你看到明确写到cd了子目录。第八章等处的.env文件为KEYvalue行格式各系统写法一致与「在 shell 里临时导出」不是同一个入口别混用语法即可。首读术语速查MLLM / VLM能够同时处理与语言输入的模型VLM通常特指图文方向。视觉编码器把像素变成支持特征的模块相当于“眼睛”。Patch Token图像切块后形成的视觉令牌粒度影响细节保留能力。Connector / Projector把视觉特征映射到LLM可消费表示的桥接层。SFT指令指令让模型提供“会执行任务的助手”而不仅仅是会理解图文关系。Grounding让模型的文字描述能够定位到图像中的具体区域如坐标框、边界框而不仅仅是笼统地描述整张图。第一遍看时先记“这个词是Q的”就够了细节可以边做边补。如何使用这份教程如果你对Transformer、Embedding、自回归生成等还不太熟悉先花30分钟读完LLM基础速通再进入正文。已有LLM基础的读者可跳过。误区 1把“能收图片”当成“理解图像”很多多模态模型的能力边界并不来自“有没有图片输入”而来自视觉编码器是否足够强对齐是否足够好数据分布里是否包含你关心的任务推理链路里是否保留了必要的细粒度信息不追求一次全做满但这是本书默认的「能力终点」画像能用自己的话讲清 视觉编码 → 对齐 → LLM 在系统里各干什么第 13 章。能写一小份 多模态 SFT 风格 JSONL 并做基础校验第 4 章 docs/chapter4/code。能搭 几十条量级 的场景评测集并跑通 eval_vlm_dataset.py第 5 章。能说清 推理链路 上哪里会丢图、哪里会慢以及该记哪些日志第 6 章。能 本地或 API 跑通图文对话并做一个 Gradio 级 Demo第 78 章。能画出 感知 → 规划 → 工具 → 记忆 的多模态 Agent 草图并整理出一份自己的实践优先级清单第 910 章。更偏场景的排版、多图、长图可穿插 扩展阅读 与 Extra-Chapter。LLM基础速通如果你只有 Python 基础对 Transformer、Embedding、自回归生成这些概念还不熟悉花 30 分钟读完本章就够了。我们只讲后续章节会直接用到的概念不展开数学推导。训练过程的基本单位总训练数据10000 条 └── 拆成多个 Batch每批 32 条 └── 每个 Batch 跑一次前向 反向传播 → 更新一次参数1 Step └── 所有数据跑完一遍 1 Epoch └── 通常训练 1~5 个 Epoch训练日志里的 lr1e-4就是当前的学习率。常见策略是预训练阶段用较大 lr如1e-4微调阶段用较小 lr如2e-5。预训练与微调大模型的训练通常分两大阶段预训练Pre-training从零开始在海量文本上学习语言能力训练数据 互联网文本、书籍、代码...TB 级 训练目标 预测下一个 token 训练成本 需要大量 GPU 和时间通常数周到数月 产出 基座模型Base Model指令微调SFT, Supervised Fine-Tuning在基座模型上用任务数据进一步训练训练数据 指令-回答格式的标注数据千~万条 训练目标 让模型学会执行具体任务 训练成本 远低于预训练单卡几小时到几天 产出 指令模型Chat Model / Instruct Model这个范式叫“预训练 → 微调”是当前 LLM 和 MLLM 的标准流程预训练 → 基座模型会续写文本但不会听指令 ↓ 指令微调 指令模型会听指令、会对话、会完成任务基座模型基座模型Base Model 就是只经过预训练、还没经过指令微调的模型。它会续写文本但不会回答问题你给它法国的首都是它会续写法国的首都是巴黎巴黎是…“而不是干净地回答巴黎”常见基座模型Qwen2.5-7B、Llama3-8B、DeepSeek-V2-Lite后续章节里提到冻结基座模型就是指保持预训练参数不变只训练新加的模块如 Connector、LoRA 适配器。五、PyTorch 五分钟速查如果你走API 路线第七章 OpenAI 兼容接口、第八章 Gradio Demo、第九章 Agent完全不需要 PyTorch可以跳过本节。如果你想走本地推理路线第七章 Transformers 方式或动手做LoRA 微调第四章下面 5 个模式够你用了检查 GPU 是否可用importtorchprint(torch.cuda.is_available())# True 有可用 GPUprint(torch.cuda.get_device_name(0))# 显卡型号加载预训练模型fromtransformersimportAutoModelForCausalLM,AutoTokenizer modelAutoModelForCausalLM.from_pretrained(Qwen/Qwen2.5-7B-Instruct)tokenizerAutoTokenizer.from_pretrained(Qwen/Qwen2.5-7B-Instruct)from_pretrained是你最常用的方法——给一个模型名或本地路径它自动下载/加载模型权重。把模型放到 GPU 上modelmodel.to(cuda)# 整个模型搬到 GPU# 或者加载时直接指定# model AutoModelForCausalLM.from_pretrained(..., device_mapauto)device_map“auto” 会自动把模型分配到可用的 GPU 上大模型推荐用这种方式。推理模式withtorch.no_grad():# 推理时关闭梯度计算省显存outputsmodel.generate(**inputs,max_new_tokens512)torch.no_grad()告诉 PyTorch 不需要记录计算图那是训练用的推理时务必加上。Tensor 基础importtorch xtorch.tensor([1.0,2.0,3.0])# 创建张量类似 numpy arrayprint(x.shape)# torch.Size([3])print(x.device)# cpu 或 cuda:0xx.to(cuda)# 搬到 GPUTensor 就是 PyTorch 版的多维数组。你在后续章节里看到的 input_ids、pixel_values、attention_mask 都是 tensor。一句话总结PyTorch 在本教程里主要就做两件事——加载模型from_pretrained和生成输出model.generate。更深入的训练用法Dataset、DataLoader、Trainer在第四章 LoRA 微调时会结合具体代码讲解。