Xelera

Xelera Decision Tree Inference

在高吞吐量或低时延很重要时,Xelera Decision Tree Inference 可为实时分类与回归应用提供 FPGA 加速推断(预测)。它支持随机森林XGBoostLightGBM 算法。用户首先应该使用一个所支持的框架(scikit-learn、XGBoost、LightGBM、H20.aiH20 无人操作 AI)来训练自己的模型,然后通过 Python 调用 Xelera Decision Tree Inference 库来加载并运行预测。

供应商: Xelera

更新日期: 2021 年 5 月 3 日

大小: 1.25 GB

容器版本: 0.6.0b6drm

试用或购买

获得评估或购买此产品的权利。


您可免费试用以下示例应用。

查看和购买此应用的可用定价计划。


部署选项

该应用是容器化的,可以在几分钟内轻松地在云中或本地运行。

本地
Alveo U50
查看 & 购买产品
  • Xilinx 运行时:2020.2
  • 目标平台:
    xilinx_u50_gen3x16_xdma_201920_3
Alveo U200
查看 & 购买产品
  • Xilinx 运行时:2020.2
  • 目标平台:xdma_u200_201830_2

开始评估

请按照部署方法进行操作。

本地 Alveo U200 和 Alveo U50

1.

获取账户访问密钥

需要一个访问密钥来对用户进行身份验证,并根据其权限授予用户应用访问权。要获取您的帐户访问密钥,请按以下步骤操作:

  • 登录 Xilinx 应用商城门户网站
  • 点击 "Manage Account" 按钮,查看应享权限。
  • 点击左侧菜单上的 "Access Key" 链接
  • 点击 "Create an Access Key" 按钮。
  • 将生成的文件 "cred.json" 下载到 ABC 位置

注:生成的访问密钥将启用您帐户中的所有权限。如果您还没有从以上 "TRY OR BUY" 部分获取授权,请先获取授权,然后按照以下步骤生成访问密钥。


2

主机设置

Ubuntu 16.04 /18.04CentOS 7.x 上支持 Xilinx Runtime (XRT) 主机应用。支持 sudo 访问时,请使用以下命令下载并运行安装脚本:


2.1 为 Xilinx 基础运行时克隆 GitHub 版本库

    git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git

2.2 运行主机设置脚本

    cd Xilinx_Base_Runtime
./host_setup.sh -v 2020.2


注:

  • 请等待安装完成。在此期间,您可能需要按 [Y],才能继续执行主机安装。
  • 如果选择闪存 FPGA,则需要在安装完成后冷重启本地机,才能在 FPGA 上加载新映像。
  • 用于主机设置的脚本可用于设置其它版本的 XRT 和 shell。请查看 https://github.com/Xilinx/Xilinx_Base_Runtime,了解更多详情。

安装 Docker(如果尚未安装)

支持 sudo 访问时,请使用以下命令运行实用程序脚本来安装 docker。


2.3 转向 Xilinx_Base_Runtime 实用程序目录

    cd Xilinx_Base_Runtime/utilities

2.4 运行 Docker 安装脚本

    ./docker_install.sh

3.

应用执行

在终端窗口中输入以下命令以运行该应用程序:


3.1 通过 Xilinx_Base_Runtime 脚本设置环境变量

    source Xilinx_Base_Runtime/utilities/xilinx_docker_setup.sh

3.2 获取 Docker 映像

Alveo U200

    docker pull xilinxpartners/xelera_decision_tree_inference:alveo_u200_2020.2_0.6.0b6drm


Alveo U50

    docker pull xilinxpartners/xelera_decision_tree_inference:alveo_u50_2020.2_0.6.0b6drm

3.3 运行 Docker 映像

Alveo U200

    docker run -it --rm $XILINX_DOCKER_DEVICES --mount type=bind,source=${PWD}/cred.json,target=/opt/xelera/cred.json,readonly --name cont-decision-tree-inference xilinxpartners/xelera_decision_tree_inference:alveo_u200_2020.2_0.6.0b6drm /bin/bash .


Alveo U50

    docker run -it --rm $XILINX_DOCKER_DEVICES --mount type=bind,source=${PWD}/cred.json,target=/opt/xelera/cred.json,readonly --name cont-decision-tree-inference xilinxpartners/xelera_decision_tree_inference:alveo_u50_2020.2_0.6.0b6drm /bin/bash .


命令参数描述:

  • $XILINX_DOCKER_DEVICES - 由主机设置脚本设置的变量
  • --mount
    type=bind,source=${PWD}/cred.json, target=/opt/xelera/cred.json,readonly - 映射下载的 cred.json 至容器。

3.4 运行预测航班延误示例应用


按照以下说明并参考 以下文档

  • 获取一份由 Xelera decision Tree Inference GitHub 知识库及航班延误数据集提供的示例脚本:
    /app/setup_example_flight_delay.sh
  • 导航至文件夹:
    cd /app/xelera_demo/Tree-Inference/
  • 运行支持 100 棵树和 1000 个样本的随机森林多项分类(4 个分类),使用:
    python3 scripts/RF_scikit_flight.py --data_fpath /app/xelera_demo/data/flight-delays/flights.csv --enable_multinomial true --enable_binomial false --enable_regression false --number_of_trees 100 --num_test_samples 1000 --n_loops 1000
  • 您将得到有关 CPU(软件)及 FPGA(硬件)推断运行的准确性、时延和吞吐量测量值的提示。请注意,在软件中执行可能会花费一些时间,因为重复测试 1000 次才能获得准确的时序测量值。

4.

结果

Alveo U200

    root@5a4b0b93569c:/app/xelera_demo/Tree-Inference# python3 scripts/RF_scikit_flight.py --data_fpath /app/xelera_demo/data/flight-delays/flights.csv --enable_multinomial true --enable_binomial false --enable_regression false --number_of_trees 100 --num_test_samples 1000
Loading dataset...
sys:1: DtypeWarning: Columns (7,8) have mixed types.Specify dtype option on import or set low_memory=False.
##############################################
RF Multinomial with Numerical Features
SK multinomial: Start training ...
Model is not available, start training ...
Training_time:       3.1001360011287034 s
max nodes =  503 
model conversion to .xlmodel time: 0.277881772024557 s
Starting SW inference ...
SW mse 5.862252126955988
SW error 4.034
SW accuracy score 0.486
SW predict latency (average on 1000 runs for 1000 samples):  1.20e-01 s
SW predict throughput: 8.35e+03 samples/s
SW Number of features: 10
SW Number of trees: 100
SW Number of classes: 10
[07:24:08:758][   INFO] <XlRfInference> Using device Xilinx - xilinx_u200_xdma_201830_2 [FPGA] (943bff10-53af-4378-cbc4-00efac507c87)
[07:24:09:521][   INFO] <XlRfInference> [DRMLIB] Start Session ..
[07:24:11:740][   INFO] <XlRfInference> [DRMLIB] Done.
Starting HW inference ...
HW mse 5.595176494088458
HW error 3.694
HW accuracy score 0.525
HW predict latency (average on 1000 runs for 1000 samples):  1.70e-03 s
HW predict throughput: 3.10e+06 samples/s
HW Number of features: 10
HW Number of trees: 100
HW Number of classes: 10

Alveo U50

    root@8b417af2b354:/app/xelera_demo/Tree-Inference# python3 scripts/RF_scikit_flight.py --data_fpath /app/xelera_demo/data/flight-delays/flights.csv --enable_multinomial true --enable_binomial false --enable_regression false --number_of_trees 100 --num_test_samples 1000
Loading dataset...
sys:1: DtypeWarning: Columns (7,8) have mixed types.Specify dtype option on import or set low_memory=False.
##############################################
RF Multinomial with Numerical Features
SK multinomial: Start training ...
Model is not available, start training ...
Training_time:       2.8406101659638807 s
max nodes =  503 
model conversion to .xlmodel time: 0.26975053607020527 s
Starting SW inference ...
SW mse 5.862252126955988
SW error 4.034
SW accuracy score 0.486
SW predict latency (average on 1000 runs for 1000 samples):  1.19e-01 s
SW predict throughput: 8.43e+03 samples/s
SW Number of features: 10
SW Number of trees: 100
SW Number of classes: 10
[07:45:41:628][   INFO] <XlRfInference> Using device Xilinx - xilinx_u50_gen3x16_xdma_201920_3 [FPGA] (16208aae-e489-4dcf-c9df-75511b767230)
[07:45:42:288][   INFO] <XlRfInference> [DRMLIB] Start Session ..
[07:45:44:287][   INFO] <XlRfInference> [DRMLIB] Done.
Starting HW inference ...
HW mse 5.595176494088458
HW error 3.694
HW accuracy score 0.525
HW predict latency (average on 1000 runs for 1000 samples):  1.87e-03 s
HW predict throughput: 3.04e+06 samples/s
HW Number of features: 10
HW Number of trees: 100
HW Number of classes: 10