Xgboost: 64๋น„ํŠธ mingw g++๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ xgboost ๋นŒ๋“œ ์‹œ ์‹คํŒจ

์— ๋งŒ๋“  2016๋…„ 03์›” 27์ผ  ยท  35์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dmlc/xgboost

64๋น„ํŠธ Windows 10์—์„œ Anaconda Python 3.x์šฉ xgboost๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹ถ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. https://xgboost.readthedocs.org/en/latest/build.html#building -on-windows ๋ฐ ์—ฌ๊ธฐ - 64๋น„ํŠธ msys๊ฐ€ ์‹คํŒจํ•œ python์—์„œ xgboost๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. 64๋น„ํŠธ mingw g++๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ mingw64.mk๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "make -j4"๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

g++: ์˜ค๋ฅ˜: dmlc-core/libdmlc.a: ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
g++: ์˜ค๋ฅ˜: rabit/lib/librabit_empty.a: ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Makefile:120 : ๋Œ€์ƒ 'lib/libxgboost.dll'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
mingw32-make: *** [lib/libxgboost.dll] ์˜ค๋ฅ˜ 1

๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋กœ๊ทธ.txt

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์œผ๋ฉฐ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ์— ์™„์ „ํ•œ ์ง€์นจ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en

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

mingw32-make.exe๋ฅผ git ๋””๋ ‰ํ† ๋ฆฌ(์˜ˆ: C:\Program Files\Git\usr\bin)์— ๋ณต์‚ฌํ•˜๊ณ  make.exe๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ git ์…ธ์—์„œ make -j4๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

dmlc-core ๋ฐ rabit๋ฅผ ์ง์ ‘ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cd dmlc-์ฝ”์–ด
-j4๋ฅผ ๋งŒ๋“ค๋‹ค

cd ../ํ† ๋ผ
-j4๋ฅผ ๋งŒ๋“ค๋‹ค

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋‚ด ์„ค์น˜์—์„œ ์‹คํŒจํ•˜์—ฌ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

mingw64๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ์— mingw32-make๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ๊ฐ€์ด๋“œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๋ณ„์นญ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ xgboost ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
cd dmlc-์ฝ”์–ด
-j4๋ฅผ ๋งŒ๋“ค๋‹ค
cd ../ํ† ๋ผ
lib/librabit_empty -j4 ๋งŒ๋“ค๊ธฐ
CD ..
cp make/mingw64.mk config.mk
-j4๋ฅผ ๋งŒ๋“ค๋‹ค

์˜ค์‹:
์ด์ „ ์ฃผ์„์—์„œ ํ•œ ์ค„์€ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
lib/librabit_empty.a -j4๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๋Œ€์‹ ์—
lib/librabit_empty -j4 ๋งŒ๋“ค๊ธฐ

jfpuget ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ๋งˆ์นจ๋‚ด ์œ„์˜ ๋‹จ๊ณ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

์—ฌ๊ธฐ์— ์™„์ „ํ•œ ์ง€์นจ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en

@jfpuget ์ง€์นจ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค PR์ด๋“  ์ง„์‹ฌ์œผ๋กœ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

@jfpuget ์ด๊ฒƒ์€ ๋ฉ‹์ง€๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋ช…๋ น์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด PR์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”!

๋ฌผ๋ก , ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ํœด๊ฐ€์—์„œ ๋ง‰ ๋Œ์•„์™”๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ง์žฅ์—์„œ ๋‚˜๋ฅผ ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฐ์น  ;) )

์•ˆ๋…• ๋ชจ๋‘. ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— 'make -j4'๋ฅผ ํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์–ธ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๊ณ ๋งˆ์›Œ

ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ํŒŒ์ผ ๋นŒ๋“œ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: ๋นŒ๋“œ.
Makefile:97 : ๋Œ€์ƒ 'build/logging.o'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
make: ** [build/logging.o] ์˜ค๋ฅ˜ 1make: * * ๋๋‚˜์ง€ ์•Š์€ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘....
๋ช…๋ น ๊ตฌ๋ฌธ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Makefile:97 : 'build/common/common.o' ๋Œ€์ƒ์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
make: ** [build/common/common.o] ์˜ค๋ฅ˜ 1๋ช…๋ น ๊ตฌ๋ฌธ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.Makefile:97 : ๋Œ€์ƒ 'build/c_api/c_api_error.o'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.make: * * [build/c_api/c_api_error.o] ์˜ค๋ฅ˜ 1

์•Œ์•˜์Šต๋‹ˆ๋‹ค... git cmd๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. git bash๊ฐ€ ์•„๋‹ˆ๋ผ... ๊ทธ๋ž˜์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Windows์—์„œ xgboost R ๋ฐ python ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ค‘ ์ผ๋ถ€๋Š” Jean-Franรงois'์™€ ๋น„์Šทํ–ˆ์ง€๋งŒ Rtools์™€ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” mingw ๋นŒ๋“œ ๋„๊ตฌ ๋ชจ์Œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ Windows๋Š” ์˜ค๋Š˜๋‚  ๋‹ค์–‘ํ•œ ์ •๋„์˜ ์™„์ „์„ฑ, ์•ˆ์ •์„ฑ ๋ฐ ์ตœ์‹ ์„ฑ์„ ์ง€๋‹Œ ์—„์ฒญ๋‚˜๊ฒŒ ๋‹ค์–‘ํ•œ mingw ๊ธฐ๋ฐ˜ ๋ฒˆ๋“ค๋กœ ์—‰๋ง์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋„ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ mingw ๊ธฐ๋ฐ˜ ๋„๊ตฌ ์ง‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Windows git์ด ํฌํ•จ๋œ ์ตœ์†Œํ•œ์˜ ์ปดํŒŒ์ผ๋Ÿฌ ์—†๋Š” ๋ช…๋ น์ค„ gnu ๋„๊ตฌ ์„ธํŠธ;
  • gcc-4.7 ์ปดํŒŒ์ผ๋Ÿฌ์ด์ง€๋งŒ Anaconda๋กœ ์„ค์ •๋˜์ง€ ์•Š์Œ;
  • gcc-4.6.3์ด ์žˆ๊ณ  Rtools์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์ƒ๋‹นํžˆ ์œ ์šฉํ•œ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.

ํ›„์ž๋Š” xgboost์˜ C++11 ์š”๊ตฌ ์‚ฌํ•ญ์— ์ถฉ๋ถ„ํ•˜๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ์ด ํ˜ผ๋ž€์— ๋˜ ๋‹ค๋ฅธ mingw ๋ฐฐํฌ๋ฅผ ํฌํ•จํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” PATH์— ๋ฌด์—‡์ด ๋“ค์–ด๊ฐ€๊ณ  ์–ด๋–ค ์ˆœ์„œ๋กœ ๋“ค์–ด๊ฐ€๋Š”์ง€ ๋งค์šฐ ์ฃผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Rtools์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ฐธ๊ณ  ์‚ฌํ•ญ:

์ตœ์‹  Rtools ๋ฒˆ๋“ค ๋ฒ„์ „ 3.3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ (์ค‘์š”), Rtools๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ gcc 4.9์™€ ํ•จ๊ป˜ 3.3 ๋„๊ตฌ ๋ชจ์Œ์„ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 3.2 64๋น„ํŠธ ๋„๊ตฌ ๋ชจ์Œ์ด๋ฉด ์ถฉ๋ถ„ํ•˜๊ณ  ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. R์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Rtools์˜ ๊ฒฝ๋กœ๊ฐ€ ๋‚ด ์‹œ์Šคํ…œ PATH์— ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ Miniconda์˜ ๊ฒฝ๋กœ๋Š” ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Anaconda์˜ ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ด์ฌ์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

R ํŒจํ‚ค์ง€ ๋นŒ๋“œ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œ์Šค๋ฅผ ์ž์‹
  • R์„ ์‹œ์ž‘
setwd('wherever xgboost R-package directory is')
install.packages('.', repos = NULL, type='source')
setwd('tests')
source('testthat.R')
xgboost exe ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • xgboost ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—์„œ git-bash๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • which gcc ๊ฐ€ /c/Rtools/gcc-4.6.3/bin/gcc ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค(Rtools๊ฐ€ ์„ค์น˜๋œ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)
  • rabit/Makefile ํŽธ์ง‘ํ•˜๊ณ  -m64 ํ”Œ๋ž˜๊ทธ๋ฅผ CFLAGS ์ •์˜ ๋ผ์ธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(์ฒ˜์Œ๋ถ€ํ„ฐ ์žˆ์–ด์•ผ ํ•˜์ง€ ์•Š๋‚˜์š”?): export CFLAGS = -m64 -O3 -msse2 $(WARNFLAGS)
  • ๋‹ค์Œ์€ ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ผ๋ถ€ mingw ๋ฒˆ๋“ค ์ƒํ˜ธ ์ž‘์šฉ/ํŠน์ด์ /๋ฒ„๊ทธ๋กœ ์ธํ•ด ์—ฌ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ make๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•จ).
cp make/mingw64.mk config.mk
cp make/mingw64.mk dmlc-core/config.mk
cd rabit
make lib/librabit_empty.a -j4
cd ../dmlc-core
make -j4
cd ..
make -j4
ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€:
export PATH=/c/Miniconda/Scripts:/c/Miniconda:/C/Miniconda/MinGW/bin:$PATH
cd python-package/
python setup.py install
python tests/python/test_basic_models.py

๋งž์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ž‘๋™ํ•˜๋Š” g++ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

https://github.com/dmlc/xgboost/pull/1071 ์„ ์‚ฌ์šฉ ํ•˜๋ฉด ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

BTW, ์ตœ๊ทผ Mingw ๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ mingw32-make.exe -j ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ๋ฒˆ์— ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋Š” #1071์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. Rtools์˜ make๋Š” ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค...

@jfpuget ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. POSIX ์Šค๋ ˆ๋“œ์™€ SEH ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์˜ต์…˜์„ ์„ ํƒํ•œ ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฉ๊ธˆ Win32 ๋ฐ SJLJ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ(๊ทธ๋ƒฅ Rtools์˜ gcc๊ฐ€ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

gcc 5.3์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ๊ด€์ฐฐ: rabit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด -m64 ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด 64๋น„ํŠธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ์— ์˜ค๋ฅ˜๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฒ„์ „์—์„œ gcc๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ -m64๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

Python ๋‚ด์—์„œ PATH ์ˆ˜์ • ์‹œ: ์‹œ์Šคํ…œ PATH๋ฅผ ๋ฐฉ๊ธˆ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ Windows์˜ anaconda์—์„œ Python์€ ๋•Œ๋•Œ๋กœ(์‹œ์ž‘ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ?) ์žฌ๋ถ€ํŒ…/์žฌ๋กœ๊ทธ์ธ ํ›„์—๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์–ผ๋งˆ ์ „์— ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@khotilov ๋ฐฉ๊ธˆ mingw64-gw ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ๊ทธ๋Œ€๋กœ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

python์„ ์žฌ๋ถ€ํŒ…ํ•ด๋„ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ์ˆ˜์ •์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ๋Š” ๋…ธํŠธ๋ถ ๋‚ด์—์„œ ์ปค๋„์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค). Python ๋‚ด๋ถ€์—์„œ os ๊ฒฝ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ชฉํ‘œ๋Š” xgboost๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฏ€๋กœ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์กฐ์‚ฌ๋ฅผ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

@khotilov ์–ด๋–ค MinGW-

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ๋ฐฐํฌํŒ(์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„)์—์„œ๋Š” ๋‹ค์ค‘ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

xgboost\dmlc-core\include\dmlc\base.h์—์„œ
113ํ–‰

if ( MINGW32 ์ •์˜) || (์ •์˜ MINGW64 )

//#fopen64 std::fopen ์ •์˜

์—”๋””ํ”„

MINGW64๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด fopen64 ์ •์˜์— ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
mingw64๋Š” stdio.h์—์„œ ์ž์ฒด fopen64๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

@yunzhou ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐค์ƒˆ๋„๋ก ์—‰๋ง์ด ๋œ ํ›„, ๋‹น์‹ ์˜ ํŠธ๋ฆญ์€ ์ •๋ง๋กœ ์ผ์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋‚ด ์˜ค๋ฅ˜๋Š” 'base.h'์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ๊ฒƒ์„ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

@jfpuget : ๊ท€ํ•˜์˜ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Makefile:136 : ๋Œ€์ƒ 'xgboost'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ธฐ์‚ฌ์— ๋”ฐ๋ผ ๋ชจ๋“  ๊ฒƒ์„ํ–ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ฐœ ๋‚  ์ข€ ๋„์™€ ์ค„ ์ˆ˜ ์žˆ๋‹ˆ? ๊ฐ์‚ฌ ํ•ด์š”

์•ˆ๋…•,

์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํ•œ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘ ์˜ค๋ฅ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

์ˆ˜์ • ์—†์ด ๋นŒ๋“œ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. JFJean-Francois Puget, ๊ธฐ๊ณ„ ํ•™์Šต ๋ฐ ์ตœ์ ํ™”, IBM AnalyticsMobile ๋ฐ•์‚ฌ ์„ ์ž„ ์—”์ง€๋‹ˆ์–ด: +33(0)6 7000 8815 ์ด๋ฉ”์ผ: jf. [email protected]๋ธ”๋กœ๊ทธ : http://bit.ly/jfpuget Twitter: @JFPuget


----- ์›๋ณธ ๋ฉ”์‹œ์ง€ -----๋ฐœ์‹ : harishneela [email protected] : dmlc/xgboost [email protected] : Jean Francois Puget/France/ IBM@IBMFR , [email protected] : Re: [dmlc/xgboost] 64๋น„ํŠธ mingw g++๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ xgboost ๋นŒ๋“œ ์‹œ ์‹คํŒจ(#1049)๋‚ ์งœ: 2016๋…„ 11์›” 2์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 7์‹œ 51๋ถ„
@jfpuget : ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. rMakefile:136 : ๋Œ€์ƒ 'xgboost'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ธฐ์‚ฌ์— ๋”ฐ๋ผ ๋ชจ๋“  ๊ฒƒ์„ํ–ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ฐœ ๋‚  ์ข€ ๋„์™€ ์ค„ ์ˆ˜ ์žˆ๋‹ˆ? ๊ฐ์‚ฌ ํ•ด์š”
โ€”๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ด๋ฉ”์ผ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜์„ธ์š”.

Sauf ํ‘œ์‹œ contraire ci-dessus:/ ์œ„์— ๋‹ฌ๋ฆฌ ๋ช…์‹œ๋˜์ง€ ์•Š๋Š” ํ•œ:
ํšŒ์‚ฌ IBM ํ”„๋ž‘์Šค
Siรจge Social : 17 avenue de l'Europe, 92275 Bois-Colombes Cedex
RCS ๋‚ญํ…Œ๋ฅด 552 118 465
Forme Sociale : SAS
์บํ”ผํƒˆ ์†Œ์…œ : 657.364.587 โ‚ฌ
์‚ฌ์ด๋ Œ/์‚ฌ์ด๋ Œ: 552 118 465 03644 - ์ฝ”๋“œ NAF 6202A

๋งฅ ์„ค์น˜ xgboost

1. ๋ธŒ๋ฃจ ์—…๊ทธ๋ ˆ์ด๋“œ

Mac์„ 10.12๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ brew๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— brew๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์—ฌ๋Ÿฌ pit์„ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ์ด์ œ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. brew update ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ brew๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ค๋ฅ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. brew upgrade๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  brew๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋™์•ˆ ์ ๊ทน์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

2. ์ตœ์‹  ๋ฒ„์ „์˜ gcc(gcc-6) ์„ค์น˜

์–‘์กฐ ์„ค์น˜ gcc --multilib ์—†์ด

์ฐธ๊ณ : brew๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด gcc๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

3. Git์—์„œ ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ

ํž˜๋‚ด ๋ณต์ œ --์žฌ๊ท€ https://github.com/dmlc/xgboost

๋‹ค์šด๋กœ๋“œ ํ›„ cd xgboost; cp make/minimum.mk ./config.mk; make -j4๋ฅผ ์‹คํ–‰ํ•˜์—ฌ xgboost๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” xgboost๋ฅผ ์ปดํŒŒ์ผํ–ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. (๋ช‡ ๋ฒˆ ๋” ์‹œ๋„ํ•˜๋ฉด ๋‹ค์Œ ๋ฒˆ์— ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

4. xgboost์˜ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์น˜

xgboost๋Š” Python ๋ฒ„์ „๊ณผ R ์–ธ์–ด ๋ฒ„์ „์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. R์˜ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์œผ๋กœ ์ธํ•ด python์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ xgboost์˜ python ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

xgboost ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•œ ๋‹ค์Œ xgboost์˜ python-package ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. cd python-package/

python-package ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰: sudo python setup.py install, sudo๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

5. ์™„๋ฃŒ, ๋‚ด๊ฐ€ ์ง์ ‘ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@jfpuget ์€ ์ด๋Ÿฌํ•œ ์ง€์นจ์ด POWER8 ์‹œ์Šคํ…œ์—์„œ ์œ ํšจํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. POWER8 ๋ฐ centos 7์—์„œ XGBoost๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. OP์™€ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฅด๊ฒ ์–ด์š”.

์•ˆ๋…•ํ•˜์„ธ์š” @jfpuget

๊ท€ํ•˜์˜ ๋ธ”๋กœ๊ทธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. "python setup.py install"์„ ์ž…๋ ฅํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

"ํ›„๋ณด ๊ฒฝ๋กœ์—์„œ xgboost ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์  ์ด์ „์— ์„ค์น˜์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์•ˆ๋ถ€ ์ธ์‚ฌ

๋‚˜๋Š” ํ•˜์œ„ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด jfpuget์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋งˆ์ง€๋ง‰ make ์ดํ›„์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

dmlc-core/libdmlc.a: ๊ธฐํ˜ธ ์ถ”๊ฐ€ ์˜ค๋ฅ˜: ์•„์นด์ด๋ธŒ์— ์ƒ‰์ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ranlib๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ•˜๋‚˜ ์ถ”๊ฐ€
collect2.exe: ์˜ค๋ฅ˜: ld๊ฐ€ 1 ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
Makefile:174 : ๋Œ€์ƒ 'xgboost'์— ๋Œ€ํ•œ ๋ ˆ์‹œํ”ผ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
make: * [xgboost] ์˜ค๋ฅ˜ 1

๋ˆ„๊ตฌ๋“ ์ง€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”!

@jfpuget ๋‚ด Windows OS์—์„œ ๊ท€ํ•˜์˜ ์ง€์‹œ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋งค๋ฒˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
$ cd dmlc-์ฝ”์–ด
$ mingw32-make -j4
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o line_split.o src/io/line_split.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o recordio_split.o src/io/recordio_split.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o input_split_base.o src/io/input_split_base.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o io.o src/io.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o local_filesys.o src/io/local_filesys.cc
include/dmlc/./././parameter.h:25:0์— ํฌํ•จ๋œ ํŒŒ์ผ์—์„œ
ํฌํ•จ/dmlc/././registry.h:14์—์„œ,
ํฌํ•จ/dmlc/./data.h:16์—์„œ,
include/dmlc/threadeditor.h:20์—์„œ,
src/io/cached_input_split.h:16์—์„œ,
src/io.cc:13์—์„œ:
include/dmlc/././././optional.h: 'dmlc::optional์˜ ์ธ์Šคํ„ด์Šคํ™”์—์„œ::~์˜ต์…˜() [T = int]':
include/dmlc/./././parameter.h:513:7: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜
include/dmlc/././././optional.h:60:7: ๊ฒฝ๊ณ : ์œ ํ˜• ํŽ€๋‹ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค [-Wstrict-aliasing]
์žฌํ•ด์„_์บ์ŠคํŠธ(&val)->~T();
^ ~ ~ ~
include/dmlc/././././optional.h: 'const T& dmlc::optional์˜ ์ธ์Šคํ„ด์Šคํ™”์—์„œ::value() const [T = int]':
include/dmlc/./././parameter.h:872:9: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜
include/dmlc/././././optional.h:106:12: ๊ฒฝ๊ณ : ์œ ํ˜•์ด ์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค. [-Wstrict-aliasing]
reinterpret_cast ๋ฐ˜ํ™˜(&val);^ ~ ~ ~ ~ ~ ~ ~g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o data.o src/data.ccinclude/dmlc/././././optional.h: 'const T& dmlc::optional์˜ ์ธ์Šคํ„ด์Šคํ™”์—์„œ::์šด์˜์ž () const [T = int]':
include/dmlc/././././optional.h:134:11: 'std::ostream& dmlc::operator<<(std::ostream&, const dmlc::optional&) [T = int; std::ostream = std::basic_ostream]'
include/dmlc/./././parameter.h:877:13: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜
include/dmlc/././././optional.h:97:12: ๊ฒฝ๊ณ : ์œ ํ˜• ํŽ€๋‹ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค. [-Wstrict-aliasing]
reinterpret_cast ๋ฐ˜ํ™˜(&val);^ ~ ~ ~ ~ ~ ~ ~g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o recordio.o src/recordio.ccsrc/data/././text_parser.h:11:0์— ํฌํ•จ๋œ ํŒŒ์ผ์—์„œsrc/data/./libsvm_parser.h:13์—์„œ,src/data/disk_row_iter.h:19์—์„œ,src/data.cc:12์—์„œ:include/dmlc/omp.h:15:81: ์ฐธ๊ณ : #pragma ๋ฉ”์‹œ์ง€: ๊ฒฝ๊ณ : OpenMP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.






::~์˜ต์…˜() [T = int]':include/dmlc/././parameter.h:513:7: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜include/dmlc/./././optional.h:60:7: ๊ฒฝ๊ณ : ์œ ํ˜• ํŽ€๋‹ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค. [-Wstrict-aliasing]์žฌํ•ด์„_์บ์ŠคํŠธ(&val)->~T();^ ~ ~ ~include/dmlc/./././optional.h: 'const T& dmlc::optional'์˜ ์ธ์Šคํ„ด์Šคํ™”์—์„œ::value() const [T = int]':include/dmlc/././parameter.h:872:9: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜include/dmlc/./././optional.h:106:12: ๊ฒฝ๊ณ : ์œ ํ˜•์ด ์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค. [-Wstrict-aliasing]๋ฐ˜ํ™˜ *reinterpret_cast(&val);^ ~ ~ ~ ~ ~ ~ ~include/dmlc/./././optional.h: 'const T& dmlc::optional'์˜ ์ธ์Šคํ„ด์Šคํ™”์—์„œ::์šด์˜์ž
() const [T = int]':
include/dmlc/./././optional.h:134:11: 'std::ostream& dmlc::operator<<(std::ostream&, const dmlc::optional&) [T = int; std::ostream = std::basic_ostream]'
include/dmlc/././parameter.h:877:13: ์—ฌ๊ธฐ์—์„œ ํ•„์ˆ˜
include/dmlc/./././optional.h:97:12: ๊ฒฝ๊ณ : ์œ ํ˜• ํŽ€๋‹ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜๋ฉด ์—„๊ฒฉํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ๊ทœ์น™์ด ๊นจ์ง‘๋‹ˆ๋‹ค [-Wstrict-aliasing]
๋ฐ˜ํ™˜ *reinterpret_cast(&val);
^ ~ ~ ~ ~ ~ ~ ~ ~
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o config.o src/config.cc
ar cr libdmlc.a line_split.o recordio_split.o input_split_base.o io.o local_filesys.o data.o recordio.o config.o

mingw๊ฐ€ ์•„๋‹Œ โ€‹โ€‹g++๋กœ ์ปดํŒŒ์ผ ์ค‘์ž…๋‹ˆ๋‹ค.

@jfpuget
https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en ์—์„œ ์ œ๊ณต๋˜๋Š” ์ฒ˜๋ฐฉ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

1) Windows์šฉ Git์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
2) ์‹œ์ž‘ ๋ฉ”๋‰ด์—์„œ Git Bash๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
3) ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ /c/Users/Roshan/code๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
4) ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ git ํ•˜์œ„ ๋ชจ๋“ˆ ์ดˆ๊ธฐํ™”
$ git ํ•˜์œ„ ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

5) ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์— ์–ธ๊ธ‰๋œ URL์—์„œ MinGW-W64๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
6) "C:\Program Files\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64\bin"์—์„œ mingw32-make๋ฅผ ํ™•์ธํ•˜๊ณ  ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
7) ๋‚ด ๊ฒฝ๋กœ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— "C:\Program Files\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64\bin"์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
8) "/c/Program Files/mingw-w64/x86_64-7.1.0-posix-seh-rt_v5-rev0/mingw64/bin/mingw32-make"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” "which mingw32-make" ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
9) ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. alias make='mingw32-make'
10) ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ "/c/Users/Roshan/code/xgboost/dmlc-core"๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
11) ๊ทธ๋Ÿฐ ๋‹ค์Œ make -j4 ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ mingw ๋Œ€์‹  g++๋กœ ์ปดํŒŒ์ผํ•˜๊ฒŒ ๋˜์—ˆ๋‚˜์š”? ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ง€์‹œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค, ์ „๋Šฅ์ž. ์™œ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ง€์˜ฅ์—์„œ ๋ถˆํƒ€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@jfpuget ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ  ์ด ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” C ๋“œ๋ผ์ด๋ธŒ์— mingw๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค(์ด ํด๋”์—๋Š” ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฏ€๋กœ Program Files๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ๋ฒ„์ „๋„ 5.3.0์œผ๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ 7 ๋Œ€์‹ ). ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@qingdatascience : ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฌด์—‡์„

๋‚˜๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. @yunzhou๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ bash ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ

@jfpuget๋ฟ๋งŒ ์•„๋‹ˆ๋ผ @datascienceqing์— ๋งŽ์€ ๊ฐ์‚ฌ

xgboost๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†์–ด์„œ LightGBM์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ URL์— ์ œ๊ณต๋œ ์ง€์นจ์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์„ค์น˜(์‹œ์ž‘์—์„œ ์™„๋ฃŒ๊นŒ์ง€)๋Š” 30๋ถ„ ๋ฏธ๋งŒ์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Microsoft/LightGBM/tree/master/python-package

Windows OS๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Visual Studio๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 5๋‹จ๊ณ„๋กœ LightGBM์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1) https://cmake.org/download/์—์„œ cmake ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜
2) https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017์—์„œ MS Build๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
3) https://git-for-windows.github.io/?cm_mc_uid=41805252005114998995219&cm_mc_sid_50200000=1500774547์—์„œ Git ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜
4) Git Bash ์‹œ์ž‘
5) ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
git clone --recursive https://github.com/Microsoft/LightGBM
cd LightGBM/ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€
ํŒŒ์ด์ฌ setup.py ์„ค์น˜

๋ช‡ ๋ฒˆ์˜ ์‹œํ–‰์ฐฉ์˜ค ๋์— ๋งˆ์นจ๋‚ด xgboost๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์œ„์น˜์˜ ์ง€์นจ์ด ๋งค์šฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. http://www.picnet.com.au/blogs/guido/post/2016/09/22/xgboost-windows-x64-binaries-for-download/

@gatapia @jfpuget ๊ณผ @qingdatascience ๋•๋ถ„์—

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