【发布时间】:2019-12-02 23:23:06
【问题描述】:
假设我的模型只使用一个 GPU,但虚拟机有 4 个。
如何为这段代码利用所有 GPU?
channel_1_range = [8, 16, 32, 64]
channel_2_range = [8, 16, 32, 64]
kernel_size_1_range = [3, 5, 7]
kernel_size_2_range = [3, 5, 7]
max_count = 40
for count in range(max_count):
reg = 10**np.random.uniform(-3, 0)
learning_rate = 10**np.random.uniform(-6, -3)
channel_1 = channel_1_range[np.random.randint(low=0, high=len(channel_1_range))]
channel_2 = channel_2_range[np.random.randint(low=0, high=len(channel_2_range))]
kernel_size_1 = kernel_size_1_range[np.random.randint(low=0, high=len(kernel_size_1_range))]
kernel_size_2 = kernel_size_2_range[np.random.randint(low=0, high=len(kernel_size_2_range))]
model = ThreeLayerConvNet(in_channel=3, channel_1=channel_1, kernel_size_1=kernel_size_1, \
channel_2=channel_2, kernel_size_2=kernel_size_2, num_classes=10)
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
engine = Engine(loader_train=loader_train, loader_val=loader_val, device=device, dtype=dtype, print_every=100, \
verbose=False)
engine.train(model, optimizer, epochs=1, reg=reg)
print("Reg: {0:.2E}, LR: {1:.2E}, Ch_1: {2:2} [{4}], Ch_2: {3:2} [{5}], Acc: {6:.2f} [{7:.2f}], {8:.2f} secs". \
format(reg, learning_rate, channel_1, channel_2, kernel_size_1, kernel_size_2, \
engine.accuracy, engine.accuracy_train, engine.duration))
一种选择是将其移至独立控制台应用程序,启动 N 个实例(N == GPU 数量)并汇总结果(一个输出文件)。
是否可以直接在 Python 中完成,以便我可以继续使用 jupyter notebook?
【问题讨论】:
标签: python-3.x pytorch