
基础模型这个词最近几年在自然语言处理和计算机视觉领域反复出现现在它正在进入肿瘤研究。这篇 Nature 论文做的事情用一个不太好听但很准确的说法来概括把蛋白、细胞和肿瘤微环境放到同一个模型框架里构建一张跨尺度、跨队列的虚拟地图。对做生信、做计算病理、做肿瘤微环境研究的人来说这个方向值得花时间看懂因为它改变的不只是某个任务的精度而是数据组织方式和分析方式本身。先提醒一句下面的内容不是论文逐句解读而是基于这类基础模型工作的一般技术逻辑结合我实际处理组学数据和分析流程的经验做的拆解。如果你要引用具体结论或复现结果务必以原文和官方代码仓库为准。1. 先搞清楚这个基础模型到底解决什么问题1.1 肿瘤研究的数据碎片化问题有多严重做肿瘤研究的人都知道同一个病人的数据可能来自多个平台基因测序出来的突变列表、单细胞转录组给出的细胞类型比例、空间转录组给出的组织原位表达、病理切片给出的形态学信息、临床记录给出的分期和预后。这些数据看起来都来自同一个病人但彼此之间的连接非常弱。传统做法是各管各的单细胞数据做聚类和注释空间数据做区域划分蛋白数据做富集分析临床数据做生存曲线。每个步骤都有成熟的工具但问题是这些工具之间没有统一的数据空间。你想问“某个蛋白表达变化对应的细胞类型改变是什么又怎么影响微环境结构”需要自己手动把多个分析结果拼起来费时且容易出偏差。这篇工作的核心价值就是试图解决这个“拼图问题”。它把蛋白层面的序列信息、细胞层面的转录状态、组织层面的微环境结构统一到一个基础模型里。所谓基础模型通俗讲就是一个在大规模数据上预训练好的通用底座后续接上不同任务就能用不需要每个任务都从头训练。1.2 “跨尺度”和“跨队列”到底跨的是什么“跨尺度”指的是数据粒度的跨越。蛋白是纳米级别的分子对象细胞是微米级别的功能单元肿瘤微环境是毫米甚至厘米级别的组织结构。这三个尺度在传统分析里几乎不共享表示空间。基础模型的思路是用统一的嵌入表示把它们映射到同一个向量空间让模型在“看到”蛋白序列的时候能推断它大概率出现在什么细胞类型里而该细胞类型在特定微环境中的分布又会怎么变化。“跨队列”指的是数据来源的跨越。不同医院、不同国家、不同测序平台产生的数据存在明显的批次效应。同一个细胞类型在这个数据集里可能叫“CD8 T 细胞”在另一个数据集里可能叫“cytotoxic T lymphocyte”其实描述的是同一个东西。跨队列能力要求模型不只在单一数据集上表现好还要能迁移到外部数据或者在训练时利用多个队列的互补信息。如果模型真的能做到这两点下游价值就很直接可以用已有队列训练好的模型去分析新病人的数据减少重新标注的成本也可以在某个队列里发现的细胞状态或蛋白标志物快速在其他队列里验证是否成立。2. 跨尺度、跨队列的数据是怎么被“放进”一个模型里的2.1 三个层级的数据如何对齐基础模型要连接蛋白、细胞和微环境关键在“对齐”。不同模态的数据原始格式完全不一样蛋白是氨基酸序列单细胞是基因表达矩阵空间数据是坐标加表达病理图像是像素。模型需要先把它们转成统一的 token 或 embedding。常见的做法分几步。蛋白序列通常用语言模型式的编码器处理氨基酸序列像句子一样被 token 化。单细胞数据需要把每个细胞看作一个样本表达矩阵经过归一化和对数变换后输入编码器。空间和病理数据则需要做 patch 化处理把组织图像切成小块每一块变成一个向量同时保留坐标信息。这三级表示都生成之后模型再通过跨模态注意力机制让它们互相“对齐”。对齐的目标是如果某个蛋白在某个细胞类型中高表达那么该蛋白的表示和该细胞类型的表示在向量空间里应该距离较近。这个距离不是人为设定的规则而是模型在训练中自动学出来的。2.2 预训练数据与自监督学习这类模型通常走“预训练 微调”的路线。预训练阶段需要大规模数据包括公开的蛋白数据库、单细胞图谱、空间转录组数据、病理图像库等。由于人工标注成本极高主流做法是自监督学习不依赖大量人工标签。自监督训练任务常见的有这几类掩码重建遮住蛋白序列的一部分让它预测缺失部分细胞状态预测根据一部分基因表达推测其他基因的表达空间关系预测根据相邻 patch 的表达判断组织区域边界跨模态对比学习让同一生物状态在不同模态下的表示尽量一致。这些预训练目标并不需要人工标注因此可以大量堆数据。模型的参数量可以从几千万到数十亿不等取决于计算资源。具体论文用了什么架构、多少参数、什么预训练目标需要去看原论文的材料这里给的是这类模型的一般设计逻辑。2.3 “虚拟地图”怎么理解标题里的“虚拟地图”我理解不是一个可视化工具而是一个高维语义空间。不同尺度、不同队列的数据被嵌入到这个空间里之后每个位置都对应某种生物状态区域之间的距离反映状态之间的相似性。你可以在上面做聚类、做轨迹分析、做差异分析甚至用它做零样本推理。打比方说传统分析像看一张纸质地图每个图层要单独印刷一张图层画血管一张图层画细胞一张图层画蛋白表达。虚拟地图更像一个 GIS 系统所有图层叠加在一个坐标系里你可以随时切换视角点击某个区域看到该区域所有尺度的信息。这就是基础模型带来的整合能力也是它和传统分析流水线最大的区别。3. 想复现或使用这套方案环境与数据准备怎么做3.1 先想清楚你要用模型还是训练模型这是最容易走错的一步。很多人看到论文第一反应是“我要复现训练”但实际上大部分研究场景只需要“用模型做推理”。如果你的目标是分析自己的肿瘤单细胞或空间转录组数据优先找论文是否公开了模型权重和推理脚本。如果权重已公开你的主要工作就不是训练而是数据格式转换和推理流程搭建。如果你要做的是改进模型或做新任务的微调那才需要考虑完整训练流程。完整训练成本和推理完全不是一个量级别混为一谈。3.2 硬件与软件条件先说硬件。推理阶段如果模型参数量在亿级以内显存 16GB 到 24GB 的消费级显卡通常够用CPU 也能跑但很慢。如果要微调建议显存 48GB 以上或者用多卡并行。完整预训练阶段说实话一般实验室的算力撑不住论文级别的预训练通常需要几十张甚至上百张高端 GPU 跑数周。这不是普通实验室能复现的也不要硬复现。软件方面主流框架是 PyTorch配套库包括 Hugging Face Transformers、scanpy单细胞处理、anndata数据容器、squidpy 或类似空间数据处理库以及 torchmetrics 做评估。训练脚本通常基于 PyTorch Lightning 或 DeepSpeed具体要看原项目代码仓库。这里需要强调原始论文不一定把完整的训练配置都写在正文里很多细节在补充材料或 GitHub 仓库里。不要以为拿到模型权重就自动知道了所有预训练参数。3.3 数据准备的关键步骤不管是用模型还是训练模型数据预处理都必须严格匹配模型要求。常见坑点有这些第一单细胞表达矩阵怎么归一化。不同模型对输入格式要求不一样有的要求原始 count 数据有的要求已经做过的 log1p 归一化有的要求先做 HVG高变基因筛选。如果你用训练时的格式不匹配推理结果会偏差很大。第二基因命名体系。Ensembl ID 和 Gene Symbol 不能混用。同一个基因在不同数据集里可能有不同 ID 表示而且不同注释版本之间也有差异。预处理阶段必须统一。第三空间数据的坐标系统。不同平台如 Visium、Slide-seq、MERFISH产生的空间数据坐标格式和分辨率完全不同。模型如果设计成固定 patch 大小你可能需要把不同平台的数据重采样到统一尺度。第四批次信息和患者信息。跨队列能力建立在模型见过多个队列的基础上如果你在推理时只给单个队列的数据模型可能无法有效利用跨队列先验。建议按原论文要求提供必要的元信息。我给一个通用流程建议先把数据整理成三个文件一个是表达矩阵或蛋白序列文件一个是细胞或样本元数据表一个是空间坐标文件或病理图像路径。然后写一个预处理脚本按模型的 README 要求做归一化、ID 映射、patch 切分。最后用一个小数据集跑通推理确认输出维度、格式、语义都合理后再全量处理。4. 训练、推理与评估关键参数和判断标准4.1 推理阶段最该关注的参数如果模型权重公开推理阶段也有不少参数要确认。我把关键参数列成一张表参数作用常见范围非该论文定值判断标准batch size每次送入模型的数据量8 到 64显存不溢出、吞吐稳定即可输入 token 长度或窗口大小单条序列或 patch 能覆盖的信息量512 到 4096太短丢失上下文太长显存爆炸patch 大小空间数据切块的物理尺寸50 到 200 微米和平台分辨率匹配归一化方式决定输入数值分布log1p、min-max、z-score与预训练保持一致输出嵌入维度每条数据映射到多长的向量128 到 2048依下游任务而定随机种子复现性固定为某个整数两次运行结果一致这些参数里最容易出错的是归一化方式和基因 ID 体系。如果预训练用的是 log1p 归一化你给了原始 count模型输出的表示会明显偏离预训练分布。这个错误在推理时不会报错但下游分析结果会非常奇怪。4.2 微调时的参数策略如果你要做下游任务微调比如细胞类型注释、预后预测或药物反应预测我建议不要一上来就全量微调。先把模型冻结只训练任务头跑一个小数据集看任务能否收敛。能收敛再逐步解锁底层的若干层。学习率一般从 1e-5 到 3e-5 之间起步比从头训练的 Transformer 要低一个到两个数量级。因为预训练权重已经是一个较好的起点学习率过大容易破坏已经学到的表示。训练轮数不要死守某个固定值。观察验证集指标当指标不再提升且开始波动时就该早停。如果验证指标一直不涨先检查数据预处理、标签对齐和任务头的实现而不是盲目加轮数。4.3 评估指标怎么选基础模型本身很难用一个指标评价好坏通常要看它的下游任务表现。我建议至少从四个维度去评估。一是表示质量看嵌入空间的聚类是否和已知细胞类型对齐。可以用聚类纯度、NMI 或 ARI 来量化。二是迁移能力在一个队列上微调再在另一个队列上测试看精度下降多少。如果下降非常大说明模型没有学到真正的跨队列特征可能只是记住了训练集的批次效应。三是生物学可解释性看模型关注的区域或基因是否有生物学意义。比如某个细胞状态在嵌入空间中的最近邻居是不是功能相关的细胞类型模型识别的关键蛋白是否和已知通路一致。四是稳定性同一个样本多次推理得到的结果是否一致。尤其在使用 dropout 或随机采样时要确认推理模式已经关掉了随机性。5. 实战中最容易踩的坑和排查链路5.1 数据对齐失败导致的结果异常这类模型最常见的失败模式是“不报错但结果明显不对”。比如你输入一个正常组织的单细胞数据模型输出的细胞类型全是肿瘤相关类型。这种事情出现时优先检查预处理。我的一般排查顺序是先检查输入数据分布和论文示例数据做一个 PCA 或直方图对比看数值范围是否接近。再检查基因 ID 映射看有没有大量基因没有匹配到模型词汇表。如果超过 10% 的基因丢失结果基本不可信。检查模型配置和权重是否匹配比如 vocab size 不一致、层数不一致这些会在加载时报错。不报错只说明参数形状对不代表语义对。最后看输出嵌入空间的最近邻如果同一个样本的复制结果距离很远基本可以判断是输入格式问题。5.2 批次效应没处理好跨队列模型的一个重要前提是能处理批次效应但这不是自动的。即使模型本身做过批次校正推理时你仍然需要把批次信息正确地传进去。很多模型在推理时会要求一个 batch key表示样本来源。如果不提供模型只能当作单一批次处理跨队列能力会大打折扣。判断批次效应是否处理干净的简单方法把不同队列但相同细胞类型的数据投影到嵌入空间看它们是否混在一起。如果同类型细胞在不同队列间被分得很开说明批次效应没有充分校正。这时候你可以考虑做 Harmony 或 scVI 之类的额外校正或者检查是不是缺少了必要的输入信息。5.3 显存溢出和训练不稳定基础模型显存溢出非常常见尤其是处理空间或病理数据时patch 数量可能高达几十万。我的建议是先算一笔账输入 batch size 乘以每条样本的 token 数量乘以每条 token 的隐层维度再乘以每个参数大约需要的字节数就是大致的显存需求。这个粗略估算可以帮你提前判断能不能在当前显卡上跑。如果显存不够优先降低 batch size其次降低 patch 数和序列长度再考虑梯度累积和使用混合精度。不要一上来就换更大的卡很多时候是小数据集加小 batch 就能解决的问题。训练不稳定表现为 loss 波动大或发散优先检查学习率和梯度裁剪值。预训练模型的微调阶段梯度范数超过 1.0 就要留意超过 5.0 基本是学习率过大的信号。5.4 复现不到论文指标如果你按照论文的公开代码和数据处理流程做了但复现出来的指标比论文低不要急着怀疑模型或代码。先查这几件事数据版本是否一致、预处理脚本有没有被修改过、评估脚本里有没有泄漏标签、随机种子有没有固定、有没有用论文未公开的后处理步骤。更现实的情况是论文中的很多使用技巧并没有写进代码仓库或者仓库里的是简化版本。这时候你能做的就是尽量还原数据分布并且在社区提 issue。不要因为复现不到就忽视掉论文中最有价值的架构设计和分析思路那部分往往才是可以迁移到你自己问题上的东西。6. 从论文到应用这类模型的落地边界6.1 它适合什么场景不适合什么场景适合的场景很清楚你有多个尺度的肿瘤组学数据想把它们整合起来看全局规律或者你需要跨队列验证某个发现或者你不想为每个数据集单独训练一个模型希望能用预训练底座快速适配。不适合的场景也要说清楚。如果你的数据量极小比如只有几百个细胞或者几十张病理切片基础模型未必比传统方法更好。模型在大规模数据上预训练后对小数据的微调虽然能提高稳定性但如果数据本身信息量不足再大的模型也变不出新知识。另外一个不合适的场景是你只需要一个非常简单的分类任务传统方法已经做得很好没有必要引入大模型增加推理和维护成本。6.2 从论文到生产的距离论文发表和实际落地之间还有很长的路。基础模型要真正进入临床应用或常规科研流程至少还要过几关模型权重的可获取性、推理速度是否满足使用需求、输出是否可解释、跨中心迁移是否稳定还有软件依赖和计算资源的可维护性。从成本和收益角度看我觉得最优的使用方式不是把整套模型部署在自己的服务器上而是先做一次小规模试用用你自己的数据验证效果。效果如果确实比强基线好再考虑投入更多资源做服务化。如果差别不大那就说明你的数据和预训练分布之间的 gap 太大需要进一步适配而不是模型不好。6.3 最后说几点实操建议第一把论文的补充材料完整看一遍尤其是数据来源和预处理部分。很多模型做不好的原因追根到底是数据来源跟预训练分布不一致。第二建一个小的验证集包含你将来最关注的任务和衡量指标。先用这个验证集对比基础模型和传统方法的差异别用整批数据。第三把模型的嵌入表示保存下来它是一个很好的中间产物。后续做聚类、差异分析、可视化、甚至作为传统机器学习模型的输入特征都能用等于一份投入多次产出。第四遇到问题先看数据再看代码最后才看模型。我在实际项目里发现相当高比例的失败案例都出在数据侧格式不匹配、ID 没统一、归一化方式不一致、批次信息丢掉了。这类论文的意义不只是给了一个新模型更是提供了一种新的研究范式用一个统一的表示空间把分子、细胞和组织三个尺度的信息连起来。方向已经清楚了剩下的就看代码、数据和算力怎么跟上。