Xelera

Xelera Decision Tree Inference

Xelera Decision Tree Inference は、高スループットまたは低レイテンシが求められるリアルタイムの分類/回帰アプリケーション向けに、FPGA で高速化された推論 (予測) 機能を提供します。サポートされているアルゴリズムは、Random ForestXGBoost、および LightGBM です。ユーザーは、サポートされているフレームワーク (scikit-learn、XGBoost、LightGBM、H20.aiH20 Driverless AI のいずれか) を使用して、使用するモデルをトレーニングする必要があります。その後、Xelera Decision Tree Inference ライブラリへの Python の呼び出しをとおして、予測をロードして実行します。

ベンダー: Xelera

更新日: 2021 年 3 月 3 日

サイズ: 1.25 GB

コンテナー バージョン: 0.6.0b6drm

評価または購入

この製品を評価または購入する権限を取得します。


無償トライアルで下記のサンプル アプリケーションを実行できます。

このアプリケーションの価格プランを確認して購入します。


運用オプション

このアプリケーションはコンテナー化されており、クラウドまたはオンプレミス上で数分で簡単に実行できます。

オンプレミス
Alveo U50
製品の詳細および購入
  • ザイリンクス ランタイム: 2020.2
  • ターゲット プラットフォーム
    xilinx_u50_gen3x16_xdma_201920_3
Alveo U200
製品の詳細および購入
  • ザイリンクス ランタイム: 2020.2
  • ターゲット プラットプラットフォーム: xdma_u200_201830_2

評価を開始する

運用方法に応じた手順に従ってください。

オンプレミス Alveo U200 および Alveo U50

1.

アカウント アクセス キーを取得

ユーザー認証と、ユーザー アカウントの権限に基づいてアプリケーションへのアクセスを許可するには、アクセス キーが必要です。次の手順に従って、ご自身のアカウントのアクセス キーを取得してください。

  • Xilinx App Store Portal にログインします。
  • [Manage Account] をクリックして権限を表示します。
  • 左のメニューから [Access Key] をクリックします。
  • [Create an Access Key] をクリックします。
  • 生成された cred.json ファイルをダウンロードします。

注記: 生成したアクセスキーで、ご自身のアカウント内のすべての権限を有効にできます。上記の「TRY OR BUY」セクションから権限を取得していない場合は、この手順を実行してからアクセス キーを生成してください。


2

ホストを設定する

Xilinx Runtime (XRT) ホスト アプリケーションは、Ubuntu 16.04 /18.04 および CentOS 7.x でサポートされています。sudo アクセスが許可されている状態で、次のコマンドを使用して、セットアップ スクリプトをダウンロードして実行します。


2.1 Xilinx Base Runtime 用の 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 やシェルをセットアップできます。詳細は、https://github.com/Xilinx/Xilinx_Base_Runtime をご覧ください。

ドッカーをインストールする (まだインストールしていない場合)

sudo アクセスが許可されている状態で、次のコマンドを使用してユーティリティ スクリプトを実行してドッカーをインストールします。


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 Predict flight delay のサンプル アプリケーションを実行する


次の手順にしたがって、こちらから次に示す資料を参照します。

  • 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 (SW) と FPGA (HW) の推論実行における精度とレイテンシの値が表示されます。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