JuliaAI / MLJXGBoostInterface.jl

MIT License
11 stars 5 forks source link

Issue when precompiling with package version >=0.3.0 #31

Closed SimonCrouzet closed 1 year ago

SimonCrouzet commented 1 year ago

Hello,

Thank for your work to support XGBoost on Julia so far! I have noticed a bug with the latest versions, with MLJXGBoostInterface v0.3.0 and higher (XGBoost v2.2.1). MLJXGBoostInterface fails to precompile, with the following error:

Failed to precompile MLJXGBoostInterface [54119dfa-1dab-4055-a167-80440f4f7a91] to C:\Users\XXXX\.julia\compiled\v1.8\MLJXGBoostInterface\jl_B69.tmp.
ERROR: LoadError: UndefVarError: feature_importances not defined
Stacktrace:
 [1] getproperty(x::Module, f::Symbol)
   @ Base .\Base.jl:31
 [2] top-level scope
   @ C:\Users\XXXX\.julia\packages\MLJXGBoostInterface\ZLP7C\src\MLJXGBoostInterface.jl:117
 [3] include
   @ .\Base.jl:419 [inlined]
 [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
   @ Base .\loading.jl:1554
 [5] top-level scope
   @ stdin:1

Retrograding to MLJXGBoostInterface v0.2.1 (which downgrade the XGBoost version to v1.5.2) is solving the issue.

ablaom commented 1 year ago

Thanks for reporting.

Seems like MLJXGBoostInterface needs to bump it's MLJModelInterface requirement to 1.5.0.

@SimonCrouzet I am curious if there is something preventing you from updating to the latest MLJModelnterface, if you can say.

SimonCrouzet commented 1 year ago

Thanks for the feedback!

I'm indeed still using MLJModelInterface v1.1.0. Still confused about the update conflict, but I think it's because I am using on outdated package (which I suspect to be TreeParzen) which requires an outdated version of another package (might be MLJTuning)

(myenv) pkg> status --outdated
Status `XXX\Project.toml`
⌃ [a93c6f00] DataFrames v1.3.6 (<v1.4.4)
⌃ [add582a8] MLJ v0.16.6 (<v0.19.1)
⌅ [a7f614a8] MLJBase v0.18.11 (<v0.21.3): MLJ, MLJEnsembles, MLJIteration, MLJModels, MLJSerialization, MLJTuning
⌃ [e80e1ace] MLJModelInterface v1.1.0 (<v1.8.0)
⌅ [d491faf4] MLJModels v0.14.7 (<v0.16.2): MLJ
⌅ [03970b2e] MLJTuning v0.6.9 (<v0.7.4): MLJ
⌃ [54119dfa] MLJXGBoostInterface v0.2.1 (<v0.3.5)
⌅ [009559a3] XGBoost v1.5.2 (<v2.2.1): MLJXGBoostInterface
ablaom commented 1 year ago

Mmm. TreeParzen looks good to me - compats up-to-date. If your'e happy to post your full project I can take a look.

SimonCrouzet commented 1 year ago

Thanks for proposing! Here is my project:

[deps]
BioSequences = "7e6ae17a-c86d-528c-b3b9-7f778a29fe59"
BioSymbols = "3c28c6f8-a34d-59c4-9654-267d177fcfa9"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597"
ConfParser = "88353bc9-fd38-507d-a820-d3b43837d6b9"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
DataFramesMeta = "1313f7d8-7da2-5740-9ea0-a2ca25f37964"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
FASTX = "c2308a5c-f048-11e8-3e8a-31650f418d12"
FastaIO = "a0c94c4b-ebed-5953-b5fc-82fe598ac79f"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
GZip = "92fee26a-97fe-5a0c-ad85-20a5f3185b63"
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
JLSO = "9da8a3cd-07a3-59c0-a743-3fdc52c30d11"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
LightGBM = "7acf609c-83a4-11e9-1ffb-b912bcd3b04a"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7"
MLJBase = "a7f614a8-145f-11e9-1d2a-a57a1082229d"
MLJLinearModels = "6ee0df7b-362f-4a72-a706-9e79364fb692"
MLJModelInterface = "e80e1ace-859a-464e-9ed9-23947d8ae3ea"
MLJModels = "d491faf4-2d78-11e9-2867-c94bc002c0b7"
MLJScientificTypes = "2e2323e0-db8b-457b-ae0d-bdfb3bc63afd"
MLJTuning = "03970b2e-30c4-11ea-3135-d1576263f10f"
MLJXGBoostInterface = "54119dfa-1dab-4055-a167-80440f4f7a91"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
ProgressBars = "49802e3a-d2f1-5c88-81d8-b72133a6f568"
Query = "1a8c2f83-1ff3-5112-b086-8aa67b057ba1"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"
SHA = "ea8e919c-243c-51af-8825-aaa63cd721ce"
ScientificTypesBase = "30f210dd-8aff-4c5f-94ba-8e64358c1161"
ShapML = "8523bd24-6f66-414b-9e1e-b02db3916d64"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd"
TreeParzen = "eb66a70c-a255-11e9-03ea-7ba6b2f22006"
XGBoost = "009559a3-9522-5dbb-924b-0b6ed2b22bb9"
ZipFile = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea"

and the output when I run status --outdated:

⌃ [a93c6f00] DataFrames v1.3.6 (<v1.4.4)
⌃ [add582a8] MLJ v0.16.6 (<v0.19.1)
⌅ [a7f614a8] MLJBase v0.18.11 (<v0.21.4): MLJ, MLJEnsembles, MLJIteration, MLJModels, MLJSerialization, MLJTuning
⌃ [e80e1ace] MLJModelInterface v1.1.0 (<v1.8.0)
⌅ [d491faf4] MLJModels v0.14.7 (<v0.16.2): MLJ
⌅ [03970b2e] MLJTuning v0.6.9 (<v0.7.4): MLJ
⌃ [54119dfa] MLJXGBoostInterface v0.2.1 (<v0.3.6)
⌅ [009559a3] XGBoost v1.5.2 (<v2.2.1): MLJXGBoostInterface

Running update leads to have MLJXGBoostInterface updated to v0.3.5 and XGBoost updated to v2.2.1, causing the issue mentioned.

ablaom commented 1 year ago

@SimonCrouzet Try removing MLJScientificTypes and update. This is an obsolete archived repository.

Let me know how you do.