2017-11-25 144 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 –