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

在高性能计算(HPC)环境中排查cmdstanr运行故障求助

解决HPC集群上cmdstanr运行失败的问题

1. 修复Shell脚本换行符错误

错误日志中$'\r': command not found是因为你的.job文件使用了Windows格式的换行符(CRLF),而Linux集群仅支持LF格式。

  • 解决方法:在集群上执行命令转换格式:
    dos2unix Growth-Analysis.job
    
  • 或在本地编辑器(如VSCode)中,将文件换行符设置为LF后重新上传。

2. 修正R脚本中的路径错误

你的R脚本使用了本地Mac路径/Users/depy/...,集群上不存在该路径,必须替换为集群上的绝对路径(比如你的home目录或集群指定存储路径):

library(cmdstanr)

# 替换为集群上的真实路径
modstan = cmdstan_model(stan_file = "/home/depy/pairsonly.stan")

# 提前在集群上创建输出目录:mkdir -p /home/depy/rtemps
modrun = modstan$sample(
    data = "/home/depy/moddata.json", 
    seed = 789, 
    chains = 4, 
    parallel_chains = 4, 
    iter_warmup = 1000, 
    iter_sampling = 1000,
    output_dir = "/home/depy/rtemps"  # 指定集群上的输出目录
    )

modsum = summary(modrun$draws())
write.csv(modsum, "modsum_growth.csv", row.names = F)

3. 优化资源分配与并行设置

  • 你的.job文件中-l localscratch_free=500G可能过度申请资源,可根据模型实际需求调整为内存限制,比如:
    #$ -l mem_free=16G
    
  • 确保并行设置匹配:-pe smp 4分配了4核,parallel_chains=4刚好对应每个链占用1核,若模型支持多线程,可在sample()中添加num_threads=1明确每个链的线程数。

4. 调试失败的链

若问题仍存在,通过以下方式排查详细错误:

  • 在R脚本中添加代码查看链的输出日志:
    # 查看第1条链的详细输出
    cat(modrun$output(chain_id = 1))
    
  • 直接检查output_dir下的CSV输出文件,查看是否有内存不足、数据加载失败或模型语法错误的提示。

5. 验证基础环境

先运行一个极简的Stan示例,确认集群的cmdstanr环境正常:

library(cmdstanr)
file <- file.path(cmdstan_path(), "examples", "bernoulli", "bernoulli.stan")
mod <- cmdstan_model(file)
data_list <- list(N = 10, y = c(0,1,0,1,0,1,0,1,0,1))
fit <- mod$sample(
  data = data_list,
  chains = 2,
  parallel_chains = 2
)
fit$summary()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:14:56