GPU 是什麼?為什麼 GPU 對 AI 的發展很重要?

古古

2025/01/21


在 AI 的浪潮下,GPU 可以說是一間公司的算力的體現,但是 GPU 到底是什麼?為什麼他對 AI 的發展這麼重要呢?所以這篇文章我們就來介紹一下,到底什麼是 GPU 吧!

什麼是 GPU? #

所謂的 GPU,全稱是 Graphics Processing Unit,中文翻譯為「圖形處理器」,所以顧名思義,其實 GPU 最一開始的用途,就是拿來「處理影像圖形」用的。 只不過因為 GPU 的「平行處理」的特性實在太好用,所以後來才被拿來挖礦、甚至發展 AI。

所以在了解 GPU 為什麼對 AI 很重要之前,首先一定要先了解 GPU 的用途為何,了解 GPU 是怎麼做到「平行處理」的概念的,才能夠了解為什麼 GPU 對於 AI 的發展這麼重要。

影像處理簡介 #

其實 GPU 最一開始的用途就是拿來「處理圖形」的,而在了解 GPU 的用途之前,我們必須要先了解一下目前電腦螢幕裡面是如何構成的,才能知道 GPU 的用途為何。

舉例來說,在每一台電腦螢幕中,其實都是由好幾個微小的像素(pixel)所組成,而每一個像素你可以想像成就是一個小格子。

所以像是現在主打的 4K 螢幕(3840×2160),就是指這台螢幕的長度有 3840 個像素,而高度則是有 2160 個像素,因此在整台螢幕上面,就是有 3840 x 2160 = 829 萬個像素(pixel)存在。

所以我們平常在使用螢幕時,不管是觀看 YouTube 影片、寫程式、打遊戲…等等,電腦就要分別計算「每一格 pixel 當前應該要呈現什麼顏色」,而當所有的 pixel 都計算好自己應該長什麼顏色之後,最終就會呈現一張完整的圖片了。

如果大家有生成過點陣圖、或是有玩過 Minecraft 的話,其實就是背後用的就是「像素」的概念,像是下圖就是一個 pixel 實際呈現的結果,當每一格 pixel 都計算出他的顏色之後,最終呈現給我們人眼看的結果,就是最右邊的「寶劍」了!

所以在影像處理的世界中,「每一格 pixel 都是獨立的,自己控制自己要呈現什麼顏色」,而當這些 pixel 們計算好自己要呈現什麼顏色之後,最終合成再整個合在一起看,就是對我們人類有意義的圖片了~

所以其實對於 pixel 而言,他其實根本不知道現在是要呈現什麼圖片😂,他的任務就是乖乖計算自己要什麼顏色,剩下的怎麼解讀就交給人類自己去判定。

GPU 和影像處理的關聯 #

所以透過上面的介紹,現在我們知道「一張圖片之所以能夠呈現出來,靠的就是 pixel 們自己在背後默默的運算」,而這其實就是 GPU 被發明出來的契機!

在 GPU 還沒被發明出來之前,如果我們用傳統 CPU 的去計算 pixel 的值的話,那就是得寫個 for loop,然後每一次 loop 就去計算每一格 pixel 的值。

圖片來源: 【OpenGL 篇】为什么游戏总要编译着色器?

但是使用 CPU 這樣子 for loop 一格一格計算實在是太慢了,所以為了加快計算的過程,GPU 就被發明出來了!!

在 GPU 裡面,有超超超超超級多個核心存在,每一個核心都可以執行一個簡單的計算,所以對於 GPU 而言,他就可以為每一個 pixel 都分配一個核心,然後 「在同一時間,所有核心都去計算他所分配到的 pixel 的值」,所以 GPU 就可以一口氣計算出所有 pixel 的顏色,因此就可以得到最終的結果了。

圖片來源: 【OpenGL 篇】为什么游戏总要编译着色器?

所以 GPU 之所以強大的地方,就在於「平行處理」,每一個 GPU 核心都有強大計算的能力,只要你給告訴他要計算的是哪一格 pixel、以及要處理的數據有哪些,GPU 就可以為那一格 pixel 分配一個核心,專門去計算這個 pixel 的最終顏色,又因為 GPU 中的核心數量非常多,因此就可以達到「同時計算所有 pixel」的效果了~

所以對於 GPU 來說,「平行處理」就是他的最強大的武器,而這也是 GPU 為什麼會在 AI 世界大放異彩的特質!

為什麼 GPU 在 AI 時代這麼重要? #

首先在 AI 時代中,所有的模型都是「訓練」出來的,而在訓練模型的過程中,使用 GPU 的「平行處理」就可以加快訓練的過程。

「訓練」的概念有點像是在教導小孩子一樣,每一個模型一開始都是一個天真無邪的孩子,並且每個孩子的特長和天賦都不同,而我們工程師所做的,就是拿著「同樣的對話範例」去給這個孩子看,試試看這個孩子最終會長成什麼樣子。

像是你可以拿下面這兩段對話,去訓練 X 模型,所以這時候 X 模型就會去「旁觀」這兩段對話,並且自己去理解這段對話(就像是小時候我們看著父母的言行一樣,就是從旁觀中去學習,所以身教大於言教啊!)。

A:你好
B:哈囉你好,你吃飽了沒?
A:你好
B:心情不好,滾

而當你使用上面這兩段對話「訓練」完 X 模型之後,這時候當你跟 X 模型說「你好」時,他可能會回你:

你:你好
X 模型:滾

或是

你:你好
X 模型:哈囉滾

因此在「訓練」模型的過程中,其實我們作為工程師,也是不知道 X 模型最終到底會回覆什麼的,一定得等到訓練完成之後,我們才能夠透過一問一答的測試的方式,去檢查 X 模型的回覆是否如我們預期。

所以在 AI 的時代中,所有的模型其實都是通過「訓練」出來的,並且上面這種給 X 模型參考旁觀對話的過程,也稱為「訓練模型」。

而 GPU 之所以在 AI 的發展中很重要,就是因為 「使用 GPU 的平行處理,就可以加快訓練的過程」。

舉例來說,如果我們使用傳統 CPU 來訓練 X 模型的話,那就像是教育小孩一樣,一次只能夠教導一個科目,等到這個科目完成之後,才教導下一個科目。

而如果我們使用 GPU 來訓練 X 模型的話,那就像是教育一個超級天才一樣,你可以一口氣教超級多科目,這個天才會用他的超級 GPU 腦袋,為每一個科目都分配一個核心,並且同時處理這些科目(就像前面的處理 pixel 一樣)。

所以只要我們使用了 GPU,就可以「大幅提升訓練模型的速度」,因此就可以快速將 X 模型訓練完畢,進而檢查他的訓練成果了。

補充:為什麼提升「訓練模型」的速度這麼重要? #

這裡可能會有人有疑問,就是「為什麼提升訓練模型的速度這麼重要?」,就讓我緩緩道來我個人的訓練模型的經驗,跟大家分享一下我 train model 的血淚史….🥹(以下「訓練模型」會簡稱為 train model)。

以前我在唸研究所的時候有稍微旁聽過 Machine Learning 的課(機器學習,算類 AI 吧),那時候有個作業要自己去 train 一個 model 出來,我當時就是調調調參數,然後按下 Enter 鍵放下去讓他跑,接著我就沒事幹了只能苦苦等著他跑完🥹。

想當然第一次跑出來的結果一定是很爛,需要重 train,所以這時候我又只能重新調一下參數,然後再按下 Enter 鍵,重新用新參數去 train model,然後我就又只能再苦苦等一天….。

所以 train model 真的是會花很多時間都在空等….,就像是你寫了一段程式,然後要等一天後你才能 debug 一樣,只有煎熬可言(而且進度也會進展的很慢),所以這也是為什麼 GPU 真的很重要。

只要有一個好的 GPU,就可以讓 train model 的時間從 3 天降成 30 分鐘(是有點誇張的比喻,但大概是這個概念),同樣是 30 天的開發週期,有一個好 GPU 的工程師就是可以有比較多次 train model 的機會(也就是有比較多次失敗的機會),而爛 GPU 的工程師就只能試幾次而已,剩下時間都在空等而已。

所以這也是為什麼 GPU 對於 AI 發展這麼重要的原因,只要能夠盡可能的降低 train model 的空等時間,就可以 debug 更多次,技術也會發展得更快一點。

因此 GPU 的平行處理,可以說是加速 AI 發展的強大催化劑,有了 GPU 之後,原本需要 1 年才能進步的技術,可能縮短為 3 個月就能做到,所以 GPU 可以說是兵家必爭之地,擁有足夠的 GPU 資源,才能夠確保 AI 技術有能力往下發展。

GPU 總結 #

所以最後做個總結的話,所謂的 GPU,他的全稱是 Graphics Processing Unit,中文翻譯為「圖形處理器」。

GPU 有一個強大的特性,就是「平行處理」,因此 GPU 就能夠藉由他內部的眾多核心,同時去處理許多的任務,加速程式的運行。

也因為 GPU 的平行處理的特性,因此 GPU 最一開始的用途,是拿來「處理影像」的,所以像是追求高畫質的遊戲玩家,就需要挑選好一點的 GPU,才能夠得到更好的畫質、更逼真的特效體驗。

而隨著 AI 浪潮的崛起,大家也發現 GPU 很適合用在「訓練模型」上面,只要透過 GPU 的平行處理的特性,就可以加速訓練模型的速度,因此研究人員就可以更快的知道當次訓練模型的結果,進而提早投入到下一次的訓練中了!

結語 #

這篇文章介紹了 GPU 是什麼,並且也介紹了為什麼 GPU 對 AI 的發展很重要,希望可以透過這篇文章,幫助大家了解 GPU 的底層邏輯是什麼,也能大概了解為什麼 NVIDIA 是現在最火熱的公司了(因為他就是專門生產高階 GPU 的公司,大家要用高階 GPU 只能跟他買)。

如果你對後端技術有興趣的話,也歡迎免費訂閱 《古古的後端筆記》電子報 ,每週二為你送上一篇後端技術分享,那我們就下一篇文章見啦!

免費訂閱《古古的後端筆記》電子報

每週二學習後端技術,和 2900 人一起變強💪