隨著技術(shù)的進(jìn)步讓我們能夠探索數(shù)據(jù)分析的未開發(fā)潛力,機(jī)器學(xué)習(xí)已經(jīng)成為一種革命性的模型,受到全世界的歡迎。從醫(yī)療保健到汽車行業(yè)再到營銷和運(yùn)輸——機(jī)器學(xué)習(xí)使組織能夠發(fā)現(xiàn)有價(jià)值的見解、提高生產(chǎn)力和高效運(yùn)營。但它是如何工作的,你應(yīng)該如何為你的機(jī)器學(xué)習(xí)項(xiàng)目選擇機(jī)器學(xué)習(xí)硬件?
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)沒有單一的定義。Nvidia 將其描述為“使用算法解析數(shù)據(jù)、從中學(xué)習(xí),然后對(duì)世界上的某些事物做出判斷或預(yù)測(cè)的實(shí)踐”。而麥肯錫公司進(jìn)一步補(bǔ)充說,機(jī)器學(xué)習(xí)“基于可以從數(shù)據(jù)中學(xué)習(xí)的算法,而不依賴于基于規(guī)則的編程。”
簡(jiǎn)而言之,機(jī)器學(xué)習(xí)是人工智能 (AI) 的一個(gè)分支,專注于開發(fā)可以學(xué)習(xí)和改進(jìn)的應(yīng)用程序和系統(tǒng),而無需對(duì)其進(jìn)行編程。假設(shè)我們必須找出一種飲料是咖啡還是茶。我們將不得不建立一個(gè)系統(tǒng)來根據(jù)收集到的數(shù)據(jù)來回答這個(gè)問題。我們使用訓(xùn)練來為這樣的問題建立模型。目標(biāo)是讓系統(tǒng)盡可能準(zhǔn)確地找到我們提出的問題的答案。
收集和收集數(shù)據(jù)
第一步是收集“訓(xùn)練”我們的“模型”所需的數(shù)據(jù)。所收集數(shù)據(jù)的質(zhì)量直接影響機(jī)器學(xué)習(xí)模型的準(zhǔn)確性,這就是為什么確保為所選模型準(zhǔn)備和處理數(shù)據(jù)至關(guān)重要的原因。
在我們的示例中,我們可以使用茶杯和咖啡杯作為數(shù)據(jù)。我們可以使用多種成分,但出于我們的目的,我們將選擇兩個(gè)簡(jiǎn)單的成分——飲料的顏色和咖啡因的量。
首先,我們需要準(zhǔn)備好各種茶和咖啡,并準(zhǔn)備好測(cè)量設(shè)備——測(cè)量顏色的光譜儀和測(cè)量咖啡因含量的紫外??范圍分光光度計(jì)。然后,我們將使用收集到的數(shù)據(jù)來建立顏色、咖啡因含量以及是茶還是咖啡的表格。這將是訓(xùn)練數(shù)據(jù)。
算法選擇
一旦我們收集了高質(zhì)量的數(shù)據(jù),下一步就是選擇最合適的模型。許多工程師和數(shù)據(jù)科學(xué)家發(fā)現(xiàn)選擇正確的算法是一項(xiàng)艱巨的任務(wù)。盡管有大量可用的算法模型,但您必須確保所選模型符合手頭數(shù)據(jù)和項(xiàng)目要求。
在我們的例子中,我們只有兩個(gè)數(shù)據(jù)點(diǎn)——顏色和咖啡因百分比。因此,我們可以使用簡(jiǎn)單的線性模型,比如邏輯回歸算法。邏輯函數(shù)的公式是y = 1 / (1 + e^-(β0 + β1x1 + … + βnxn))輸出介于 0 和 1 之間。我們不斷調(diào)整 β 值,直到我們最大化預(yù)測(cè)精度并最小化成本函數(shù)。
特征工程
下一步涉及轉(zhuǎn)換數(shù)據(jù),使其更容易解釋模型,從而提高準(zhǔn)確性。可視化您的數(shù)據(jù)對(duì)于查看您是否遺漏了不同變量之間的任何關(guān)系或調(diào)整任何數(shù)據(jù)不平衡至關(guān)重要。特征工程可以讓你突出顯示關(guān)鍵數(shù)據(jù),讓模型專注于最重要的標(biāo)準(zhǔn)。它還使您能夠?qū)㈩I(lǐng)域?qū)I(yè)知識(shí)輸入到模型中,從而進(jìn)一步提高準(zhǔn)確性。
模型訓(xùn)練
機(jī)器學(xué)習(xí)的核心是模型訓(xùn)練過程。以我們的示例為例,我們將使用我們的數(shù)據(jù)逐步增強(qiáng)模型準(zhǔn)確預(yù)測(cè)飲料是咖啡還是茶的能力。
由于我們使用的是線性模型,因此我們可以影響或更改的唯一變量是斜率和 y 軸截距。在機(jī)器學(xué)習(xí)中,上述變量的集合通常形成一個(gè)矩陣,w 表示權(quán)重,b 表示偏差。現(xiàn)在我們初始化 w 和 b 的隨機(jī)值并嘗試預(yù)測(cè)輸出。
這是一個(gè)重復(fù)的過程,只有通過反復(fù)試驗(yàn)才能完善。每次迭代都會(huì)導(dǎo)致權(quán)重和偏差的更新,這稱為一個(gè)訓(xùn)練步驟。隨著每個(gè)階段的進(jìn)展,我們的模型一步步接近咖啡和茶之間的理想分離線。訓(xùn)練完成后,我們會(huì)檢查我們的模型是否符合我們的預(yù)期。我們使用測(cè)試數(shù)據(jù)集評(píng)估我們的模型性能。這是為了查看模型如何針對(duì)新數(shù)據(jù)執(zhí)行。這反映了模型在實(shí)際使用中的表現(xiàn)。
推理
一旦我們完成了所有艱苦的工作,我們就到了機(jī)器學(xué)習(xí)的實(shí)際要點(diǎn):尋找答案。推理是我們得到這些答案的地方。我們運(yùn)行我們的項(xiàng)目,看看我們的模型如何使用給定的數(shù)據(jù)準(zhǔn)確地預(yù)測(cè)飲料是咖啡還是茶。
這里的美妙之處在于,我們可以用我們的模型來區(qū)分咖啡和茶,以代替人類的判斷。同樣的過程可以適用于任何領(lǐng)域或領(lǐng)域中出現(xiàn)的任何問題或問題,并進(jìn)行一定程度的更改。然而,機(jī)器學(xué)習(xí)系統(tǒng)的性能高度依賴于部署的硬件。一個(gè)模型可能非常出色,但如果機(jī)器學(xué)習(xí)硬件達(dá)不到標(biāo)準(zhǔn),這個(gè)過程就會(huì)變得太累人。
機(jī)器學(xué)習(xí)項(xiàng)目可能的機(jī)器學(xué)習(xí)硬件選擇
機(jī)器學(xué)習(xí)算法的計(jì)算強(qiáng)度各不相同。當(dāng)今最流行的算法,如深度神經(jīng)網(wǎng)絡(luò)或支持向量機(jī),計(jì)算量非常大。訓(xùn)練此類模型需要大量的計(jì)算資源。選擇正確的機(jī)器學(xué)習(xí)硬件是一個(gè)復(fù)雜的過程。讓我們看看機(jī)器學(xué)習(xí)的三個(gè)核心硬件選項(xiàng):處理單元、內(nèi)存和存儲(chǔ)。
處理單元
中央處理器 (CPU)
鑒于現(xiàn)在大多數(shù)機(jī)器學(xué)習(xí)模型都在 GPU 上運(yùn)行,CPU 主要用于信息預(yù)處理。他們的設(shè)計(jì)習(xí)慣于串行操作,所以他們支持增加高速緩存和更少的內(nèi)核來快速完成復(fù)雜的指令。
CPU 的優(yōu)勢(shì)在于盡可能快地按順序執(zhí)行一些復(fù)雜的操作,而機(jī)器學(xué)習(xí)通常涉及大量相對(duì)簡(jiǎn)單的線性代數(shù)計(jì)算,最好并行處理。
但是,如果您正在從事不使用復(fù)雜算法且不需要太多計(jì)算資源的機(jī)器學(xué)習(xí)項(xiàng)目,則可能不需要 GPU。
例如,如果您的機(jī)器學(xué)習(xí)項(xiàng)目是輕量級(jí)的,i7-7500U CPU 是一個(gè)不錯(cuò)的選擇,因?yàn)樗棵肟梢蕴幚?100 多個(gè)示例。Threadripper 1900x 是一款來自 AMD 的八核 CPU,具有 16 個(gè)超線程,如果您愿意使用 CPU,它是另一個(gè)不錯(cuò)的選擇。
也就是說,CPU 無法與 GPU 競(jìng)爭(zhēng),因?yàn)?CPU 經(jīng)常性能過剩但人手不足。
Intel Phi 試圖與 NVIDIA/AMD GPU 競(jìng)爭(zhēng),但前者仍然缺乏性能,如下圖所示。
如果您的任務(wù)不適合 CPU 處理,則可以尋找出色的 GPU 選項(xiàng)。
圖形處理單元 (GPU)
與傳統(tǒng)的 CPU 相比,GPU 由數(shù)千個(gè)更小的內(nèi)核組成,可以進(jìn)行廣泛的并行計(jì)算和更高的吞吐量——可以在給定的時(shí)刻完成更多的計(jì)算。
GPU 最初是為圖形處理工作負(fù)載而創(chuàng)建的,但后來發(fā)現(xiàn)它對(duì)科學(xué)、產(chǎn)品設(shè)計(jì)和其他領(lǐng)域的通用計(jì)算非常有用。機(jī)器學(xué)習(xí)數(shù)據(jù)通常存儲(chǔ)為矩陣,矩陣乘法是最常見的過程。GPU 計(jì)算非常適合此類計(jì)算,最高可將速度提高 7 倍。
談到內(nèi)存,重要的是要考慮機(jī)器學(xué)習(xí)模型的大小,以及它是否適合 GPU 的 VRAM 內(nèi)存。例如,10GB 的 VRAM 內(nèi)存對(duì)于進(jìn)行深度學(xué)習(xí)原型設(shè)計(jì)和模型訓(xùn)練的企業(yè)來說應(yīng)該足夠了。
現(xiàn)代 GPU 卡,如 RTX 系列,支持 16 位 VRAM 內(nèi)存,與舊的 32 位架構(gòu)相比,它可以幫助您以相同數(shù)量的內(nèi)存獲得近兩倍的性能。
NVIDIA GPU 通常是機(jī)器學(xué)習(xí)的絕佳選擇。CUDNN 和 CUDA 編程接口非常適用于當(dāng)前的機(jī)器學(xué)習(xí)庫,例如 Keras、Tensorflow 或 PyTorch。
以下兩種型號(hào)是不錯(cuò)的選擇,因?yàn)樗鼈兙哂谐錾男阅埽覀兘ㄗh您在為您的機(jī)器學(xué)習(xí)項(xiàng)目選擇 GPU 時(shí)考慮一下。
- Nvidia RTX 3080(8704 個(gè) CUDA 內(nèi)核,10GB GDDR6 顯存)
- Nvidia RTX 3070(5888 個(gè) CUDA 內(nèi)核,8GB GDDR6 顯存)
RTX 3080 Ti 比 RTX 3070 快 20% 到 50%,但價(jià)格也更高。雖然這些模型可能是當(dāng)今最流行的,但也有許多其他可用的機(jī)器學(xué)習(xí) GPU 選項(xiàng)。
如果預(yù)算是一個(gè)問題,您可以通過購買稍微便宜一點(diǎn)的 GPU 并簡(jiǎn)單地運(yùn)行更長(zhǎng)時(shí)間的計(jì)算來減少開支。GTX 1080 或 GTX 1070 等型號(hào)是極具成本效益的替代品。
現(xiàn)場(chǎng)可編程門陣列 (FPGA)
FPGA 以其功效著稱,可為可編程硬件資源以及 DPS 和 BRAM 塊提供靈活的架構(gòu)。這允許通過部分重新配置在運(yùn)行時(shí)重新配置數(shù)據(jù)路徑。因此,用戶沒有任何限制,可以進(jìn)行并行計(jì)算。
此外,與 CPU 和 GPU 相比,F(xiàn)PGA 具有無與倫比的靈活性。它使它們能夠進(jìn)行任意 I/O 連接,從而使用戶無需 CPU 即可連接任何設(shè)備或網(wǎng)絡(luò)。FPGA 用于功能安全具有重要作用的領(lǐng)域。因此,F(xiàn)PGA 旨在滿足各種不同應(yīng)用的安全要求。Xilinx Zynq-7000 以及 Ultrascale+TM MPSoC 是支持安全關(guān)鍵型應(yīng)用的示例。
專用集成電路 (ASIC)
顧名思義,ASIC 是為特定用途而設(shè)計(jì)的電路。這些是專門用于以更高效率完成預(yù)定義計(jì)算的設(shè)備。相比之下,CPU 可用于一般用途。甚至 GPU 也由并行處理器組成,它們可以同時(shí)執(zhí)行多種不同的算法。與 FPGA 不同,ASIC 一旦制造就不可編程。雖然您可以在 FPGA 完成其目標(biāo)后對(duì)其進(jìn)行重新編程,但 ASIC 的邏輯是永久性的。
然而,ASIC 的主要優(yōu)勢(shì)在于它們的效率,因?yàn)樗鼈冎荚趦H完成預(yù)定義的任務(wù)。這也導(dǎo)致效率提高。以 AlphaGo 為例。當(dāng)主要的 AlphaGo 版本在 TPU 上執(zhí)行時(shí),它們比在 CPU 和 GPU 集群上運(yùn)行時(shí)消耗更少的能量。所有科技巨頭都對(duì)開發(fā)和投資 ASIC 感興趣。目前,谷歌推出了 Tensor Processing Unit 的第三次迭代,這是一種為訓(xùn)練和推理而建立的 ASIC。
記憶
隨著機(jī)器學(xué)習(xí)能力呈指數(shù)增長(zhǎng),AI 應(yīng)用程序需要增強(qiáng)的內(nèi)存功能,以處理不斷增加的工作負(fù)載,同時(shí)保持效率。機(jī)器學(xué)習(xí)應(yīng)用程序要考慮的三種主要內(nèi)存類型是:
- 片上存儲(chǔ)器
- HBM(高帶寬內(nèi)存)
- GDDR內(nèi)存
片上存儲(chǔ)器是最快的存儲(chǔ)器類型,位于存儲(chǔ)器層次結(jié)構(gòu)的頂部。它靠近 CPU 和 GPU 的計(jì)算核心,這使得片上內(nèi)存非常快,但也限制了它的容量。它用作微處理器的本地緩存存儲(chǔ)器,用于存儲(chǔ)最近訪問的信息。
HBM 是一種基于 DRAM 架構(gòu)的 3-D 堆疊內(nèi)存選項(xiàng)。它旨在提高性能,使您能夠利用增加的帶寬和容量。雖然效率不如片上存儲(chǔ)器,但它仍可通過保持低數(shù)據(jù)速率確保高效運(yùn)行。
最新的 HBM 版本 HBME2 是一個(gè)值得注意的內(nèi)存選項(xiàng),適用于各種機(jī)器學(xué)習(xí)應(yīng)用程序。最后,GDDR顯存最初可追溯到游戲應(yīng)用,但人們認(rèn)可其在機(jī)器學(xué)習(xí)程序中的功效。當(dāng)前的 GDDR6 可以支持高達(dá)每秒 16 GB 的高數(shù)據(jù)速率。
貯存
存儲(chǔ)通常不是機(jī)器學(xué)習(xí)的關(guān)注點(diǎn),通常歸結(jié)為預(yù)算。擁有任何大于 3 TB 的硬盤或 SSD 數(shù)據(jù)就足夠了。如果您的口袋允許,500 GB NVMe M2 SSD 是一個(gè)不錯(cuò)的選擇。在訓(xùn)練期間存儲(chǔ)并不重要,因?yàn)槟臄?shù)據(jù)將駐留在 RAM 或 GPU VRAM 中,盡管擁有 SSD 仍然比 HDD 更好,因?yàn)樾阅芪镉兴怠?/p>