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

    文章

    11326

    浏览量

    225837
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5266

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    模型推理服务的弹性部署与GPU调度方案

    7B 模型 FP16 推理需要约 14GB 显存,70B 模型需要 140GB+,KV Cache 随并发数线性增长,显存碎片化导致实际利用率不足 60%。
    的头像 发表于 03-03 09:29 382次阅读

    使用NORDIC AI的好处

    ; 自定义 Neuton 模型博客] Axon NPU :集成在 nRF54LM20B 等高端 SoC 中的专用 AI 加速器,对 TensorFlow Lite 模型可实现最高约 15×
    发表于 01-31 23:16

    LLM推理模型是如何推理的?

    这篇文章《(How)DoReasoningModelsReason?》对当前大型推理模型(LRM)进行了深刻的剖析,超越了表面的性能宣传,直指其技术本质和核心局限。以下是基于原文的详细技术原理、关键
    的头像 发表于 01-19 15:33 678次阅读
    LLM<b class='flag-5'>推理模型</b>是如何<b class='flag-5'>推理</b>的?

    华为数据存储与「DaoCloud 道客」发布AI推理加速联合解决方案

    AI产业已从“追求模型能力极限”转向“追求推理体验最优化”,推理体验决定用户与AI的交互质感。当前推理应用快速发展,Token调用量爆发式增长,推理
    的头像 发表于 11-28 10:03 481次阅读
    华为数据存储与「DaoCloud 道客」发布AI<b class='flag-5'>推理</b><b class='flag-5'>加速</b>联合解决方案

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    模型。 我们使用MNIST数据集,训练一个卷积神经网络(CNN)模型,用于手写数字识别。一旦模型被训练并保存,就可以用于对新图像进行推理预测
    发表于 10-22 07:03

    什么是AI模型推理能力

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

    NVIDIA Nemotron Nano 2推理模型发布

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

    NVIDIA从云到边缘加速OpenAI gpt-oss模型部署,实现150万TPS推理

    的发布持续深化了双方的 AI 创新合作。NVIDIA 在 NVIDIA Blackwell 架构上优化了这两款全新的开放权重模型并实现了推理性能加速,在 NVIDIA 系统上至高达到每秒 150 万个
    的头像 发表于 08-15 20:34 2478次阅读
    NVIDIA从云到边缘<b class='flag-5'>加速</b>OpenAI gpt-oss<b class='flag-5'>模型</b>部署,实现150万TPS<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 1033次阅读

    蚂蚁数科正式发布金融推理模型

    7月26日,以“智能时代,同球共济”为主题的2025世界人工智能大会在上海开幕;亮点很多。我们看到在世界人工智能大会论坛上,蚂蚁数科正式发布了金融推理模型Agentar-Fin-R1,金融推理
    的头像 发表于 07-28 16:36 750次阅读

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

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

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

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

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

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

    将Whisper大型v3 fp32模型转换为较低精度后,推理时间增加,怎么解决?

    将 openai/whisper-large-v3 FP32 模型转换为 FP16、INT8 和 INT4。 推理所花费的时间比在 FP32 上花费的时间要多
    发表于 06-24 06:23