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

    文章

    10855

    浏览量

    211610
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4729

    浏览量

    128902
收藏 人收藏

    评论

    相关推荐

    如何开启Stable Diffusion WebUI模型推理部署

    如何开启Stable Diffusion WebUI模型推理部署
    的头像 发表于 12-11 20:13 100次阅读
    如何开启Stable Diffusion WebUI<b class='flag-5'>模型</b><b class='flag-5'>推理</b>部署

    阿里云开源推理模型QwQ

    近日,阿里云通义团队宣布推出全新AI推理模型QwQ-32B-Preview,并同步实现了开源。这一举措标志着阿里云在AI推理领域迈出了重要一步。 据评测数据显示,QwQ预览版本已具备研究生水平的科学
    的头像 发表于 11-29 11:30 540次阅读

    使用vLLM+OpenVINO加速大语言模型推理

    随着大语言模型的广泛应用,模型的计算需求大幅提升,带来推理时延高、资源消耗大等挑战。
    的头像 发表于 11-15 14:20 378次阅读
    使用vLLM+OpenVINO<b class='flag-5'>加速</b>大语言<b class='flag-5'>模型</b><b class='flag-5'>推理</b>

    高效大模型推理综述

    模型由于其在各种任务中的出色表现而引起了广泛的关注。然而,大模型推理的大量计算和内存需求对其在资源受限场景的部署提出了挑战。业内一直在努力开发旨在提高大模型
    的头像 发表于 11-15 11:45 354次阅读
    高效大<b class='flag-5'>模型</b>的<b class='flag-5'>推理</b>综述

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

    随着现在AI的快速发展,使用FPGA和ASIC进行推理加速的研究也越来越多,从目前的市场来说,有些公司已经有了专门做推理的ASIC,像Groq的LPU,专门针对大语言模型
    的头像 发表于 10-29 14:12 401次阅读
    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 463次阅读
    澎峰科技高性能大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>引擎PerfXLM解析

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

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

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

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

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

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

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

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

    MATLAB预测模型哪个好

    在MATLAB中,预测模型的选择取决于数据类型、问题复杂度和预测目标。以下是一些常见的预测模型及其适用场景的介绍: 线性回归(Linear
    的头像 发表于 07-11 14:31 419次阅读

    如何加速大语言模型推理

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

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

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

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

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

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

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