bear458加速器小熊官网入口

新闻动态

使用 AWS HealthOmics 和 Amazon SageMaker 进行基因组语言模型的预训

使用 AWS HealthOmics 和 Amazon SageMaker 进行基因组语言模型的预训练

重点摘要

本文介绍了如何利用 AWS HealthOmics 和 Amazon SageMaker 进行基因组语言模型的预训练,特别是模型 HyenaDNA。该过程结合了云存储、机器学习服务以及基因组数据,为相关领域提供了先进的分析能力。

引言

基因组语言模型是大规模语言模型在基因组学中的新兴应用。这篇博客帖子及其开源项目展示了如何使用 AWS 云中的基因组数据进行基因组语言模型 HyenaDNA 的预训练。在这里,我们利用AWS HealthOmics作为一个方便且经济的组学数据存储,同时使用Amazon SageMaker作为全托管的机器学习ML服务来训练和部署模型。

基因组语言模型

基因组语言模型是基因组学领域的新方法,可以理解 DNA 的语言。这些模型使用变换器架构,这是一种自然语言处理NLP技术,来解析大量的基因组信息,使研究人员和科学家能够比现有的计算方法更准确和经济地提取有意义的洞见。

基因组语言模型在各个行业和研究领域中具有巨大潜力,包括全基因组分析、交付护理、制药和农业。它们促进了新基因功能的发现、致病突变的识别和个性化治疗策略的开发,最终推动基因组驱动领域的创新和进步。

一些开创性的基因组语言模型包括:

DNABERT:此模型是第一次尝试使用变换器架构学习 DNA 语言。它基于人类参考基因组的双向编码器表示BERT架构进行预训练,并在下游监督任务中显示出良好的结果。核苷酸变换器:其架构类似于 DNABERT,展示了在更多数据上预训练和增加上下文窗口大小可以提高模型的准确性。HyenaDNA:与其他基因组模型一样使用变换器架构,但用 Hyena 运算符替换了每个自注意力层,使其能够处理多达 100 万个标记,显著超越之前模型的能力。

我们集中关注 HyenaDNA 模型的探索。预训练的 HyenaDNA 模型可以在Hugging Face找到,方便在现有项目中集成或作为新探索的起点。

AWS HealthOmics 和序列存储

AWS HealthOmics 是一个专门服务,帮助医疗和生命科学组织及其软件合作伙伴存储、查询和分析基因组、转录组和其他组学数据,并从这些数据中生成洞见,以改善健康并深入理解生物过程。它通过 HealthOmics 存储、分析和工作流能力支持大规模分析和协作研究。

使用 HealthOmics 存储,用户可以经济高效地存储、组织、分享和访问 PB 级生命信息数据,支持公平可发现、可访问、可互操作和可重用FAIR的数据存储。HealthOmics 序列存储通过根据使用情况自动进行分层和文件压缩带来成本节约,并通过生物学focused 的元数据和来源追踪促进共享和可发现性,提供迅速访问频繁使用的数据。

Amazon SageMaker

Amazon SageMaker 是 AWS 提供的一项全面管理的 ML 服务,旨在减少大规模训练和调整 ML 模型所需的时间和成本。借助 SageMaker 训练服务,用户可以高效地训练模型,而无需管理底层基础设施,支持 PyTorch 等流行深度学习框架。

解决方案概述

在这篇博客中,我们探讨了在组装基因组上预训练基因组语言模型。数据可以来源于公共资源如 GenBank或您自己的专有数据。以下是工作流程图:

开始时我们获取基因组数据。本博客使用来自 GenBank 的一个公共非参考鼠基因组,它是鼠基因组项目的一部分,表示了一种近交鼠系的共识基因组序列。这种基因组数据也可以与您在研究中使用的专有数据进行互换。使用一个SageMaker 笔记本处理基因组文件,并将其导入 HealthOmics 序列存储。启动训练任务使用第二个SageMaker 笔记本。在 SageMaker 环境中的管理训练任务内部,训练作业首先使用 HealthOmics 提供的 S3 URI 下载鼠基因组。然后,训练任务从 Hugging Face 检索 HyenaDNA 模型的检查点权重,这些权重经过在人类参考基因组上的预训练,使模型能够理解和预测基因组序列。利用这些资源,训练 HyenaDNA 模型,使用鼠基因组来细化参数。训练完成后,模型被保存到 Amazon S3。最后将模型部署为 SageMaker 实时推理端点并进行测试。

数据准备和载入序列存储

在我们的机器学习工作流程中,首要步骤是准备数据。我们通过将基因组序列上传到 HealthOmics 序列存储来开始。标准的参考序列存储格式为 FASTA 文件,但我们将其转换为更能反映组装数据样本格式的 FASTQ 格式。

在示例 Jupyter 笔记本中,我们展示了如何从 GenBank 下载 FASTA 文件,将其转换为 FASTQ 文件,并加载到 HealthOmics 序列存储。如果您已经有自己的基因组数据在序列存储里,可以跳过此步骤。

在 SageMaker 上训练

我们使用 PyTorch 和 Amazon SageMaker 的脚本模式来训练这个模型。脚本模式与 PyTorch 的兼容性至关重要,使我们能够以最小的修改使用现有脚本。训练过程中,我们通过序列存储提供的 S3 URIs 提取训练数据。

pythonseqstoreid = 4308389581seqstoreinfo = omicsgetsequencestore(id=seqstoreid)s3uri = seqstoreinfo[s3Access][s3Uri]s3arn = seqstoreinfo[s3Access][s3AccessPointArn]keyarn = seqstoreinfo[sseConfig][keyArn]s3uri s3arn keyarn

S3DATAURI = f{s3uri}readSet/S3DATAURI

当您将此信息提供给 SageMaker 估算器时,训练任务将自动处理从序列存储中下载数据的过程。我们按照Nguyen 等人的建议,训练 2、4、6、8、X 和 1419 号染色体,对 1、3、12 和 13 号染色体进行交叉验证,对 5、7、911 号染色体进行测试。

为了最大化 HyenaDNA 模型的训练效率,我们使用分布式数据并行DDP技术,可以在多个 GPU 上并行处理训练任务。实际上,我们使用了Hugging Face Accelerate 库来实现 DDP,使得分布式训练的设置更加简单。

结果

在我们的训练周期中,我们处理了一个包含一只鼠基因组的 10000 条目的数据集。我们的计算资源包括一个配置为 mlg512xlarge 的集群,搭载四个 Nvidia A10G GPU。32k 序列长度模型以每个 GPU 采用四个的批量大小训练,完成了 150 轮的训练,报告如下结果。

评估指标:评估的困惑度及损失图表显示初始下降趋势后趋于平稳。最初的急剧下降表明模型快速学习训练数据,提升了预测性能,而训练后期的平稳阶段则是模型收敛的典型现象。

使用 AWS HealthOmics 和 Amazon SageMaker 进行基因组语言模型的预训

训练指标:同样,训练的困惑度和损失图表显示出最初急剧改善,随后渐趋平稳。这表明模型有效地学习了数据。训练损失的轻微波动则表明模型在对训练数据内在复杂性作出响应,并继续微调其参数。

部署

训练完成后,我们在 SageMaker 实时端点上部署了模型。SageMaker 实时端点提供了一种按需可伸缩的方式来生成基因组序列的嵌入。

在我们的 SageMaker 实时端点设置中,需要调整默认配置以处理大负载,具体为 32k 的上下文窗口,因为默认的 65 MB 的负载大小并不足够,因此我们将其增加到超过 50 MB:

pythonhyenaDNAModel = PyTorchModel( modeldata=modeldata role=SAGEMAKEREXECUTIONROLE imageuri=pytorchdeploymenturi entrypoint=inferencepy sourcedir=scripts/ sagemakersession=sagemakersession name=endpointname env={ TSMAXRESPONSESIZE 60000000 TSMAXREQUESTSIZE 60000000 })

部署端点

realtimepredictor = hyenaDNAModeldeploy( initialinstancecount=1 instancetype=mlg58xlarge endpointname=endpointname env=env)

用户提交一个序列到端点,可以快速收到 HyenaDNA 生成的相应嵌入。这些嵌入封装了在训练过程中学习的复杂模式和关系,以有利于后续分析和预测建模。下面是如何调用模型的示例:

pythonimport jsonfrom sagemakerdeserializers import JSONDeserializerfrom sagemakerserializers import JSONSerializer

免费IP加速器

samplegenomedata = []with open(/samplemousedatajson) as file for line in file samplegenomedataappend(jsonloads(line))data = [samplegenomedata[0]]realtimepredictorserializer = JSONSerializer()realtimepredictordeserializer = JSONDeserializer()realtimepredictorpredict(data=data)

提交样本基因组序列后,模型会返回该序列的嵌入数据:

json{embeddings [[050390625 0447265625 103125 0546875 ]]}

结论

我们展示了如何预训练一个具有 32k 上下文窗口的 HyenaDNA 模型,并生成可用于下游预测任务的嵌入。通过本文所示的技术,您也可以以不同的上下文窗口大小例如,1 百万个标记和在其他基因组数据上预训练 HyenaDNA 模型。

在大型多样化数据集上进行基因组模型的预训练是为下游任务做准备的重要一步,例如识别与疾病相关的基因变异或预测基因表达水平。本博客中,您了解到 AWS 如何借助 HealthOmics 和 SageMaker 提供可扩展且成本高效的基础设施来促进这一预训练过程。展望未来,研究者可以利用这些预训练模型加速其项目,利用特定数据集进行微调,以获得对基因研究更深的洞见。

若要探索更多细节并尝试使用这些资源,欢迎访问我们的GitHub 存储库。我们还鼓励您访问 Amazon SageMaker 文档和AWS HealthOmics 文档了解更多信息。

关于作者

Shamika Ariyawansa 是亚马逊网络服务AWS全球医疗保健和生命科学部门的高级 AI/ML 解决方案架构师,专注于生成性 AI。他帮助客户将生成性 AI 集成到项目中,强调使用大型语言模型LLM的在医疗保健和生命科学领域的应用。除了职业承诺外,Shamika 对滑雪和越野探险充满热情。

Simon Handley,博士,是亚马逊网络服务全球医疗保健和生命科学团队的高级 AI/ML 解决方案架构师。他在生物技术和机器学习领域拥有超过 25 年的经验,热衷于帮助客户解决机器学习和基因组挑战。在闲暇时,他喜欢骑马和打冰球。

创建多语言个人日历助手:运用 Amazon Bedrock 与 AWS Step Functions作者:Feng Lu,发布日期:2024年7月3日在Amazon Bedrock、Amazon Simple Email Service (SES)、AWS Step Functions等多个领域,本...

利用数据科学和AWS Shield Advanced、AWS WAF应对DDoS攻击关键要点本文章探讨了如何使用AWS Shield Advanced、AWS WAF和数据科学来减轻分布式拒绝服务DDoS攻击的风险。我们将研究如何结合这些服务和机器学习ML来检测和防止DDoS攻击,以增强在线支付解决...