Xgboost: Model yang diproduksi di 1.0.0 tidak dapat dimuat ke 0.90

Dibuat pada 22 Feb 2020  ·  74Komentar  ·  Sumber: dmlc/xgboost

Ikuti petunjuk di sini: 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) 

Itu juga gagal pada R 3.6.2 dengan kesalahan yang sama.

Catatan: Saya lebih suka menggunakan versi CRAN. Tetapi model yang saya latih di linux dan Mac dan simpan menggunakan fungsi saveRDS tidak memprediksi di sistem lain (windows), mereka hanya menghasilkan numerik (0). Jika ada yang memiliki panduan tentang cara menyimpan model XGBoost untuk digunakan di komputer lain, beri tahu saya. Saya sudah mencoba xgb.save.raw dan xgb.load - keduanya menghasilkan numerik(0) juga. Tetapi di komputer yang saya latih modelnya (sebulan yang lalu), readRDS di R berfungsi dengan baik. Benar-benar membingungkan bagi saya.

Komentar yang paling membantu

Saya telah berhasil mereproduksi masalah di linux - lihat tangkapan layar terlampir.

Saya mengunggah kotak virtual ke dropbox. Tetapi jika Anda lebih suka menginstal dari awal, petunjuk untuk mereplikasi adalah sebagai berikut:

  1. Unduh dan instal kotak virtual
  2. Unduh build ubuntu bionic beaver (saya menggunakan ubuntu-18.04.3-desktop-AMD64).
  3. Ikuti instruksi di sini: https://medium.com/@mannycodes/installing -ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602. Saya menggunakan drive virtual 15 gigabyte tetap
  4. Konfigurasi untuk R 3.6.2 dengan yang berikut ini:
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. instal paket di R

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

  1. memuat paket dalam R
library(caret)
library(xgboost)
  1. Muat datanya
modelList <- readRDS("~/Desktop/modelList.rdata")
attach(modelList)
  1. Mencoba untuk memprediksi
predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))

Dan ini mengembalikan yang sekarang akrab:

[13:00:55] PERINGATAN: amalgamation/../src/objective/regression_obj.cu:152: reg:linear sekarang tidak digunakan lagi dan digantikan dengan reg:squarederror.
numerik(0)

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

catatan: Saya mencoba perpustakaan panggilan eksplisit, dan hanya mencoba prediksi. Keduanya menghasilkan respons numerik(0) yang sama.

Semua 74 komentar

Apakah Anda mencoba install.packages('xgboost') ?

Apakah Anda mencoba install.packages('xgboost') ?

Itu berfungsi dengan baik, tetapi kemudian semua prediksi dari model yang disimpan (menggunakan saveRDS) menghasilkan numerik (0). Tampaknya model yang dilatih menggunakan openMP tidak berfungsi di komputer tanpa kerangka kerja itu. Harapan saya adalah kompilasi dari sumber akan menyelesaikan ini.

Ini adalah bagaimana Anda mengkompilasi XGBoost dari sumbernya:

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

Bisakah Anda membagikan file model sehingga kami dapat mencoba menemukan mengapa Anda mendapatkan 0 untuk prediksi?

Terima kasih - apakah Anda ingin objek R atau Anda lebih suka dikonversi melalui xgb.save.raw?

Keduanya

Terima kasih atas bantuan dan dukungan Anda (dan dengan membuat program pembelajaran yang luar biasa).

Terlampir adalah file .rdata zip. Pada 3 sistem (Mac, MacBook, Ubuntu), saya dapat menjalankan kode berikut:

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"]))

Dan dapatkan output berikut:

> 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

Pada sistem 4 (windows base R dengan xgboost diinstal dari CRAN) saya mendapatkan hasil yang sangat berbeda:

> 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)

Saya menduga ini mungkin perlu membuka masalah baru, tetapi saya menghargai panduan apa pun yang dapat Anda berikan mengapa kode yang sama akan berperilaku berbeda pada sistem yang berbeda.

Terakhir, xgbRaw disertakan (harus dapat dipanggil jika Anda menggunakan attach()), itu dibuat dengan kode berikut:

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

Terima kasih sekali lagi.

modelList.rdata.zip

Mungkin karena penjagaan dmlc kami terhadap pengecualian omp?

@leedrake5 Apakah mesin Anda tidak mendukung OpenMP?

@hcho3 Apakah Anda menemukan penyebabnya? Saya baru saja mengkompilasi XGBoost tanpa OpenMP (dengan beberapa tambalan ke CMakeLists), tes memori eksternal gagal seperti yang diharapkan, juga tes grup paralel hist gagal (yang saya perbaiki di cabang lokal). Tapi sejauh ini saya bisa mendapatkan nilai prediksi yang sempurna.

@hcho3 Mesin saya mendukung openmp. Tetapi kami menerapkan model ini pada skala industri, dan banyak komputer di situs tertentu tidak memiliki openmp. Kami baru menemukan ini setelah 6 bulan persiapan dan satu minggu hingga implementasi, jadi kami berusaha keras untuk mencari tahu mengapa model bekerja di beberapa komputer dan tidak di komputer lain.

Jika ada filosofi tentang mengapa model hanya bekerja di lingkungan konstruksinya, apakah ada cara untuk mendapatkan kesalahan informatif tentang mengapa?

@ leedrake5 Ini bug. Saya telah mencoba mereproduksinya di Ubuntu dengan openmp dinonaktifkan tetapi sejauh ini tidak berhasil.

@trivialfs Jika membantu, saya dan sebagian besar rekan saya mengalami bug di windows. Meskipun seorang rekan saya dapat mereproduksinya di ubuntu tanpa openmp.

Saya menduga instalasi minimal R tanpa hal-hal mewah (openmp, intelmkl, openblas, dll.) dapat mereproduksinya, tetapi saya masih memikirkan bagian mana dari sistem yang menyebabkan masalah.

@leedrake5 Jika ada cara untuk mereproduksinya di distribusi Linux, itu akan sangat membantu!

Saya menonaktifkan semua opsi termasuk tes google, omp ... Tetapi masih memiliki hasil yang benar saat memuat model Anda. Instalasi R adalah distribusi default dari apt , saya rasa itu tidak ada hubungannya dengan prediksi XGBoost.

Ini mungkin tidak disebabkan oleh OpenMP. Meskipun prediksinya salah, masih ada bias global, bukan 0.

Satu-satunya alasan yang dapat saya pikirkan adalah XGBoost sebenarnya tidak diinstal. Saya pikir kami menjalankan tes pada CRAN kan? @hcho3

Saya mencoba CMake build dan autotools build. Ini adalah flag kompilasi saya yang dilaporkan oleh install.packages(...) (autotools build):

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

@trivialfi Lebih aneh lagi, karena XGBoost berhasil diinstal dari CRAN, dan library(xgboost) berfungsi tanpa masalah.

Meskipun seorang rekan saya dapat mereproduksinya di ubuntu tanpa openmp.

Mungkinkah dia bisa dengan ramah membagikan cara mereproduksi?

Meskipun seorang rekan saya dapat mereproduksinya di ubuntu tanpa openmp.

Mungkinkah dia bisa dengan ramah membagikan cara mereproduksi?

Tidak yakin mereka cukup tahu tentang cara kerja sistem linux - tetapi jika Anda mengetahui diagnostik apa pun yang dapat mereka berikan, beri tahu saya.

Untuk bagian saya, saya mencoba membuat instalasi ubuntu kotak virtual yang dapat mereplikasi masalah - jika berhasil saya akan mengirimkan tautan unduhan untuk itu.

Saya telah berhasil mereproduksi masalah di linux - lihat tangkapan layar terlampir.

Saya mengunggah kotak virtual ke dropbox. Tetapi jika Anda lebih suka menginstal dari awal, petunjuk untuk mereplikasi adalah sebagai berikut:

  1. Unduh dan instal kotak virtual
  2. Unduh build ubuntu bionic beaver (saya menggunakan ubuntu-18.04.3-desktop-AMD64).
  3. Ikuti instruksi di sini: https://medium.com/@mannycodes/installing -ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602. Saya menggunakan drive virtual 15 gigabyte tetap
  4. Konfigurasi untuk R 3.6.2 dengan yang berikut ini:
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. instal paket di R

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

  1. memuat paket dalam R
library(caret)
library(xgboost)
  1. Muat datanya
modelList <- readRDS("~/Desktop/modelList.rdata")
attach(modelList)
  1. Mencoba untuk memprediksi
predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))

Dan ini mengembalikan yang sekarang akrab:

[13:00:55] PERINGATAN: amalgamation/../src/objective/regression_obj.cu:152: reg:linear sekarang tidak digunakan lagi dan digantikan dengan reg:squarederror.
numerik(0)

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

catatan: Saya mencoba perpustakaan panggilan eksplisit, dan hanya mencoba prediksi. Keduanya menghasilkan respons numerik(0) yang sama.

Tautan ke instance virtual terkompresi 7z ada di sini: https://www.dropbox.com/s/ld06zz798m0segf/UbuntuDebug.7z?dl=0

Biarkan saya mendapatkan kotak virtual terlebih dahulu. Saya biasanya menggunakan KVM.

Melihat ini sekarang.

@ leedrake5 Saya berhasil mereproduksi masalah pada mesin virtual yang Anda berikan. Tampaknya ada masalah dengan saveRDS dan xgb.save.raw . Apakah Anda mencoba menggunakan xgb.save dan xgb.load sebagai gantinya? Kumpulan fungsi ini menggunakan format "asli" model XGBoost dan tidak menyimpan atribut yang khusus untuk lingkungan R. Ini berguna jika Anda ingin mentransfer model Anda dari paket R ke Python.

Simpan mentah seharusnya tidak menjadi masalah. Masalahnya mungkin bagaimana R membuat serial kode R. Kami menambahkan parameter opsional baru untuk diprediksi, yang mungkin memengaruhi pemuatan serialisasi semacam ini. Saya mencoba mencarinya tetapi tampaknya sangat aneh, seperti masalah dengan acar Python.

@trivial apakah ada ide tentang opsi dalam fungsi prediksi yang berpotensi menghindari ini? Pikiran saya adalah bahwa itu ada hubungannya dengan instruksi CPU, mungkin lebih dalam di R daripada yang bisa ditangani oleh paket.

@ hcho3 Saya akan mencoba menambahkan xgb.save.raw ke pipa data saat ini dan melihat apakah itu membantu. Meskipun dalam contoh yang saya kirim, saya mencoba ini dengan menggunakan xgb.save.raw di komputer tempat prediksi bekerja, dan sayangnya masih mengarah ke numerik (0) di xgb.load. Memang, ini terjadi setelah model telah disimpan melalui saveRDS, mungkin sesuatu tentang proses itu merusaknya, meskipun masih berfungsi di lingkungan yang dibuatnya.

Sejauh yang saya tahu, masih ada sesuatu tentang lingkungan tempat model dibuat yang perlu ada di setiap lingkungan yang digunakannya. Aku tidak tahu apa itu.

Tidak, maksud saya xgb.save , bukan xgb.save.raw .

@trivialfis Perhatikan bahwa paket XGBoost masih 0,90 di CRAN.

Saya mencoba xgb.save, memuatnya di R melalui xgb.load(), dan hal yang sama, numerik(0). Lihat lampiran dari xgb.save

xgbModelDisimpan.xgb.zip

Juga- menguji metode yang sama menggunakan data di modelList sebelumnya di utas ini di komputer yang sama yang menghasilkan model - itu berhasil di sana.

Tidak peduli bagaimana Anda mengirisnya, xgb.save, xgb.save.raw, saveRDS, dll., ada sesuatu tentang lingkungan komputer tempat model itu dibuat yang menghalangi penggunaannya di tempat lain.

Saya dapat mereproduksi masalah menggunakan file model yang Anda berikan. Namun, saya tidak tahu bagaimana file model dibuat. Bisakah Anda memberikan lebih banyak konteks, misalnya?

  • OS
  • Versi XGBoost
  • Perintah untuk menyimpan model

OS X (Catalina). XGBoost membangun dari sumber, 1.0 (openMP didukung pada sistem). Model awalnya disimpan menggunakan saveRDS. Saya akan mencoba menjalankannya kembali dan menyimpannya melalui berbagai cara dan melaporkan kembali.

Saya membuat ulang model dari awal, menyimpannya menggunakan xgb.save (misalnya tidak menggunakan saveRDS atau readRDS kecuali untuk data prediksi) dan dimuat menggunakan xgb.load. Hasil yang sama - prediksi berfungsi pada sistem komputer yang digunakan untuk menghasilkan model (OS X, XGB 1.0) dan gagal pada sistem lain (Windows 7, XGB 0.9). Melampirkannya dan modelList ke pesan ini. Jika ada hal lain yang dapat saya lakukan untuk membantu mendiagnosis masalah ini, beri tahu saya.

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)

newxgbModelDisimpan.xgb.zip

modelList2.rdata.zip

@leedrake5 Apakah mungkin menggunakan XGBoost 1.0 di Windows?

@trivialfis Ini mungkin masalah dengan kompatibilitas mundur dari file model.

Ini pasti versi. Saya baru saja mampir ke versi 1.0 XGBoost, menginstal 0.9 dari CRAN, dan metode yang diuraikan di atas berhasil.

Saya mencoba menginstal 0.90 dari sumber menggunakan rilis terbaru , tetapi folder dmlc-core kosong, jadi Cmake melempar kesalahan yang diperlukan. Sangat ingin mempertahankan fungsionalitas openMP bagaimanapun ini.

Jadi begitu. Apakah Anda mencoba menginstal versi 1.0.0 di Windows?

Itulah alasan awal untuk utas ini, anehnya. Akan mencoba, tetapi akan ada penundaan karena proyek tidak dapat menunggu lebih lama lagi. Jika ini merupakan masalah, saya menduga menginstal 1.0 dari sumber pada gambar virtual ubuntu yang saya kirim akan mengatasi hal yang sama.

@leedrake5 Ya, Anda harus cocok dengan versi XGBoost. Baik gunakan 0.90 di mana-mana atau 1.0.0 di mana-mana.

@trivialfis Saya ingat bahwa kami membuat perubahan besar dalam format model biner. Apakah itu benar?

Tidak, kami kompatibel ke belakang, 1.0 pasti harus memuat model dari 0.9

@trivialfi Terima kasih atas klarifikasinya. Dalam hal ini, mari perlakukan tiket ini sebagai bug, karena kami mengharapkan kompatibilitas mundur dan menemukan contoh tandingan. Saya akan melihatnya minggu ini.

Saya pikir perubahan judul yang diusulkan telah mundur - model yang diproduksi di 1.0 tidak dapat digunakan untuk memprediksi di 0,90. Saya tidak tahu tingkat kompatibilitas apa yang dimaksudkan di antara versi, tetapi setidaknya kesalahan informatif akan membantu.

Ups, burukku.

@trivialfis Saya percaya apa yang diminta @leedrake5 adalah kompatibilitas ke depan, yaitu memuat model dari 1.0.0 ke 0.90. Tidak yakin apakah ini yang kami janjikan.

@leedrake5 Saya mencoba menginstal 1.0.0 di mesin virtual Ubuntu, dan sekarang file RDS dimuat dengan baik dan saya mendapatkan vektor bilangan real. Jadi kemungkinan besar itu adalah masalah versi.
1 0 0

EDIT. Pesan peringatan di tangkapan layar aneh: Loading model from < 1.0.0, consider saving it again . Ini seharusnya tidak ada di sini, mengingat model itu diproduksi oleh 1.0.0.

Saya setuju. Sangat senang untuk mengatur konvergensi pada apa masalahnya.

Sayangnya, dari sudut pandang produksi, saya harus membuat model dapat digunakan dalam versi massal (ergo, instalasi CRAN). Tapi, saya tahu bagaimana membuat XGBoost bekerja mulai sekarang, yang merupakan titik kritis mutlak.

Saya masih mengalami masalah dalam menginstal 0.9 dari sumber yang diunduh dari rilis atau pohon, tetapi saya rasa saya menemukan masalahnya. cub, dmlc-core, rabit, semuanya adalah folder kosong dalam unduhan ini. Mereka juga punya @setelah folder - Saya pikir itu terkait dengan folder mana yang kosong. Jika saya mengikuti tautan itu, saya dapat membangun kembali folder dan melanjutkan instalasi.

Lihat tangkapan layar:
Screen Shot 2020-03-03 at 9 41 33 PM

Ya, kami menggunakan submodul git, jadi instruksi build meminta Anda untuk menggunakan git clone --recursive untuk menginstal dari sumbernya. Apakah Anda berada dalam situasi di mana instalasi CRAN tidak memadai? Jika menggunakan 0,90 di mana-mana memperbaiki masalah Anda, Anda bisa menggunakan instalasi CRAN di mana-mana (Linux, Mac, Windows)?

Ya - CRAN tidak mengizinkan openMP, yang untuk pembuatan model merupakan keuntungan besar. Jadi akan meluangkan waktu untuk mencari tahu bagaimana cara mengkompilasi xgboost 0.90 dari sumber untuk membuatnya berfungsi kembali. Saya menghargai semua bantuan Anda dalam mendiagnosis masalah ini.

@ledrake5

Mengerti. Untuk saat ini, berikut adalah perintah yang dapat Anda gunakan untuk mendapatkan kode sumber lengkap, termasuk submodul git:

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

Ini harus mengambil kode sumber XGBoost dan mengisi direktori rabit, cub, dmlc-core. -b release_0.90 digunakan untuk mendapatkan versi 0.90, bukan yang terbaru.

Ke samping:

CRAN tidak mengizinkan openMP

Ini sebenarnya diperbaiki di 1.0.0. Saya akan mencoba untuk mendapatkan versi 1.0.0 di CRAN segera.

Terima kasih, sangat dihargai dalam segala hal!

@hetong007 Bisakah kita mengirimkan 1.0.0 ke CRAN?

@hcho3 Kedengarannya bagus, mengingat kami memiliki deteksi endian yang valid. Aku akan membuat pengajuan dalam seminggu.

@hetong007 Ada pembaruan? Beri tahu saya jika saya dapat membantu dengan cara apa pun.

@hcho3 oh ya. Saya ingin bertanya apakah kami memiliki lingkungan untuk pengujian solaris? Ada kesalahan yang belum terselesaikan pada solaris dari 0.9: https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/xgboost-00check.html Saya ingin memeriksanya sebelum pengajuan.

@hetong007 Saya baru saja mengunduh gambar Solaris VM dari Oracle yang dapat dijalankan dengan VirtualBox. Biarkan saya mencoba mereproduksi masalah ini.

@hetong007 Saya mengalami banyak masalah dalam menyiapkan lingkungan R di Solaris. Secara khusus, saya tidak dapat menginstal paket R seperti igraph dan testthat karena utilitas seperti awk berperilaku berbeda di Solaris. Saya tidak tahu bagaimana untuk melangkah lebih jauh.

@hcho3 Tolong lebih jelas? Saya membayangkan seseorang dapat menginstal paket di konsol R dengan install.packages('testthat') , mengingat testthat telah lulus pemeriksaan solaris pada CRAN.

@hetong007 Paket igraph menggunakan awk pada langkah konfigurasi, dan fitur awk Solaris tidak kompatibel dengan GNU awk. Dimungkinkan untuk menginstal GNU awk, tetapi disebut gawk . Masih mencoba mencari cara agar R menggunakan gawk alih-alih awk .

@ hcho3 OK ini terdengar mengerikan. Saya juga tidak memiliki pengetahuan tentang bagaimana melanjutkan. Saya baru saja melihat halaman hasil igraph di CRAN: https://cran.r-project.org/web/checks/check_results_igraph.html. Merasa bahwa kita tidak akan menjadi lebih buruk. Aku akan membuat pengajuan apapun.

@hetong007 Terima kasih. Saya akan mencoba untuk kembali ke pengujian Solaris di beberapa titik. Saya yakin ada jalan.

@hetong007 Ah ya, pastikan untuk menggunakan cabang release_1.0.0 saat mengirimkan kode.

@hcho3 Pra-pemeriksaan memperingatkan:

* 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.

dan file 00install.out ada di sini (tersedia dalam ~72 jam): https://win-builder.r-project.org/v6XJQBjzgMaW/00install.out

Apakah mungkin untuk memiliki perbaikan cepat?

@hetong007 Apakah ini pemblokir? Memset digunakan untuk mempercepat zeroing histogram (array of structure). Jika ini memblokir CRAN, saya akan memasang pelindung makro sehingga paket R akan menggunakan konstruktor biasa sebagai gantinya.

@hcho3 Ya Ini adalah pemblokir. Pra-pemeriksaan otomatis dan pengiriman harus lulus tanpa peringatan. Makro terdengar cukup bagus, terima kasih!

@hcho3 Bisakah Anda mencoba menggunakan std::fill terlebih dahulu? Bahkan kompiler mungkin tidak dapat mengoptimalkannya menjadi memset , saya rasa itu tidak cukup penting untuk memiliki dampak kinerja yang terlihat.

@hetong007 Saya membuat perubahan yang diperlukan (https://github.com/dmlc/xgboost/commit/3550b16a34055bc8ec33bf0b7006448e8c1a4eca). Bisakah Anda mencoba lagi?

@trivialfis Saya akan mengajukan permintaan tarik terpisah untuk menggantikan memset .

@hcho3 terima kasih atas perbaikannya! Jika tidak ada masalah serius, itu sedang menuju CRAN.

@hcho3 Jadi gagal di Soalris, dari Prof. Ripley:

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 Bagus. Tolong beri tahu Prof. Ripley terima kasih telah meluangkan waktu untuk men-debug masalah. Saya akan melanjutkan dan menjaga baris itu agar hanya berjalan di lingkungan Linux yang tepat saja, karena kami hanya memiliki fasilitas pengujian yang tepat untuk menguji XGBoost dengan Windows dan Linux. Idealnya, fasilitas C++ non-standar tidak boleh digunakan kecuali jika fasilitas tersebut pertama kali diuji sebagai bagian dari CI. Saya juga harus memindai basis kode untuk fitur C++ non-standar lainnya dan mencoba menghapusnya juga. cc @trivialfis

@hcho3 terdengar bagus untuk saya. Batas waktu dari Prof. Ripley untuk pengajuan baru ke CRAN adalah 06-04-2020. Jika Anda tertarik dengan log instalasi terperinci, silakan kunjungi https://cran.r-project.org/web/checks/check_results_xgboost.html

@hetong007 Komit https://github.com/dmlc/xgboost/commit/d83db4844bae5996609e58cd6bb201e7831cfaa3 harus mengatasi masalah tersebut. Saya akhirnya berhasil membuat R terbaru berfungsi dengan Solaris VM saya dan menjalankan pemeriksaan CRAN untuk XGBoost.

@hcho3 Brilian! Bisakah saya menerimanya karena Anda berhasil melewati pemeriksaan Solaris?

Ya, kita harus menyerahkannya sekarang.

Hai, saya menghadapi masalah serupa dengan Python. Saya menyimpan model melalui xgboost 1.0.1, dan memuatnya melalui xgboost 0.9, dan prediksinya adalah daftar kosong. Karena lingkungan produksi kami menggunakan xgboost 0.9, saya ingin tahu apakah ada cara saya dapat memuat model yang disimpan-via-xgboost-1.0 ke xgboost 0.9?

@hcho3 Apakah ada cara untuk membagikan foto Anda? Ini juga berharga untuk pengiriman kami selanjutnya.

@sunhs Saya juga menghadapi masalah serupa. Apakah Anda dapat menyelesaikan ini?

@giladmaya Tidak pak. Setelah mencoba beberapa metode, saya akhirnya memutuskan bahwa melatih ulang model menghemat waktu saya.

Menutup ini, karena kami tidak dapat menjanjikan bahwa model dari versi yang lebih baru akan didukung oleh versi yang lebih lama. Ini seperti membeli PlayStation 4 dan mencoba memuat game yang dikembangkan untuk PlayStation 5.

Kami hanya menjanjikan kompatibilitas mundur, sehingga Anda dapat menyimpan model menggunakan versi lama dan memuatnya kembali menggunakan versi baru. Hal ini agar format model dapat berkembang secara bertahap dari waktu ke waktu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat