Xgboost: ๊ธฐ์—ฌ ์š”์ฒญ : 'hist'์˜ ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU ์„ฑ๋Šฅ ํ–ฅ์ƒ

์— ๋งŒ๋“  2018๋…„ 10์›” 19์ผ  ยท  44์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dmlc/xgboost

์ด์ œ ๋ฐฉ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…

ํ˜„์žฌ hist ํŠธ๋ฆฌ ์„ฑ์žฅ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ( tree_method=hist )์€ ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU์—์„œ ์ œ๋Œ€๋กœ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์˜ ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค . ์ด ๋ฌธ์ œ๋Š” @ Laurae2 ์˜ Gradient Boosting Benchmark ( GitHub repo )์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Bosch ๋ฐ์ดํ„ฐ ์„ธํŠธ ์˜ ํ™•์žฅ ๋™์ž‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Performance scaling on C5.9xlarge

๊ธฐ๋ถ€ ์š”์ฒญ

'hist'์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ™•์ธํ•˜์—ฌ hcho3 / xgboost-fast-hist-perf-lab ์ด๋ผ๋Š” ์ž‘์€ ์ €์žฅ์†Œ์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. src / build_hist.cc ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด

  • ๋ฐ์ดํ„ฐ ๋งคํŠธ๋ฆญ์Šค ๋ ˆ์ด์•„์›ƒ์„ CSR ์—์„œ ellpack ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ
  • ์ž‘์—…์ž ์Šค๋ ˆ๋“œ๊ฐ„์— ์ž‘์—…์„ ๋” ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜์‹ญ์‹œ์˜ค. ์ž‘์—… ๋ถˆ๊ท ํ˜•์€ ๋ฐ์ดํ„ฐ ๋งคํŠธ๋ฆญ์Šค์˜ ๋ถˆ๊ทœ์น™ํ•œ ํฌ์†Œ ํŒจํ„ด์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์›-ํ•ซ ์ธ์ฝ”๋”ฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ์ธ ๋ณด์™„ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.
help wanted roadmap

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ™•์žฅ ๋ฐ ์‹ค์ œ๋กœ NUMA ๋ฌธ์ œ๊ฐ€ ์‹ค์ œ๋กœ ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ์ฝ”์–ด :

Screen Shot 2020-09-17 at 12 37 55 AM

๋” ์ž‘์€ ๋ฐ์ดํ„ฐ (0.1M ํ–‰)์—์„œ ๋งค์šฐ ์ฃผ๋ชฉํ• ๋งŒํ•œ ๊ฐœ์„  ์‚ฌํ•ญ

Screen Shot 2020-09-17 at 12 43 26 AM
Screen Shot 2020-09-17 at 12 43 34 AM

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ :

https://github.com/szilard/GBM-perf#multi-core-scaling-cpu
https://github.com/szilard/GBM-perf/issues/29#issuecomment-689713624

๋˜ํ•œ NUMA ๋ฌธ์ œ๊ฐ€ ํฌ๊ฒŒ ์™„ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2020-09-17 at 12 46 49 AM

Screen Shot 2020-09-17 at 12 48 23 AM
Screen Shot 2020-09-17 at 12 48 32 AM

๋ชจ๋“  44 ๋Œ“๊ธ€

@ Laurae2 GBT ๋ฒค์น˜ ๋งˆํฌ๋ฅผ ์ค€๋น„ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ง€์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@ hcho3 OpenMP guided ์ผ์ •์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ์— ๋„์›€์ด๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ellpack์€ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ellpack์„ ์‚ฌ์šฉํ•œ ์ž‘์—…์˜ ์ •์  ํ• ๋‹น์€ OpenMP์˜ guided ๋˜๋Š” dynamic ๋ชจ๋“œ๋ณด๋‹ค ๋‚ฎ์€ ์˜ค๋ฒ„ ํ—ค๋“œ๋กœ ๊ท ํ˜• ์žกํžŒ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋‹ฌ์„ฑ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. dynamic ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—… ๋„์šฉ ๋Œ€๊ธฐ์—ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. approx ์˜ ๋ฒค์น˜ ๋งˆํฌ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€ ํ™˜๊ฒฝ์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ์ด ์•„๋‹Œ ์†๋„ ํ–ฅ์ƒ์„ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ๋ณด๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.

@CodingCat ์—ฐ๊ฒฐ๋œ ๋ฒค์น˜ ๋งˆํฌ ์ œํ’ˆ๊ตฐ์€ hist ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. approx ๊ฐ€ hist ์™€ ๊ฐ™์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ (์˜ˆ : 3 ๊ฐœ ์Šค๋ ˆ๋“œ๋ณด๋‹ค 36 ๊ฐœ ์Šค๋ ˆ๋“œ๊ฐ€ ๋Š๋ฆผ)?

@ hcho3 ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ œํ•œ์œผ๋กœ ์ธํ•ด ์ตœ๋Œ€ 8 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ๋งŒ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜

@CodingCat 8 ์Šค๋ ˆ๋“œ๊ฐ€ 4๋ณด๋‹ค ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

@CodingCat approx ์€ (๋Š”) ์Šค์ผ€์ผ๋ง์ด ๋„ˆ๋ฌด ๋‚˜๋น ์„œ ๋ฒค์น˜๋งˆํ‚น๋„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 4 ์ฝ”์–ด ๋…ธํŠธ๋ถ (3.6GHz)์—์„œ๋„ ์ œ๋Œ€๋กœ ํ™•์žฅ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 64 ๋˜๋Š” 72 ์Šค๋ ˆ๋“œ๋กœ ์ƒ์ƒ์กฐ์ฐจ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@ hcho3 ๋‚˜์ค‘์— VTune๊ณผ ํ•จ๊ป˜ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


VTune์—์„œ ์ž์„ธํ•œ ์„ฑ๋Šฅ์„ ์–ป์œผ๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋”์— ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#include <ittnotify.h> // Intel Instrumentation and Tracing Technology

๋ฃจํ”„ ์™ธ๋ถ€์—์„œ ์ถ”์ ํ•˜๋ ค๋Š” ํ•ญ๋ชฉ ์•ž์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (๋ฌธ์ž์—ด / ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ).

__itt_resume();
__itt_domain* domain = __itt_domain_create("MyDomain");
__itt_string_handle* task = __itt_string_handle_create("MyTask");
__itt_task_begin(domain, __itt_null, __itt_null, task);

๋ฃจํ”„ ์™ธ๋ถ€์—์„œ ์ถ”์ ํ•˜๋ ค๋Š” ํ•ญ๋ชฉ ๋’ค์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (๋ฌธ์ž์—ด / ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ).

__itt_task_end(domain);
__itt_pause();

๊ทธ๋ฆฌ๊ณ  ์Šค๋ ˆ๋“œ ์ˆ˜์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VTune์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ์„ฑ๋Šฅ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ผ์‹œ ์ค‘์ง€ ๋œ ๊ณ„์ธก์œผ๋กœ ์‹คํ–‰ ํŒŒ์ผ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

@ hcho3 ๋” ๋Š๋ฆฌ์ง€๋Š” ์•Š์ง€๋งŒ 4 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๋ฉด 15 % ์ •๋„์˜ ์†๋„ ๋งŒ ํ–ฅ์ƒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ... (๋” ๋งŽ์€ ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ˆ˜๋ ด ๋  ๊ฒƒ์œผ๋กœ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค .....

@ Laurae2 ๋Š” ๋‚ด๊ฐ€ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ hcho3 exact , approx ๋ฐ hist , ๋ชจ๋‘ depth=6 ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋ฒˆ ์ฃผ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ํ™•์žฅ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค exact depth=6 , ์ปค๋ฐ‹ e26b5d6.

์ตœ๊ทผ์— ์ปดํ“จํŒ… ์„œ๋ฒ„๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์œผ๋ฉฐ ์ด๋ฒˆ ์ฃผ์—๋Š” 3.7GHz ์ „์ฒด ํ„ฐ๋ณด / 36 ์ฝ”์–ด / 72 ์Šค๋ ˆ๋“œ / 80GBps RAM ๋Œ€์—ญํญ์„ ๊ฐ–์ถ˜ ์ƒˆ ์ปดํ“จํ„ฐ์—์„œ Bosch์˜ ์ƒˆ๋กœ์šด ๋ฒค์น˜ ๋งˆํฌ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

fast_hist ์—…๋ฐ์ดํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ๋ถ„์‚ฐ ๋œ xgboost์˜ ๊ฒฝ์šฐ ํ›จ์”ฌ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. @CodingCat ์•„๋ฌด๋„ AllReduce ํ˜ธ์ถœ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

@RAMitchell ์ €๋Š” fast_hist ์—…๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฝค ์ƒˆ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ ๋ชจ๋“œ ์ง€์›์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. 0.81 ๋ฆด๋ฆฌ์Šค ์ดํ›„์— ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@ Laurae2 FYI, C5.9xlarge ์‹œ์Šคํ…œ์—์„œ ๋ฒค์น˜ ๋งˆํฌ ์ œํ’ˆ๊ตฐ์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ XGBoost hist ๊ฒฐ๊ณผ๊ฐ€ ์ด์ „ ๊ฒฐ๊ณผ์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์›ํ•˜์‹œ๋ฉด ๋ฒˆํ˜ธ๋ฅผ ์˜ฌ๋ ค ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ Laurae2 ๋˜ํ•œ EC2 ๋จธ์‹ ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

@RAMitchell ์ €๋Š” fast_hist ์—…๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฝค ์ƒˆ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ ๋ชจ๋“œ ์ง€์›์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. 0.81 ๋ฆด๋ฆฌ์Šค ์ดํ›„์— ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@ hcho3 ๊ดœ์ฐฎ๋‹ค ๋ฉด ๋ถ„์‚ฐ ๋œ ๋” ๋น ๋ฅธ ํžˆ์Šคํ† ๊ทธ๋žจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ป๊ธฐ ์œ„ํ•ด ๋„์ „ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ Uber ์ž‘์—…์—์„œ ์ ˆ๋ฐ˜์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‚ด๋…„์—๋Š” xgboost์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์•  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@CodingCat ๊ทธ๊ฑฐ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! 'ํžˆ ์ŠคํŠธ'์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

@CodingCat ์ฐธ๊ณ ๋กœ, 0.81 ๋ฆด๋ฆฌ์Šค ์งํ›„ 'hist'์—…๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์ง€์›์„ ์ถ”๊ฐ€ ํ•  ๋•Œ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ hcho3 @CodingCat approx ๊ฐ€ ์ง€๋‚œ๋‹ฌ์— ์ œ๊ฑฐ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ž…๋‹ˆ๊นŒ?

https://github.com/dmlc/xgboost/commit/70d208d68c3a32aaa4fcd6aa456f286a4da5912f#diff -53a3a623be5ce5a351a89012c7b03a31 (PR https://github.com/dmlc/xgboost/pull/3395 ์ œ๊ฑฐ๋จ tree_method = approx ?) => ๋™์ผ ํ•ด์ง ์•ฝ๊ณผ ๋น„ ์•ฝ ์‚ฌ์ด์˜ ๊ฒฐ๊ณผ ...

@ Laurae2 ๋ฆฌํŒฉํ„ฐ๋ง์ด approx ์„ ํƒ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด approx ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ Laurae2 ์‚ฌ์‹ค, ๋‹น์‹ ์ด ๋งž์Šต๋‹ˆ๋‹ค. approx ๊ฐ€ ์—ฌ์ „ํžˆ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์žˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ tree_method=approx ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์–ด๋„ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์กฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ # 3840์ด ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค 0.81์€์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ • ๋  ๋•Œ๊นŒ์ง€ ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@ hcho3 ๋น ๋ฅธ ํžˆ์Šคํ† ๊ทธ๋žจ์œผ๋กœ ๋‚ด ์„œ๋ฒ„์—์„œ ๋งค์šฐ ์ด์ƒํ•œ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์ผ ๋ฒค์น˜ ๋งˆํฌ ๊ณ„์‚ฐ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค (๋น ๋ฅธ ํžˆ์Šคํ† ๊ทธ๋žจ์˜ ์—„์ฒญ๋‚œ ๋ถ€์ •์ ์ธ ํšจ์œจ์„ฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค. ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

๋Œ€๋žต์ ์œผ๋กœ ํšจ์œจ์„ฑ์ด ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์ด ์˜ˆ์ƒ๋ณด๋‹ค ํ›จ์”ฌ ์ข‹์ง€๋งŒ, ์–ด๋–ค ์ปดํ“จํ„ฐ์—์„œ๋„ ์‚ฌ์‹ค ์ผ ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ํžˆ์Šคํ† ๊ทธ๋žจ์ด ์„œ๋ฒ„์— ์™„๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ 477 ๊ฐœ์˜ ๊ธฐ๋Šฅ (๊ฒฐ ์ธก๊ฐ’์ด 5 % ๋ฏธ๋งŒ์ธ ๊ธฐ๋Šฅ)์ด์žˆ๋Š” Bosch ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

3000 ์‹œ๊ฐ„ ์ด์ƒ์˜ CPU ์‹œ๊ฐ„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค ... (์ ์–ด๋„ ๋‚ด ์„œ๋ฒ„๋Š” ์ž ์‹œ ๋™์•ˆ ์ž˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค) ๋‹ค์Œ์€ https://github.com/hcho3/xgboost-fast-hist-perf- lab / blob / master / src / build_hist.cc ( Intel VTune ํฌํ•จ).

@ hcho3 ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ์ปดํ“จํŒ…์„ ์™„๋ฃŒํ•˜๋ฉด ๋ฒค์น˜ ๋งˆํฌ R ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. depth=8 ๋ฐ nrounds=50 , ๋ชจ๋“  tree_method=exact , tree_method=approx ( updater=grow_histmaker,prune ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์‚ฌ์šฉ, # 3849 ์ด์ „) ๋ฐ tree_method=hist , ์Šค๋ ˆ๋“œ 1 ๊ฐœ์—์„œ 72 ๊ฐœ. ์ž‘์—… ํ•  ๋” ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  AWS์—์„œ๋„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

์•„๋ž˜์˜ ์˜ˆ๋น„ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํ‰๊ท  ๊ฒฐ๊ณผ๋ฅผ 7 ํšŒ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž˜ ๋ณด๋ ค๋ฉด ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค. ํ•ฉ์„ฑ ํ…Œ์ด๋ธ”์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋กฏ ์‡ผ์™€ ๋‹ฌ๋ฆฌ CPU๋Š” ๊ณ ์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ๋Š” ๋‚ด๊ฐ€ ์ค€๋น„ํ•œ ์ฐจํŠธ์™€ ๋ถ„๋ช…ํžˆ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค ... (๋™์ž‘์ด ์–ผ๋งˆ๋‚˜ ์ด์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— UMA๋ฅผ ์ผœ๊ณ  (NUMA๋ฅผ ๋ˆ ์ƒํƒœ์—์„œ) ์ด๊ฒƒ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ๋‚˜์ค‘์— Intel VTune์—์„œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด:

  • CPU : Dual Xeon Gold 6154, 3.7GHz ์˜ฌ ํ„ฐ๋ณด, 2x 18 ์ฝ”์–ด / 36 ์Šค๋ ˆ๋“œ
  • RAM : 4x 64GB RAM DDR4 2666MHz (๋“€์–ผ ์ฑ„๋„, ์•ฝ 80GBps ๋Œ€์—ญํญ)
  • BIOS : NUMA ์ผœ๊ธฐ, ํ•˜์œ„ NUMA ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋„๊ธฐ
  • ์šด์˜ ์ฒด์ œ : Pop_OS! 18.10
  • ์ฃผ์ง€์‚ฌ : ์„ฑ๋Šฅ
  • ์ปค๋„ : 4.18.0-10
  • ์ปค๋„ ํ”Œ๋ž˜๊ทธ : pti=off spectre_v2=off spec_store_bypass_disable=off l1tf=off noibrs noibpb nopti no_stf_barrier
  • ์ปดํŒŒ์ผ๋Ÿฌ : gcc 8.2.0
  • R : gcc 8.2.0 ๋ฐ Intel MKL๋กœ ์ปดํŒŒ์ผ ๋œ 3.5.1
  • R์˜ ์ถ”๊ฐ€ ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ : -O3 -mtune=native

๋ฉœํŠธ ๋‹ค์šด / ์ŠคํŽ™ํ„ฐ ๋ณดํ˜ธ :

laurae@laurae-compute:~$ head /sys/devices/system/cpu/vulnerabilities/*
==> /sys/devices/system/cpu/vulnerabilities/l1tf <==
Mitigation: PTE Inversion; VMX: vulnerable

==> /sys/devices/system/cpu/vulnerabilities/meltdown <==
Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/spec_store_bypass <==
Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/spectre_v1 <==
Mitigation: __user pointer sanitization

==> /sys/devices/system/cpu/vulnerabilities/spectre_v2 <==
Vulnerable

| ์Šค๋ ˆ๋“œ | ์ •ํ™•ํ•จ (ํšจ์œจ์„ฑ) | ๋Œ€๋žต์ ์ธ (ํšจ์œจ์„ฑ) | Hist (ํšจ์œจ์„ฑ) |
| --- : | --- : | --- : | --- : |
| 1 | 1367 ์ดˆ (100 %) | 1702 ๋…„๋Œ€ (100 %) | 69.9 ์ดˆ (100 %) |
| 2 | 758.7 ์ดˆ (180 %) | 881.0 ์ดˆ (193 %) | 52.5 ์ดˆ (133 %) |
| 4 | 368.6 ์ดˆ (371 %) | 445.6 ์ดˆ (382 %) | 31.7 ์ดˆ (221 %) |
| 6 | 241.5 ์ดˆ (566 %) | 219.6 ์ดˆ (582 %) | 24.1 ์ดˆ (290 %) |
| 9 | 160.4 ์ดˆ (852 %) | 194.4 ์ดˆ (875 %) | 23.1 ์ดˆ (303 %) |
| 18 | 86.3 ์ดˆ (1583 %) | 106.3 ์ดˆ (1601 %) | 24.2 ์ดˆ (289 %) |
| 27 | 66.4 ์ดˆ (2059 %) | 80.2 ์ดˆ (2122 %) | 63.6 ์ดˆ (110 %) |
| 36 | 52.9 ์ดˆ (2586 %) | 60.0 ์ดˆ (2837 %) | 55.2 ์ดˆ (127 %) |
| 54 | 215.4 ์ดˆ (635 %) | 289.5 ์ดˆ (588 %) | 343.0 ์ดˆ (20 %) |
| 72 | 218.9 ์ดˆ (624 %) | 295.6 ์ดˆ (576 %) | 1237.2 ์ดˆ (6 %) |

xgboost ์ •ํ™•ํ•œ ์†๋„ :
image

xgboost ์ •ํ™•ํ•œ ํšจ์œจ์„ฑ :
image

xgboost ๋Œ€๋žต์ ์ธ ์†๋„ :
image

xgboost ๋Œ€๋žต์ ์ธ ํšจ์œจ์„ฑ :
image

xgboost ํžˆ์Šคํ† ๊ทธ๋žจ ์†๋„ :
image

xgboost ํžˆ์Šคํ† ๊ทธ๋žจ ํšจ์œจ์„ฑ :
image

์—ฌ๋Ÿฌ ์†Œ์ผ“์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@RAMitchell NUMA ๋…ธ๋“œ์˜ ๊ฐ€์šฉ์„ฑ์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Sub NUMA ํด๋Ÿฌ์Šคํ„ฐ๋ง (1 ์†Œ์ผ“ = 2 NUMA ๋…ธ๋“œ ๋Œ€์‹  2 ์†Œ์ผ“ = 4 NUMA ๋…ธ๋“œ)์„ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ๋ณต์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํ›ˆ๋ จ ์ค‘ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ์„์ˆ˜๋ก ๊ฒฐ๊ณผ๊ฐ€ ๋” ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค). ).

image

๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๊ณ„ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ xgboost์—๋Š” NUMA ๋…ธ๋“œ ์ฒ˜๋ฆฌ๋ฅผ์œ„ํ•œ ์ตœ์ ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์ค‘ ์†Œ์ผ“ ํ™˜๊ฒฝ์ด๋‚˜ COD (Cluster on Die) ๋˜๋Š” SNC (Sub NUMA Clustering)๋ฅผ ํ†ตํ•ด NUMA ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํ•˜์ดํผ ์Šค๋ ˆ๋”ฉ์œผ๋กœ ์ธํ•ด ์›Œํฌ๋กœ๋“œ ๋ถˆ๊ท ํ˜•์ด ํฌ๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ 1์€ xgboost hist ๋ชจ๋“œ์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ €ํ•˜๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค (์ด ๋ฌธ์ œ).

๋ฌธ์ œ 2๋Š” NUMA ์ตœ์ ํ™”์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์—ด์–ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ).

๋‹ค์Œ์€ NUMA๊ฐ€ ๋น„ํ™œ์„ฑํ™” ๋œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๋น„๊ต๋ฅผ ์œ„ํ•ด NUMA๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฐ๊ณผ๋ฅผ ํŽ˜์–ด๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ CPU๊ฐ€ 72 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ์—์„œ ์ปค๋„ ์Šค์ผ€์ค„๋Ÿฌ๋กœ ์••๋„๋˜๊ธฐ ์ „์— ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด 71 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค (์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•จ).

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์˜ ๊ฒฝ์šฐ UMA ์š”๊ธˆ์ด NUMA๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋น„ NUMA ์ธ์‹ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ธํ„ฐ๋ฆฌ๋น™์˜ ์˜ˆ์ƒ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.


์‹œ๊ฐ„ ์‹œ๊ฐ„ :

| ์Šค๋ ˆ๋“œ | ์ •ํ™•ํ•œ
NUMA | ์ •ํ™•ํ•œ
UMA | ๋Œ€๋žต
NUMA | ๋Œ€๋žต
UMA | Hist
NUMA | Hist
UMA |
| --- : | --- : | --- : | --- : | --- : | --- : | --- : |
| 1 | 1367 ๋…„๋Œ€ | 1667 ๋…„๋Œ€ | 1702 ๋…„๋Œ€ | 1792 ๋…„๋Œ€ | 69.9 ์ดˆ | 85.6 ์ดˆ |
| 2 | 758.7 ์ดˆ | 810.3 ์ดˆ โ€‹โ€‹| 881.0 ์ดˆ | 909.0 ์ดˆ | 52.5 ์ดˆ | 54.1 ์ดˆ |
| 4 | 368.6 ์ดˆ | 413.0 ์ดˆ | 445.6 ์ดˆ | 452.9 ์ดˆ | 31.7 ์ดˆ | 36.2 ์ดˆ |
| 6 | 241.5 ์ดˆ | 273.8 ์ดˆ | 219.6 ์ดˆ | 302.4 ์ดˆ | 24.1 ์ดˆ | 30.5 ์ดˆ |
| 9 | 160.4 ์ดˆ | 182.8 ์ดˆ | 194.4 ์ดˆ | 202.5 ์ดˆ | 23.1 ์ดˆ | 28.3 ์ดˆ |
| 18 | 86.3 ์ดˆ | 94.4 ์ดˆ | 106.3 ์ดˆ | 105.8 ์ดˆ | 24.2 ์ดˆ | 31.2 ์ดˆ |
| 27 | 66.4 ์ดˆ | 66.4 ์ดˆ | 80.2 ์ดˆ | 73.6 ์ดˆ | 63.6 ์ดˆ | 37.5 ์ดˆ |
| 36 | 52.9 ์ดˆ | 52.7 ์ดˆ | 60.0 ์ดˆ | 59.4 ์ดˆ | 55.2 ์ดˆ | 43.5 ์ดˆ |
| 54 | 215.4 ์ดˆ | 49.2 ์ดˆ | 289.5 ์ดˆ | 58.5 ์ดˆ | 343.0 ์ดˆ | 57.4 ์ดˆ |
| 71 | 218.3 ์ดˆ | 47.01 ์ดˆ | 295.9 ์ดˆ | 56.5 ์ดˆ | 1238.2 ์ดˆ | 71.5 ์ดˆ |
| 72 | 218.9 ์ดˆ | 49.0 ์ดˆ | 295.6 ์ดˆ | 58.6 ์ดˆ | 1237.2 ์ดˆ | 79.1 ์ดˆ |

ํšจ์œจ์„ฑ ํ‘œ :

| ์Šค๋ ˆ๋“œ | ์ •ํ™•ํ•œ
NUMA | ์ •ํ™•ํ•œ
UMA | ๋Œ€๋žต
NUMA | ๋Œ€๋žต
UMA | Hist
NUMA | Hist
UMA |
| --- : | --- : | --- : | --- : | --- : | --- : | --- : |
| 1 | 100 % | 100 % | 100 % | 100 % | 100 % | 100 % |
| 2 | 180 % | 206 % | 193 % | 197 % | 133 % | 158 % |
| 4 | 371 % | 404 % | 382 % | 396 % | 221 % | 236 % |
| 6 | 566 % | 609 % | 582 % | 593 % | 290 % | 280 % |
| 9 | 852 % | 912 % | 875 % | 885 % | 303 % | 302 % |
| 18 | 1583 % | 1766 % | 1601 % | 1694 % | 289 % | 274 % |
| 27 | 2059 % | 2510 % | 2122 % | 2436 % | 110 % | 229 % |
| 36 | 2586 % | 3162 % | 2837 % | 3017 % | 127 % | 197 % |
| 54 | 635 % | 3384 % | 588 % | 3065 % | 20 % | 149 % |
| 71 | 626 % | 3545 % | 575 % | 3172 % | 6 % | 120 % |
| 72 | 624 % | 3401 % | 576 % | 3059 % | 6 % | 108 % |


UMA ๋ชจ๋“œ.

xgboost ์ •ํ™•ํ•œ ์†๋„ :
image

xgboost ์ •ํ™•ํ•œ ํšจ์œจ์„ฑ :
image

xgboost ๋Œ€๋žต์ ์ธ ์†๋„ :
image

xgboost ๋Œ€๋žต์ ์ธ ํšจ์œจ์„ฑ :
image

xgboost ํžˆ์Šคํ† ๊ทธ๋žจ ์†๋„ :
image

xgboost ํžˆ์Šคํ† ๊ทธ๋žจ ํšจ์œจ์„ฑ :
image

https://github.com/dmlc/xgboost/pull/3957#issuecomment -453815876์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ปค๋ฐ‹ a2dc929 (CPU ๊ฐœ์„  ์ „) ๋ฐ 5f151c5 (CPU ๊ฐœ์„  ํ›„) ์ปค๋ฐ‹์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋“€์–ผ ์ œ์˜จ 6154 ์„œ๋ฒ„ (์ธํ…”์ด ์•„๋‹Œ gcc ์ปดํŒŒ์ผ๋Ÿฌ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Bosch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 500 ํšŒ ๋ฐ˜๋ณต, eta 0.10 ๋ฐ ๊นŠ์ด 8์„ ์‚ฌ์šฉํ•˜๊ณ  1 ~ 72 ๊ฐœ์˜ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๊ฐ๊ฐ 3 ๋ฒˆ ์‹คํ–‰์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๋Œ€ ์„ฑ๋Šฅ์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด ์•ฝ 50 % (1/3 ๋” ๋น ๋ฆ„)์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด์ „ # 3957 (์ปค๋ฐ‹ a2dc929)์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

image

๋‹ค์Œ์€ # 3957 (์ปค๋ฐ‹ 5f151c5)์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

image

ํšจ์œจ์„ฑ ๊ณก์„ ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™•์žฅ ์„ฑ์ด 50 % ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ด๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์—ฌ์ „ํžˆ ๊ฐœ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ฏธ์นœ ๋“ฏ์ด 1000-2000 % ๋ฒ”์œ„์— ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํฐ).

a2dc929์˜ ํšจ์œจ ๊ณก์„  :

image

5f151c5์˜ ํšจ์œจ ๊ณก์„  :

image

@ Laurae2 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ๊ณ ์ •ํ•˜์—ฌ ํ•ญ์ƒ ๋ฌธ์ œ ์ถ”์ ๊ธฐ์˜ ๋งจ ์œ„์— ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœํ•ด์•ผ ํ•  ์ผ์ด ๋” ๋งŽ์Šต๋‹ˆ๋‹ค.

@ hcho3 @SmirnovEgorRu X ์ฝ”์–ด x 1 xgboost ์Šค๋ ˆ๋“œ์—์„œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ ์ „์ฒด์ ์œผ๋กœ 10 % -15 %์˜ ํŒจ๋„ํ‹ฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ปค๋ฐ‹ 5f151c5๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 100 % ๊ณ ๋ฐ€๋„ ๋ฐ์ดํ„ฐ์˜ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์›Œํฌ๋กœ๋“œ์—์„œ ์ž‘์€ CPU ์„ฑ๋Šฅ ํšŒ๊ท€๋ฅผ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 50M ํ–‰ x 100 ๊ฐœ ์—ด์˜ ์ž„์˜ ๋ฐ€๋„ ๋ฐ์ดํ„ฐ (gcc 8)์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. Python / R์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ›ˆ๋ จํ•˜๋ ค๋ฉด 256GB ์ด์ƒ์˜ RAM์ด ํ•„์š”ํ•˜๋ฉฐ 3 ํšŒ (6 ์ผ) ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

a2dc929 ์ปค๋ฐ‹ :

image

5f151c5 ์ปค๋ฐ‹ :

image

๋งค์šฐ ์œ ์‚ฌํ•œ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์„ฑ๋Šฅ์œผ๋กœ ์ด์–ด์ง€์ง€ ๋งŒ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์„ฑ๋Šฅ์€ ๋” ๋Š๋ฆฐ ํ›ˆ๋ จ์— ์˜ํ•ด ํƒ€๊ฒฉ์„๋ฐ›์Šต๋‹ˆ๋‹ค ( @SmirnovEgorRu ์˜ ๊ฐœ์„  ์‚ฌํ•ญ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋” ๋น ๋ฅด๊ฒŒ ํ™•์žฅ๋˜๋ฉฐ, ์ด์ „์— 13 ๊ฐœ ์Šค๋ ˆ๋“œ์— ๋น„ํ•ด 11 ๊ฐœ ์Šค๋ ˆ๋“œ์—์„œ 500 % ํšจ์œจ์„ฑ์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค).

gmat โ€‹โ€‹์ƒ์„ฑ ์‹œ๊ฐ„์„ ์ œ์™ธํ•˜๊ณ  50M x 100์—์„œ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

| ์ปค๋ฐ‹ | ํ•ฉ๊ณ„ | gmat โ€‹โ€‹์‹œ๊ฐ„ | ๊ธฐ์ฐจ ์‹œ๊ฐ„ |
| : --- | --- : | --- : | --- : |
| a2dc929 | 2926 ๋…„๋Œ€ | 816 ์ดˆ | 2109 ์ดˆ |
| 5f151c5 | (+ 13 %) 3316 ์ดˆ | (~ %) 817 ์ดˆ | (+ 18 %) 2499 ์ดˆ |

@ hcho3 @ Laurae2 ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜์ดํผ ์Šค๋ ˆ๋”ฉ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ”์ธ๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹Œ ์ฝ”์–ด ๋ฐ”์ธ๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ์—๋งŒ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.
HT๋Š” ๋” ๋งŽ์€ ์‹คํ–‰ ๋ช…๋ น์„ ํ†ตํ•ด CPU ํŒŒ์ดํ”„ ๋ผ์ธ์„๋กœ๋“œํ•˜๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์ด ์ด์ „ ๋ช…๋ น์˜ ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ (๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ œํ•œ)-HT๊ฐ€ ์‹ค์ œ๋กœ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํŠน์ • ์›Œํฌ๋กœ๋“œ์—์„œ ์ตœ๋Œ€ 1.5 ๋ฐฐ์˜ ์†๋„ ํ–ฅ์ƒ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์— ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๋Š” ๊ฒฝ์šฐ (๋ฉ”๋ชจ๋ฆฌ ๋ฐ”์ธ๋”ฉ)-HT๋Š” ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. 2 ๊ฐœ์˜ ํ•˜์ดํผ ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜์˜ CPU ์บ์‹œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์„œ๋กœ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Gradient Boosting-๋ฉ”๋ชจ๋ฆฌ ๋ฐ”์šด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜. HT ์‚ฌ์šฉ์€ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์•„์•ผํ•˜๋ฉฐ ์Šค๋ ˆ๋”ฉ ๋Œ€ 1 ์Šค๋ ˆ๋“œ ๋ฒ„์ „์œผ๋กœ ์ธํ•œ ์ตœ๋Œ€ ์†๋„ ํ–ฅ์ƒ์€ ํ•˜๋“œ์›จ์–ด ์ฝ”์–ด ์ˆ˜์— ์˜ํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HT์—†์ด CPU์—์„œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

NUMA๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ-DAAL ๊ตฌํ˜„์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ฝ”์–ด๋ณ„๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œ์–ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์•ฝ๊ฐ„์˜ ์†๋„ ์ €ํ•˜๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์กฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์ˆ˜์ •์ด ์‰ฝ์Šต๋‹ˆ๋‹ค.

@ hcho3 ํ˜„์žฌ ์ตœ์ ํ™”์˜ ๋‹ค์Œ ๋ถ€๋ถ„์„ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ƒˆ๋กœ์šด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ค€๋น„ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@SmirnovEgorRu ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ, ๋ ˆ๋ฒจ ๋ณ„ ๋…ธ๋“œ ํ™•์žฅ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ตœ๊ทผ ๋…ผ์˜๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค : # 4077.

@ Laurae2 ์ด์ œ # 3957, # 4310 ๋ฐ # 4529์— ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ํ™•์žฅ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? NUMA์˜ ํšจ๊ณผ๋Š” ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ hcho3 ๋‚˜์ค‘์— ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์‹œ๋„ํ•˜์ง€๋งŒ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํŠนํžˆ # 3957๋กœ ์ธํ•ด 30 ๋ฐฐ ์ด์ƒ์˜ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒ ํ•จ).

@szilard ์—์„œ๋„ ์„ฑ๋Šฅ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ

์—ด๊ธฐ ์˜ˆ : https://github.com/szilard/GBM-perf/issues/9

๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ™•์žฅ ๋ฐ ์‹ค์ œ๋กœ NUMA ๋ฌธ์ œ๊ฐ€ ์‹ค์ œ๋กœ ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ์ฝ”์–ด :

Screen Shot 2020-09-17 at 12 37 55 AM

๋” ์ž‘์€ ๋ฐ์ดํ„ฐ (0.1M ํ–‰)์—์„œ ๋งค์šฐ ์ฃผ๋ชฉํ• ๋งŒํ•œ ๊ฐœ์„  ์‚ฌํ•ญ

Screen Shot 2020-09-17 at 12 43 26 AM
Screen Shot 2020-09-17 at 12 43 34 AM

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ :

https://github.com/szilard/GBM-perf#multi-core-scaling-cpu
https://github.com/szilard/GBM-perf/issues/29#issuecomment-689713624

๋˜ํ•œ NUMA ๋ฌธ์ œ๊ฐ€ ํฌ๊ฒŒ ์™„ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2020-09-17 at 12 46 49 AM

Screen Shot 2020-09-17 at 12 48 23 AM
Screen Shot 2020-09-17 at 12 48 32 AM

@szilard ๋ฒค์น˜ ๋งˆํฌ ์ž‘์—…์— ์‹œ๊ฐ„์„

์˜ˆ,์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ๋‹ค์Œ์€ xgboost์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์— ๋Œ€ํ•ด 1, 16 (1so & no HT) ๋ฐ 64 (๋ชจ๋‘) ์ฝ”์–ด์—์„œ EC2 r4.16xlarge (๊ฐ๊ฐ 16c + 16HT๊ฐ€์žˆ๋Š” 2 ์†Œ์ผ“)์˜ 1M ํ–‰์— ๋Œ€ํ•œ ๊ต์œก ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

Screen Shot 2020-09-17 at 11 11 50 AM

https://github.com/szilard/GBM-perf/issues/40

@szilard ,

์ถ”์‹  ์œ„์—์„œ ๋‚˜๋Š” XGB 1.2๊ฐ€ 1.1 ๋ฒ„์ „์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ํšŒ๊ท€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋ช…ํ™•ํžˆํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ๋Š” ์˜ˆ์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@szilard ,์ด ์ฃผ์ œ๊ฐ€ ํฅ๋ฏธ ๋กญ๋‹ค๋ฉด์ด ๋ธ”๋กœ๊ทธ์—์„œ CPU ์ตœ์ ํ™”์˜ ๋ฐฐ๊ฒฝ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://medium.com/intel-analytics-software/new-optimizations-for-cpu-in-xgboost-1-1-81144ea21115

์ตœ์ ํ™” ์ž‘์—…๊ณผ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๋งํฌ์— ๋Œ€ํ•ด @SmirnovEgorRu ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค (์ด์ „์—์ด ๊ฒŒ์‹œ๋ฌผ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค).

๋‚ด ๋ฒˆํ˜ธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์žฌํ˜„ํ•˜๊ณ  ํ–ฅํ›„ ๋ฐ ๋˜๋Š” ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด์—์„œ ์ƒˆ ๋ฒˆํ˜ธ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์ด๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ Dockerfile์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/szilard/GBM-perf/tree/master/analysis/xgboost_cpu_by_version

์ฒซ ๋ฒˆ์งธ ์†Œ์ผ“, ํ•˜์ดํผ ์Šค๋ ˆ๋“œ ์ฝ”์–ด (์˜ˆ : 2 ๊ฐœ์˜ ์†Œ์ผ“, 16c + 16HT๊ฐ€์žˆ๋Š” r4.16xlarge์˜ ๊ฒฝ์šฐ 0-15) ๋ฐ xgboost ๋ฒ„์ „์˜ CPU ์ฝ”์–ด ID๋ฅผ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

VER=v1.2.0
CORES_1SO_NOHT=0-15    ## set physical core ids on first socket, no hyperthreading
sudo docker build --build-arg CACHE_DATE=$(date +%Y-%m-%d) --build-arg VER=$VER -t gbmperf_xgboost_cpu_ver .
sudo docker run --rm -e CORES_1SO_NOHT=$CORES_1SO_NOHT gbmperf_xgboost_cpu_ver

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ”์–ด์˜ ๊ต์œก ์‹œ๊ฐ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ (EC2) ๋•Œ๋ฌธ์ธ์ง€ NUMA ๋•Œ๋ฌธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๋‹ค์†Œ ๋†’์€ ๋ณ€๋™์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฒค์น˜ ๋งˆํฌ์—์„œ ์‚ฌ์šฉํ•œ r4.16xlarge๋ณด๋‹ค ๋” ๋†’์€ ์ฃผํŒŒ์ˆ˜์™€ ๋” ๋งŽ์€ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง„ c5.metal์˜ ๊ฒฐ๊ณผ :

https://github.com/szilard/GBM-perf/issues/41

TLDR : xgboost๋Š” ๋‹ค๋ฅธ lib์— ๋น„ํ•ด ๋” ๋น ๋ฅด๊ณ  ๋” ๋งŽ์€ ์ฝ”์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

Screen Shot 2020-09-21 at 9 57 31 AM

xgboost์˜ ์ฝ”์–ด 1 ๊ฐœ์—์„œ 24 ๊ฐœ๋กœ์˜ ์†๋„ ํ–ฅ์ƒ์€ ์ž‘์€ ๋ฐ์ดํ„ฐ (1M ํ–‰, ์ค‘๊ฐ„ ์—ด์˜ ํŒจ๋„)๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ (10M ํ–‰, ์˜ค๋ฅธ์ชฝ ํŒจ๋„)์—์„œ ๋” ์ž‘์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์ฆ๊ฐ€ ๋œ ์บ์‹œ ์ ์ค‘ ๋˜๋Š” ๋‹ค๋ฅธ libs์—๋Š”์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

AMD์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/szilard/GBM-perf/issues/42

xgboost ์ตœ์ ํ™”๊ฐ€ AMD์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰