You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下tidymodels运行xgboost出现C栈使用量接近上限错误

Ubuntu服务器tidymodels运行xgboost C栈超限问题解决方案

以下为可直接落地的排查修复步骤:

  • 调整R内置栈上限配置
    不要依赖shell层面的ulimit -s设置,该配置仅作用于当前会话,R进程启动时往往无法继承。可在R启动配置文件中显式设置栈大小:
    1. 编辑用户级配置文件~/.Rprofile(全局配置可修改/etc/R/Rprofile.site)
    2. 加入配置项:invisible(utils::setCStackLimit(32 * 1024 * 1024))
      此处设置为32M,远高于报错提示的7.9M阈值,可根据实际运行情况上调。
  • 调整并行运行参数
    若使用future框架作为tidymodels的并行后端,需在声明并行策略时显式指定子进程的栈参数,避免子进程继承默认小栈配置:
    plan(multisession, workers = 3, rscript_args = c("--max-ppsize=500000", "--stack-size=32000"))
    
    其中--stack-size单位为KB,32000即对应32M栈空间。
  • 调整xgboost运行参数
    Linux下xgboost多线程计算的递归逻辑容易触发栈溢出,可先显式将nthread参数设置为1测试运行,确认问题根源后再逐步上调线程数。
  • 精简预处理逻辑
    当前数据集特征维度较高(900列),若预处理步骤中包含无限制的交互项生成、高维PCA计算等操作,会大幅提升递归深度触发栈溢出,可在预处理流水线开头加入step_zv()移除零方差特征,减少后续计算压力。
  • 兜底排查方案
    若你使用conda安装的R环境,可替换为Ubuntu官方apt源安装的R版本,conda打包的R存在硬编码栈上限的问题,修改配置也无法生效。

内容的提问来源于stack exchange,提问作者Pat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:18:03