Xgboost: рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ: 'hist' рдХреЗ рдорд▓реНрдЯреА-рдХреЛрд░ CPU рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЕрдХреНрддреВре░ 2018  ┬╖  44рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dmlc/xgboost

рдХрдорд░реЗ рдореЗрдВ рд╣рд╛рдереА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдорд▓реНрдЯреА-рдХреЛрд░ рд╕реАрдкреАрдпреВ рдкрд░ рдкреНрд░рджрд░реНрд╢рдиред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, hist рдкреЗрдбрд╝ рдЙрдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо ( tree_method=hist ) рдорд▓реНрдЯреА-рдХреЛрд░ рд╕реАрдкреАрдпреВ рдкрд░ рдЦрд░рд╛рдм рд╣реИрдВ: рдХреБрдЫ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдмрд┐рдЧрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЦреЛрдЬ @ рд▓реМрд░рд╛ 2 рдХреЗ рдЧреНрд░реИрдбрд┐рдПрдВрдЯ рдмреВрд╕реНрдЯрд┐рдВрдЧ рдмреЗрдВрдЪрдорд╛рд░реНрдХ ( GitHub repo ) рдиреЗ рдХреА рдереАред

рдмреЙрд╢ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
Performance scaling on C5.9xlarge

рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ

рдореИрдВрдиреЗ 'рд╣рд┐рд╕реНрдЯ' рдЕрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЕрдбрд╝рдЪрди рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рд╣реИ: hcho3 / xgboost-fast-hist-perf-lab ред рдЖрдк src / build_hist.cc рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░

  • рдбреЗрдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реЗрдЖрдЙрдЯ рдХреЛ CSR рд╕реЗ рдЗрд▓рдкреИрдХ рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЗрдЖрдЙрдЯ рдореЗрдВ
  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реВрддреНрд░ рдХреЗ рдмреАрдЪ рдХрд╛рдо рдХреЛ рдЕрдзрд┐рдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрд╛рд░реНрдп рдХрд╛ рдЕрд╕рдВрддреБрд▓рди рдбреЗрдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЕрдирд┐рдпрдорд┐рдд рд╡рд┐рд░рд▓ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред
  • рд╕рдореВрд╣ рдкреВрд░рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдПрдХ рд╕рд╛рде, рдПрдХ-рд╣реЙрдЯ-рдПрдиреНрдХреЛрдбреЗрдб рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпред
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 -68989131324

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ 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 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ рд▓реЙрд░рд╛ 2 GBT рдмреЗрдВрдЪрдорд╛рд░реНрдХ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдЧрд╣ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд░рд╣рд╛ рд╣реИред

@ hcho3 рдХреНрдпрд╛ OpenMP guided рд╢реЗрдбреНрдпреВрд▓ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ ellpack рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ ellpack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд╛ рд╕реНрдереИрддрд┐рдХ рдЖрд╡рдВрдЯрди guided рдпрд╛ dynamic OpenMP рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде рд╕рдВрддреБрд▓рд┐рдд рдХрд╛рд░реНрдпрднрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред dynamic , рдЖрдкрдХреЛ рд░рдирд┐рдВрдЧ рдХрддрд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдУрд╡рд░рд╣реЗрдб рдорд┐рд▓рддрд╛ рд╣реИ

рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ approx рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ?

рд╣рдо рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдорд▓реНрдЯреА-рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрдк-рдЗрд╖реНрдЯрддрдо рд╕реНрдкреАрдбрдЕрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ ... рджреВрд╕рд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

@CodingCat рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реВрдЯ рдХреЗрд╡рд▓ hist рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ approx рд╢реЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ hist (рдЬреИрд╕реЗ 3 рдзрд╛рдЧреЗ рд╕реЗ 36 рдзрд╛рдЧреЗ рдзреАрдореА) рд╣реИ?

@ hcho3 рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдХреЗрд╡рд▓ 8 рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рд╣рдо 8 рд╕реЗ 4 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╕реНрдкреАрдбрдЕрдк рдкрд╛рддреЗ рд╣реИрдВ .....

@ рдХреЛрдбрд┐рдВрдЧрдХреИрдЯ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ 8 рдзрд╛рдЧреЗ 4 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореЗ рдЪрд▓рддреЗ рд╣реИрдВ?

@CodingCat approx рдЗрддрдиреА рдЦрд░рд╛рдм рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рдореЗрд░реЗ 4 рдХреЛрд░ рд▓реИрдкрдЯреЙрдк (3.6 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ) рдкрд░ рднреА рдареАрдХ рд╕реЗ рдкреИрдорд╛рдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ 64 рдпрд╛ 72 рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред

@ hcho3 рдореИрдВ рдмрд╛рдж рдореЗрдВ 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-% рд╕реНрдкреАрдбрдЕрдк ... (рдпрджрд┐ рдореИрдВ рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рднреА рдЕрднрд┐рд╕рд░рдг рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ .....

@ рд▓реЙрд░рд╛ 2 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ

@ hcho3 рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдпрджрд┐ рдХреЛрдИ exact , approx рдФрд░ hist , depth=6 рд╕рд╛рде рд╕рднреА рди рдХрд░реЗред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдХрдореНрдкреНрдпреВрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдмреЙрд╢ рдкрд░ рдПрдХ рдирдИ рдорд╢реАрди рдкрд░ 3.7 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рд╕рднреА рдЯрд░реНрдмреЛ / 36 рдХреЛрд░ / 72 рдереНрд░реЗрдб / 80 рдЬреАрдмреАрдкреАрдПрд╕ рд░реИрдо рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рд╕рд╛рде рдирдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╡рд┐рддрд░рд┐рдд xgboost рдХреЗ рд▓рд┐рдП fast_hist updater рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред @CodingCat рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ AllReduce рдХреЙрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@RAMitchell рдореИрдВ рдмрд╣реБрдд рдирдпрд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ fast_hist updater рд▓рд┐рдЦрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдореЛрдб рд╕рдорд░реНрдерди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдореИрдВ 0.81 рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@ рд▓реЙрд░рд╛ 2 FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реВрдЯ рдХреЛ C5.9xlarge рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдпрд╛ рдФрд░ XGBoost hist рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдкреНрд░рддреАрдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдирдВрдмрд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВред

@ Laurae2 рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ EC2 рдорд╢реАрдиреЛрдВ рдХреА рдкрд╣реБрдВрдЪ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк EC2 рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

@RAMitchell рдореИрдВ рдмрд╣реБрдд рдирдпрд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ fast_hist updater рд▓рд┐рдЦрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдореЛрдб рд╕рдорд░реНрдерди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдореИрдВ 0.81 рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@ hcho3 рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЧрдП рддреЗрдЬрд╝ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдиреМрддреА рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдиреЗ рдЙрдмреЗрд░ рдиреМрдХрд░реА рдореЗрдВ рдЖрдзреЗ рд╕рдордп рдкрд░ рд╣реВрдВ рдФрд░ рдЕрдЧрд▓реЗ рд╡рд░реНрд╖ рдореЗрдВ xgboost рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

@CodingCat рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ 'рд╣рд┐рд╕реНрдЯ' рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИред

@CodingCat FYI рдХрд░реЗрдВ, рдореИрдВ 0.81 рд░рд┐рд▓реАрдЬ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж 'рд╣рд┐рд╕реНрдЯ' рдЕрдкрдбреЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рд╡рд┐рддрд░рд┐рдд рд╕рд╣рд╛рдпрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдмрд╛рдд рдЖрдиреЗ рдкрд░ рдЙрд╕реЗ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

@ hcho3 @CodingCat approx рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

https://github.com/dmlc/xgboost/commit/70d208d68c3a32aaa4fcd6aa456f286a4da5912f#diff -53a3a623be5ce5a351a89012c7b03a31 (рдкреАрдЖрд░ https://github.com/dmlc/xgboost/pull/3395 рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ tree_method = approx ?) => рд╕рдорд╛рди рд╣реЛ рд░рд╣реА рд▓рдЧрднрдЧ рдФрд░ рдЧреИрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХреЗ рдмреАрдЪ рдкрд░рд┐рдгрд╛рдо ...

@ рд▓реМрд░рд╛ 2 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ approx рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ INFO рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, approx рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ рд▓реМрд░рд╛ 2 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рд╕рд╣реА рд╣реИрдВред рднрд▓реЗ рд╣реА approx рдЕрднреА рднреА рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ рддрдм рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬрдм tree_method=approx рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдореИрдВ рдЗрд╕ рдмрдЧ ASAP рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред

рдЕрдВрдХ # 3840 рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ 0.81 рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдЧреАред

@ hcho3 рдореБрдЭреЗ рддреЗрдЬреА рд╕реЗ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо

рд▓рдЧрднрдЧ, рдЦрд░рд╛рдм рджрдХреНрд╖рддрд╛ рдЙрдореНрдореАрдж рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ (рд╢рд╛рдпрдж рдпрд╣ рдирдП рдЗрдВрдЯреЗрд▓ рд╕реАрдкреАрдпреВ рдкреАрдврд╝реА = рдЙрдЪреНрдЪ рд░реИрдо рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?)ред рдореИрдВ рдПрдХ рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВ 477 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреЙрд╢ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (5% рд╕реЗ рдХрдо рд▓рд╛рдкрддрд╛ рдорд╛рди рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ)ред

3000 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ CPU рд╕рдордп рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ ... (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ) рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ https://github.com/hcho3/xgboost-fast-hist-perf- рдкрд░ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛

@ hcho3 рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдЖрдкрдХреЛ рдореЗрд░реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ R рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ depth=8 рдФрд░ nrounds=50 , рд╕рднреА tree_method=exact , tree_method=approx ( updater=grow_histmaker,prune рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕реЗ рдкрд╣рд▓реЗ, # 3849), рдФрд░ tree_method=hist , 1 рд╕реЗ 72 рдзрд╛рдЧреЗ рддрдХред рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЖрдк рдЗрд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ)ред

рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ, рдФрд╕рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП 7 рдмрд╛рд░ рднрд╛рдЧ рдЧрдпрд╛ред рдмреЗрд╣рддрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЯреЗрдмрд▓ рдкреНрд░рджрд╛рди рдХреА рдЧрдИред рдкреНрд▓реЙрдЯ рд╢реЛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реАрдкреАрдпреВ рдХреЛ рдкрд┐рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЪрд╛рд░реНрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдореИрдВ рддреИрдпрд╛рд░ рдерд╛ ... (рдХрд┐рддрдиреЗ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ UMA рдкрд░ (NUMA рдмрдВрдж) рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ)ред рдмрд╛рдж рдореЗрдВ рдореИрдВ Intel VTune рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░:

  • рд╕реАрдкреАрдпреВ: рдбреБрдЕрд▓ рдПрдХреНрд╕реЙрди рдЧреЛрд▓реНрдб 6154, 3.7 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╕рднреА рдЯрд░реНрдмреЛ, 2x 18 рдХреЛрд░ / 36 рдзрд╛рдЧреЗ
  • рд░реИрдо: 4x 64 рдЬреАрдмреА рд░реИрдо рдбреАрдбреАрдЖрд░ 4 2666 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ (рдбреБрдЕрд▓-рдЪреИрдирд▓, рд▓рдЧрднрдЧ 80 рдЬреАрдмреАрдкреАрдПрд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде)
  • 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
  • рдХрдВрдкрд╛рдЗрд▓рд░: рдЬреАрд╕реАрд╕реА 8.2.0
  • R: 3.5.1 gcc рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд 8.2.0 рдФрд░ Intel MKL рдХреЗ рд╕рд╛рде
  • 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

| рдзрд╛рдЧреЗ | рд╕рдЯреАрдХ (рджрдХреНрд╖рддрд╛) | рд▓рдЧрднрдЧ (рджрдХреНрд╖рддрд╛) | рд╣рд┐рд╕реНрдЯ (рджрдХреНрд╖рддрд╛) |
| ---: | ---: | ---: | ---: |
| 1 | 1367 (100%) | 1702s (100%) | 69.9 (100%) |
| 2 | 758.7 (180%) | 881.0s (193%) | 52.5s (133%) |
| 4 | 368.6s (371%) | 445.6s (382%) | 31.7 (221%) |
| 6 | 241.5s (566%) | 219.6s (582%) | 24.1s (290%) |
| 9 | 160.4s (852%) | 194.4s (875%) | 23.1s (303%) |
| 18 | 86.3s (1583%) | 106.3s (1601%) | 24.2s (289%) |
| 27 | 66.4s (2059%) | 80.2s (2122%) | 63.6s (110%) |
| 36 | 52.9 (2586%) | 60.0 (2837%) | 55.2s (127%) |
| 54 | 215.4s (635%) | 289.5s (588%) | 343.0 (20%) |
| 72 | 218.9s (624%) | 295.6s (576%) | 1237.2s (6%) |

xgboost рд╕рдЯреАрдХ рдЧрддрд┐:
image

xgboost рд╕рдЯреАрдХ рджрдХреНрд╖рддрд╛:
image

xgboost рд▓рдЧрднрдЧ рдЧрддрд┐:
image

xgboost рд▓рдЧрднрдЧ рджрдХреНрд╖рддрд╛:
image

xgboost рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЧрддрд┐:
image

xgboost рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рджрдХреНрд╖рддрд╛:
image

рдХрдИ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

@RAMitchell NUMA рдиреЛрдбреНрд╕ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдПрдХ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХрдо рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рдкрд░рд┐рдгрд╛рдо) рдЙрдк NUMA рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ (1 рд╕реЙрдХреЗрдЯ = 2 NUMA рдиреЛрдбреНрд╕ рдХреЗ рдмрдЬрд╛рдп 2 рд╕реЙрдХреЗрдЯ = 4 NAMA рдиреЛрдбреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ )ред

image

рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреА рддрд░рд╣ xgboost NUMA рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ 2 рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рдорд▓реНрдЯреА-рд╕реЙрдХреЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реА рдЬрдм NUMA рдиреЛрдбреНрд╕ COD (рдХреНрд▓рд╕реНрдЯрд░ рдСрди рдбрд╛рдИ) рдпрд╛ рдПрд╕рдПрдирд╕реА (рд╕рдм NUMA рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рд╣рд╛рдЗрдкрд░рдереНрд░реЗрдбрд┐рдВрдЧ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд░реА рдЬреБрд░реНрдорд╛рдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЕрдВрдХ 1 xgboost hist рдореЛрдб (рдЗрд╕ рдЕрдВрдХ) рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдкреНрд░рджрд░реНрд╢рди рдХреЗ рднрд╛рд░реА рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред

рдЕрдВрдХ 2 NUMA рдЕрдиреБрдХреВрд▓рди (рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдореБрджреНрджрд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ NUMA рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдЕрдХреНрд╖рдо рд╣реИрдВред рдореИрдВрдиреЗ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП NUMA рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝реЗред 72 рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 71 рдереНрд░реЗрдбреНрд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рдЙрдкрд▓рдмреНрдз рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди)ред

UMA рдХрд╛ рдХрд┐рд░рд╛рдпрд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП NUMA рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдпрд╣ рдПрдХ рдЧреИрд░-NUMA рдЬрд╛рдЧрд░реВрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдореЗрдореЛрд░реА рдЗрдВрдЯрд░рд▓рд╛рдХрд┐рдВрдЧ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИред


рд╕рдордп рд╕рдордп:

| рдзрд╛рдЧреЗ | рд╕рдЯреАрдХ
NUMA | рд╕рдЯреАрдХ
рдЙрдорд╛ | рд▓рдЧрднрдЧ
NUMA | рд▓рдЧрднрдЧ
UMA | рдРрддрд┐рд╣рд╛рд╕рд┐рдХ
NUMA | рдРрддрд┐рд╣рд╛рд╕рд┐рдХ
рдЙрдорд╛ |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 1 | 1367 | 1667 | 1702s | 1792 | 69.9 рдПрд╕ | 85.6 |
| 2 | 758.7 | 810.3s | 881.0s | 909.0s | 52.5s | 54.1 рдПрд╕ |
| 4 | 368.6s | 413.0s | 445.6s | 452.9s | 31.7 | 36.2s |
| 6 | 241.5s | 273.8s | 219.6s | 302.4s | 24.1 | 30.5s |
| 9 | 160.4s | 182.8s | 194.4s | 202.5 рдПрд╕ | 23.1 рдПрд╕ | 28.3s |
| 18 | 86.3s | 94.4s | 106.3s | 105.8s | 24.2s | 31.2s |
| 27 | 66.4s | 66.4s | 80.2s | 73.6s | 63.6s | 37.5s |
| 36 | 52.9s | 52.7 | 60.0s | 59.4s | 55.2s | 43.5s |
| 54 | 215.4 рдПрд╕ | 49.2s | 289.5s | 58.5s | 343.0s | 57.4s |
| 71 | 218.3s | 47.01s | 295.9 | 56.5 рдПрд╕ | 1238.2 s | 71.5s |
| 72 | 218.9s | 49.0s | 295.6 | 58.6s | 1237.2 s | 79.1 рдПрд╕ |

рджрдХреНрд╖рддрд╛ рддрд╛рд▓рд┐рдХрд╛:

| рдзрд╛рдЧреЗ | рд╕рдЯреАрдХ
NUMA | рд╕рдЯреАрдХ
рдЙрдорд╛ | рд▓рдЧрднрдЧ
NUMA | рд▓рдЧрднрдЧ
рдЙрдорд╛ | рдРрддрд┐рд╣рд╛рд╕рд┐рдХ
NUMA | рдРрддрд┐рд╣рд╛рд╕рд┐рдХ
рдЙрдорд╛ |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 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% |


рдпреВрдПрдордП рдореЛрдбред

xgboost рд╕рдЯреАрдХ рдЧрддрд┐:
image

xgboost рд╕рдЯреАрдХ рджрдХреНрд╖рддрд╛:
image

xgboost рд▓рдЧрднрдЧ рдЧрддрд┐:
image

xgboost рд▓рдЧрднрдЧ рджрдХреНрд╖рддрд╛:
image

xgboost рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЧрддрд┐:
image

xgboost рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рджрдХреНрд╖рддрд╛:
image

рдЬреИрд╕рд╛ рдХрд┐ https://github.com/dmlc/xgboost/pull/3957#issuecomment -453815876 рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ, рдореИрдВрдиреЗ a2dc929 (рдкреВрд░реНрд╡ CPU рд╕реБрдзрд╛рд░) рдФрд░ 5f15cc5 (рдкреЛрд╕реНрдЯ CPU рд╕реБрдзрд╛рд░) рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджреЛрд╣рд░реЗ Xeon 6154 рд╕рд░реНрд╡рд░ (gcc рд╕рдВрдХрд▓рдХ, рдЗрдВрдЯреЗрд▓ рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, 500 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, eta 0.10 рдФрд░ рдЧрд╣рд░рд╛рдИ 8 рдХреЗ рд▓рд┐рдП рдмреЙрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, 1 рд╕реЗ 72 рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП 3 рд░рди рдмрдирд╛рдПред рд╣рдо рдЪреЛрдЯреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 50% (1/3 рддреЗрдЬ) рддрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╕реЗ рдкрд╣рд▓реЗ # 3957 рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ (a2dc929):

image

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо # 3957 рдХреЗ рд▓рд┐рдП рд╣реИрдВ (5f151c5 рдкрд░):

image

рджрдХреНрд╖рддрд╛ рдШрдЯрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ 50% рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдореЗрдВ рд╡реГрджреНрдзрд┐ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ: рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рдЕрдЧрд░ рд╣рдо 1000-2000% рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдкрд╛рдЧрд▓рдкрди рд╣реЛрдЧреА рдорд╣рд╛рди)ред

рджрдХреНрд╖рддрд╛ рд╡рдХреНрд░ a2dc929:

image

5f151c5 рдХреА рдХреНрд╖рдорддрд╛ рд╡рдХреНрд░:

image

рдзрдиреНрдпрд╡рд╛рдж @ рд▓реЙрд░рд╛ 2 , рдореИрдВ рдЖрдЧреЗ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд┐рди рдХрд░реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рд╣реЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

@ hcho3 @SmirnovEgorRu рдореИрдВ рдХрдо 5% 151c5 рдХреЗ рд╕рд╛рде 100% рдШрдиреЗ рдбреЗрдЯрд╛ рдкрд░ рд╕рд┐рдВрдЧрд▓рдереНрд░реЗрдбреЗрдб рд╡рд░реНрдХрд▓реЛрдб рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕реАрдкреАрдпреВ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдПрдХреНрд╕ рдХреЛрд░ x 1 xgboost рдереНрд░реЗрдб рдкрд░ рд╣рд╛рдЗрдкрд░рдкрд░рд┐рдореЗрдЯ рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ 10% -15% рдЬреБрд░реНрдорд╛рдирд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ 50M рдкрдВрдХреНрддрд┐рдпреЛрдВ x 100 рдХреЙрд▓рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдШрдиреЗ рдбреЗрдЯрд╛ (gcc 8) рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕реЗ рдкрд╛рдпрдерди / рдЖрд░ рд╕реЗ рдареАрдХ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо 256GB RAM рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, 3 рдмрд╛рд░ (6 рджрд┐рди) рдЪрд▓рд╛рдПрдВред

рдкреНрд░рддрд┐рдмрджреНрдз a2dc929:

image

5f151c5 рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ:

image

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдмрд╣реБрдд рд╕рдорд╛рди рдмрд╣реБ-рд╕реНрддрд░реАрдп рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХрд▓ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рдзреАрдореА рдкреНрд░рд╢рд┐рдХреНрд╖рдг ( @SmirnovEgorRu рдХреЗ рд╕реБрдзрд╛рд░ рдЕрднреА рднреА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ 50M x 100 рдорд╛рдорд▓реЗ рдореЗрдВ 11% рдмрдирд╛рдо 13 рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдкрд╣рд▓реЗ 500% рджрдХреНрд╖рддрд╛) рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред

рдЧрдо рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 50 рдПрдо x 100 рдкрд░ рдПрдХрд▓рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП:

| рдХрдорд┐рдЯ | рдХреБрд▓ | рдЧрдо рд╕рдордп | рдЯреНрд░реЗрди рдХрд╛ рд╕рдордп |
| : --- | ---: | ---: | ---: |
| a2dc929 | 2926 | 816s | 2109s |
| 5f151c5 | (+ 13%) 3316s | (~%) 817s | (+ 18%) 2499s |

@ hcho3 @ Laurae2 рдЖрдо рддреМрд░ рдкрд░ рд╣рд╛рдЗрдкрд░-рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗрд╡рд▓ рдХреЛрд░-рдмрд╛рдЙрдВрдб рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдХреЛрдИ рдореЗрдореЛрд░реА-рдмрд╛рдЙрдВрдб рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдирд╣реАрдВред
рдПрдЪрдЯреА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдкреАрдпреВ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рд░реНрджреЗрд╢ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╡рд┐рд▓рдВрдм рд╕реАрдорд╛) - рдПрдЪрдЯреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрднрд╛рд░ рдореЗрдВ рдореИрдВрдиреЗ 1.5 рдЧреБрдирд╛ рддрдХ рд╕реНрдкреАрдбрдЕрдк рдордирд╛рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА (рдореЗрдореЛрд░реА-рдмрд╛рдЙрдВрдб) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ - рдПрдЪрдЯреА рдФрд░ рднреА рдмрджрддрд░ рдмрдирд╛рддрд╛ рд╣реИред 2 рд╣рд╛рдЗрдкрд░-рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╕реАрдкреАрдпреВ-рдХреИрд╢ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдмреВрд╕реНрдЯрд┐рдВрдЧ - рдореЗрдореЛрд░реА рдмрд╛рдЙрдВрдб рдПрд▓реНрдЧреЛрд░рд┐рджрдоред HT рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ 1thread рд╡рд░реНрдЬрди рдХреЗ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕реНрдкреАрдбрдЕрдк рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд┐рдирд╛ HT рдХреЗ CPU рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд░рд╛рдп рдмреЗрд╣рддрд░ рд╣реИред

NUMA рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ - рдореИрдВрдиреЗ DAAL рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рджреЗрдЦреАрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦреВрдВрдЧрд╛ред

1 рдереНрд░реЗрдб рдкрд░ рдЫреЛрдЯреЗ рдордВрджреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ - рдореИрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ - рдлрд┐рдХреНрд╕ рдЖрд╕рд╛рди рд╣реИред

@ hcho3 рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирдП рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реВрдВрдЧрд╛ред

@SmirnovEgorRu рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред FYI рдХрд░реЗрдВ, рд╕реНрддрд░-рд╡рд╛рд░ рдиреЛрдб рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рд╕рдорд╛рдирддрд╛ рдХреА рдмрдврд╝рддреА рдорд╛рддреНрд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдереА: # 4077ред

@ рд▓реЙрд░рд╛ 2 рдЕрдм рдЬрдм рд╣рдо # 3957, # 4310, рдФрд░ # 4529 рдореЗрдВ рд╡рд┐рд▓реАрди рд╣реЛ рдЧрдП, рдХреНрдпрд╛ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ? NUMA рдХреЗ рдкреНрд░рднрд╛рд╡ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@ hcho3 рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдмреЙрдиреНрдЪ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреЛ рдореИрдВ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЙрд╕рдореЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди рдПрдиреНрд╡рд╛рдпрд░рдореЗрдВрдЯреНрд╕ рдкрд░ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рд░рд┐рдЬреЗрдХреНрд╢рди рдереЗ (рдЦрд╛рд╕рдХрд░ # 3957 30x рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕реНрд▓реЛрдбрд╛рдЙрди рдХреЗ рдХрд╛рд░рдг)ред

рдореИрдВ @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 -68989131324

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ 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 рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ рдХрд┐ CPU рдкреНрд░рджрд░реНрд╢рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдореЗрдВ XGBoost рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред

рд╣рд╛рдБ, рдЗрд╕ рдХрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рд╣рд░ рдХреЛрдИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

FYI рдХрд░реЗрдВ, рдпрд╣рд╛рдБ ECM r4.16xlarge (16c + 16HT рдХреЗ рд╕рд╛рде 2 рд╕реЙрдХреЗрдЯ) рдкрд░ 1M рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рд╕рдордп 1, 16 (1so & no HT) рдФрд░ 64 (рд╕рднреА) xgboost рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрд░:

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

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

@szilard , рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рд╕реБрдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

PS рдКрдкрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ XGB 1.2 рдореЗрдВ 1.1 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рдкреНрд░рддрд┐рдЧрдорди рд╣реИред рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рджреЗрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

@ szilard , рдпрджрд┐ рдпрд╣ рд╡рд┐рд╖рдп рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдЗрд╕ рдмреНрд▓реЙрдЧ рдореЗрдВ CPU рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
https://medium.com/intel-analytics-software/new-optimizations-for-cpu-in-xgboost-1-1-81144ea21115

рдзрдиреНрдпрд╡рд╛рдж @SmirnovEgorRu рдЖрдкрдХреЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдФрд░ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛)ред

рдЕрдкрдиреЗ рдирдВрдмрд░реЛрдВ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдФрд░ рдЕрдиреНрдп рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдирдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбреЙрдХрдлрд╝рд░ рдмрдирд╛рдпрд╛:

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

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдХреЛрд░ рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреЛрдИ рд╣рд╛рдЗрдкрд░ рдереНрд░реЗрдбреЗрдб рдХреЛрд░ (рдЬреИрд╕реЗ рдХрд┐ r4.16xlarge рдкрд░ 0-15, рдЬрд┐рд╕рдореЗрдВ 2 рд╕реЙрдХреЗрдЯ, 16c + 16HT рдкреНрд░рддреНрдпреЗрдХ) рдФрд░ xgboost рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

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

рдпрд╣ рдХрдИ рдмрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рднреА рдХреЛрд░ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдордп рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдЙрдЪреНрдЪ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг (рдИрд╕реА 2) рдпрд╛ рдПрдирдпреВрдПрдордП рдХреЗ рдХрд╛рд░рдг рд╣реИред

C5.metal рдкрд░ рдкрд░рд┐рдгрд╛рдо рдЬрд┐рд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рдФрд░ r4.16xlarge рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЛрд░ рд╣реИрдВ, рдореИрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

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

TLDR: xgboost рдЕрдиреНрдп рд▓рд┐рдмрд╛рд╕ рдмрдирд╛рдо рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рдХреЛрд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИред ЁЯСН

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ:

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

xgboost рдХреЗ рд▓рд┐рдП 1 рд╕реЗ 24 рдХреЛрд░ рддрдХ рдХреА рдЧрддрд┐ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ (10M рдкрдВрдХреНрддрд┐рдпреЛрдВ, рджрд╛рдИрдВ рдУрд░ рдХреЗ рдкреИрдирд▓) рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ (1M рдкрдВрдХреНрддрд┐рдпреЛрдВ, рдордзреНрдп рд╕реНрддрдВрдн рдореЗрдВ рдкреИрдирд▓реЛрдВ) рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдмрдврд╝реА рд╣реБрдИ рдХреИрд╢ рд╣рд┐рдЯреНрд╕ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдЕрдиреНрдп рджреЗрдпрддрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ?

рдПрдПрдордбреА рдкрд░ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:

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

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдЧрдмреЙрд╕реНрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдПрдПрдордбреА рдкрд░ рднреА рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

nnorton24 picture nnorton24  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pplonski picture pplonski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RanaivosonHerimanitra picture RanaivosonHerimanitra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vkuznet picture vkuznet  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mhnamaki picture mhnamaki  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ