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

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

3天内不再提示

使用FIL加速基于树模型的推理与预测

星星科技指导员 来源:NVIDIA 作者:Andy Adinets 2022-04-27 09:22 次阅读

介绍

RAPIDS森林推理库,亲切地称为 FIL ,极大地加速了基于树的模型的推理(预测),包括梯度增强的决策树模型(如 XGBoost 和 LightGBM 的模型)和随机森林 ( 要深入了解整个库,请查看 最初的 FIL 博客 。原始 FIL 中的模型存储为密集的二叉树。也就是说,树的存储假定所有叶节点都出现在同一深度。这就为浅树提供了一个简单、运行时高效的布局。但对于深树,它也需要 lot 的 GPU 内存2d+1-1深度树的节点 d 。为了支持最深的森林, FIL 支持

稀疏树存储。如果稀疏树的分支早于最大深度 d 结束,则不会为该分支的潜在子级分配存储。这可以节省大量内存。虽然深度为 30 的 稠密的 树总是需要超过 20 亿个节点,但是深度为 30 的最瘦的 稀疏 树只需要 61 个节点。

在 FIL中使用稀疏森林

在 FIL 使用稀疏森林并不比使用茂密森林困难。创建的林的类型由新的 storage_type 参数控制到 ForestInference.load() 。其可能值为:

DENSE 为了营造一片茂密的森林,

SPARSE 要创建稀疏的森林,

AUTO (默认)让 FIL 决定,当前总是创建一个密林。

无需更改输入文件、输入数据或预测输出的格式。初始模型可以由 scikit learn 、 cuML 、 XGBoost 或 LightGBM 进行训练。下面是一个将 FIL 用于稀疏森林的示例。

from cuml import ForestInference
import sklearn.datasets
# Load the classifier previously saved with xgboost model_save()
model_path = 'xgb.model'
fm = ForestInference.load(model_path, output_class=True,
storage_type='SPARSE')
# Generate random sample data
X_test, y_test = sklearn.datasets.make_classification()
# Generate predictions (as a gpu array)
fil_preds_gpu = fm.predict(X_test.astype('float32'))

实施

Figure 1 depicts how sparse forests are stored in FIL.


图 1 :在 FIL 中存储稀疏森林。

图 1 描述了稀疏森林是如何存储在 FIL 中的。所有节点都存储在单个大型 nodes 阵列中。对于每个树,其根在节点数组中的索引存储在 trees 数组中。每个稀疏节点除了存储在密集节点中的信息外,还存储其左子节点的索引。由于每个节点总是有两个子节点,所以左右节点相邻存储。因此,右子级的索引总是可以通过将左子级的索引加 1 来获得。在内部, FIL 继续支持密集节点和稀疏节点,这两种方法都来自一个基林类。

与内部更改相比,对 pythonapi 的更改保持在最低限度。新的 storage_type 参数指定是创建密集林还是稀疏林。此外,一个新的值 ‘AUTO’ 已经成为推断算法参数的新默认值;它允许 FIL 自己选择推理算法。对于稀疏林,它当前使用的是 ‘NAIVE’ 算法,这是唯一受支持的算法。对于密林,它使用 ‘BATCH_TREE_REORG’ 算法。

基准

为了对稀疏树进行基准测试,我们使用 sciket learn 训练了一个随机林,具体来说就是 sklearn.ensemble.RandomForestClassifier 。然后,我们将得到的模型转化为一个 FIL 林,并对推理的性能进行了测试。数据是使用 sklearn.datasets.make_classification() 生成的,包含 200 万行,在训练和验证数据集之间平分, 32 列。对于基准测试,在一百万行上执行推断。

我们使用两组参数进行基准测试。

深度限制设置为 10 或 20 ;在这种情况下,密集或稀疏的 FIL 林都可以放入 GPU 内存中。

无深度限制;在这种情况下, SKLearn 训练的模型包含非常深的树。在我们的基准测试运行中,树的深度通常在 30 到 50 之间。试图创建一个稠密的 FIL-forest 会耗尽内存,但是可以顺利创建一个稀疏的 forest 。

在这两种情况下,林本身的大小仍然相对较小,因为树中的叶节点数限制为 2048 个,并且林由 100 棵树组成。我们测量了 CPU 推理和 GPU 推理的时间。 GPU 推理是在 V100 上进行的, CPU 推理是在一个有两个插槽的系统上进行的,每个插槽有 16 个内核,带有双向超线程。基准测试结果如图 2 所示。

Results in figure 2 compare sparse and dense FIL predictors (if the latter is available) to SKLearn CPU predictors. FIL predictors are about 34–60x faster.

图 2 : FIL (密集稀疏树)和 SKLearn 的基准测试结果 。

稀疏和密集 FIL 预测器(如果后者可用)都比 SKLearn CPU 预测器快 34-60 倍。对于浅层森林,稀疏 FIL 预报器比稠密 FIL 预报器慢,但是对于较深的森林,稀疏 FIL 预报器可以更快;具体的性能差异各不相同。例如,在图 2 中, max \ u depth = 10 时,密集预测器比稀疏预测器快 1 。 14 倍,但 max \ u depth = 20 时,速度较慢,仅达到稀疏预测器的 0 。 75 倍。因此,对于浅层森林应采用稠密 FIL 预报。

然而,对于深林,稠密预测器的内存不足,因为它的空间需求随着森林深度呈指数增长。稀疏预测器没有这个问题,即使对于非常深的树,它也能在 GPU 上提供快速的推断。

结论

在稀疏森林的支持下, FIL 适用于更广泛的问题。无论您是使用 XGBoost 构建梯度增强的决策树,还是使用 cuML 或 sciket learn 构建随机林, FIL 都应该是一个方便的选择,可以加速您的推理。

关于作者

Andy Adinets 自2005年以来一直从事GPU编程工作,自2017年7月底以来一直在Nvidia担任AI开发人员技术工程师近4年。他目前正在从事多个项目,包括Forest Inference Library(FIL) )和GPU排序。 当机会出现时,他还喜欢优化各种GPU算法。

审核编辑:郭婷

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

    关注

    68

    文章

    10790

    浏览量

    210626
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4658

    浏览量

    128522
收藏 人收藏

    评论

    相关推荐

    FPGA和ASIC在大模型推理加速中的应用

    随着现在AI的快速发展,使用FPGA和ASIC进行推理加速的研究也越来越多,从目前的市场来说,有些公司已经有了专门做推理的ASIC,像Groq的LPU,专门针对大语言模型
    的头像 发表于 10-29 14:12 103次阅读
    FPGA和ASIC在大<b class='flag-5'>模型</b><b class='flag-5'>推理</b><b class='flag-5'>加速</b>中的应用

    澎峰科技高性能大模型推理引擎PerfXLM解析

    自ChatGPT问世以来,大模型遍地开花,承载大模型应用的高性能推理框架也不断推出,大有百家争鸣之势。在这种情况下,澎峰科技作为全球领先的智能计算服务提供商,在2023年11月25日发布了针对大语言
    的头像 发表于 09-29 10:14 301次阅读
    澎峰科技高性能大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>引擎PerfXLM解析

    OpenAI即将发布“草莓”推理模型

    科技界迎来新动态,据可靠消息透露,OpenAI正紧锣密鼓地筹备着一项重大发布——预计在两周内,将正式推出名为“草莓”的新型AI推理模型,并将其无缝融入ChatGPT服务中。这款以卓越推理能力为核心的大模型,旨在突破现有GPT-4
    的头像 发表于 09-11 16:53 458次阅读

    【《大语言模型应用指南》阅读体验】+ 基础知识学习

    习语言的表达方式和生成能力。通过预测文本中缺失的部分或下一个词,模型逐渐掌握语言的规律和特征。 常用的模型结构 Transformer架构:大语言模型通常基于Transformer架
    发表于 08-02 11:03

    LLM大模型推理加速的关键技术

    LLM(大型语言模型)大模型推理加速是当前人工智能领域的一个研究热点,旨在提高模型在处理复杂任务时的效率和响应速度。以下是对LLM大
    的头像 发表于 07-24 11:38 680次阅读

    云天励飞推出IPU-X6000加速卡,针对大模型推理任务设计

    卡的互联;可应用于语言、视觉、多模态等各类大模型推理加速,目前已适配云天天书、通义千问、百川智能、Llama2/3等近10个主流大模型
    的头像 发表于 07-24 11:03 486次阅读

    如何加速大语言模型推理

    的主要挑战。本文将从多个维度深入探讨如何加速大语言模型推理过程,以期为相关领域的研究者和开发者提供参考。
    的头像 发表于 07-04 17:32 421次阅读

    英特尔助力京东云用CPU加速AI推理,以大模型构建数智化供应链

    英特尔助力京东云用CPU加速AI推理,以大模型构建数智化供应链
    的头像 发表于 05-27 11:50 461次阅读
    英特尔助力京东云用CPU<b class='flag-5'>加速</b>AI<b class='flag-5'>推理</b>,以大<b class='flag-5'>模型</b>构建数智化供应链

    【大语言模型:原理与工程实践】大语言模型的应用

    ,它通过抽象思考和逻辑推理,协助我们应对复杂的决策。 相应地,我们设计了两类任务来检验大语言模型的能力。一类是感性的、无需理性能力的任务,类似于人类的系统1,如情感分析和抽取式问答等。大语言模型在这
    发表于 05-07 17:21

    模型推理显卡选购指南:4090显卡为何成为不二之选

    开发者非常关注的话题。 现在市面上加速卡型号多如牛毛,但说到适用大模型推理的显卡,那4090显卡绝对是现阶段“推理王卡”般的存在。论性能不如H100,论价格不如3090,看似平平无奇的
    的头像 发表于 04-11 11:00 681次阅读
    大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>显卡选购指南:4090显卡为何成为不二之选

    使用NVIDIA Triton推理服务器来加速AI预测

    这家云计算巨头的计算机视觉和数据科学服务使用 NVIDIA Triton 推理服务器来加速 AI 预测
    的头像 发表于 02-29 14:04 524次阅读

    HarmonyOS:使用MindSpore Lite引擎进行模型推理

    场景介绍 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件设备 AI 模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。 本文介绍
    发表于 12-14 11:41

    LabVIEW进行癌症预测模型研究

    LabVIEW进行癌症预测模型研究 癌症是一种细胞异常增生的疾病。随着年龄的增长,细胞分裂速度放缓,但癌细胞会失去控制地不断分裂,形成可能良性或恶性的肿瘤。 2012年的国际癌症数据显示,新发癌症
    发表于 12-13 19:04

    澎峰科技发布大模型推理引擎PerfXLLM

    自从2020年6月OpenAI发布chatGPT之后,基于 Transformer 网络结构的 语言大模型(LLM) 引发了全世界的注意与追捧,成为了人工智能领域的里程碑事件。 但大模型推理所需
    的头像 发表于 11-25 15:35 1014次阅读
    澎峰科技发布大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>引擎PerfXLLM

    使用rk3588多npu推理模型模型推理时间还增加了,这怎么解释

    使用rk3588多npu推理模型模型推理时间还增加了,这怎么解释
    发表于 11-05 18:22