При использовании пакета LightGBM R в Azure ML я получаю следующую ошибку:
[Error] +++ NT HARD ERROR (0xc0000139) +++
[Error] Parameter 0: 0x4ad4bc8 [log2f]
[Error] Parameter 1: 0x4b5e2e8 [C:\src\lightgbm\libs\x64\lib_lightgbm.dll]
[Error] Parameter 2: 0xffffffffc0000139
[Error] [FATAL] Exception: 0xc0000139 (!! HARD ERROR !!) {Params: 0x4ad4bc8, 0x4b5e2e8, 0xffffffffc0000139, 0x0}
[Error] [ERROR] A fatal error occurred in the running application. The application will be terminated. Code: 0xc0000139.
на страница 0xc0000139
описывается как «Точка входа не найдена». Что означает эта ошибка и как я могу ее решить?
Я использовал XGBoost таким же образом в Azure ML, и это сработало. И не просили внешние библиотеки (dlls). LightGBM, напротив, запрашивает множество библиотек (dll), и я думаю, что проблема связана с dll, но эта ошибка не указывает на то, чего на самом деле не хватает.
Что я сделал:
Установил пакет LightGBM R на виртуальной машине с Windows Server 2016. Для этого я использовал:
В пакет lightgbm \ libs \ x64 включены следующие пакеты, так как ранее я получил ошибку 0xc0000135
с именами этих библиотек:
Я пытался изменить версию R с Microsoft R Open 3.2.2 на CRAN R 3.1.0. Он выполняет без ошибок, но не выполняет код после импорта библиотеки.
Полный вывод скрипта Azure ML R:
Record Starts at UTC 08/03/2017 12:28:27:
Run the job:"/dll "LanguageWorker, Version=6.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca;Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS;RunRSNR" /Output0 "..\..\Result Dataset\Result Dataset.dataset" /Output1 "..\..\R Device\R Device.dataset" /dataset1 "..\..\Dataset1\Dataset1.csv" /bundlePath "..\..\Script Bundle\Script Bundle.zip" /rStreamReader "script.R" /rLibVersion "Microsoft R Open 3.2.2" /ContextFile "..\..\_context\ContextFile.txt""[Start] Program::Main
[Start] DataLabModuleDescriptionParser::ParseModuleDescriptionString
[Stop] DataLabModuleDescriptionParser::ParseModuleDescriptionString. Duration = 00:00:00.0045866
[Start] DllModuleMethod::DllModuleMethod
[Stop] DllModuleMethod::DllModuleMethod. Duration = 00:00:00.0000221
[Start] DllModuleMethod::Execute
[Start] DataLabModuleBinder::BindModuleMethod
[Verbose] moduleMethodDescription LanguageWorker, Version=6.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca;Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS;RunRSNR
[Verbose] assemblyFullName LanguageWorker, Version=6.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca
[Start] DataLabModuleBinder::LoadModuleAssembly
[Verbose] Loaded moduleAssembly LanguageWorker, Version=6.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca
[Stop] DataLabModuleBinder::LoadModuleAssembly. Duration = 00:00:00.0093763
[Verbose] moduleTypeName Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS
[Verbose] moduleMethodName RunRSNR
[Information] Module FriendlyName : Execute R Script
[Information] Module Release Status : Release
[Stop] DataLabModuleBinder::BindModuleMethod. Duration = 00:00:00.0125213
[Start] ParameterArgumentBinder::InitializeParameterValues
[Verbose] parameterInfos count = 6
[Verbose] parameterInfos[0] name = dataset1 , type = Microsoft.Numerics.Data.Local.DataTable
[Start] DataTableCsvHandler::HandleArgumentString
[Stop] DataTableCsvHandler::HandleArgumentString. Duration = 00:00:00.2364734
[Verbose] parameterInfos[1] name = dataset2 , type = Microsoft.Numerics.Data.Local.DataTable
[Verbose] Set optional parameter dataset2 value to NULL
[Verbose] parameterInfos[2] name = bundlePath , type = System.String
[Verbose] parameterInfos[3] name = rStreamReader , type = System.IO.StreamReader
[Verbose] parameterInfos[4] name = seed , type = System.Nullable`1[System.Int32]
[Verbose] Set optional parameter seed value to NULL
[Verbose] parameterInfos[5] name = rLibVersion , type = Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS+ExecuteRScriptRVersion
[Verbose] Converted string 'Microsoft R Open 3.2.2' to enum of type Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS+ExecuteRScriptRVersion
[Stop] ParameterArgumentBinder::InitializeParameterValues. Duration = 00:00:00.3175225
[Verbose] Begin invoking method RunRSNR ...
[ModuleOutput] Executing Against R 3.2.2.0
[ModuleOutput] Executing Against R 3.2.2.0
[Information] Microsoft Drawbridge Console Host [Version 1.0.2108.0]
[Error] +++ NT HARD ERROR (0xc0000139) +++
[Error] Parameter 0: 0x4ad4bc8 [log2f]
[Error] Parameter 1: 0x4b5e2e8 [C:\src\lightgbm\libs\x64\lib_lightgbm.dll]
[Error] Parameter 2: 0xffffffffc0000139
[Error] [FATAL] Exception: 0xc0000139 (!! HARD ERROR !!) {Params: 0x4ad4bc8, 0x4b5e2e8, 0xffffffffc0000139, 0x0}
[Error] [ERROR] A fatal error occurred in the running application. The application will be terminated. Code: 0xc0000139.
[Information] [1] 56000
[Information] The following files have been unzipped for sourcing in path=["src"]:
[Information] Name Length Date
[Information] 1 data.table_1.10.4.zip 1487417 2017-07-07 16:48:00
[Information] 2 lgb1.model 45142 2017-08-02 17:38:00
[Information] 3 lgb2.model 83455 2017-08-02 17:38:00
[Information] 4 lightgbm_2.0.4.zip 1350111 2017-08-03 14:26:00
[Information] 5 magrittr_1.5.zip 152732 2017-07-07 15:34:00
[Information] 6 R6.zip 317766 2017-08-03 10:33:00
[Information] Loading objects:
[Information] port1
[Information] [1] "Loading variable port1..."[Information] package 'magrittr' successfully unpacked and MD5 sums checked
[Information] package 'R6' successfully unpacked and MD5 sums checked
[Information] package 'data.table' successfully unpacked and MD5 sums checked
[Information] package 'lightgbm' successfully unpacked and MD5 sums checked
[Information] data.table 1.10.4
[Information] The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way
[Information] Documentation: ?data.table, example(data.table) and browseVignettes("data.table")
[Information] Release notes, videos and slides: http://r-datatable.com
[Error] Process returned with non-zero exit code -1073741511
[Stop] DllModuleMethod::Execute. Duration = 00:00:14.8676292
[Critical] Error: Error 1000: RPackage library exception: Attempting to obtain R output before invoking execution process
[Critical] {"InputParameters":{"DataTable":[{"Rows":50,"Columns":131,"estimatedSize":16928768,..........."Errors":"Microsoft.Analytics.Exceptions.ErrorMapping+ModuleException: Error 1000: RPackage library exception: Attempting to obtain R output before invoking execution process ---> Microsoft.Analytics.Modules.R.ErrorHandling.RInvalidOperationException: Attempting to obtain R output before invoking execution process\r\n at Microsoft.MetaAnalytics.LanguageWorker.NewRWorker.GetProcessOutputs(Boolean scrub) in d:\\_Bld\\8831\\7669\\Sources\\Product\\Source\\Modules\\LanguageWorker\\LanguageWorker.Dll\\TempWorkers\\NewRWorker.cs:line 459\r\n at Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS.ExecuteR(NewRWorker worker, DataTable dataset1, DataTable dataset2, IEnumerable`1 bundlePath, StreamReader rStreamReader, Nullable`1 seed) in d:\\_Bld\\8831\\7669\\Sources\\Product\\Source\\Modules\\LanguageWorker\\LanguageWorker.Dll\\EntryPoints\\RModule.cs:line 278\r\n at Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS._RunImpl(NewRWorker worker, DataTable dataset1, DataTable dataset2, String bundlePath, StreamReader rStreamReader, Nullable`1 seed, ExecuteRScriptExternalResource source, String url, ExecuteRScriptGitHubRepositoryType githubRepoType, SecureString accountToken) in d:\\_Bld\\8831\\7669\\Sources\\Product\\Source\\Modules\\LanguageWorker\\LanguageWorker.Dll\\EntryPoints\\RModule.cs:line 207\r\n at Microsoft.MetaAnalytics.LanguageWorker.LanguageWorkerClientRS.RunRSNR(DataTable dataset1, DataTable dataset2, String bundlePath, StreamReader rStreamReader, Nullable`1 seed, ExecuteRScriptRVersion rLibVersion) in d:\\_Bld\\8831\\7669\\Sources\\Product\\Source\\Modules\\LanguageWorker\\LanguageWorker.Dll\\EntryPoints\\REntryPoint.cs:line 105\r\n --- End of inner exception stack trace ---","Warnings":[],"Duration":"00:00:14.8605990"}
Module finished after a runtime of 00:00:15.3186157 with exit code -2
Module failed due to negative exit code of -2
Как предложено на Github перед компиляцией я изменил в файле https://github.com/Microsoft/LightGBM/blob/master/R-package/src/install.libs.R#L4 линия use_mingw <- FALSE
в use_mingw <- TRUE
, И Azure ML наконец принял пакет.
Кажется, существует проблема совместимости между библиотеками Azure ML и Visual C ++.
Других решений пока нет …