跳到内容

发布说明

BioNeMo 框架 v2.3

新功能

  • ESM2 和 Geneformer 的分布式推理支持
  • 随着 GPU 数量的增加,实现线性推理吞吐量
  • 请参阅 ESM2 推理笔记本并使用 --num-gpus 参数。

更新和改进

  • 修复了先前 Geneformer 在 H100 上的推理精度回归问题。
  • 基础镜像已更新为 nvcr.io/nvidia/pytorch:24.12-py3;python 已更新为 3.12 以及其他核心依赖项升级(此处为基础容器发布说明)。

BioNeMo 框架 v2.2

新功能

  • 小分子特征化
  • 实施了基本和高级的原子、键和全分子特征器。
  • BioNeMo 的 GH200 支持
  • 添加了 Dockerfile.arm,用于构建在 GH200 机器上运行的 BioNeMo 容器。
  • 发布一个 BioNeMo 容器版本,该版本支持多种架构到 NGC。

更新和改进

  • 单细胞数据加载器 (SCDL)
  • 将元数据存储更改为 parquet 文件,这在迭代大型数据集时创建了 30 倍的速度提升。
  • 添加了连接多个 anndata 文件的功能,而不会使磁盘内存使用量翻倍。
  • ESM2
  • 添加了对 SIGTERM 抢占检查点保存的支持。
  • 将 ESM-2 和 Geneformer 训练脚本移至新的可执行文件,分别为 train_esm2train_geneformer
  • 将推理脚本移至新的可执行文件 infer_esm2,并弃用了微调教程中的推理示例。
  • 添加了用于推理和零样本蛋白质设计的新 Jupyter notebook 教程。这些笔记本可以作为 brev.dev 可启动项部署在云资源上。

已知问题

  • 在 H100 上加载用于 Geneformer 推理的检查点存在已知的精度回归问题。正在努力在下一个版本中解决。

BioNeMo 框架 v2.1

新功能

  • ESM2 实施
  • 更新了 ESM-2 模型卡,其中包含详细的性能基准,比较了 BioNeMo2 训练与 vanilla pytorch。
  • 添加了用于评估预训练模型的 ESM-2 推理端点
  • 尺寸感知批处理
  • 添加了 SizeAwareBatchSampler,这是一个 pytorch 数据采样器,可对不同大小的元素进行批处理,同时确保每个批次的总大小不超过指定的最大值。
  • 添加了 BucketBatchSampler,另一个 pytorch 数据采样器,它根据预定义的存储桶范围对不同大小的元素进行分组,并从每个存储桶创建批次,以确保每个批次都具有大小同质的元素。
  • CLI 支持
  • 添加了 pydantic 接口,用于通过解析 JSON 配置文件进行预训练作业,从而可以传递自定义的 Model 和 DataModules 类。
  • 为 Geneformer 和 ESM2 预训练和微调实施了 pydantic 配置。
  • 添加了用于生成已验证 JSON 文件以与 pydantic 接口一起使用的“recipes”。
  • 分别为 2/3 添加了可安装脚本,bionemo-esm2-recipe、bionemo-esm2-train、bionemo-geneformer-recipe、bionemo-geneformer-train。
  • BioNeMo2 中的 Geneformer 支持
  • 测试了预训练脚本和微调示例脚本,这些脚本可用作用户创建自定义派生模型的起点。
  • Geneformer 10M 和 106M 检查点从 BioNeMo v1 移植到 BioNeMo v2,并且包含在文档中。
  • 添加了推理脚本
  • 文档
  • 细胞类型分类示例笔记本,其中涵盖了将 anndata 转换为我们的内部格式,并使用 geneformer 检查点在该数据上运行推理的过程,以及利用推理结果。
  • 更新了入门指南、ESM-2 教程
  • 添加了常见问题解答 (FAQ) 页面

BioNeMo 框架 v2.0

新功能

  • ESM-2 实施
  • 最先进的训练性能和与参考实现相当的精度
  • 提供 650M 和 3B 规模的检查点,这些检查点镜像了参考模型
  • 灵活的微调示例,可以复制和修改以完成各种下游任务
  • 我们基于 NeMo v2 的参考实现的第一个版本,它将 bionemo 重新构想为 megatron 模型、数据加载器和训练 recipes 的存储库,这些 recipes 利用 NeMo v2 进行训练循环。
  • 模块化设计和可允许的 Apache 2 OSS 许可证允许在专有应用程序中导入和使用我们的框架。
  • NeMo2 训练抽象允许用户专注于模型实现,而训练策略处理分布式和模型并行性。
  • BioNeMo 2 的文档和文档构建系统。

已知问题

  • PEFT 支持尚未完全实现功能。
  • Geneformer 的部分实现已存在,使用风险自负。它将在未来进行优化并正式发布。
  • 命令行界面当前基于一次性训练 recipes 和脚本。我们正在开发一种基于配置的方法,该方法将在未来发布。
  • 微调工作流程是为基于 BERT 的架构实现的,并且可以适用于其他架构,但这要求您从 biobert 基础模型配置继承。从短期来看,您可以遵循类似的模式,将旧检查点中的权重部分加载到新模型中,但是将来我们将拥有更直接的 API,这将更容易遵循。
  • 在 ESM-2 预训练期间发生缓慢的内存泄漏,这可能会在长时间的预训练运行期间导致 OOM。在 40 个 A100 上以 48 的微批次大小进行训练后,在 5,800 个训练步骤后引发了内存不足错误。
  • 可能的解决方法包括在每约 1,000 个步骤调用 gc.collect(); torch.cuda.empty_cache(),这似乎可以回收已消耗的内存;或者使用较低的微批次大小进行训练,并定期从保存的检查点重新启动训练。

BioNeMo 框架 v1.9

新功能

  • [文档] 更新的、可执行的 ESM-2nv 笔记本,演示了:使用自定义数据集进行数据预处理和模型训练、在 FLIP 数据上进行微调、在 OAS 序列上进行推理、从头开始进行预训练和继续训练
  • [文档] 新笔记本演示了使用 ESM-2nv 的零样本蛋白质设计。感谢 A-Alpha Bio 的 @awlange 贡献了此 recipe 的原始版本!

错误修复和改进

  • [Geneformer] 修复了由于相关工件重新定位而导致的预处理中的错误。
  • [Geneformer] 修复了微调中的错误,以使用较新的预处理构造函数。

BioNeMo 框架 v1.8

新功能

  • [文档] 更新的、可执行的 MolMIM 笔记本,演示了:在自定义数据上进行训练、推理和下游预测、ZINC15 数据集预处理和 CMA-ES 优化
  • [依赖项] 将框架升级到 NeMo v1.23,它将 PyTorch 更新到 2.2.0a0+81ea7a4 版本,并将 CUDA 更新到 12.3 版本。

错误修复和改进

  • [ESM2] 修复了编码器微调中梯度累积的错误
  • [MegaMolBART] 使 MegaMolBART 编码器微调尊重用户设置的随机种子
  • [MegaMolBART] 使用 val_check_interval=1 进行微调的错误修复

已知问题

  • 观察到模型 DNABERT、Geneformer、MolMIM 的训练速度略有下降
  • 两个已知的严重 CVE GHSA-cgwc-qvrx-rf7f、GHSA-mr7h-w2qc-ffc2。这些漏洞出现在 lightning 默认安装的软件包中。我们在 bionemo 框架容器中不使用该软件包。我们也无法删除有问题的软件包,因为它是作为安装 lightning 的副作用而安装的。
  • 来自 pytorch 的两个已知的 High CVE:GHSA-pg7h-5qx3-wjr3、GHSA-5pcm-hx3q-hm94。

BioNeMo 框架 v1.7

新模型

  • DSMBind 是在 BioNeMo 框架下开发的模型,它可以生成用于对蛋白质-配体结合亲和力进行排序的比较值。此版本具有使用新训练的检查点执行推理的功能。

新功能

  • [EquiDock] 在 equidock 推理后,删除空间位阻作为后处理步骤。
  • [文档] 更新了入门部分,其中按顺序描述了先决条件、BioNeMo 框架访问、启动说明和后续步骤。

已知问题

  • NLTK 存在已知的安全漏洞,该漏洞可能允许通过 nltk.download() 下载的外部资产 pickle 文件执行任意代码 (https://github.com/nltk/nltk/issues/3266)。BioNeMo 本身不以任何方式使用此依赖项,但是 NeMo 文本到语音 (nemo.collections.tts) 的某些部分确实使用了此易受攻击的代码路径。由于 NeMo 已安装在 BioNeMo 发布容器中,因此强烈建议用户在使用 nemo.collections.tts 或 nltk 时谨慎行事。

BioNeMo 框架 v1.6

新功能

  • [模型微调] 添加了 model.freeze_layers 微调配置参数,以冻结指定数量的层。感谢 github 用户 @nehap25
  • [ESM2] 现在支持加载预训练的 ESM-2 权重,并在自定义 FASTA 数据集上继续进行 MLM 目标预训练。
  • [OpenFold] MLPerf 功能 3.2 错误 (mha_fused_gemm) 修复已合并。
  • [OpenFold] MLPerf 功能 3.10 已集成到 bionemo 框架中。
  • [DiffDock] 更新了 DiffDock 模型训练的数据加载模块,从 sqlite3 后端更改为 webdataset。

BioNeMo 框架 v1.5

新模型

  • Geneformer 已脱离 Beta 状态。此版本包括新训练的检查点和基准,包括一个基于出版物的 10M 参数变体,以及迄今为止公开提供的最大变体 geneformer,具有 106M 参数。

BioNeMo 框架 v1.4

新模型

  • Beta Geneformer,一种用于单细胞数据的基础模型,可将每个细胞编码为该细胞的差异表达基因的有序列表表示。

新功能

  • Beta Geneformer 使用自定义数据集进行预训练
  • ESM2 的低秩自适应 (LoRA) 微调

错误修复和改进

  • OpenFold 训练改进了基准并验证了优化

已知问题

  • BioNeMo 框架 v24.04 容器容易受到 onnx 1.14.0 中的 GHSA-whh8-fjgc-qp73 的攻击。建议用户不要使用此镜像打开不受信任的 onnx 文件。限制您的挂载点以最大限度地减少目录遍历影响。此问题的修复程序计划在 24.05(5 月)版本中发布。

BioNeMo 框架 v1.3

新模型

新功能

  • MolMIM 在更多数据上重新训练,现已在框架中提供,并实现了 最先进的性能
  • MolMIM 属性引导的教程笔记本,涵盖了使用我们新的框架模型进行属性引导的优化。
  • MolMIM 训练教程,引导用户完成从头开始训练或从您自己的数据上的现有检查点进行训练。
  • MolMIM 教程笔记本,涵盖分子采样和属性预测,现已推出。
  • 来自 NVIDIA 参加 MLPerf 竞赛 的众多优化已添加到 OpenFold 中。文档和详细的基准正在进行中,将在即将发布的版本中发布。此版本包含以下性能优化
    • 多头注意力 (MHA) 中的融合 GEMM
    • 非阻塞数据管道
    • BF16 精度训练
    • 融合 MHA 门控
    • Inductor 编译的 LayerNorm
    • OpenAI Triton LayerNorm 内核
    • OpenAI Triton MHA

错误修复和改进

  • NeMo 升级到 v1.22(请参阅 NeMo 发布说明),
  • PyTorch Lightning 升级到 2.0.7
  • NGC CLI 已从发布容器中删除。如果用户从容器内部下载模型(例如,使用 bionemo_data_download 或通过运行特定的单元测试),则 NGC CLI 将自动安装以从 NGC 拉取模型。

已知问题

  • BioNeMo 框架 v24.03 容器容易受到 onnx 1.14.0 中的 GHSA-whh8-fjgc-qp73 的攻击。建议用户不要使用此镜像打开不受信任的 onnx 文件。限制您的挂载点以最大限度地减少目录遍历影响。

BioNeMo 框架 v1.2

新模型

  • BioNeMo 框架下的 OpenFold 实现,源自公共 OpenFold 和 DeepMind AlphaFold-2。
  • DNABERT 实现,用于计算输入 DNA 序列中每个核苷酸的嵌入。

新功能

  • DNABERT 和 OpenFold 的训练 recipes,包括自动数据处理和完整的训练配置。
  • 使用 OpenFold 运行推理的示例教程。
  • DNABERT 的剪接预测下游任务示例。
  • 用于在 BCP 上启动作业的 DNABERT 和 OpenFold 的包装脚本。

错误修复和改进

  • 改进了 ESM-2 数据摄取和预处理的界面。该界面允许显式指定训练集、验证集和测试集。用户可以设置 config.model.data.default_dataset_path 以保持先前的行为,或者设置 config.model.data.train.dataset_pathconfig.model.data.val.dataset_pathconfig.model.data.test.dataset_path,它们都可以是唯一的。

已知问题

  • OpenFold 训练速度尚不包括 MLPerf 优化,这些优化将在后续版本中发布。

BioNeMo 框架 v1.1

新模型

  • EquiDock 用于蛋白质-蛋白质对接姿势预测
  • DiffDock 用于蛋白质-配体盲对接姿势生成

新功能

  • EquiDock 和 DiffDock 的训练 recipes,包括自动数据处理和完整的训练配置。
  • 通过快速张量积内核加速 DiffDock 的推理和训练。
  • 使用 EquiDock 和 DiffDock 运行推理的示例教程。
  • 在 BCP 和 Slurm 上运行 EquiDock 和 DiffDock 的 Recipes。
  • ESM-2nv 支持管道并行。
  • 将推理笔记本迁移到使用 pytriton。

错误修复和改进

  • 更快地预处理 BCP 上的数据。
  • 将 download_models.sh 重构为 download_models.py,以便更轻松地使用 CLI。
  • 重构安装结构,从 /opt/nvidia 移动到 /workspace/bionemo。环境变量 $BIONEMO_HOME 现在指向 repo 根目录,并且必须设置该变量才能使测试通过。

安全公告

发布容器中的 SchedMD Slurm 附带安全漏洞 CVE-2022-29501,因此不应使用此版本的 Slurm 运行 Slurm 集群(特别是进程 slurmdbdslurmctldslurmd

一般来说,BioNeMo 框架版本旨在发布将在本地工作站上执行或部署在集群上以进行大规模训练作业的代码和环境。此容器并非旨在作为具有面向公众的 API 的服务运行。有关安全漏洞的完整摘要,请访问 此处

BioNeMo 框架 v1.0

新模型

  • ESM-2nv 用于蛋白质序列表示,提供从 HF 检查点转换而来的 ESM-2 650M 和 ESM-2 3B 的预训练权重。

新功能

  • ESM-2nv 的预训练 recipes,包括自动数据处理和完整的训练配置
  • 使用冻结或可训练的编码器对 ESM-2nv 进行微调
  • 下游任务微调支持单值分类(例如亚细胞定位)、单值回归(例如熔解组)和每个令牌分类(例如二级结构)
  • 循环验证以评估训练期间下游任务的性能
  • 预训练、微调和下游任务的示例教程

BioNeMo 框架 v0.4.0

新模型

  • ESM-1nv 用于蛋白质序列表示,提供预训练权重
  • ProtT5nv 用于蛋白质序列表示和序列到序列任务,提供预训练权重

新功能

  • 所有模型的预训练,包括自动数据处理和完整的训练配置
  • 使用冻结或可训练的编码器对 MegaMolBART、ESM-1nv 和 ProtT5nv 进行微调
  • 下游任务示例应用程序 – ESM-1nv 和 ProtT5nv 的二级结构预测、MegaMolBART 的理化性质预测(亲脂性、FreeSolv、ESOL)和逆合成预测
  • 循环验证以评估训练期间下游任务的性能:理化性质预测 (MegaMolBART) 和二级结构预测 (ESM-1nv 和 ProtT5nv)。
  • 管道并行作为 beta 功能受支持。尚未完全测试。
  • 预训练、微调和下游任务的示例笔记本

已知问题

  • DGX Cloud 上的数据预处理速度很慢。在本地计算机上执行速度更快。

新 API

  • BioNeMoDataModule - 封装 bionemo 模型中的数据集实例化,以便可以使用相同的模型使用许多不同的数据集
  • EncoderFineTuning - 基础类,用于促进构建在来自其他模型的嵌入之上的下游任务的实现