Xgboost: Модель, созданная в версии 1.0.0, не может быть загружена в версию 0.90.

Созданный на 22 февр. 2020  ·  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 - оба также выдают числовое значение (0). Но на компьютере, на котором я тренировал модель (месяц назад), readRDS в R работает нормально. Совершенно непонятно мне.

Самый полезный комментарий

Я успешно воспроизвел проблему в Linux — см. прикрепленный скриншот.

Я загружаю виртуальный ящик в дропбокс. Но если вы предпочитаете установку с нуля, инструкции по репликации следующие:

  1. Загрузите и установите виртуальный бокс
  2. Загрузите сборку ubuntu bionic beaver (я использовал ubuntu-18.04.3-desktop-amd64).
  3. Следуйте инструкциям здесь: https://medium.com/@mannycodes/installing-ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602 . Я использовал фиксированный виртуальный диск на 15 гигабайт.
  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] ПРЕДУПРЕЖДЕНИЕ: объединение/../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) дают числовое значение (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 (база Windows R с xgboost, установленной из CRAN) я получаю совсем другие результаты:

> 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

Вероятно, из-за нашей защиты dmlc от исключений omp?

@ leedrake5 Ваша машина не поддерживает OpenMP?

@hcho3 Вы нашли причину? Я только что скомпилировал XGBoost без OpenMP (с некоторыми исправлениями для CMakeLists), тесты внешней памяти не работают, как и ожидалось, также не работает тест параллельной группы (который я исправил в локальной ветке). Но пока я могу получить идеальные значения прогноза.

@hcho3 Моя машина поддерживает openmp. Но мы развертываем эти модели в промышленных масштабах, и на многих компьютерах в определенных местах нет openmp. Мы только что обнаружили это после 6 месяцев подготовки и одной недели до внедрения, поэтому мы изо всех сил пытаемся выяснить, почему модели работают на одних компьютерах, а не на других.

Если есть какая-то философия о том, почему модели должны работать только в среде их построения, есть ли какой-то способ получить информативную ошибку о том, почему?

@ leedrake5 Это ошибка. Я пытался воспроизвести его на Ubuntu с отключенным openmp, но пока безуспешно.

@trivilfs Если это поможет, я и большинство моих коллег столкнулись с ошибкой в ​​​​Windows. Хотя мой коллега смог воспроизвести это на ubuntu без openmp.

Я подозреваю, что минимальная установка R без каких-либо причудливых вещей (openmp, intelmkl, openblas и т. д.) может воспроизвести его, но я все еще не понимаю, какая часть системы вызывает проблемы.

@ 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

@тривиальныйфис Еще более любопытно, поскольку XGBoost успешно устанавливается из CRAN, а библиотека (xgboost) работает без проблем.

Хотя мой коллега смог воспроизвести это на ubuntu без openmp.

Возможно ли, что он / она может поделиться, как воспроизвести?

Хотя мой коллега смог воспроизвести это на ubuntu без openmp.

Возможно ли, что он / она может поделиться, как воспроизвести?

Не уверен, что они знают достаточно о том, как работают Linux-системы, но если вы знаете какую-либо диагностику, которую они могут предоставить, дайте мне знать.

Со своей стороны, я пытаюсь создать виртуальную установку Ubuntu, которая может воспроизвести проблему — в случае успеха я отправлю ссылку для скачивания.

Я успешно воспроизвел проблему в Linux — см. прикрепленный скриншот.

Я загружаю виртуальный ящик в дропбокс. Но если вы предпочитаете установку с нуля, инструкции по репликации следующие:

  1. Загрузите и установите виртуальный бокс
  2. Загрузите сборку ubuntu bionic beaver (я использовал ubuntu-18.04.3-desktop-amd64).
  3. Следуйте инструкциям здесь: https://medium.com/@mannycodes/installing-ubuntu-18-04-on-mac-os-with-virtualbox-ac3b39678602 . Я использовал фиксированный виртуальный диск на 15 гигабайт.
  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] ПРЕДУПРЕЖДЕНИЕ: объединение/../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.

@тривиальные есть какие-нибудь идеи о параметрах в функции прогнозирования, которые потенциально могли бы обойти это? Я думаю, что это как-то связано с инструкциями ЦП, возможно, глубже в R, чем может быть адресовано пакетом.

@ hcho3 Я попробую добавить xgb.save.raw в текущий канал данных и посмотреть, поможет ли это. Хотя в примере, который я отправил, я попробовал это, используя xgb.save.raw на компьютере, где сработали прогнозы, и, к сожалению, это все еще приводит к числовому (0) на xgb.load. По общему признанию, это было после того, как модель уже была сохранена через saveRDS, возможно, что-то в этом процессе искажает ее, хотя она все еще работает в среде, в которой она была создана.

Насколько я могу судить, в среде, в которой была создана модель, все еще есть что-то, что должно присутствовать в каждой среде, в которой она используется. Я не знаю, что это такое.

Нет, я имел в виду xgb.save , а не xgb.save.raw .

@trivilifs Обратите внимание, что пакет XGBoost по-прежнему 0,90 в CRAN.

Я попробовал xgb.save, загрузил его в R через xgb.load() и то же самое, numeric(0). См. вложение из xgb.save

xgbModelSaved.xgb.zip

Также протестировал тот же метод с использованием данных в modelList ранее в этой теме на том же компьютере, на котором была сгенерирована модель - там он работал.

Независимо от того, как вы ее нарезаете, xgb.save, xgb.save.raw, saveRDS и т. д., в компьютерной среде, в которой была создана модель, есть что-то такое, что исключает ее использование где-либо еще.

Я могу воспроизвести проблему, используя предоставленный вами файл модели. Однако я понятия не имею, как был создан файл модели. Можете ли вы предоставить больше контекста, например

  • Операционные системы
  • XGBoost-версия
  • Команда для сохранения модели

ОС Х (Каталина). Сборка XGBoost из исходников, 1.0 (в системе поддерживается openMP). Модель изначально сохранена с помощью saveRDS. Я попробую перезапустить его и сохранить разными способами и отчитаюсь.

Я воссоздал модель с нуля, сохранил ее с помощью xgb.save (например, без использования saveRDS или readRDS, кроме данных прогноза) и загрузил с помощью xgb.load. Те же результаты — предсказание работает в компьютерной системе, используемой для создания модели (OS X, XGB 1.0), и не работает в другой системе (Windows 7, XGB 0.9). Прикрепив его и список моделей к этому сообщению. Если есть что-то еще, что я могу сделать, чтобы помочь диагностировать эту проблему, пожалуйста, дайте мне знать.

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

список моделей2.rdata.zip

@ leedrake5 Можно ли использовать XGBoost 1.0 в Windows?

@trivilfis Это может быть проблема с обратной совместимостью файлов моделей.

Это точно версионность. Я только что установил версию 1.0 XGBoost, установил 0.9 из CRAN, и метод, описанный выше, сработал.

Я пытался установить 0.90 из исходников, используя последний релиз , но папка dmlc-core пуста, поэтому Cmake выдает нужную ошибку. Как бы то ни было, очень хотелось бы сохранить функциональность openMP.

Я понимаю. Вы пытались установить версию 1.0.0 на Windows?

Это было первоначальной причиной этой темы, как ни странно. Постараюсь, но будет задержка, так как проект не может больше ждать. Если это проблема, я подозреваю, что установка 1.0 из исходного кода на отправленный мной виртуальный образ Ubuntu решит ту же проблему.

@ leedrake5 Да, вы должны соответствовать версии XGBoost. Либо везде используйте 0.90, либо везде 1.0.0.

@trivilfis Я помню, что мы внесли критическое изменение в формат двоичной модели. Это правильно?

Нет, у нас обратная совместимость, 1.0 точно должна загрузить модель из 0.9

@tribunefis Спасибо за разъяснения. В таком случае давайте рассматривать этот билет как ошибку, так как мы ожидали обратной совместимости и нашли контрпример. Я посмотрю на это на этой неделе.

Я думаю, что предложенное изменение названия имеет обратную сторону - модель, созданная в 1.0, не может использоваться для прогнозирования в 0.90. Я не знаю, какая степень совместимости предполагается между версиями, но как минимум информативная ошибка должна помочь.

Ой, мой плохой.

@tribunefis Я считаю, что @leedrake5 спрашивает о прямой совместимости, то есть о загрузке модели из 1.0.0 в 0.90. Не уверен, что это то, что мы обещаем.

@ leedrake5 Я попытался установить 1.0.0 на виртуальную машину Ubuntu, и теперь файл 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 везде решает вашу проблему, вы можете просто использовать установку CRAN везде (Linux, Mac, Windows)?

Да, 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. Я постараюсь скоро получить версию 1.0.0 на CRAN.

Спасибо, очень приятно по всем параметрам!

@hetong007 hetong007 Можем ли мы отправить 1.0.0 в CRAN?

@ hcho3 Звучит хорошо, учитывая, что у нас есть правильное определение порядка байтов. Сдачу сделаю через неделю.

@ hetong007 Есть обновления? Дайте мне знать, если я могу помочь в любом случае.

@ hcho3 о да. Я хотел бы спросить, есть ли у нас среда для тестирования Solaris? На Solaris с версии 0.9 есть неустраненная ошибка: https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/xgboost-00check.html Я хотел бы проверить ее до подчинение.

@ hetong007 hetong007 Я только что скачал образ виртуальной машины Solaris от Oracle, который может работать с VirtualBox. Попробую воспроизвести проблему.

@ hetong007 hetong007 У меня много проблем с настройкой среды R в Solaris. В частности, я не могу установить пакеты R, такие как igraph и testthat , потому что такие утилиты, как awk , ведут себя в Solaris иначе. Я понятия не имею, как действовать дальше.

@ hcho3 Не могли бы вы быть яснее? Я предполагаю, что можно установить пакеты в консоль R с помощью install.packages('testthat') , учитывая, что testthat прошел проверку Solaris в CRAN.

@hetong007 hetong007 Пакет igraph использует awk на этапе настройки, а функция awk Solaris не совместима с GNU awk. Можно установить GNU awk, но он называется gawk . Все еще пытаюсь понять, как заставить R использовать gawk вместо awk .

@ hcho3 Хорошо, это звучит ужасно. Я тоже не знаю, как поступить. Я только что взглянул на страницу результатов igraph в CRAN: https://cran.r-project.org/web/checks/check_results_igraph.html. Чувствуется, что хуже у нас не будет. Я сделаю представление в любом случае.

@ hetong007 Спасибо. Когда-нибудь я постараюсь вернуться к тестированию Solaris. Я уверен, что есть способ.

@ 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 hetong007 Это блокировщик? Memset использовался для ускорения обнуления гистограммы (массива структуры). Если это блокирует CRAN, я поставлю защиту от макросов, чтобы пакет R вместо этого использовал обычный конструктор.

@ hcho3 Да, это блокировщик. Предварительная проверка автоматизирована, и подача должна пройти без предупреждения. Макрос звучит достаточно хорошо, спасибо!

@ hcho3 Не могли бы вы сначала попробовать использовать std::fill ? Даже компилятор может быть не в состоянии оптимизировать его до memset , я не думаю, что это достаточно критично, чтобы иметь какое-либо заметное влияние на производительность.

@ hetong007 hetong007 Я внес необходимые изменения (https://github.com/dmlc/xgboost/commit/3550b16a34055bc8ec33bf0b7006448e8c1a4eca). Можешь попробовать еще раз?

@trivilfis Я отправлю отдельный запрос на включение, чтобы заменить memset .

@hcho3 спасибо за исправление! Если ничего серьезного не произойдет, оно на пути к CRAN.

@ hcho3 Итак, на Soalris не получается, от профессора Рипли:

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 Хорошо . Пожалуйста, поблагодарите проф. Рипли за то, что нашли время для устранения проблемы. Я буду следить за тем, чтобы эта строка работала только в надлежащей среде Linux, поскольку у нас есть только надлежащее тестовое оборудование для тестирования XGBoost с Windows и Linux. В идеале не следует использовать любые нестандартные средства C++, пока они не будут предварительно протестированы как часть CI. Мне также придется просмотреть кодовую базу на наличие других нестандартных функций C++ и попытаться удалить их. копия @тривиальныйфис

@hcho3 звучит хорошо для меня. Крайний срок от профессора Рипли для новой подачи в CRAN — 06.04.2020. Если вас интересует подробный журнал установки, посетите https://cran.r-project.org/web/checks/check_results_xgboost.html.

@hetong007 hetong007 Коммит https://github.com/dmlc/xgboost/commit/d83db4844bae5969609e58cd6bb201e7831cfaa3 должен решить проблему. Наконец-то мне удалось заставить последнюю версию R работать с моей виртуальной машиной Solaris и запустить проверки CRAN для XGBoost.

@hcho3 Великолепно! Могу ли я принять его, поскольку вы заставили его пройти проверку на Солярисе?

Да, мы должны представить его сейчас.

Привет, я столкнулся с аналогичными проблемами с 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 рейтинги