背景
我有一个非常小的网络,我想用不同的随机种子进行测试。网络几乎不使用我 GPU 计算能力的 1%,所以理论上我可以一次运行 50 个进程来一次尝试许多不同的种子。
问题
不幸的是,我什至无法在多个进程中导入 pytorch。当进程数超过4 时,我会收到关于页面文件太小的 Traceback。
最小的可重现代码§ - dispatcher.py
from subprocess import Popen
import sys
procs = []
for seed in range(50):
procs.append(Popen([sys.executable, "ml_model.py", str(seed)]))
for proc in procs:
proc.wait()
Run Code Online (Sandbox Code Playgroud)
§我增加了种子的数量,所以拥有更好机器的人也可以复制这一点。
最少的可重现代码 - ml_model.py
import torch
import time
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
File "ml_model.py", line 1, in <module>
import torch
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\__init__.py", line 117, in <module>
import torch
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\__init__.py", line 117, in <module>
raise err
OSError: [WinError …Run Code Online (Sandbox Code Playgroud) 我正在尝试安装一个 python 包,但它失败了:
pip2 install ./example-0.1.0-py2-none-any.whl
Run Code Online (Sandbox Code Playgroud)
错误:包“示例”需要不同的 Python:2.7.12 不在“>=2.5,>=3.0”中
所以这个错误信息是错误的 imo , 2.7.12 显然是 >=2.5 。
这似乎只会在新的 pip 版本和 python2 中失败。python/pip/setuptools 的所有其他组合似乎都有效,有关更多详细信息,请参见下表。
有没有人有想法?