質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XGBoost

XGBoostは、アンサンブル学習と決定木を組み合わせた手法です。弱学習器の構築時に、以前構築された弱学習器の結果を用いて弱学習器を構築。高度な汎化能力を持ち、勾配ブースティングとも呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2673閲覧

XGBoostのGPU計算速度について

aws

総合スコア48

XGBoost

XGBoostは、アンサンブル学習と決定木を組み合わせた手法です。弱学習器の構築時に、以前構築された弱学習器の結果を用いて弱学習器を構築。高度な汎化能力を持ち、勾配ブースティングとも呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/06 15:58

XGBoostをGPUを利用して計算させているのですがCPUより遅いです。
ローカルPCで動かしているのですがこれは私のPCスペック(GPUの性能)によるものでしょうか?
それとも設定又は読み込ませるデータが上手く出来ていない可能性がありますか?

#GPU使う場合の時間
4回計測の結果
elapsed_time:348.15651535987854[sec]
elapsed_time:167.357483625412[sec]
elapsed_time:270.057825088501[sec]
elapsed_time:168.09351634979248[sec]

#CPU使う場合の時間
4回計測の結果
elapsed_time:27.366068124771118[sec]
elapsed_time:44.38199305534363[sec]
elapsed_time:44.38199305534363[sec]
elapsed_time:53.37565588951111[sec]


XGBoostのbenchmarkを実行させるとGPUの方が早いです。
https://xgboost.readthedocs.io/en/latest/gpu/#benchmarks

gpu_hist Time (s)
3回計測の結果
Train Time: 16.906871557235718 seconds
Train Time: 17.047528743743896 seconds
Train Time: 17.055419445037842 seconds

hist Time (s)
3回計測の結果
Train Time: 26.290664434432983 seconds
Train Time: 28.542279958724976 seconds
Train Time: 27.60935640335083 seconds

#PC環境など
Windows 10
CPU Core i7 9700KF
GPU NVIDIA GeForce GTX 1660
CUDA Toolkit 11.1 現在(2020年10月7日)の最新CUDAを設定

XGBoostはXGBClassifierを利用しています。
GPUを使って動かす場合のパラメータは以下を追加

tree_method = 'gpu_hist', gpu_id = 0,

パラメータの調整にoptunaを利用しています。

タスクマネージャーでの確認ですが計算させている時のGPUの様子は Copyが30-40%の辺りになります。
GPU設定時のCPUは40%前後になります。
それ以外(専用GPUメモリなど)は変化ありません。

※CPU設定で動かす場合はCPUが100%になります。

ここを確認すると良いなどありましたらコメント頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PythonでGPU使う場合ドライバの相性が合って必ず最新が良いといえないんですよ。
(なぜか32bit版の方が相性が良かったり...)

XGBoostをGPUで計算するとめちゃくちゃ早かった
windows10にgpuサポートのxgboostを入れる

自分もGPU導入の際苦労しました。

設定(ドライバ)さえ合えばきちんと早い数値は見込めるのですが、
PCの状態依存だったりするので[GTX 1660]辺りの成功例を試すしかないですね…。

投稿2020/10/08 18:03

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aws

2020/10/08 19:11

ご回答ありがとうございます。 ドライバとの相性問題などもあるのですね。 GTX 1660で調べてみます。 関係ないかもしれませんがCatBoostでもGPUの方が遅いのでGTX 1660が悪いのかなーとも考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問