2017-11-25 83 views
-3

如何通过组合多个CPU内核,例如在Google Compute Engine n1-highmem-64机器类型上培训自定义神经网络(不是tensorflow)来获得单线程更快的处理速度, CPU核心?群集电脑还是什么?不知道从哪里开始......谢谢!使用附加内核的CPU性能

回答

0

那么你是要求单线程,但多核心更快的速度。

让一个单一线程拥有更快处理速度的唯一可行方法就是超频。通过获得更新的内核,您也可以获得更好的芯片组。

要完成这个简单的工作是不可行的,你可能需要将固件打补丁到几个组件,以允许它们在一个线程上利用L3缓存或其他东西在cpus上进行通信....非常不可行。

与此相反的是要走的路。

多线程用于在多个内核上并发处理不同的数据。

通用GPU的用途是通过将计算迁移到GPU来对大量数据执行相同的操作。它增加了开销时间,但是当输入足够大时会给出好的结果。

有趣的是,你提到不是TensorFlow,因为它实际上实现了这两个。

即使你能够实现像这样的东西,它可能只是对原子锁进行打乱,除非你已经对它进行了线程化。

编辑

如果您正在寻找使用软件即服务,亚马逊(https://aws.amazon.com/tensorflow/和其他公司)有一系列能与出来的各种深学习/机器学习框架兼容的服务框。

+0

好的,所以我运行的代码有一个准备阶段,在这个阶段中数据被分类和清理,但是然后是更加强化的训练阶段,在整个时代非常重复,但计算只是总结输出激活的分数......有没有办法从单线程开始,但是一旦到达这个训练阶段,通过将时期分成64个部分(或可用的CPU数量)来计算激活并将总和返回到单个线程?除了在训练之前准备好并存储在RAM中之外,时代节不相互依存...... –

+0

如果您可以在python中实现数据清理,那么您可以在Tensorflow中实施培训,并且它会自动使用所有内核/超线程或gpus。如果不是,则必须在模型的前向和后向传播步骤上实现多线程,然后对损失函数执行求和并使用该求和来调整权重矩阵。 – Zroach

+0

绝对不使用Python,Node JS –