Xgboost: Mac OSX์—์„œ ๋” ๋‚˜์€ XGBoost ์„ค์น˜?

์— ๋งŒ๋“  2019๋…„ 05์›” 17์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dmlc/xgboost

๋ฌธ์ œ

ํ˜„์žฌ MacOS์—์„œ python ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ brew install gcc<strong i="7">@5</strong>
$ export CC=/path/to/gcc-5; export CXX=/path/to/g++-5; pip install xgboost

์˜๋ฌธ

๊ฒฝํ—˜ ๋งŽ์€ ๊ธฐ์—ฌ์ž๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ด ์„ค์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•  ๊ณ„ํš์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์€ xgboost์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ์ž๋™ ์„ค์น˜ ์‹œ์Šคํ…œ์— ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. xgboost๋ฅผ Apple์˜ clang๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ• ๊นŒ์š”?

1.0.0 Blocking

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

๊ณต์‹์€ Homebrew์—์„œ ํ—ˆ์šฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ œ Mac ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

brew install xgboost

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

Apple์˜ clang์€ ๊ธฐ๋ณธ์ ์œผ๋กœ OpenMP๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Homebrew GCC๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ XGBoost๋Š” Apple์˜ clang๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Mac OSX์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํœ ์„ ๋ฐฐํฌํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํœ ์—๋Š” ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ libxgboost.dylib๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ Windows ์‚ฌ์šฉ์ž๊ฐ€ XGBoost๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Visual Studio๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž(์ €๋ฅผ ํฌํ•จํ•˜์—ฌ)๋Š” ํ˜„์žฌ Mac OSX์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง•, ์ฆ‰ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ OSX์—์„œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํ˜ธํ™˜๋˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ์€ conda-forge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mac OSX์—์„œ XGBoost ์„ค์น˜๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@hcho3 ๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! Conda๋Š” ํ™•์‹คํžˆ ์˜ต์…˜์ด์ง€๋งŒ pip๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. macos์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง•์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง•์— ์ต์ˆ™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ„์•ผ์— ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ์ปดํŒŒ์ผ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ƒ์„ฑ๋œ dylib๊ฐ€ homebrew gcc์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ์— ์•ฝ๊ฐ„์˜ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ปดํŒŒ์ผ ํ›„ ํ•ด๋‹น ์ข…์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•(๋˜๋Š” gcc ๋ฒ„์ „์—์„œ ์ผ๋ฐ˜์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•)์ด ์žˆ๋‹ค๋ฉด ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ๊ทธ๊ฒƒ์€ ์‚ถ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

@Craigacp @hcho3 cmakelists์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? https://github.com/netket/netket/issues/225#issuecomment -502714445. ์ €๋Š” xgboost์˜ ๋‚ด๋ถ€์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OpenMP๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ฑ๋Šฅ์— ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ ์œ ๋งํ•œ ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://stackoverflow.com/questions/46414660/macos-cmake-and-openmp.

@adithyabsk @Craigacp OpenMP๋Š” XGBoost์˜ ์„ฑ๋Šฅ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU์˜ ๋ชจ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. OpenMP๊ฐ€ ์—†์œผ๋ฉด CPU ์ฝ”์–ด๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IMHO, pip๋Š” libomp์™€ ๊ฐ™์€ ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— conda๋Š” Python์ด ์•„๋‹Œ ์ข…์†์„ฑ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ ์ฐธ์กฐ: https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

Microsoft/LightGBM ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•: ์‚ฌ์šฉ์ž์—๊ฒŒ brew install libomp ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Homebrew๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด GCC๋‚˜ Conda๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‰ฌ์šด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@hcho3 brew install libomp ์†”๋ฃจ์…˜์€ ์‚ฌ์ „ ์„ค์น˜ ์„ค์ • ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ ์ ์ ˆํ•œ gcc ๋ฐ g++ ๋ฒ„์ „์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ xgboost๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ, conda๊ฐ€ ์ง„ํ–‰๋˜๋Š” ํ•œ ๋™์˜ํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์˜ต์…˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์˜ต์…˜์„ ํƒ์ƒ‰ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์— ์ฃ„์†กํ•˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— OpenMP๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, OpenMP๊ฐ€ ์„ค์น˜๋œ dmlc-core ๋ฐ xgboost๋ฅผ ์ปดํŒŒ์ผํ•œ ๋‹ค์Œ ํ•ด๋‹น ํŒŒ์ผ์„ ํœ ๋กœ ๋ฒˆ๋“ค๋งํ•˜์—ฌ audit_wheel ๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ ์‹œ ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

https://stackoverflow.com/a/42106034

@adithyabsk ๋ฐฉ๊ธˆ brew install libomp ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๊ณ  ์ด์ œ ๊ธฐ๋ณธ ์ปดํŒŒ์ผ๋Ÿฌ์ธ Apple Clang์œผ๋กœ XGBoost๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

brew install libomp
mkdir build
cd build
cmake ..
make -j10

๊ฒŒ๋‹ค๊ฐ€ ๊ฒฐ๊ณผ ๋ฐ”์ด๋„ˆ๋ฆฌ libxgboost.dylib ๋Š” /usr/local/opt/libomp/lib/libomp.dylib ๋ฐ OSX ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋งŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. (GCC์˜ ํŠน์ • ๋ฒ„์ „์— ๋” ์ด์ƒ ์ข…์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋งŒ์„ธ!) ๋”ฐ๋ผ์„œ brew install libomp ๊ฐ€ Conda ์—†์ด Mac OSX์— XGBoost๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฐ€์žฅ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ํœ  ๋‚ด๋ถ€์— libomp.dylib ๋ฅผ ํฌํ•จํ•˜๋”๋ผ๋„ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ์ด ์ „์ฒด ๊ฒฝ๋กœ ๋กœ ์ง€์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— Mac OSX๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

hcho3<strong i="17">@localhost</strong>: xgboost$ otool -l libxgboost.dylib    # show list of library dependencies

libxgboost.dylib:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777223          3  0x00           6    15       2112 0x00918085
....
Load command 10
          cmd LC_LOAD_DYLIB
      cmdsize 64
         name /usr/local/opt/libomp/lib/libomp.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 5.0.0
compatibility version 5.0.0
Load command 11
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name /usr/lib/libc++.1.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 400.9.0
compatibility version 1.0.0
Load command 12
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1252.50.4
compatibility version 1.0.0

๋ฐ˜๋ฉด์— Windows๋Š” ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์„ ๋•Œ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ํœ  ๋‚ด๋ถ€์— vcomp140.dll (OpenMP ๋Ÿฐํƒ€์ž„)์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

@hetong007 ๊ด€๋ จ ์ฐธ๊ณ : brew install libomp ๋Š” Mac OSX์—์„œ CRAN XGBoost์— ๋Œ€ํ•œ ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ๋„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@hcho3 ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•„์š”. XGBoost R ํŒจํ‚ค์ง€๋Š” ๋™์ผํ•œ ๋ฐฑ์—”๋“œ API๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@hcho3 ๋ฉ‹์ง„ ๋ฐœ์ „์ด๋„ค์š”! ๋งŽ์€ R&D ์—ฐ๊ตฌ์‹ค์—์„œ xgboost๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋‚ด๋ถ€ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ผ๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฉ”๋ชจ์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜:

๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ์ด ์ „์ฒด ๊ฒฝ๋กœ๋กœ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Mac OSX๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

libomp.dylib๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํœ ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ด ํŠน์ • ๋ฌธ์ œ๋ฅผ ๋” ์ž์„ธํžˆ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ hcho3 ํ™•์žฅ ์ž์ฒด ๋•Œ๋ฌธ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ? macOS์—์„œ๋„ .so๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ ์Šค๋ ˆ๋“œ์™€ stackoverflow ๊ฒŒ์‹œ๋ฌผ์€ ๊ทธ๋ ‡๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://stackoverflow.com/questions/2488016/how-to-make-python-load-dylib-on-osx
https://github.com/MoDeNa-EUProject/MoDeNa/issues/1

@adithyabsk ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํœ ์— ํฌํ•จํ•˜๊ณ  ๋กœ๋“œํ•˜๋Š” ์ž‘์—…์˜ ๋ณต์žก์„ฑ์„ ๊ฐ์•ˆํ•  ๋•Œ brew install libomp ๋กœ ํ•ด๊ฒฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Homebrew๋Š” ์ด๋ฏธ ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋“ค ์‚ฌ์ด์—์„œ ์ƒ๋‹นํžˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ œ ์ƒ๊ฐ์—).
  • libomp ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Apple Clang์„ ์‚ฌ์šฉํ•˜์—ฌ XGBoost๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ๋ฒ„์ „์˜ Homebrew GCC์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ฐฉ๋ฒ•์€ LightGBM๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถ”์‹ . Apple Clang์—์„œ OpenMP ์‚ฌ์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด https://iscinumpy.gitlab.io/post/omp-on-high-sierra/ ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@hcho3

์ถ”์‹ . Apple Clang์—์„œ OpenMP ์‚ฌ์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด https://iscinumpy.gitlab.io/post/omp-on-high-sierra/ ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ PR์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/microsoft/LightGBM/pull/1501 , https://github.com/microsoft/LightGBM/pull/1923.

@adhyabsk ์ด๊ฒƒ์€ ๋‚˜์˜ ์šฐ์„  ์ˆœ์œ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. 1.0.0 ๋ฆด๋ฆฌ์Šค ์ „์— ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@hcho3 ๋ฐ˜๊ฐ‘ ์Šต๋‹ˆ๋‹ค! ์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@adithyabsk brew install libomp ์— ์ง๋ฉดํ•œ ํ•œ ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ๋ฌธ์ œ๋Š” CMakeLists.txt๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— XGBoost๊ฐ€ OpenMP ์—†์ด ์ปดํŒŒ์ผ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋‚ด Macbook์—์„œ ์ ๋‹นํžˆ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OpenMP๊ฐ€ ์—†์œผ๋ฉด ์ž‘์—…์ด 2-3๋ฐฐ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.) OpenMP๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด CMakeLists.txt๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@StrikerRUS ๋งํฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์–ด๋ ต๊ณ  ์ฐธ์กฐ์ (LightGBM)์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

@adithyabsk brew install libomp ์— ์ง๋ฉดํ•œ ํ•œ ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ๋ฌธ์ œ๋Š” CMakeLists.txt๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— XGBoost๊ฐ€ OpenMP ์—†์ด ์ปดํŒŒ์ผ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋‚ด Macbook์—์„œ ์ ๋‹นํžˆ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OpenMP๊ฐ€ ์—†์œผ๋ฉด ์ž‘์—…์ด 2-3๋ฐฐ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.) OpenMP๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด CMakeLists.txt๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ–‰์šด์ด ์žˆ๋‚˜์š”? ๋‚ด๊ฐ€ ๋ฌป๋Š” ์ด์œ ๋Š” "brew install libomp"๋ฅผ ํ†ตํ•ด libomp๋ฅผ ์„ค์น˜ํ•œ ํ›„์—๋„ "pip install xgboost -U"๊ฐ€ ์‹คํŒจํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@wel51x ์ƒˆ ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜๋„๋ก CMakeLists.txt๋ฅผ ์•„์ง ์ˆ˜์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ https://xgboost.readthedocs.io/en/latest/build.html์˜ ์ง€์นจ์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@adhyabsk @Craigacp https://github.com/matthew-brett/delocate๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ์œ ์šฉํ•œ ์†”๋ฃจ์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ... ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฃผ๋ฅ˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ OpenMP๋ฅผ ์ง€์›ํ•˜๋Š” ์ตœ์‹  xgboost๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ Nix(https://nixos.org/nix/)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MacOS์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ nix-shell -p python3Packages.xgboost

@hcho3๋‹˜ , Mac์—์„œ ์„ค์น˜๋ฅผ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ–ฅํ›„ brew install xgboost ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก XGBoost์šฉ Homebrew ์ˆ˜์‹์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ด์ „ ๋ฒ„์ „์˜ GCC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ† ๋ก : https://github.com/Homebrew/homebrew-core/pull/43246

ํ•œ ๊ฐ€์ง€ ์˜ต์…˜์€ OpenMP๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์„ฑ๋Šฅ์—๋Š” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. libomp ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ณต์‹์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์•ž์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

fwiw, ๋” ์ด์ƒ GCC์— ์˜์กดํ•˜์ง€ ์•Š์ง€๋งŒ OpenMP์— ๋Œ€ํ•œ ์ง€์›์ด ๋ถ€์กฑํ•˜๋„๋ก ๊ณต์‹์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. libomp ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถœ์‹œ๋˜๋ฉด ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹์€ Homebrew์—์„œ ํ—ˆ์šฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ œ Mac ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

brew install xgboost

brew install xgboost ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ XGBoost๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ƒˆ๋กœ ์„ค์น˜๋œ XGBoost ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—๋Š” __init__.py ํŒŒ์ผ์ด๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— XGBoost ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. brew๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ XGBoost๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๋‹ค๋ฅธ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@bnicholl ์ž„์‹œ ์†”๋ฃจ์…˜์€ https://github.com/dmlc/xgboost/issues/4949#issuecomment -542333666์„ ์ฐธ์กฐํ•˜์„ธ์š”.

@hcho3

๋งํฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์–ด๋ ต๊ณ  ์ฐธ์กฐ์ (LightGBM)์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋“ค์–ด์˜ค๋Š” CMake 3.16 ๋ฆด๋ฆฌ์Šค(ํ˜„์žฌ RC ๋‹จ๊ณ„)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด >=Mojave ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. https://gitlab.kitware.com/cmake/cmake/merge_requests/3916์„ ์ฐธ์กฐํ•˜์„ธ์š”.

@adithyabsk @Craigacp #5146 ์ด์ œ Homebrew GCC๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ OpenMP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ XGBoost๋Š” libomp Homebrew ํŒจํ‚ค์ง€์—๋งŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

@ankane ๊ฒฐ๊ณผ์ ์œผ๋กœ OpenMP๊ฐ€ ํ™œ์„ฑํ™”๋œ XGBoost(1.0)์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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