第53章 顯卡根本不是用來玩遊戲的!

投票推薦 加入書籤 小說報錯

  老闆說:「這卡算是卡皇級別的,這玩意打遊戲效果非常好,你拿回去試試,如果不喜歡,拆下來退給我也行。」

  蘇舟看著配置單上的數字,心裡默默地算了一筆帳。

  整套下來五千一百塊,減去舊機回收和三百塊優惠,實際付四千二百二十塊,手裡還能剩一千八百一十塊。

  「成交。」蘇舟爽快地說。

  老闆幹活很利索,拆包、裝機、走線、理線、裝系統、導舊電腦數據,一氣呵成。

  蘇舟就站在旁邊看著,偶爾遞個螺絲刀,兩人有一搭沒一搭地聊著。

  裝好之後點亮測試,BIOS界面跳出來的那一刻,蘇舟的眼睛亮了。

  到家的時候已經是下午兩點。

  蘇舟把新主機連上顯示器和鍵盤,按下電源鍵,風扇轉起來的聲音都不一樣了,舊電腦開機像拖拉機啟動,這台聽著根本沒什麼聲音。

  心情大好的蘇舟裝完開發環境後,閉上眼睛,在腦海中把整個神經網絡的架構從頭到尾過了一遍。

  羅森布拉特給的紅包在這一刻發揮了最大的作用。

  蘇舟腦子裡面出現了一個從輸入到輸出的完整信息流動過程,每一層感知器接收信號,處理信號,傳遞信號,都像人類大腦中神經元的層層遞進。

  他打開編輯器,開始寫代碼搭建最基礎的感知器模型。

  這是羅森布拉特當年的起點,也是一切神經網絡的根基。

  一個感知器本質上就是一個函數,接收多個輸入,乘以各自的權重,求和,再通過一個激活函數決定是否激發。

  就像人腦中的一個神經元,電信號進來,強度夠了就放電,不夠就沉默。

  蘇舟用休學期間學到的C語言寫了一個最簡單的感知器,輸入是兩個數,輸出是0或1。

  跑了一下,能用,但毫無意義,一個感知器連複雜一點的運算都解決不了。

  現在他需要把感知器疊起來。

  單個神經元什麼也幹不了,但幾十億個神經元連在一起就成了人腦。

  同理,單個感知器沒用,但把成百上千個感知器排成層,層與層之間全連接,信息從輸入層流向隱藏層再流向輸出層,這就是多層感知器,也就是最基本的神經網絡。

  這個過程需要大量的矩陣運算。

  每一層的輸出都是上一層輸出乘以權重矩陣再加偏置,然後過激活函數。

  蘇舟在紙上推了一遍矩陣,確認沒問題後,開始編碼。

  萊布尼茨的萬象歸析技能在這裡幫了大忙。

  矩陣運算的本質是線性變換,線性變換的本質是空間映射。

  蘇舟不需要死記硬背公式,他能憑直覺想像數據的處理過程。

  網絡搭好了,但權重是隨機初始化的,輸出全是垃圾。

  怎麼讓網絡學習呢?

  答案是反向傳播算法,先算輸出和正確答案之間的誤差,然後把這個誤差從輸出層往回傳,逐層計算每個權重對誤差的貢獻,最後按貢獻大小調整權重。

  這裡就是微積分大展身手的地方了。

  反向傳播的核心是鏈式求導,也就是一層套一層的偏導數。

  這東西寫在教科書上能讓研究生抓頭髮抓禿,但在蘇舟眼裡,鏈式法則就像一條河流倒著流,水從下游往上游涌,每經過一個分叉口就按比例分流,最終每一滴水都能追溯到它對水位漲落的貢獻。

  三重技能疊加之下,代碼寫得異常順利。

  到晚上八點,蘇舟已經搭好了一個三層全連接神經網絡,輸入層784個節點,對應28×28像素的手寫數字圖片,隱藏層128個節點,輸出層10個節點,對應0到9十個數字。

  他從網上下載了手寫數字數據集,六萬張訓練圖片,一萬張測試圖片,灌進去,按下回車。

  屏幕上的數字開始滾動。

  蘇舟靠在椅背上,看了一眼右下角的進度條和計時器,開始心算。

  六萬張圖片,每張圖片經過前向傳播和反向傳播需要多少次浮點運算。

  三層網絡,784×128再加128×10,每層還有激活函數和梯度計算……

  算完之後,蘇舟的臉色有點不好看。

  按照現在這個速度,跑完他預設的訓練計劃,包括調參、增加網絡深度、切換更大的數據集,保守估計,至少要兩個月。

  兩個月才知道結果也太久了點吧!

  得想想辦法才行。

  他切出終端,打開瀏覽器,一頭扎進了各大技術論壇。

  滿屏都是硬體發燒友們在激烈對線。有人在吹噓最新的CPU架構,有人在討論怎麼給雙核處理器加壓超頻,把主頻拉高個零點幾GHz以榨乾最後一絲性能。

  看了一圈,蘇舟搖了搖頭。

  就算把這顆CPU超頻超到冒煙,撐死也就提升個20%的性能,兩個月變成一個半月,有什麼本質區別嗎?

  他盯著網頁上一張CPU的核心架構圖,腦子裡突然想到,方向錯了!

  大家都在死磕CPU,但CPU這玩意兒,天生就不適合跑神經網絡!

  CPU就像一個頂級數學教授。

  微積分、概率論、拓撲學,什麼高精尖的題都會做,來者不拒。

  但它的問題在於分身乏術,核心太少,通常就兩到四個。

  這就好比教授雖然牛逼,但一次只能拉兩三個學生進辦公室輔導。

  它那龐大而複雜的控制單元,全是為了處理各種神出鬼沒的邏輯分支和指令跳轉而生的。

  而神經網絡的訓練是個什麼流程?

  海量的矩陣乘法、向量加法、逐元素激活。沒有複雜的邏輯判斷,沒有七拐八彎的條件分支,全是枯燥、重複、極其暴力的純粹數值計算。

  讓頂級數學教授去批改幾十萬道小學三年級的口算題?

  這不是為難它嗎?

  「需要批改小學算術題,那就該找小學老師啊……」蘇舟喃喃自語,目光不自覺地移向了桌子底下的機箱,眼睛越來越亮。

  顯卡!GPU!

  GPU是什麼?

  如果CPU是一個教授,那GPU就是一個由幾百個小學數學老師組成的斯巴達軍團!

  每個小學老師只會做最簡單的加減乘除,但架不住人多啊!

  以現在市面上高端一點的NVIDIA 8800 GTS顯卡為例,裡面足足塞了128個流處理器!

  它們可以同時並行工作!

  雖然單挑的話,一個流處理器的運算能力連CPU核心的腳趾頭都摸不到。

  但如果現在的任務是「立刻把這一百萬道加減乘除題算完」呢?

  128個小學老師同時髮捲子,並排批改,火力全開。那種粗暴的並行計算速度,絕對能把孤軍奮戰的教授碾壓得連渣都不剩!

  大規模、高度並行的純粹數值計算,這特麼不就是給GPU量身定做的活兒嗎?!

  蘇舟直起身子,心跳陡然加速。

  他意識到一個重要問題。

  顯卡根本不是用來玩遊戲的!

  ps.五一假期了,求追讀求月票,給小作者一點動力吧!大家的評論我都有看,會及時做出調整~

章節目錄