我正在尝试使用this笔记本运行AlphaFold来预测大蛋白质的结构。我已经多次使用此笔记本来分析合理大小的蛋白质(300-800 个氨基酸,如果这有帮助的话),没有任何问题,但这种蛋白质几乎是 2,400 个氨基酸。我首先尝试在免费的 Colab 帐户上运行它,但该帐户显然没有足够的 RAM。我今天切换到 Colab Pro 并再次尝试,但收到了非常相似的错误消息,这次仅出现在代码本身中,而不是 colab 弹出的购买 Pro 的小提示。奇怪的是,整个运行从未使用超过 9 GB 的 RAM 和 60 GB 的磁盘空间(25 GB RAM 和 155 GB 可用磁盘空间),所以看起来我什至不接近资源当失败并闪烁错误时进行限制。
我是 Colab 的新手,所以我不确定会发生什么,但似乎该程序可能在某种程度上“自我破坏”,并对 Pro 帐户施加了与 Colab 实际限制不同的资源限制。对此或其他一些可能性和潜在的解决方案有什么想法吗?
提前致谢!
这是确切的错误消息:
running model_1
---------------------------------------------------------------------------
UnfilteredStackTrace Traceback (most recent call last)
<ipython-input-15-af48741e914e> in <module>()
50 model_params=model_params, use_model=use_model,
---> 51 do_relax=use_amber)
13 frames
UnfilteredStackTrace: RuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to
allocate 1465970944 bytes.
The stack trace below excludes JAX-internal frames.
The preceding is the original exception that occurred, unmodified.
--------------------
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/jax/interpreters/xla.py in
_execute_compiled(compiled, avals, handlers, kept_var_idx, *args)
958 for i, x in enumerate(args)
959 if x is not token and i in kept_var_idx))
--> 960 out_bufs = compiled.execute(input_bufs)
961 check_special(xla_call_p.name, out_bufs)
962 return [handler(*bs) for handler, bs in zip(handlers,
_partition_outputs(avals, out_bufs))]
RuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 1465970944
bytes.
您似乎耗尽了 GPU 内存(最大 ~15GB),而不是系统 RAM。我也遇到过同样的问题。不幸的是,如果可能的话,唯一的解决办法是截短蛋白质。
这是因为您的系统不适合 GPU 内存。您有几个选择:
reduced_dbs
标志运行相同的系统。请参阅此处 文档。 这会减少 AlphaFold 用于预测蛋白质结构的数据库的大小,这可能会或可能不会导致预测结构质量的下降。深入了解,GitHub 提供了更复杂的选项。