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

    文章

    11216

    浏览量

    222929
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5099

    浏览量

    134454
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是AI模型推理能力

    NVIDIA 的数据工厂团队为 NVIDIA Cosmos Reason 等 AI 模型奠定了基础,该模型近日在 Hugging Face 的物理推理模型排行榜中位列榜首。
    的头像 发表于 09-23 15:19 832次阅读

    NVIDIA Nemotron Nano 2推理模型发布

    NVIDIA 正式推出准确、高效的混合 Mamba-Transformer 推理模型系列 NVIDIA Nemotron Nano 2。
    的头像 发表于 08-27 12:45 1391次阅读
    NVIDIA Nemotron Nano 2<b class='flag-5'>推理模型</b>发布

    请问如何在RK3588上使用npu,用onnx模型推理

    请问如何在瑞芯微 RK3588上使用npu,用onnx模型推理。官网上介绍说要把ONNX模型转换成RKNN模型。但是我并不想这么干,请问有什么办法吗?
    发表于 08-09 00:51

    积算科技上线赤兔推理引擎服务,创新解锁FP8大模型算力

    模型轻量化部署方案。用户通过远程算力平台预置的模型镜像与AI工具,仅需50%的GPU算力即可解锁大模型推理、企业知识库搭建、智能体开发,加速
    的头像 发表于 07-30 21:44 724次阅读

    信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代

    模态的技术特性,DeepSeek正加速推动AI在金融、政务、科研及网络智能化等关键领域的深度应用。 信而泰:AI推理引擎赋能网络智能诊断新范式信而泰深度整合DeepSeek-R1大模型系统,构建了新一代
    发表于 07-16 15:29

    如何在魔搭社区使用TensorRT-LLM加速优化Qwen3系列模型推理部署

    TensorRT-LLM 作为 NVIDIA 专为 LLM 推理部署加速优化的开源库,可帮助开发者快速利用最新 LLM 完成应用原型验证与产品部署。
    的头像 发表于 07-04 14:38 1741次阅读

    模型推理显存和计算量估计方法研究

    方法。 一、引言 大模型推理是指在已知输入数据的情况下,通过深度学习模型进行预测或分类的过程。然而,大模型
    发表于 07-03 19:43

    详解 LLM 推理模型的现状

    2025年,如何提升大型语言模型(LLM)的推理能力成了最热门的话题之一,大量优化推理能力的新策略开始出现,包括扩展推理时间计算、运用强化学习、开展监督微调和进行提炼等。本文将深入探讨
    的头像 发表于 04-03 12:09 1241次阅读
    详解 LLM <b class='flag-5'>推理模型</b>的现状

    英伟达GTC25亮点:NVIDIA Dynamo开源库加速并扩展AI推理模型

    DeepSeek-R1 上的吞吐量提高了 30 倍 NVIDIA 发布了开源推理软件 NVIDIA Dynamo,旨在以高效率、低成本加速并扩展 AI 工厂中的 AI 推理模型。 作为 NVIDIA
    的头像 发表于 03-20 15:03 1075次阅读

    为什么无法在运行时C++推理中读取OpenVINO™模型

    使用模型优化器 2021.1 版OpenVINO™转换模型 使用 Runtime 2022.3 版本在 C++ 推理实现 ( core.read_model()) 中读取模型Open
    发表于 03-05 06:17

    AI大模型在汽车应用中的推理、降本与可解释性研究

    佐思汽研发布《2024-2025年AI大模型及其在汽车领域的应用研究报告》。 推理能力成为大模型性能提升的驱动引擎 2024下半年以来,国内外大模型公司纷纷推出
    的头像 发表于 02-18 15:02 1825次阅读
    AI大<b class='flag-5'>模型</b>在汽车应用中的<b class='flag-5'>推理</b>、降本与可解释性研究

    黑芝麻智能芯片加速DeepSeek模型推理

    近日,黑芝麻智能宣布,其武当C1200家族芯片已成功完成DeepSeek模型推理的部署,而A2000芯片也将全面支持基于DeepSeek的多模态大模型推理。这一消息标志着黑芝麻智能在推
    的头像 发表于 02-14 15:04 811次阅读

    摩尔线程宣布成功部署DeepSeek蒸馏模型推理服务

    近日,摩尔线程智能科技(北京)有限责任公司在其官方渠道发布了一则重要消息,宣布公司已经成功实现了对DeepSeek蒸馏模型推理服务的部署。这一技术突破,标志着摩尔线程在人工智能领域迈出了坚实的一步
    的头像 发表于 02-06 13:49 1184次阅读

    中国电提出大模型推理加速新范式Falcon

    近日,中国电信翼支付针对大模型推理加速的最新研究成果《Falcon: Faster and Parallel Inference of Large Language Models through
    的头像 发表于 01-15 13:49 1461次阅读
    中国电提出大<b class='flag-5'>模型</b><b class='flag-5'>推理</b><b class='flag-5'>加速</b>新范式Falcon

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

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