Xgboost: 1.0.0μ—μ„œ μƒμ„±λœ λͺ¨λΈμ€ 0.90으둜 λ‘œλ“œν•  수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 02μ›” 22일  Β·  74μ½”λ©˜νŠΈ  Β·  좜처: dmlc/xgboost

λ‹€μŒ 지침을 λ”°λ₯΄μ‹­μ‹œμ˜€: https://xgboost.readthedocs.io/en/latest/R-package/xgboostPresentation.html

> install.packages("drat", repos="https://cran.rstudio.com")
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/drat_0.1.5.zip'
Content type 'application/zip' length 87572 bytes (85 KB)
downloaded 85 KB

package β€˜drat’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\lee\AppData\Local\Temp\RtmpiE0N3D\downloaded_packages
> drat:::addRepo("dmlc")
> install.packages("xgboost", repos="http://dmlc.ml/drat/", type = "source")
Warning: unable to access index for repository http://dmlc.ml/drat/src/contrib:
  Line starting '<!DOCTYPE html> ...' is malformed!
Warning message:
package β€˜xgboost’ is not available (for R version 3.6.0) 

λ™μΌν•œ 였λ₯˜λ‘œ R 3.6.2μ—μ„œλ„ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

μ°Έκ³ : CRAN 버전을 μ‚¬μš©ν•˜λŠ” 것을 훨씬 μ„ ν˜Έν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Linux 및 Macμ—μ„œ ν›ˆλ ¨ν•˜κ³  saveRDS ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μž₯ν•˜λŠ” λͺ¨λΈμ€ λ‹€λ₯Έ μ‹œμŠ€ν…œ(Windows)μ—μ„œ μ˜ˆμΈ‘ν•˜μ§€ μ•Šκ³  단지 숫자(0)λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ XGBoost λͺ¨λΈμ„ μ €μž₯ν•˜λŠ” 방법에 λŒ€ν•œ 지침이 μžˆλŠ” μ‚¬λžŒμ΄ 있으면 μ•Œλ €μ£Όμ‹­μ‹œμ˜€. xgb.save.raw 및 xgb.loadλ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ numeric(0)도 μƒμ„±ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ (ν•œ 달 전에) λͺ¨λΈμ„ ν›ˆλ ¨μ‹œν‚¨ μ»΄ν“¨ν„°μ—μ„œ R의 readRDSλŠ” 잘 μž‘λ™ν•©λ‹ˆλ‹€. λ‚˜μ—κ²Œ μ ˆλŒ€μ μœΌλ‘œ λ‹Ήν˜Ή μŠ€λŸ½λ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

Linuxμ—μ„œ 문제λ₯Ό μ„±κ³΅μ μœΌλ‘œ μž¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. μ²¨λΆ€λœ μŠ€ν¬λ¦°μƒ·μ„ μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

가상 λ°•μŠ€λ₯Ό λ“œλ‘­λ°•μŠ€μ— μ—…λ‘œλ“œ μ€‘μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ²˜μŒλΆ€ν„° μ„€μΉ˜ν•˜λ €λŠ” 경우 볡제 지침은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. λ²„μΆ”μ–Όλ°•μŠ€ λ‹€μš΄λ‘œλ“œ 및 μ„€μΉ˜
  2. μš°λΆ„νˆ¬ λ°”μ΄μ˜€λ‹‰ 비버 λΉŒλ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€(μš°λΆ„νˆ¬-18.04.3-desktop-amd64 μ‚¬μš©).
  3. λ‹€μŒ 지침을 λ”°λ₯΄μ‹­μ‹œμ˜€: https://medium.com/@mannycodes/installing -ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602. κ³ μ • 15GB 가상 λ“œλΌμ΄λΈŒλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  4. λ‹€μŒμ„ 톡해 R 3.6.2λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.
sudo apt-get update
sudo apt-get install vim
sudo vim /etc/apt/sources.list
i
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
<esc> :wq
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
sudo apt-get update
sudo apt-get install r-base-dev
  1. R에 νŒ¨ν‚€μ§€ μ„€μΉ˜

install.packages(c("caret", "xgboost"))

  1. Rμ—μ„œ νŒ¨ν‚€μ§€ λ‘œλ“œ
library(caret)
library(xgboost)
  1. 데이터 λ‘œλ“œ
modelList <- readRDS("~/Desktop/modelList.rdata")
attach(modelList)
  1. μ˜ˆμΈ‘μ„ μ‹œλ„ν•˜λ‹€
predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))

그리고 이것은 이제 μΉœμˆ™ν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.

[13:00:55] κ²½κ³ : amalgamation/../src/objective/regression_obj.cu:152: reg:linear λŠ” 이제 reg:squarederror λŒ€μ‹  μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
숫자(0)

Screen Shot 2020-02-23 at 12 33 13 PM

μ°Έκ³ : λͺ…μ‹œμ  호좜 라이브러리λ₯Ό μ‹œλ„ν•˜κ³  예츑만 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ λ™μΌν•œ 숫자(0) 응닡을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  74 λŒ“κΈ€

install.packages('xgboost') λ₯Ό μ‹œλ„ν•˜μ…¨μŠ΅λ‹ˆκΉŒ?

install.packages('xgboost') λ₯Ό μ‹œλ„ν•˜μ…¨μŠ΅λ‹ˆκΉŒ?

그것은 잘 μž‘λ™ν•˜μ§€λ§Œ μ €μž₯된 λͺ¨λΈμ˜ λͺ¨λ“  예츑(saveRDS μ‚¬μš©)은 numeric(0)을 μƒμ„±ν•©λ‹ˆλ‹€. openMPλ₯Ό μ‚¬μš©ν•˜μ—¬ ν›ˆλ ¨λœ λͺ¨λΈμ€ ν•΄λ‹Ή ν”„λ ˆμž„μ›Œν¬κ°€ μ—†λŠ” μ»΄ν“¨ν„°μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ†ŒμŠ€μ—μ„œ μ»΄νŒŒμΌν•˜λ©΄ 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

μ†ŒμŠ€μ—μ„œ XGBoostλ₯Ό μ»΄νŒŒμΌν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DR_LIB=ON
cmake --build . --target install --config Release

μ˜ˆμΈ‘μ— λŒ€ν•΄ 0을 μ–»λŠ” 이유λ₯Ό 찾을 수 μžˆλ„λ‘ λͺ¨λΈ νŒŒμΌμ„ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

κ°μ‚¬ν•©λ‹ˆλ‹€. R 개체λ₯Ό μ›ν•˜μ‹­λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ xgb.save.rawλ₯Ό 톡해 λ³€ν™˜ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

λ‘˜ λ‹€

λ‹Ήμ‹ μ˜ 도움과 지원에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€(그리고 κ·ΈλŸ¬ν•œ νŠΉλ³„ν•œ ν•™μŠ΅ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 데).

첨뢀 νŒŒμΌμ€ μ••μΆ•λœ .rdata νŒŒμΌμž…λ‹ˆλ‹€. 3개의 μ‹œμŠ€ν…œ(Mac, MacBook, Ubuntu)μ—μ„œ λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

modelList <- readRDS("<path_to_folder>/modelList.rdata")
attach(modelList)
predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))

그리고 λ‹€μŒ 좜λ ₯을 μ–»μŠ΅λ‹ˆλ‹€.

> predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
[23:12:50] WARNING: ../..//amalgamation/../src/objective/regression_obj.cu:167: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_caret)
[1] 14.0180358887 13.0352602005 12.9208145142 13.2430124283 13.6698570251
[6] 12.9033651352

> predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
[23:16:17] WARNING: ../..//amalgamation/../src/objective/regression_obj.cu:167: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_xgbbase)
[1] 14.0180358887 13.0352602005 12.9208145142 13.2430124283 13.6698570251
[6] 12.9033651352

μ‹œμŠ€ν…œ 4(CRANμ—μ„œ xgboostκ°€ μ„€μΉ˜λœ Windows 기반 R)μ—μ„œλŠ” 맀우 λ‹€λ₯Έ κ²°κ³Όλ₯Ό μ–»μŠ΅λ‹ˆλ‹€.

> predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
[23:18:04] WARNING: amalgamation/../src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_caret)
numeric(0)

> predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
[23:18:41] WARNING: amalgamation/../src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_xgbbase)
numeric(0)

μƒˆλ‘œμš΄ 문제λ₯Ό μ—΄μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ λ™μΌν•œ μ½”λ“œκ°€ λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œ λ‹€λ₯΄κ²Œ μž‘λ™ν•˜λŠ” μ΄μœ μ— λŒ€ν•΄ μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ xgbRawκ°€ ν¬ν•¨λ˜μ–΄ 있으며(attach()λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 호좜 κ°€λŠ₯ν•΄μ•Ό 함) λ‹€μŒ μ½”λ“œλ‘œ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

xgbRaw=xgb.save.raw(xgb.Booster.complete(caretModel$finalModel))

λ‹€μ‹œ ν•œλ²ˆ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

λͺ¨λΈ λͺ©λ‘.rdata.zip

μ•„λ§ˆλ„ omp μ˜ˆμ™Έμ— λŒ€ν•œ dmlc κ°€λ“œ λ•Œλ¬ΈμΌκΉŒμš”?

@leedrake5 컴퓨터가 OpenMPλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

@hcho3 원인을 μ°ΎμœΌμ…¨λ‚˜μš”? 방금 OpenMP 없이 XGBoostλ₯Ό μ»΄νŒŒμΌν–ˆλŠ”λ°(CMakeList에 λŒ€ν•œ 일뢀 패치 포함) μ™ΈλΆ€ λ©”λͺ¨λ¦¬ ν…ŒμŠ€νŠΈκ°€ μ˜ˆμƒλŒ€λ‘œ μ‹€νŒ¨ν•˜κ³  hist 병렬 κ·Έλ£Ή ν…ŒμŠ€νŠΈλ„ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€(둜컬 λΆ„κΈ°μ—μ„œ μˆ˜μ •ν•¨). κ·ΈλŸ¬λ‚˜ μ§€κΈˆκΉŒμ§€λŠ” μ™„λ²½ν•œ 예츑 값을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

@hcho3 λ‚΄ μ»΄ν“¨ν„°λŠ” openmpλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μ΄λŸ¬ν•œ λͺ¨λΈμ„ 산업적 규λͺ¨λ‘œ λ°°ν¬ν•˜κ³  있으며 νŠΉμ • μ‚¬μ΄νŠΈμ˜ λ§Žμ€ μ»΄ν“¨ν„°μ—λŠ” openmpκ°€ μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 6κ°œμ›”μ˜ 쀀비와 κ΅¬ν˜„κΉŒμ§€ 1주일 후에 이것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬λŠ” λͺ¨λΈμ΄ 일뢀 μ»΄ν“¨ν„°μ—μ„œλŠ” μž‘λ™ν•˜κ³  λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠλŠ” 이유λ₯Ό μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ λΆ„μ£Όνžˆ 움직이고 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ΄ 건섀 ν™˜κ²½μ—μ„œλ§Œ μž‘λ™ν•΄μ•Ό ν•˜λŠ” μ΄μœ μ— λŒ€ν•œ 철학이 μžˆλ‹€λ©΄ κ·Έ μ΄μœ μ— λŒ€ν•œ μœ μ΅ν•œ 였λ₯˜λ₯Ό 얻을 수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

@leedrake5 λ²„κ·Έμž…λ‹ˆλ‹€. openmpλ₯Ό λΉ„ν™œμ„±ν™”ν•œ μƒνƒœλ‘œ Ubuntuμ—μ„œ 이λ₯Ό μž¬ν˜„ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μ§€κΈˆκΉŒμ§€λŠ” 운이 μ—†μŠ΅λ‹ˆλ‹€.

@trivialfs 도움이 λœλ‹€λ©΄ λ‚˜μ™€ λŒ€λΆ€λΆ„μ˜ λ™λ£Œλ“€μ€ Windowsμ—μ„œ 버그λ₯Ό κ²½ν—˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ λ™λ£Œκ°€ openmp 없이 μš°λΆ„νˆ¬μ—μ„œ μž¬ν˜„ν•  수 μžˆμ—ˆμ§€λ§Œ.

멋진 것듀(openmp, intelmkl, openblas λ“±)이 μ—†λŠ” R의 μ΅œμ†Œν•œμ˜ μ„€μΉ˜κ°€ 그것을 μž¬ν˜„ν•  수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, μ—¬μ „νžˆ μ‹œμŠ€ν…œμ˜ μ–΄λ–€ 뢀뢄이 문제λ₯Ό μΌμœΌν‚€λŠ”μ§€μ— λŒ€ν•΄ 머리λ₯Ό 감고 μžˆμŠ΅λ‹ˆλ‹€.

@leedrake5 Linux λ°°ν¬νŒμ—μ„œ μž¬ν˜„ν•  수 μžˆλŠ” 방법이 μžˆλ‹€λ©΄ 큰 도움이 될 κ²ƒμž…λ‹ˆλ‹€!

google test, omp ...λ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  μ˜΅μ…˜μ„ λΉ„ν™œμ„±ν™”ν–ˆμ§€λ§Œ μ—¬μ „νžˆ λͺ¨λΈμ„ λ‘œλ“œν•˜λŠ” μ˜¬λ°”λ₯Έ κ²°κ³Όλ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€. R μ„€μΉ˜λŠ” apt 의 κΈ°λ³Έ λ°°ν¬νŒμž…λ‹ˆλ‹€. XGBoost 예츑과 관련이 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

OpenMP둜 인해 λ°œμƒν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 심지어 예츑이 μ‹€μ œλ‘œ λΉ—λ‚˜κ°€λ”λΌλ„ μ—¬μ „νžˆ 0이 μ•„λ‹Œ μ „μ—­ 편ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 생각할 수 μžˆλŠ” μœ μΌν•œ μ΄μœ λŠ” XGBoostκ°€ μ‹€μ œλ‘œ μ„€μΉ˜λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. CRANμ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λŠ” 것 κ°™μ€λ°μš”? @hcho3

CMake λΉŒλ“œμ™€ autotools λΉŒλ“œλ₯Ό λͺ¨λ‘ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 install.packages(...) (autotools λΉŒλ“œ)μ—μ„œ λ³΄κ³ ν•œ 컴파일 ν”Œλž˜κ·Έμž…λ‹ˆλ‹€.

g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_    -DDMLC_CMAKE_LITTLE_ENDIAN=1 -pthread -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-el7SHG/r-base-3.5.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c ../..//amalgamation/xgboost-all0.cc -o ../..//amalgamation/xgboost-all0.o

@trivialfis XGBoost κ°€ CRANμ—μ„œ μ„±κ³΅μ μœΌλ‘œ μ„€μΉ˜λ˜κ³  라이브러리(xgboost)κ°€ 문제 없이 μž‘λ™ν•˜λ―€λ‘œ λ”μš± κΆκΈˆν•©λ‹ˆλ‹€.

λ‚΄ λ™λ£Œκ°€ openmp 없이 μš°λΆ„νˆ¬μ—μ„œ μž¬ν˜„ν•  수 μžˆμ—ˆμ§€λ§Œ.

λ²ˆμ‹ 방법을 μΉœμ ˆν•˜κ²Œ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚΄ λ™λ£Œκ°€ openmp 없이 μš°λΆ„νˆ¬μ—μ„œ μž¬ν˜„ν•  수 μžˆμ—ˆμ§€λ§Œ.

λ²ˆμ‹ 방법을 μΉœμ ˆν•˜κ²Œ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

그듀이 λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ μž‘λ™ 방식에 λŒ€ν•΄ μΆ©λΆ„νžˆ μ•Œκ³  μžˆλŠ”μ§€ ν™•μ‹ ν•  수 μ—†μ§€λ§Œ μ œκ³΅ν•  수 μžˆλŠ” 진단을 μ•Œκ³  μžˆλ‹€λ©΄ μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

제 κ²½μš°μ—λŠ” 문제λ₯Ό λ³΅μ œν•  수 μžˆλŠ” 가상 μƒμž μš°λΆ„νˆ¬ μ„€μΉ˜λ₯Ό λ§Œλ“€λ €κ³  ν•©λ‹ˆλ‹€. μ„±κ³΅ν•˜λ©΄ λ‹€μš΄λ‘œλ“œ 링크λ₯Ό λ³΄λ‚΄λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

Linuxμ—μ„œ 문제λ₯Ό μ„±κ³΅μ μœΌλ‘œ μž¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. μ²¨λΆ€λœ μŠ€ν¬λ¦°μƒ·μ„ μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

가상 λ°•μŠ€λ₯Ό λ“œλ‘­λ°•μŠ€μ— μ—…λ‘œλ“œ μ€‘μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ²˜μŒλΆ€ν„° μ„€μΉ˜ν•˜λ €λŠ” 경우 볡제 지침은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. λ²„μΆ”μ–Όλ°•μŠ€ λ‹€μš΄λ‘œλ“œ 및 μ„€μΉ˜
  2. μš°λΆ„νˆ¬ λ°”μ΄μ˜€λ‹‰ 비버 λΉŒλ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€(μš°λΆ„νˆ¬-18.04.3-desktop-amd64 μ‚¬μš©).
  3. λ‹€μŒ 지침을 λ”°λ₯΄μ‹­μ‹œμ˜€: https://medium.com/@mannycodes/installing -ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602. κ³ μ • 15GB 가상 λ“œλΌμ΄λΈŒλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  4. λ‹€μŒμ„ 톡해 R 3.6.2λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.
sudo apt-get update
sudo apt-get install vim
sudo vim /etc/apt/sources.list
i
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
<esc> :wq
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
sudo apt-get update
sudo apt-get install r-base-dev
  1. R에 νŒ¨ν‚€μ§€ μ„€μΉ˜

install.packages(c("caret", "xgboost"))

  1. Rμ—μ„œ νŒ¨ν‚€μ§€ λ‘œλ“œ
library(caret)
library(xgboost)
  1. 데이터 λ‘œλ“œ
modelList <- readRDS("~/Desktop/modelList.rdata")
attach(modelList)
  1. μ˜ˆμΈ‘μ„ μ‹œλ„ν•˜λ‹€
predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))

그리고 이것은 이제 μΉœμˆ™ν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.

[13:00:55] κ²½κ³ : amalgamation/../src/objective/regression_obj.cu:152: reg:linear λŠ” 이제 reg:squarederror λŒ€μ‹  μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
숫자(0)

Screen Shot 2020-02-23 at 12 33 13 PM

μ°Έκ³ : λͺ…μ‹œμ  호좜 라이브러리λ₯Ό μ‹œλ„ν•˜κ³  예츑만 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ λ™μΌν•œ 숫자(0) 응닡을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.

7z μ••μΆ• 가상 μΈμŠ€ν„΄μŠ€ 링크: https://www.dropbox.com/s/ld06zz798m0segf/UbuntuDebug.7z?dl=0

λ¨Όμ € 가상 μƒμžλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ €λŠ” 보톡 KVM을 μ‚¬μš©ν•©λ‹ˆλ‹€.

μ§€κΈˆ 이것을보고 μžˆμŠ΅λ‹ˆλ‹€.

@leedrake5 κ·€ν•˜κ°€ μ œκ³΅ν•œ 가상 λ¨Έμ‹ μ—μ„œ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. saveRDS 및 xgb.save.raw 에 λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λŒ€μ‹  xgb.save 및 xgb.load λ₯Ό μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ? 이 ν•¨μˆ˜ 집합은 XGBoost λͺ¨λΈμ˜ "λ„€μ΄ν‹°λΈŒ" ν˜•μ‹μ„ μ‚¬μš©ν•˜λ©° R ν™˜κ²½μ— νŠΉμ •ν•œ 속성을 μ €μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. R νŒ¨ν‚€μ§€μ—μ„œ Python으둜 λͺ¨λΈμ„ μ „μ†‘ν•˜λ €λŠ” κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

μ›μ‹œ μ €μž₯은 λ¬Έμ œκ°€ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” R이 R μ½”λ“œλ₯Ό μ§λ ¬ν™”ν•˜λŠ” 방법에 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 직렬화 λ‘œλ“œμ— 영ν–₯을 쀄 수 μžˆλŠ” μƒˆλ‘œμš΄ 선택적 λ§€κ°œλ³€μˆ˜λ₯Ό μ˜ˆμΈ‘μ— μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것을 쑰사해 λ³΄μ•˜μ§€λ§Œ Python pickle의 λ¬Έμ œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 정말 κΈ°λ°œν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

@trivialfis 잠재적으둜 이것을 μš°νšŒν•  수 μžˆλŠ” 예츑 κΈ°λŠ₯의 μ˜΅μ…˜μ— λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄ μƒκ°μ—λŠ” CPU λͺ…λ Ήκ³Ό 관련이 있으며 νŒ¨ν‚€μ§€μ—μ„œ μ²˜λ¦¬ν•  수 μžˆλŠ” 것보닀 Rμ—μ„œ 더 κΉŠμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

@hcho3 ν˜„μž¬ 데이터 νŒŒμ΄ν”„μ— xgb.save.rawλ₯Ό μΆ”κ°€ν•˜κ³  도움이 λ˜λŠ”μ§€ ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 보낸 μ˜ˆμ œμ—μ„œλŠ” 예츑이 μž‘λ™ν•˜λŠ” μ»΄ν“¨ν„°μ—μ„œ xgb.save.rawλ₯Ό μ‚¬μš©ν•˜μ—¬ 이것을 μ‹œλ„ν–ˆμ§€λ§Œ λΆˆν–‰νžˆλ„ xgb.loadμ—μ„œ μ—¬μ „νžˆ numeric(0)으둜 μ΄μ–΄μ§‘λ‹ˆλ‹€. λΆ„λͺ…νžˆ 이것은 λͺ¨λΈμ΄ 이미 saveRDSλ₯Ό 톡해 μ €μž₯된 μ΄ν›„μ˜€κΈ° λ•Œλ¬Έμ— μƒμ„±λœ ν™˜κ²½μ—μ„œ μ—¬μ „νžˆ μž‘λ™ν•˜μ§€λ§Œ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 무언가가 λͺ¨λΈμ„ μ†μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 말할 수 μžˆλŠ” ν•œ, λͺ¨λΈμ΄ μ‚¬μš©λ˜λŠ” λͺ¨λ“  ν™˜κ²½μ— μ‘΄μž¬ν•΄μ•Ό ν•˜λŠ” λͺ¨λΈμ΄ μƒμ„±λœ ν™˜κ²½μ— λŒ€ν•΄ μ—¬μ „νžˆ 무언가가 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 무엇인지 λͺ¨λ₯Έλ‹€.

μ•„λ‹ˆμš”, xgb.save κ°€ μ•„λ‹ˆλΌ xgb.save.raw μž…λ‹ˆλ‹€.

@trivialfis XGBoost νŒ¨ν‚€μ§€λŠ” CRANμ—μ„œ μ—¬μ „νžˆ 0.90μž…λ‹ˆλ‹€.

xgb.saveλ₯Ό μ‹œλ„ν•˜κ³  xgb.load()λ₯Ό 톡해 R에 λ‘œλ“œν–ˆκ³  같은 숫자(0)λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. xgb.saveμ—μ„œ 첨뢀 μ°Έμ‘°

xgbModelSaved.xgb.zip

λ˜ν•œ 이 μŠ€λ ˆλ“œμ˜ μ•žλΆ€λΆ„μ—μ„œ λͺ¨λΈμ„ μƒμ„±ν•œ λ™μΌν•œ μ»΄ν“¨ν„°μ—μ„œ modelList의 데이터λ₯Ό μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ 방법을 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

xgb.save, xgb.save.raw, saveRDS λ“±μ˜ 슬라이슀 방법에 관계없이 λͺ¨λΈμ΄ μƒμ„±λœ 컴퓨터 ν™˜κ²½μ—λŠ” λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©μ„ κΈˆμ§€ν•˜λŠ” 무언가가 μžˆμŠ΅λ‹ˆλ‹€.

μ œκ³΅ν•΄ μ£Όμ‹  λͺ¨λΈ νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λͺ¨λΈ 파일이 μ–΄λ–»κ²Œ μƒμ„±λ˜μ—ˆλŠ”μ§€ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. 더 λ§Žμ€ μ»¨ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

  • OS
  • XGBoost 버전
  • λͺ¨λΈ μ €μž₯ λͺ…λ Ή

OS X(μΉ΄νƒˆλ¦¬λ‚˜). μ†ŒμŠ€μ—μ„œ XGBoost λΉŒλ“œ, 1.0(μ‹œμŠ€ν…œμ—μ„œ μ§€μ›λ˜λŠ” openMP). saveRDSλ₯Ό μ‚¬μš©ν•˜μ—¬ μ›λž˜ μ €μž₯ν•œ λͺ¨λΈμž…λ‹ˆλ‹€. λ‚˜λŠ” 그것을 λ‹€μ‹œ μ‹€ν–‰ν•˜κ³  λ‹€λ₯Έ 방법을 톡해 μ €μž₯ν•˜κ³  λ‹€μ‹œ 보고할 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λΈμ„ μ²˜μŒλΆ€ν„° λ‹€μ‹œ μƒμ„±ν•˜κ³  xgb.saveλ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μž₯ν•˜κ³ (예: 예츑 데이터λ₯Ό μ œμ™Έν•˜κ³  saveRDS λ˜λŠ” readRDSλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒ) xgb.loadλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‘œλ“œν–ˆμŠ΅λ‹ˆλ‹€. λ™μΌν•œ κ²°κ³Ό - λͺ¨λΈ 생성에 μ‚¬μš©λœ 컴퓨터 μ‹œμŠ€ν…œ(OS X, XGB 1.0)μ—μ„œλŠ” 예츑이 μž‘λ™ν•˜κ³  λ‹€λ₯Έ μ‹œμŠ€ν…œ(Windows 7, XGB 0.9)μ—μ„œλŠ” μ‹€νŒ¨ν•©λ‹ˆλ‹€. 그것과 modelListλ₯Ό 이 λ©”μ‹œμ§€μ— μ²¨λΆ€ν•©λ‹ˆλ‹€. 이 문제λ₯Ό μ§„λ‹¨ν•˜λŠ” 데 도움이 될 수 μžˆλŠ” λ‹€λ₯Έ μž‘μ—…μ΄ 있으면 μ•Œλ €μ£Όμ„Έμš”.

xgb_model <- xgb.load("Z:/Desktop/newxgbModelSaved.xgb")
modelList <- readRDS("Z:/Desktop/modelList2.rdata")
attach(modelList)
predict(object=xgb_model, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
numeric(0)

newxgbModelSaved.xgb.zip

modelList2.rdata.zip

@leedrake5 Windowsμ—μ„œ XGBoost 1.0을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@trivialfis 이것은 λͺ¨λΈ 파일의 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„± 문제일 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™•μ‹€νžˆ λ²„μ „μ—…μž…λ‹ˆλ‹€. 방금 XGBoost의 1.0 버전을 μ‚­μ œν•˜κ³  CRANμ—μ„œ 0.9λ₯Ό μ„€μΉ˜ν–ˆμœΌλ©° μœ„μ—μ„œ μ„€λͺ…ν•œ 방법이 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  릴리슀 λ₯Ό μ‚¬μš©ν•˜μ—¬ μ†ŒμŠ€μ—μ„œ 0.90을 μ„€μΉ˜ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ dmlc-core 폴더가 λΉ„μ–΄ μžˆμœΌλ―€λ‘œ Cmakeμ—μ„œ ν•„μš”ν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 κ³„μ†ν•΄μ„œ openMP κΈ°λŠ₯을 μœ μ§€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ μ°Έμ‘°. Windows에 1.0.0 버전을 μ„€μΉ˜ν•˜λ €κ³  ν–ˆμŠ΅λ‹ˆκΉŒ?

μ΄μƒν•˜κ²Œλ„ 이것이 이 μŠ€λ ˆλ“œμ˜ 초기 μ΄μœ μ˜€μŠ΅λ‹ˆλ‹€. μ‹œλ„ν•˜μ§€λ§Œ ν”„λ‘œμ νŠΈκ°€ 더 이상 기닀릴 수 μ—†κΈ° λ•Œλ¬Έμ— 지연이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. 이것이 문제라면 λ‚΄κ°€ 보낸 μš°λΆ„νˆ¬ 가상 이미지에 μ†ŒμŠ€μ—μ„œ 1.0을 μ„€μΉ˜ν•˜λ©΄ 같은 λ¬Έμ œκ°€ 해결될 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

@leedrake5 λ„€, XGBoost 버전과 μΌμΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ 0.90을 μ‚¬μš©ν•˜κ±°λ‚˜ λͺ¨λ“  κ³³μ—μ„œ 1.0.0을 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

@trivialfis λ°”μ΄λ„ˆλ¦¬ λͺ¨λΈ ν˜•μ‹μ„ 크게 λ³€κ²½ν•œ 것을 κΈ°μ–΅ν•©λ‹ˆλ‹€. λ§žλ‚˜μš”?

μ•„λ‹ˆμš”, μš°λ¦¬λŠ” 이전 버전과 ν˜Έν™˜λ©λ‹ˆλ‹€. 1.0은 ν™•μ‹€νžˆ 0.9μ—μ„œ λͺ¨λΈμ„ λ‘œλ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.

@trivialfis μ„€λͺ… κ°μ‚¬ν•©λ‹ˆλ‹€. 이 경우 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„±μ„ μ˜ˆμƒν•˜κ³  λ°˜λ‘€λ₯Ό μ°Ύμ•˜μœΌλ―€λ‘œ 이 티켓을 λ²„κ·Έλ‘œ μ²˜λ¦¬ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. μ΄λ²ˆμ£Όμ— 봐야겠닀.

제 μƒκ°μ—λŠ” μ œμ•ˆλœ 제λͺ© 변경이 거꾸둜 된 것 κ°™μŠ΅λ‹ˆλ‹€. 1.0μ—μ„œ μƒμ„±λœ λͺ¨λΈμ€ 0.90μ—μ„œ μ˜ˆμΈ‘ν•˜λŠ” 데 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 버전 간에 μ–΄λŠ μ •λ„μ˜ ν˜Έν™˜μ„±μ΄ μ˜λ„λ˜μ—ˆλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ μ΅œμ†Œν•œ 정보λ₯Ό μ œκ³΅ν•˜λŠ” 였λ₯˜κ°€ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

이런, λ‚˜μœ.

@trivialfis @leedrake5 κ°€ μš”κ΅¬ν•˜λŠ” 것은 순방ν–₯ ν˜Έν™˜μ„±, 즉 1.0.0μ—μ„œ 0.90으둜 λͺ¨λΈμ„ λ‘œλ“œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것이 μš°λ¦¬κ°€ μ•½μ†ν•˜λŠ” 것인지 ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@leedrake5 Ubuntu 가상 머신에 1.0.0을 μ„€μΉ˜ν•˜λ €κ³  μ‹œλ„ν–ˆλŠ”λ° 이제 RDS 파일이 μ œλŒ€λ‘œ λ‘œλ“œλ˜κ³  μ‹€μˆ˜ 벑터가 ν‘œμ‹œλ©λ‹ˆλ‹€. λ”°λΌμ„œ 버전 문제일 κ°€λŠ₯성이 ν½λ‹ˆλ‹€.
1 0 0

νŽΈμ§‘ν•˜λ‹€. μŠ€ν¬λ¦°μƒ·μ˜ κ²½κ³  λ©”μ‹œμ§€λŠ” Loading model from < 1.0.0, consider saving it again μž…λ‹ˆλ‹€. λͺ¨λΈμ΄ 1.0.0μ—μ„œ μƒμ„±λ˜μ—ˆλ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ 이것은 여기에 있으면 μ•ˆλ©λ‹ˆλ‹€.

λ‚˜λŠ” λ™μ˜ν•œλ‹€. λ¬Έμ œκ°€ 무엇인지에 λŒ€ν•œ μˆ˜λ ΄μ„ μ„€μ •ν•˜κ²Œ λ˜μ–΄ 맀우 κΈ°μ©λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„ ν”„λ‘œλ•μ…˜ κ΄€μ μ—μ„œ λŒ€λŸ‰ 버전(에고, CRAN μ„€μΉ˜)으둜 배포할 수 μžˆλŠ” λͺ¨λΈμ„ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬κΈ°μ„œλΆ€ν„° XGBoostκ°€ μž‘λ™ν•˜λ„λ‘ ν•˜λŠ” 방법을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 이것이 μ ˆλŒ€μ μΈ μž„κ³„μ μž…λ‹ˆλ‹€.

릴리슀 λ˜λŠ” νŠΈλ¦¬μ—μ„œ λ‹€μš΄λ‘œλ“œν•œ μ†ŒμŠ€μ—μ„œ 0.9λ₯Ό μ„€μΉ˜ν•˜λŠ” 데 μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆμ§€λ§Œ 문제λ₯Ό 찾은 것 κ°™μŠ΅λ‹ˆλ‹€. cub, dmlc-core, rabit, λͺ¨λ‘ 이 λ‹€μš΄λ‘œλ“œμ—μ„œ 빈 ν΄λ”μž…λ‹ˆλ‹€. 그듀은 λ˜ν•œ @폴더 λ’€ - μ–΄λ–€ 폴더가 λΉ„μ–΄ μžˆλŠ”μ§€μ™€ 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. ν•΄λ‹Ή 링크λ₯Ό 따라가면 폴더λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜κ³  μ„€μΉ˜λ₯Ό 계속할 수 μžˆμŠ΅λ‹ˆλ‹€.

μŠ€ν¬λ¦°μƒ· μ°Έμ‘°:
Screen Shot 2020-03-03 at 9 41 33 PM

예, git ν•˜μœ„ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λ―€λ‘œ λΉŒλ“œ μ§€μΉ¨μ—μ„œ git clone --recursive λ₯Ό μ‚¬μš©ν•˜μ—¬ μ†ŒμŠ€μ—μ„œ μ„€μΉ˜ν•˜λ„λ‘ μš”μ²­ν•©λ‹ˆλ‹€. CRAN μ„€μΉ˜κ°€ λΆ€μ‘±ν•œ μƒν™©μ΄μ‹ κ°€μš”? λͺ¨λ“  κ³³μ—μ„œ 0.90을 μ‚¬μš©ν•˜μ—¬ λ¬Έμ œκ°€ ν•΄κ²°λ˜λ©΄ λͺ¨λ“  κ³³(Linux, Mac, Windows)에 CRAN μ„€μΉ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

예 - CRAN은 λͺ¨λΈ 생성에 큰 도움이 λ˜λŠ” openMPλ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ†ŒμŠ€μ—μ„œ xgboost 0.90을 μ»΄νŒŒμΌν•˜μ—¬ λ‹€μ‹œ μž‘λ™μ‹œν‚€λŠ” 방법을 μ•Œμ•„λ‚΄λŠ” 데 μ‹œκ°„μ„ ν• μ• ν•  κ²ƒμž…λ‹ˆλ‹€. 이 문제λ₯Ό μ§„λ‹¨ν•˜λŠ” 데 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@leedrake5

μ•Œμ•˜μ–΄μš”. μ§€κΈˆμ€ git ν•˜μœ„ λͺ¨λ“ˆμ„ ν¬ν•¨ν•˜μ—¬ 전체 μ†ŒμŠ€ μ½”λ“œλ₯Ό κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” λͺ…령이 μžˆμŠ΅λ‹ˆλ‹€.

git clone --recursive https://github.com/dmlc/xgboost -b release_0.90

이것은 XGBoost μ†ŒμŠ€ μ½”λ“œλ₯Ό κ°€μ Έμ™€μ„œ rabit, cub, dmlc-core 디렉토리λ₯Ό μ±„μ›Œμ•Ό ν•©λ‹ˆλ‹€. -b release_0.90 λŠ” μ΅œμ‹  버전이 μ•„λ‹Œ 0.90 버전을 μ–»λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

곁에:

CRAN은 openMPλ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

이것은 μ‹€μ œλ‘œ 1.0.0μ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 곧 CRANμ—μ„œ 1.0.0 버전을 μ–»μœΌλ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€. λͺ¨λ“  λ©΄μ—μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

@hetong007 CRAN에 1.0.0을 μ œμΆœν•  수 μžˆλ‚˜μš”?

@hcho3 μœ νš¨ν•œ μ—”λ””μ•ˆ 감지가 μžˆλ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ 쒋은 것 κ°™μŠ΅λ‹ˆλ‹€. 일주일 μ•ˆμ— μ œμΆœν•˜κ² μŠ΅λ‹ˆλ‹€.

@hetong007 μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? μ–΄λ–€ μ‹μœΌλ‘œλ“  도움이 λœλ‹€λ©΄ μ•Œλ €μ£Όμ„Έμš”.

@hcho3 μ•„ λ„€. μ†”λΌλ¦¬μŠ€ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ ν™˜κ²½μ΄ μžˆλŠ”μ§€ 묻고 μ‹ΆμŠ΅λ‹ˆλ‹€. 0.9λΆ€ν„° μ†”λΌλ¦¬μŠ€μ— ν•΄κ²°λ˜μ§€ μ•Šμ€ 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/xgboost-00check.html 항볡.

@hetong007 방금 VirtualBox와 ν•¨κ»˜ μ‹€ν–‰ν•  수 μžˆλŠ” Oracleμ—μ„œ Solaris VM 이미지λ₯Ό λ‹€μš΄λ‘œλ“œν–ˆμŠ΅λ‹ˆλ‹€. 문제λ₯Ό μž¬ν˜„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

@hetong007 Solarisμ—μ„œ R ν™˜κ²½μ„ μ„€μ •ν•˜λŠ” 데 λ§Žμ€ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 특히 awk 와 같은 μœ ν‹Έλ¦¬ν‹°λŠ” Solarisμ—μ„œ λ‹€λ₯΄κ²Œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— igraph 및 testthat $와 같은 R νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ 더 진행해야 할지 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

@hcho3 μ’€ 더 λͺ…ν™•ν•˜κ²Œ ν•΄μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? testthat κ°€ CRANμ—μ„œ μ†”λΌλ¦¬μŠ€ 검사λ₯Ό ν†΅κ³Όν–ˆλ‹€λ©΄ install.packages('testthat') λ₯Ό μ‚¬μš©ν•˜μ—¬ R μ½˜μ†”μ— νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@hetong007 igraph νŒ¨ν‚€μ§€λŠ” ꡬ성 λ‹¨κ³„μ—μ„œ awk λ₯Ό μ‚¬μš©ν•˜κ³  Solaris의 awk λŠ” GNU awk와 ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. GNU awkλ₯Ό μ„€μΉ˜ν•  수 μžˆμ§€λ§Œ gawk 라고 ν•©λ‹ˆλ‹€. R이 awk gawk λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•˜λŠ” 방법을 계속 μ•Œμ•„λ‚΄λ €κ³  ν•©λ‹ˆλ‹€.

@hcho3 μ’‹μ•„, λ”μ°ν•˜κ²Œ λ“€λ¦°λ‹€. 진행 방법에 λŒ€ν•œ 지식도 μ—†μŠ΅λ‹ˆλ‹€. 방금 CRANμ—μ„œ igraph 의 κ²°κ³Ό νŽ˜μ΄μ§€λ₯Ό μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€: https://cran.r-project.org/web/checks/check_results_igraph.html. μš°λ¦¬κ°€ 더 λ‚˜λΉ μ§€μ§€ μ•Šμ„ 것이라고 λŠλ‚λ‹ˆλ‹€. 상관없이 μ œμΆœν•˜κ² μŠ΅λ‹ˆλ‹€.

@hetong007 κ°μ‚¬ν•©λ‹ˆλ‹€. μ–Έμ  κ°€λŠ” μ†”λΌλ¦¬μŠ€ ν…ŒμŠ€νŠΈλ‘œ λŒμ•„κ°€λ €κ³  ν•©λ‹ˆλ‹€. 방법이 μžˆλ‹€κ³  ν™•μ‹ ν•©λ‹ˆλ‹€.

@hetong007 μ•„ λ„€, μ½”λ“œ μ œμΆœμ‹œ release_1.0.0 브랜치λ₯Ό μ‚¬μš©ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€.

@hcho3 사전 확인 κ²½κ³ :

* checking whether package 'xgboost' can be installed ... WARNING
Found the following significant warnings:
  amalgamation/../src/common/hist_util.cc:666:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct xgboost::tree::GradStats'; use assignment or value-initialization instead [-Wclass-memaccess]
See 'd:/RCompile/CRANguest/R-devel_gcc8/xgboost.Rcheck/00install.out' for details.

00install.out νŒŒμΌμ€ 여기에 μžˆμŠ΅λ‹ˆλ‹€(~72μ‹œκ°„ 이내 μ‚¬μš© κ°€λŠ₯): https://win-builder.r-project.org/v6XJQBjzgMaW/00install.out

λΉ λ₯Έ μˆ˜μ •μ΄ κ°€λŠ₯ν•˜μ§€ μ•Šμ„κΉŒμš”?

@hetong007 이게 λΈ”λ‘œμ»€μΈκ°€μš”? Memset은 νžˆμŠ€ν† κ·Έλž¨(ꡬ쑰 λ°°μ—΄)을 μ œλ‘œν™”ν•˜λŠ” 속도λ₯Ό λ†’μ΄λŠ” 데 μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이것이 CRAN을 μ°¨λ‹¨ν•˜λŠ” 경우 R νŒ¨ν‚€μ§€κ°€ λŒ€μ‹  일반 μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λ„λ‘ 맀크둜 κ°€λ“œλ₯Ό λ°°μΉ˜ν•©λ‹ˆλ‹€.

@hcho3 λ„€ μ°¨λ‹¨κΈ°μž…λ‹ˆλ‹€. 사전 확인은 μžλ™ν™”λ˜μ–΄ μ œμΆœμ€ κ²½κ³  없이 톡과해야 ν•©λ‹ˆλ‹€. λ§€ν¬λ‘œλŠ” μΆ©λΆ„νžˆ 쒋은 것 κ°™μŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€!

@hcho3 λ¨Όμ € std::fill λ₯Ό μ‚¬μš©ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? μ»΄νŒŒμΌλŸ¬μ‘°μ°¨λ„ memset 둜 μ΅œμ ν™”ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μ‹œμ μΈ μ„±λŠ₯ 영ν–₯을 λ―ΈμΉ  만큼 μ€‘μš”ν•˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

@hetong007 ν•„μš”ν•œ 변경을 ν–ˆμŠ΅λ‹ˆλ‹€(https://github.com/dmlc/xgboost/commit/3550b16a34055bc8ec33bf0b7006448e8c1a4eca). λ‹€μ‹œ μ‹œλ„ν•  수 μžˆλ‚˜μš”?

@trivialfis memset λ₯Ό λŒ€μ²΄ν•˜κΈ° μœ„ν•΄ λ³„λ„μ˜ pull μš”μ²­μ„ μ œμΆœν•˜κ² μŠ΅λ‹ˆλ‹€.

@hcho3 μˆ˜μ •ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! μ‹¬κ°ν•œ λ¬Έμ œκ°€ μ—†μœΌλ©΄ CRAN으둜 κ°€λŠ” κ²ƒμž…λ‹ˆλ‹€.

@hcho3 κ·Έλž˜μ„œ λ¦¬ν”Œλ¦¬ ꡐ수의 μ†”λ¦¬μŠ€μ—μ„œλŠ” μ‹€νŒ¨ν•©λ‹ˆλ‹€:

On Solaris it was quicker to diagnose the problems with the GCC compilers:

amalgamation/../src/common/io.cc:120:27: error: β€˜POSIX_FADV_SEQUENTIAL’
was not declared in this scope
    posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);

amalgamation/../src/common/io.cc:120:48: error: β€˜posix_fadvise’ was not
declared in this scope
    posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);

As 'Writing R Extensions' told you, you need to use configure to test
for the presence of non-standard C/C++ functions.  In this case, it
seems that line is not actually necessary.

@hetong007 λ°˜κ°‘μŠ΅λ‹ˆλ‹€. 문제λ₯Ό λ””λ²„κΉ…ν•˜λŠ” 데 μ‹œκ°„μ„ ν• μ• ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. Windows 및 Linuxμ—μ„œ XGBoostλ₯Ό ν…ŒμŠ€νŠΈν•  수 μžˆλŠ” μ μ ˆν•œ ν…ŒμŠ€νŠΈ μ‹œμ„€λ§Œ μžˆμœΌλ―€λ‘œ μ μ ˆν•œ Linux ν™˜κ²½μ—μ„œλ§Œ μ‹€ν–‰λ˜λ„λ‘ ν•΄λ‹Ή 라인을 λ³΄ν˜Έν•˜κ² μŠ΅λ‹ˆλ‹€. μ΄μƒμ μœΌλ‘œλŠ” λΉ„ν‘œμ€€ C++ κΈ°λŠ₯이 CI의 μΌλΆ€λ‘œ λ¨Όμ € ν…ŒμŠ€νŠΈλ˜μ§€ μ•ŠλŠ” ν•œ μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. λ˜ν•œ λ‹€λ₯Έ λΉ„ν‘œμ€€ C++ κΈ°λŠ₯에 λŒ€ν•œ μ½”λ“œλ² μ΄μŠ€λ₯Ό μŠ€μΊ”ν•˜κ³  μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€. cc @trivialfis

@hcho3 λŠ” λ‚˜μ—κ²Œ μ’‹κ²Œ λ“€λ¦°λ‹€. λ¦¬ν”Œλ¦¬ ꡐ수의 CRAN에 λŒ€ν•œ μƒˆλ‘œμš΄ 제좜 λ§ˆκ°μΌμ€ 2020-04-06μž…λ‹ˆλ‹€. μžμ„Έν•œ μ„€μΉ˜ λ‘œκ·Έμ— 관심이 μžˆμœΌμ‹œλ©΄ https://cran.r-project.org/web/checks/check_results_xgboost.html 을 λ°©λ¬Έν•˜μ‹­μ‹œμ˜€.

@hetong007 컀밋 https://github.com/dmlc/xgboost/commit/d83db4844bae5969609e58cd6bb201e7831cfaa3 μ—μ„œ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ§ˆμΉ¨λ‚΄ λ‚˜λŠ” μ΅œμ‹  R이 λ‚΄ Solaris VMκ³Ό ν•¨κ»˜ μž‘λ™ν•˜κ³  XGBoost에 λŒ€ν•œ CRAN 검사λ₯Ό μ‹€ν–‰ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

@hcho3 ν›Œλ₯­ν•΄ ! Solarisμ—μ„œ μˆ˜ν‘œλ₯Ό ν†΅κ³Όν•˜λ„λ‘ ν•˜μ˜€μœΌλ―€λ‘œ 받아도 λ©λ‹ˆκΉŒ?

예, μ§€κΈˆ μ œμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” Pythonκ³Ό μœ μ‚¬ν•œ λ¬Έμ œμ— 직면해 μžˆμŠ΅λ‹ˆλ‹€. xgboost 1.0.1을 톡해 λͺ¨λΈμ„ μ €μž₯ν•˜κ³  xgboost 0.9λ₯Ό 톡해 λ‘œλ“œν–ˆλŠ”λ° μ˜ˆμΈ‘μ€ 빈 λͺ©λ‘μž…λ‹ˆλ‹€. 우리 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ€ xgboost 0.9λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— xgboost-1.0을 톡해 μ €μž₯된 λͺ¨λΈμ„ xgboost 0.9에 λ‘œλ“œν•  수 μžˆλŠ” 방법이 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

@hcho3 μŠ€λƒ…μƒ·μ„ κ³΅μœ ν•  수 μžˆλŠ” 방법이 μžˆλ‚˜μš”? μΆ”κ°€ μ œμΆœμ—λ„ μœ μš©ν•©λ‹ˆλ‹€.

@sunhs 저도 λΉ„μŠ·ν•œ λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆκΉŒ?

@giladmaya μ•„λ‹ˆμš”. μ—¬λŸ¬ 가지 방법을 μ‹œλ„ν•œ ν›„ λ§ˆμΉ¨λ‚΄ λͺ¨λΈμ„ λ‹€μ‹œ ν•™μŠ΅μ‹œν‚€λ©΄ μ‹œκ°„μ΄ μ ˆμ•½λœλ‹€λŠ” 결둠을 λ‚΄λ ΈμŠ΅λ‹ˆλ‹€.

μƒˆλ‘œμš΄ λ²„μ „μ˜ λͺ¨λΈμ΄ 이전 λ²„μ „μ—μ„œ 지원될 것이라고 약속할 수 μ—†κΈ° λ•Œλ¬Έμ— λ‹«μŠ΅λ‹ˆλ‹€. PlayStation 4λ₯Ό κ΅¬μž…ν•˜κ³  PlayStation 5용으둜 개발된 κ²Œμž„μ„ λ‘œλ“œν•˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„±λ§Œμ„ μ•½μ†ν•˜λ―€λ‘œ 이전 버전을 μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ μ €μž₯ν•˜κ³  μƒˆ 버전을 μ‚¬μš©ν•˜μ—¬ λ‹€μ‹œ λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λͺ¨λΈ ν˜•μ‹μ΄ μ‹œκ°„μ΄ 지남에 따라 μ μ§„μ μœΌλ‘œ λ°œμ „ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰