์ด์ ๋ฐฉ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๊ฐ๋์์ต๋๋ค. ๋ฉํฐ ์ฝ์ด CPU ์ฑ๋ฅ์ ๋๋ค.
ํ์ฌ hist
ํธ๋ฆฌ ์ฑ์ฅ ์๊ณ ๋ฆฌ์ฆ ( tree_method=hist
)์ ๋ฉํฐ ์ฝ์ด CPU์์ ์ ๋๋ก ํ์ฅ๋์ง ์์ต๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ ์ธํธ ์ ๊ฒฝ์ฐ ์ค๋ ๋ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค . ์ด ๋ฌธ์ ๋ @ Laurae2 ์ Gradient Boosting Benchmark ( GitHub repo )์์ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
Bosch ๋ฐ์ดํฐ ์ธํธ ์ ํ์ฅ ๋์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
'hist'์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ํ์ธํ์ฌ hcho3 / xgboost-fast-hist-perf-lab ์ด๋ผ๋ ์์ ์ ์ฅ์์ ์ ์ฅํ์ต๋๋ค. src / build_hist.cc ๋ฅผ ์์ ํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
@ 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์์ ํ์ธํ๊ฒ ์ต๋๋ค.
ํ๋์จ์ด์ ์ํํธ์จ์ด:
pti=off spectre_v2=off spec_store_bypass_disable=off l1tf=off noibrs noibpb nopti no_stf_barrier
-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 ์ ํํ ์๋ :
xgboost ์ ํํ ํจ์จ์ฑ :
xgboost ๋๋ต์ ์ธ ์๋ :
xgboost ๋๋ต์ ์ธ ํจ์จ์ฑ :
xgboost ํ์คํ ๊ทธ๋จ ์๋ :
xgboost ํ์คํ ๊ทธ๋จ ํจ์จ์ฑ :
์ฌ๋ฌ ์์ผ์ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@RAMitchell NUMA ๋ ธ๋์ ๊ฐ์ฉ์ฑ์ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Sub NUMA ํด๋ฌ์คํฐ๋ง (1 ์์ผ = 2 NUMA ๋ ธ๋ ๋์ 2 ์์ผ = 4 NUMA ๋ ธ๋)์ ์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค (ํ๋ จ ์ค ์ค๋ ๋๊ฐ ์ ์์๋ก ๊ฒฐ๊ณผ๊ฐ ๋ ๋๋น ์ง๋๋ค). ).
๋๋ถ๋ถ์ ๊ธฐ๊ณ ํ์ต ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก 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 ์ ํํ ์๋ :
xgboost ์ ํํ ํจ์จ์ฑ :
xgboost ๋๋ต์ ์ธ ์๋ :
xgboost ๋๋ต์ ์ธ ํจ์จ์ฑ :
xgboost ํ์คํ ๊ทธ๋จ ์๋ :
xgboost ํ์คํ ๊ทธ๋จ ํจ์จ์ฑ :
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)์ ๋ํ ๊ฒฐ๊ณผ์ ๋๋ค.
๋ค์์ # 3957 (์ปค๋ฐ 5f151c5)์ ๋ํ ๊ฒฐ๊ณผ์ ๋๋ค.
ํจ์จ์ฑ ๊ณก์ ์ ์ฌ์ฉํ๋ฉด ํ์ฅ ์ฑ์ด 50 % ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค (์ด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ์ฌ์ ํ ๊ฐ์ ํด์ผํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ฏธ์น ๋ฏ์ด 1000-2000 % ๋ฒ์์ ๋๋ฌ ํ ์ ์๋ค๋ฉด ํฐ).
a2dc929์ ํจ์จ ๊ณก์ :
5f151c5์ ํจ์จ ๊ณก์ :
@ Laurae2 ๊ฐ์ฌํฉ๋๋ค.์ด ๋ฌธ์ ๋ฅผ ๊ณ ์ ํ์ฌ ํญ์ ๋ฌธ์ ์ถ์ ๊ธฐ์ ๋งจ ์์ ์๋๋กํฉ๋๋ค. ์ค์ ๋กํด์ผ ํ ์ผ์ด ๋ ๋ง์ต๋๋ค.
@ hcho3 @SmirnovEgorRu X ์ฝ์ด x 1 xgboost ์ค๋ ๋์์ ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋์ ์ํ ํ ๋ ์ ์ฒด์ ์ผ๋ก 10 % -15 %์ ํจ๋ํฐ๊ฐ ๋ฐ์ํ๋ ์ปค๋ฐ 5f151c5๋ฅผ ์ฌ์ฉํ์ฌ 100 % ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ์ ๋จ์ผ ์ค๋ ๋ ์ํฌ๋ก๋์์ ์์ CPU ์ฑ๋ฅ ํ๊ท๋ฅผ๋ณด๊ณ ์์ต๋๋ค.
๋ค์์ 50M ํ x 100 ๊ฐ ์ด์ ์์ ๋ฐ๋ ๋ฐ์ดํฐ (gcc 8)์ ์์ ๋๋ค. Python / R์์ ์ฌ๋ฐ๋ฅด๊ฒ ํ๋ จํ๋ ค๋ฉด 256GB ์ด์์ RAM์ด ํ์ํ๋ฉฐ 3 ํ (6 ์ผ) ์คํ๋ฉ๋๋ค.
a2dc929 ์ปค๋ฐ :
5f151c5 ์ปค๋ฐ :
๋งค์ฐ ์ ์ฌํ ๋ค์ค ์ค๋ ๋ ์ฑ๋ฅ์ผ๋ก ์ด์ด์ง์ง ๋ง ๋จ์ผ ์ค๋ ๋ ์ฑ๋ฅ์ ๋ ๋๋ฆฐ ํ๋ จ์ ์ํด ํ๊ฒฉ์๋ฐ์ต๋๋ค ( @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 ๋ฌธ์ ๊ฐ ์ค์ ๋ก ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค.
๋ฉํฐ ์ฝ์ด :
๋ ์์ ๋ฐ์ดํฐ (0.1M ํ)์์ ๋งค์ฐ ์ฃผ๋ชฉํ ๋งํ ๊ฐ์ ์ฌํญ
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ :
https://github.com/szilard/GBM-perf#multi-core-scaling-cpu
https://github.com/szilard/GBM-perf/issues/29#issuecomment-689713624
๋ํ NUMA ๋ฌธ์ ๊ฐ ํฌ๊ฒ ์ํ๋์์ต๋๋ค.
@szilard ๋ฒค์น ๋งํฌ ์์ ์ ์๊ฐ์
์,์ด ์ค๋ ๋์ ๋ชจ๋ ์ฌ๋๋ค์ด์ด ์์ ์ ์ํ ํ ๊ฒ์ ๋ํด ํ๋ฅญํฉ๋๋ค.
์ฐธ๊ณ ๋ก, ๋ค์์ xgboost์ ๋ค์ํ ๋ฒ์ ์ ๋ํด 1, 16 (1so & no HT) ๋ฐ 64 (๋ชจ๋) ์ฝ์ด์์ EC2 r4.16xlarge (๊ฐ๊ฐ 16c + 16HT๊ฐ์๋ 2 ์์ผ)์ 1M ํ์ ๋ํ ๊ต์ก ์๊ฐ์ ๋๋ค.
@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์ ๋นํด ๋ ๋น ๋ฅด๊ณ ๋ ๋ง์ ์ฝ์ด๋ฅผ ์ต๋ํ ํ์ฉํฉ๋๋ค. ๐
๋๋ ์ด๊ฒ์ ๋ํด ๊ถ๊ธํฉ๋๋ค.
xgboost์ ์ฝ์ด 1 ๊ฐ์์ 24 ๊ฐ๋ก์ ์๋ ํฅ์์ ์์ ๋ฐ์ดํฐ (1M ํ, ์ค๊ฐ ์ด์ ํจ๋)๋ณด๋ค ํฐ ๋ฐ์ดํฐ (10M ํ, ์ค๋ฅธ์ชฝ ํจ๋)์์ ๋ ์์ต๋๋ค. ์ด๊ฒ์ ์ผ์ข ์ ์ฆ๊ฐ ๋ ์บ์ ์ ์ค ๋๋ ๋ค๋ฅธ libs์๋์๋ ๊ฒ์ ๋๊น?
AMD์ ๋ํ ๋ช ๊ฐ์ง ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://github.com/szilard/GBM-perf/issues/42
xgboost ์ต์ ํ๊ฐ AMD์์๋ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฉํฐ ์ฝ์ด ํ์ฅ ๋ฐ ์ค์ ๋ก NUMA ๋ฌธ์ ๊ฐ ์ค์ ๋ก ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค.
๋ฉํฐ ์ฝ์ด :
๋ ์์ ๋ฐ์ดํฐ (0.1M ํ)์์ ๋งค์ฐ ์ฃผ๋ชฉํ ๋งํ ๊ฐ์ ์ฌํญ
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ :
https://github.com/szilard/GBM-perf#multi-core-scaling-cpu
https://github.com/szilard/GBM-perf/issues/29#issuecomment-689713624
๋ํ NUMA ๋ฌธ์ ๊ฐ ํฌ๊ฒ ์ํ๋์์ต๋๋ค.