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

Singularity容器运行AlphaFold作业报错如何排查

报错根因

你看到的两段报错性质完全不同:

  • 开头的/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Read-only file system是非致命警告:Singularity运行SIF镜像时默认以只读模式加载镜像内部文件系统,ldconfig尝试更新动态链接库缓存时没有写入权限就会触发该提示,不会直接导致程序崩溃。
  • 末尾的AttributeError: module 'jaxlib.pocketfft' has no attribute 'pocketfft'是核心致命错误:容器内安装的jax和jaxlib版本不兼容,高版本jax调用低版本jaxlib中不存在的pocketfft接口导致运行中断,是AlphaFold镜像打包时最常见的依赖错配问题。
排查解决步骤

第一步:确认依赖版本错配

执行以下命令进入容器环境,核对两个核心依赖的版本:

singularity exec alphafold220.sif pip list | grep -E "jax|jaxlib"

适配AlphaFold 2.2.0的稳定版本组合为jax==0.3.15 + jaxlib==0.3.10,如果两个包版本跨度超过小版本范围(比如jax版本高于0.3.15、jaxlib版本低于0.3.10),就会触发本次pocketfft相关报错。

第二步:修复依赖错配

两种方案按需选择即可:

方案1:不修改原镜像,临时修复运行

运行时加--writable-tmpfs参数给容器分配临时可写层,启动时自动安装匹配版本的依赖,不会改动原有SIF文件:

singularity run --nv --writable-tmpfs alphafold220.sif \
  -c "pip install --no-cache-dir jax==0.3.15 jaxlib==0.3.10 && \
  python /app/alphafold/run_alphafold.py --fasta_paths=/home/igib/AF_singualrity/test.fasta"

如果要调用GPU运行,提前下载对应宿主机CUDA、cuDNN版本的jaxlib 0.3.10 GPU版whl包,挂载进容器后本地安装即可,不要直接用pip拉取的默认CPU版本。

方案2:重新构建镜像,永久修复

如果你是通过.def定义文件构建的镜像,找到文件中%post段的pip依赖安装部分,把jax、jaxlib的版本固定为适配版本,替换原有模糊版本的安装命令后重新构建镜像即可:

# 固定版本安装
pip install --no-cache-dir jax==0.3.15
pip install --no-cache-dir jaxlib==0.3.10

构建完成后直接用原有运行命令启动即可。

第三步:可选优化(不影响核心运行)

如果觉得开头的ldconfig只读提示干扰日志,可以在运行时加--contain参数,或者绑定宿主机可写的ld.so.cache文件到容器对应路径,不处理也完全不会影响AlphaFold的正常计算。

额外注意事项
  • 你当前使用的运行命令缺少AlphaFold必填参数,就算依赖修复完成也会因参数不全报错,还需要补充--data_dir(AlphaFold数据库路径)、--output_dir(结果输出路径)、--model_preset(运行模式,单体重组选monomer、多聚体选multimer)、--use_templates(是否使用模板)等必填参数。
  • 用--nv参数调用GPU前,先在宿主机执行nvidia-smi确认驱动正常,Singularity版本不低于3.7,避免GPU挂载失效。

内容的提问来源于stack exchange,提问作者comp-era

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:33:11