0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用基于NVIDIA GPU的RAPIDS cuML实现取代KRR 

jf_pJlTbmA9 来源:NVIDIA 作者:NVIDIA 2023-07-05 16:30 次阅读

单细胞测量技术发展迅速,彻底改变了生命科学。我们已经从测量几十个细胞扩展到数百万个细胞,从一种模式扩展到多个高维模式。单个细胞水平上的大量信息为训练机器学习模型提供了一个很好的机会,帮助我们更好地理解 intrinsic link of cell modalities ,这可能会对合成生物学和 drug target discovery 产生变革。

这篇文章介绍了模态预测,并解释了我们如何用基于 NVIDIA GPU 的 RAPIDS cuML 实现取代基于 CPU 的 TSVD 和内核岭回归( KRR ),从而加速了 NeurIPS Single-Cell Multi-Modality Prediction Challenge 的获胜解决方案。

使用 cuML ,只修改了六行代码,我们加速了基于 scikit 学习的获胜解决方案,将训练时间从 69 分钟缩短到 40 秒:速度提高了 103.5 倍!即使与 PyTorch 中开发的复杂深度学习模型相比,我们观察到 cuML 解决方案对于这种预测挑战来说更快更准确。

多亏了单细胞技术,我们可以测量同一单细胞内的多种形态,如 DNA 可达性( ATAC )、 mRNA 基因表达( GEX )和蛋白质丰度( ADT )。图 1 显示了这些模式之间的内在联系。只有可获得的 DNA 才能产生 mRNA ,而 mRNA 又被用作生产蛋白质的模板。

当期望从一个模态预测另一个模态时,模态预测的问题自然出现。在 2021 NeurIPS challenge 中,我们被要求预测从 ATAC 到 GEX 以及从 GEX 到 ADT 的信息流。

若一个机器学习模型能够做出好的预测,那个么它一定已经了解了细胞的复杂状态,它可以为细胞生物学提供更深入的见解。扩展我们对这些调控过程的理解,对于药物靶点的发现也具有革命性意义。

模态预测是一个多输出回归问题,它提出了独特的挑战:

High cardinality.例如, GEX 和 ADT 信息分别以长度为 13953 和 134 的矢量描述。

Strong bias.数据收集自 10 个不同的捐赠者和 4 个地点。培训和测试数据来自不同的站点。捐赠者和站点都强烈影响数据的分布。

稀疏、冗余和非线性。模态数据稀疏,列高度相关。

在这篇文章中,我们专注于 GEX 到 ADT 预测的任务,以证明单个 – GPU 解决方案的效率。我们的方法可以扩展到使用多节点多 GPU 架构的具有更大数据量和更高基数的其他单细胞模态预测任务。

使用 TSVD 和 KRR 算法进行多目标回归

作为基线,我们使用了密歇根大学邓凯文教授的 NeurIPS 模态预测挑战“ GEX 到 ADT ”的 first-place solution 。核心模型的工作流程如图 2 所示。训练数据包括 GEX 和 ADT 信息,而测试数据只有 GEX 信息。

任务是预测给定 GEX 的测试数据的 ADT 。为了解决数据的稀疏性和冗余性,我们应用截断奇异值分解( TSVD )来降低 GEX 和 ADT 的维数。

特别是,两种 TSVD 模型分别适用于 GEX 和 ADT :

对于 GEX , TSVD 适合训练和测试的级联数据。

对于 ADT , TSVD 仅适合训练数据。

在邓的解决方案中, GEX 的维度从 13953 大幅降低到 300 , ADT 从 134 大幅降低到 70 。

主成分 300 和 70 的数量是通过交叉验证和调整获得的模型的超参数。然后将训练数据的 GEX 和 ADT 的简化版本与 RBF 核一起馈送到 KRR 中。根据邓的方法,在推理时,我们使用经过训练的 KRR 模型执行以下任务:

预测测试数据的 ADT 的简化版本。

应用 TSVD 的逆变换。

恢复测试数据的 ADT 预测。

model-overview.png

图 2.模型概述。块表示输入和输出数据,块旁边的数字表示尺寸。

通常, TSVD 是对稀疏数据执行降维的最常用选择,通常在特征工程期间使用。在这种情况下, TSVD 用于减少特征( GEX )和目标( ADT )的尺寸。目标的降维使下游多输出回归模型更加容易,因为 TSVD 输出在列之间更加独立。

选择 KRR 作为多输出回归模型。与 SVM 相比, KRR 同时计算输出的所有列,而 SVM 一次预测一列,因此 KRR 可以像 SVM 一样学习非线性,但速度更快。

使用 cuML 实现 GPU 加速解决方案

cuML 是 RAPIDS 库之一。它包含一套 GPU 加速机器学习算法,可提供许多高度优化的模型,包括 TSVD 和 KRR 。您可以将基线模型从 scikit 学习实现快速调整为 cuML 实现。

I在下面的代码示例中,我们只需要更改六行代码,其中三行是导入。为简单起见,省略了许多预处理和实用程序代码

Baseline sklearn implementation:

from sklearn.decomposition import TruncatedSVD from sklearn.gaussian_process.kernels import RBF from sklearn.kernel_ridge import KernelRidge tsvd_gex = TruncatedSVD(n_components=300) tsvd_adt = TruncatedSVD(n_components=70) gex_train_test = tsvd_gex.fit_transform(gex_train_test) gex_train, gex_test = split(get_train_test) adt_train = tsvd_adt.fit_transform(adt_train) adt_comp = tsvd_adt.components_ y_pred = 0 for seed in seeds: gex_tr,_,adt_tr,_=train_test_split(gex_train, adt_train, train_size=0.5, random_state=seed) kernel = RBF(length_scale = scale) krr = KernelRidge(alpha=alpha, kernel=kernel) krr.fit(gex_tr, adt_tr) y_pred += (krr.predict(gex_test) @ adt_comp) y_pred /= len(seeds)

RAPIDS cuML implementation:

from cuml.decomposition import TruncatedSVD from cuml.kernel_ridge import KernelRidge import gctsvd_gex = TruncatedSVD(n_components=300) tsvd_adt = TruncatedSVD(n_components=70) gex_train_test = tsvd_gex.fit_transform(gex_train_test) gex_train, gex_test = split(get_train_test) adt_train = tsvd_adt.fit_transform(adt_train)adt_comp = tsvd_adt.components_.to_output('cupy')y_pred = 0 for seed in seeds: gex_tr,_,adt_tr,_=train_test_split(gex_train, adt_train, train_size=0.5, random_state=seed)krr = KernelRidge(alpha=alpha,kernel='rbf')krr.fit(gex_tr, adt_tr)gc.collect()y_pred += (krr.predict(gex_test) @ adt_comp) y_pred /= len(seeds)

cuML 内核的语法与 scikit learn 略有不同。我们没有创建独立的内核对象,而是在 KernelRidge 的构造函数中指定了内核类型。这是因为 cuML 还不支持高斯过程。

另一个区别是当前版本的 cuML 实现需要显式垃圾收集。在这个特定的循环中创建了某种形式的引用循环,并且在没有垃圾收集的情况下不会自动释放对象。有关更多信息,请参阅 /daxiongshu/rapids_nips_blog GitHub 存储库中的完整笔记本。

后果

我们将 TSVD + KRR 的 cuML 实施与 CPU 基线和挑战中的其他顶级解决方案进行了比较。 GPU 解决方案在单个 V100 GPU 上运行, CPU 解决方案在双 20 核 Intel Xeon CPU 上运行。竞争的度量是均方根误差( RMSE )。

我们发现, TSVD + KRR 的 cuML 实现比 CPU 基线快 103 倍,由于管道中的随机性,分数略有下降。然而,比分仍然比比赛中的任何其他车型都好。

我们还将我们的解决方案与两种深度学习模型进行了比较:

第四名解决方案:Multilayer Perceptron (MLP)

第二名解决方案:Graph Neural Network (GNN)

这两个深度学习模型都在 PyTorch 中实现,并在单个 V100 GPU 上运行。这两个深度学习模型都有许多层,需要训练数百万个参数,因此容易对该数据集进行过度拟合。相比之下, TSVD + KRR 只需训练少于 30K 的参数。图 4 显示,由于其简单性, cuML TSVD + KRR 模型比深度学习模型更快、更准确。

performance-training-comparison.png

图 4.绩效和培训时间对比。横轴为对数刻度。

结论

由于其闪电般的速度和用户友好的 API , RAPIDS cuML 对于加速单细胞数据的分析非常有用。通过少量的代码更改,您可以提升现有的 scikit 学习工作流。

此外,在处理单细胞模态预测时,我们建议从 cuML TSVD 开始,以减少下游任务的数据维度和 KRR ,从而实现最佳加速。

使用 /daxiongshu/rapids_nips_blog GitHub 存储库上的代码尝试这个 RAPIDS cuML 实现。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4843

    浏览量

    102697
  • AI
    AI
    +关注

    关注

    87

    文章

    29665

    浏览量

    268004
  • 电池
    +关注

    关注

    84

    文章

    10386

    浏览量

    128506
收藏 人收藏

    评论

    相关推荐

    NVIDIA火热招聘GPU高性能计算架构师

    这边是NVIDIA HR Allen, 我们目前在上海招聘GPU高性能计算架构师(功能验证)的岗位,有意向的朋友欢迎发送简历到 allelin@nvidia
    发表于 09-01 17:22

    NVIDIA-SMI:监控GPU的绝佳起点

    nvidia-smi可执行文件位于虚拟机管理程序上。如果在同一部署中您选择在GPU上使用作为传递,那么GPU正在寻找访客上的NVIDIA驱动程序,因此
    发表于 09-04 15:18

    NVIDIA Vmware vSphere-6.5升级无法启动GPU

    我们已经将esxi主机升级到6.5并将VIB升级到从Nvidia网站下载的受支持的NVIDIA-kepler-vSphere-6.5-367.64-369.71,但基本机器将无法启动GPU(PCI
    发表于 09-20 11:41

    购买哪款Nvidia GPU

    Nvidia的NV 24核,224 GB RAM,1.4 GB临时存储。这是相当昂贵的(每月费用超过3,400美元),除非我承诺1年或3年的承诺,略有减少。我认为如果我购买GPU服务器,从长远来看可能会更便
    发表于 09-26 15:30

    NVIDIA网格GPU-PSOD的支持结构

    they blamed it on the nvidia gpu but they dont know if its a driver or hardware issue.Can a ticket be open
    发表于 10-10 16:15

    Nvidia GPU风扇和电源显示ERR怎么解决

    问题最近在Ubuntu上使用Nvidia GPU训练模型的时候,如果机器锁屏一段时间再打开的时候鼠标非常卡顿,或者说显示界面非常卡顿,使用nvidia-smi查看发现,训练模型的GPU
    发表于 12-30 06:44

    在Ubuntu上使用Nvidia GPU训练模型

    问题最近在Ubuntu上使用Nvidia GPU训练模型的时候,没有问题,过一会再训练出现非常卡顿,使用nvidia-smi查看发现,显示GPU的风扇和电源报错:解决方案自动风扇控制在
    发表于 01-03 08:24

    探求NVIDIA GPU极限性能的利器

    1、探求 NVIDIA GPU 极限性能的利器  在通常的 CUDA 编程中,用户主要通过 CUDA C/C++ 或 python 语言实现 CUDA 功能的调用。在 NVIDIA
    发表于 10-11 14:35

    NVIDIA推出RAPIDS开源GPU加速平台

    HPE、IBM、Oracle、开源社区、创业公司采用RAPIDS,显著提升端到端预测数据分析能力。
    的头像 发表于 10-17 14:36 4286次阅读

    Nvidia宣布推出了一套新的开源RAPIDS

    在德国慕尼黑举行的GPU技术会议上,高性能GPU和人工智能领域的领导者Nvidia宣布推出了一套新的开源RAPIDS库,用于GPU加速的分析
    的头像 发表于 03-25 15:38 2316次阅读

    GTC2022大会亮点:RAPIDSNVIDIA备受欢迎的NVIDIA SDK之一

    GTC2022大会亮点:RAPIDSNVIDIA备受欢迎的NVIDIA SDK之一,仅次于用于深度学习的cuDNN。
    的头像 发表于 03-24 16:43 1280次阅读
    GTC2022大会亮点:<b class='flag-5'>RAPIDS</b>是<b class='flag-5'>NVIDIA</b>备受欢迎的<b class='flag-5'>NVIDIA</b> SDK之一

    NVIDIA RAPIDS加速器可将工作分配集群中各节点

    近期,该团队在 GPU 助力的服务器上测试了适用于 Apache Spark 的 NVIDIA RAPIDS 加速器,该软件可将工作分配到集群中的各节点。
    的头像 发表于 04-01 14:15 1098次阅读

    具有RAPIDS cuMLGPU加速分层DBSCAN

      我们将通过快速示例演示 HDBSCAN 的 RAPIDS cuML 实现中当前支持的功能,并将提供我们在 GPU实现的一些实际示例和
    的头像 发表于 04-18 16:15 3964次阅读
    具有<b class='flag-5'>RAPIDS</b> <b class='flag-5'>cuML</b>的<b class='flag-5'>GPU</b>加速分层DBSCAN

    AutoML技术提高NVIDIA GPURAPIDS速度

      AutoGluon AutoML 工具箱使培训和部署尖端技术变得很容易 复杂业务问题的精确机器学习模型。此外, AutoGluon 与 RAPIDS 的集成充分利用了 NVIDIA GPU 计算的潜力,使复杂模型的训练速度提
    的头像 发表于 04-26 16:01 2082次阅读
    AutoML技术提高<b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b>和<b class='flag-5'>RAPIDS</b>速度

    使用 RAPIDS 进行更快的单细胞分析

    使用 RAPIDS-singlecell 进行 GPU 加速的单细胞 RNA 分析
    的头像 发表于 07-05 16:30 650次阅读
    使用 <b class='flag-5'>RAPIDS</b> 进行更快的单细胞分析