BioNeMo 测试数据管理
此库管理文档或测试套件中使用的大型或二进制数据文件的下载和缓存。 这些文件不应直接提交到仓库,而应在需要时在测试时加载。
我们目前支持两个用于测试数据或保存模型的位置
- SwiftStack
-
SwiftStack 或
pbss
是 NVIDIA 内部的、与 s3 兼容的对象存储,允许非常大的数据和快速的并行读/写。 最关键的是,pbss
可以在未经数据集重新分发法律批准的情况下上传。 这些文件外部合作者无法访问。 - NGC
-
NGC 托管容器、模型和资源,其中一些需要身份验证,另一些则通常可用。 此库使用模型和资源类型来保存测试数据和参考模型权重。 这些项目外部合作者可以访问,但在重新分发测试数据之前需要法律批准。
加载测试或示例数据
测试数据通过 yaml 文件在 sub-packages/bionemo-testing/src/bionemo/testing/data/resources
中指定。 例如,在 esm2.yaml
中
- tag: nv_650m:1.0
ngc: "nvidia/clara/esm2nv650m:1.0"
ngc_registry: model
pbss: "s3://bionemo-ci/models/esm2nv_650M_converted.nemo"
sha256: 1e38063cafa808306329428dd17ea6df78c9e5d6b3d2caf04237c555a1f131b7
owner: Farhad Ramezanghorbani <farhadr@nvidia.com>
description: >
A pretrained 650M parameter ESM-2 model.
See https://ngc.nvidia.com/catalog/models/nvidia:clara:esm2nv650m.
要在测试期间加载这些模型权重,请使用 load 函数,并使用所需资产的文件名和标签,这将返回指定文件的路径
path_to_my_checkpoint = load("esm2/nv_650m:1.0")
config = ESM2Config(nemo1_ckpt_path=path_to_my_checkpoint)
如果在本地机器上没有可用数据的情况下调用此函数,它将从默认源(当前为 pbss
)获取。 否则,它将返回缓存目录。 要使用 NGC 下载,请将 source="ngc"
传递给 load。
文件解包和/或解压缩
所有测试工件都是单独的文件。 如果指定了 zip 或 tar 存档,它将自动解包,并且目录的路径将通过 load 返回。 压缩文件(“gzip”、“bz2”或“xz”)在返回之前会自动解压缩。 文件的压缩和/或存档格式根据 pbss
URL 中指定的文件名确定。
NGC 资源中的文件
NGC 资源是文件夹,即它们可能包含每个资源的多个文件。 load 将仅下载与 pbss
url 的词干匹配的文件名。 因此,同一个 NGC 资源可用于托管多个独立使用的测试资产。
添加新的测试资产
要添加新数据,首先确保数据可以从 NGC 或 pbss
获得。 接下来,在 sub-packages/bionemo-testing/src/bionemo/testing/data/resources
中扩展或创建一个新的 yaml 文件,其中包含所需的信息。 必须为所有资产提供所有者电子邮件。 描述和 ngc
字段目前是可选的。 如果 sha256
未指定,pooch
将在加载时报告下载文件的 sha。
警告
应为所有文件提供 SHA,以确保下载正确完成,并在文件更改时使缓存失效。