Microsoft Cognitive Network Toolkit 是否有任何推荐或最低系统要求?我在 git 上的任何地方都找不到此信息。
3 回答
您可以在此处找到有关 GPU 硬件要求的一些参考:
https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-Windows
我在一台较旧的台式机上测试了一些简单的图像识别教程,GPU 分数太低(所以只使用 CPU),花了一个多小时才完成训练。在 Surface Book(第一代)上,这需要几分钟。第一代 Surface Book 使用 AnandTech 所说的大约相当于 GeForce GT 940M。我还没有在带有一些较新的高端 GPU 卡的台式机上进行测试,以了解它们的性能,但知道会很有趣。
我使用本教程进行了一些测试:https ://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_201B_CIFAR-10_ImageHandsOn.ipynb
在我的 Surface Book(第 1 代)上,我在第 1 部分的训练中得到以下结果:
Finished Epoch [1]: [Training] loss = 2.063133 * 50000, metric = 75.6% * 50000 16.486s (3032.8 samples per second)
Finished Epoch [2]: [Training] loss = 1.677638 * 50000, metric = 61.5% * 50000 16.717s (2990.9 samples per second)
Finished Epoch [3]: [Training] loss = 1.524161 * 50000, metric = 55.4% * 50000 16.758s (2983.7 samples per second)
以下是在具有一个 Nvidia K80 GPU 的 C6 Azure VM 上运行的结果:
Finished Epoch [1]: [Training] loss = 2.061817 * 50000, metric = 75.5% * 50000 9.766s (5120.0 samples per second)
Finished Epoch [2]: [Training] loss = 1.679222 * 50000, metric = 61.5% * 50000 10.312s (4848.5 samples per second)
Finished Epoch [3]: [Training] loss = 1.524643 * 50000, metric = 55.6% * 50000 8.375s (5970.1 samples per second)
如您所见,Azure VM 比我的 Surface Book 快大约 2 倍,因此如果您需要进行试验并且没有配备强大 GPU 的机器,Azure 可能是一个选择。K80 GPU 还具有更多的板载内存,因此它可以运行对内存要求更高的模型。Azure 中的 VM 只有在需要时才能启动,以节省成本。
在我的 Surface Book 上,我很容易遇到这样的内存错误:
RuntimeError: CUDA failure 2: out of memory ; GPU=0 ; hostname=OLAVT01 ; expr=cudaMalloc((void**) &deviceBufferPtr, sizeof(AllocatedElemType) * numElements)
这是因为 Surface Book(第一代)只有 1GB GPU 内存。
更新:当我第一次运行测试时,代码在 CPU 上运行。以上结果均来自使用 GPU。
要检查您是在 CPU 还是 GPU 上运行,请使用以下代码:
import cntk as C
if C.device.default().type() == 0:
print('running on CPU')
else:
print('running on GPU')
要让 CNTK 使用 GPU,请使用:
from cntk.device import set_default_device, gpu
set_default_device(gpu(0))
GPU 要求是具有 3.0 或更高计算能力的支持 CUDA 的卡。我尝试使用 GPU GeForce GT 610 在 PC 上运行训练并收到以下消息:
GPU (GeForce GT 610) 具有计算能力 2.1。CNTK 仅在具有 3.0 或更高计算能力的 GPU 上受支持
CNTK 本身的要求最低。然而,训练一些更大、要求更高的模型可能会很慢,因此拥有 GPU(或 8 个)会有所帮助。