M1 Mac运行XGBoost创建DMatrix时Jupyter内核无报错崩溃如何解决
解决方案
- 升级XGBoost到1.6.0及以上版本
你当前使用的1.4.2、1.2.0均未正式适配Apple Silicon(M系列芯片)架构,OpenMP调用逻辑和ARM架构不兼容是内核无报错崩溃的核心原因。1.6.0之后的XGBoost版本已经完成M系列芯片原生适配,可直接解决该问题:
# 先卸载原有版本 pip uninstall xgboost # 安装最新稳定版 pip install xgboost>=1.6.0 # 若使用conda,优先用conda-forge源的原生arm版本 conda install -c conda-forge xgboost>=1.6.0
- 临时验证兼容问题
如果暂时无法升级版本,可先将XGBoost运行参数中的nthread设为1,关闭多线程调用,验证是否是OpenMP兼容导致的崩溃:
params = { # 其他参数保持不变 "nthread": 1 } xgb.train(params, dtrain)
如果调整后可以正常运行,即可确认是OpenMP兼容问题,优先升级XGBoost版本即可彻底解决。
排查具体崩溃日志
Jupyter内核静默崩溃不会输出错误信息,你可以直接在本地终端运行你的最小复现代码,终端会输出完整的崩溃栈信息,可以进一步定位是否存在其他依赖冲突。确认Python运行架构
执行以下命令确认你使用的Python是原生ARM版本,而非Rosetta2转译版本:
python -c "import platform;print(platform.machine())"
如果输出为arm64即为原生版本,如果输出为x86_64说明是转译版本,建议切换到原生ARM架构的Python发行版,可避免大量依赖兼容问题。
内容的提问来源于stack exchange,提问作者avriiil
相关产品推荐
相关产品推荐

