日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

隨著傳統(tǒng)的順序算法到日益流行的并行算法,GPU 將成為加速復雜計算不可或缺的工具。在 AI 和機器學習任務等具有海量數(shù)據(jù)集和復雜的神經(jīng)網(wǎng)絡的架構(gòu)中,GPU 的并行處理能力具有很大的優(yōu)勢。本文將深入探討學習。

原文鏈接:https://journal.hexmos.com/gpu-survival-toolkit/

作者 | Rijul Rajesh譯者| 彎月

責編 | 夏萌

出品 | CSDN(ID:CSDNnews)

為什么僅有 CPU 的知識還不夠

在如今的 AI 時代,大多數(shù)開發(fā)人員接受過 CPU 相關(guān)知識的培訓。這些知識已成為教學內(nèi)容的一部分,因此一般我們都會以面向 CPU 的方式思考和解決問題。

然而,CPU 的問題在于它們依賴于順序架構(gòu)。在當今世界,我們依賴于大量并行任務,而 CPU 并不適合這些情況。

開發(fā)人員面臨的問題包括:

執(zhí)行并行任務

傳統(tǒng)的 CPU 是線性運行的,一次執(zhí)行一條指令。有這種限制是因為 CPU 通常擁有若干針對單線程性能進行過優(yōu)化的強大核心。

在面對多個任務時,CPU 會分配資源來依次處理每個任務,即順序執(zhí)行指令。在需要同時關(guān)注大量任務的情況下,這種方法會變得效率低下。

雖然我們可以通過多線程等技術(shù)來提高 CPU 的性能,但其基本設計理念優(yōu)先考慮的是順序執(zhí)行。

高效運行 AI 模型

AI模型采用 Transformer 等先進架構(gòu),利用并行處理來提高性能。與順序運行的舊式循環(huán)神經(jīng)網(wǎng)絡 (RNN)不同,GPT 等現(xiàn)代Transformer 可以同時處理多個單詞,從而提高訓練的效率和能力。因為當我們并行訓練時,就可以得到更大的模型,而更大的模型會生成更好的輸出。

并行性的概念超越了自然語言處理,擴展到了圖像識別等其他領(lǐng)域。例如,圖像識別架構(gòu) Ale.NET 可以同時處理圖像的不同部分,展現(xiàn)出了并行處理的強大功能,從而實現(xiàn)了準確的模式識別。

然而,以單線程性能為重心設計的 CPU 很難充分發(fā)揮并行處理的潛力。它們無法有效地分配和執(zhí)行復雜的 AI 模型所需的大量并行計算。

因此,GPU 的開發(fā)變得越來越普遍,為的是滿足 AI 應用程序中并行處理的特定需求,從而實現(xiàn)更高的效率和更快的計算。

如何利用 GPU 驅(qū)動開發(fā)解決這些問題

GPU 核心的大規(guī)模并行性

與 CPU 的核心相比,工程師們設計的 GPU 具有更小、高度專業(yè)化的核心。這種架構(gòu)允許 GPU 同時執(zhí)行多個并行任務。

GPU中的大量核心非常適合依賴于并行性的工作負載,例如圖形渲染和復雜的數(shù)學計算。

在本文中,我們將演示如何利用 GPU 的并行性來縮短完成復雜的任務所需的時間。

AI 模型中使用的并行性

AI模型,特別是基于 TensorFlow 等深度學習框架構(gòu)建的模型,展現(xiàn)出了高度的并行性。神經(jīng)網(wǎng)絡的訓練涉及大量矩陣運算,而 GPU 憑借其龐大的核心數(shù)量,能夠并行化這些運算。TensorFlow 以及其他流行的深度學習框架都進行了優(yōu)化,能夠利用 GPU 的能力來加速模型的訓練和推理。

在本文中,我們將展示如何利用 GPU 的強大功能來訓練神經(jīng)網(wǎng)絡。

CPU與 GPU 有何不同?CPU

順序架構(gòu)

中央處理單元(CPU)的設計重心是順序處理。它們擅長線性執(zhí)行一組指令。

CPU針對需要高單線程性能的任務進行了優(yōu)化,例如

  • 通用計算
  • 系統(tǒng)操作
  • 處理涉及條件分支的復雜算法

處理并行任務的核心數(shù)量有限

CPU的核心數(shù)量較少,消費級的處理器通常有 2~16個核心。每個核心都能夠獨立處理自己的指令集。

GPU

并行架構(gòu)

圖形處理單元(GPU)采用并行架構(gòu)設計,能夠高效地執(zhí)行并行處理任務。

適合于:

  • 渲染圖形
  • 執(zhí)行復雜的數(shù)學計算
  • 運行可并行的算法

GPU通過將多個任務分解為更小的并行子任務來同時處理多個任務。

數(shù)千個用于并行任務的核心

與 CPU 不同,GPU 擁有大量核心,通常高達數(shù)千個。這些核心組織成了流式多處理器(SM)或類似的結(jié)構(gòu)。

豐富的核心使 GPU 能夠同時處理大量數(shù)據(jù),非常適合并行任務,例如圖像和視頻處理、深度學習和科學模擬等。

AWS GPU 實例:初學者指南

Amazon Web Services(AWS)提供各種用于機器學習等任務的 GPU 實例。

以下是不同類型的 AWS GPU 實例及其用例:

通用 GPU 實例

  • P3 和 P4 實例作為多功能通用 GPU 實例,非常適合各種工作負載。
  • 其中包括機器學習訓練和推理、圖像處理和視頻編碼。它們的各方面能力都很平衡,因此成為了各種計算任務的可靠選擇。
  • 價格:p3.2xlarge實例的費用為每小時 3.06 美元。
  • 提供 1 個 16 GB GPU 內(nèi)存的 NVIDIA Tesla V100 GPU。

推理優(yōu)化 GPU 實例

  • 推理指的是通過訓練好的 AI 模型運行實時數(shù)據(jù)以進行預測或解決任務的過程。
  • P5 和 Inf1 實例專門針對機器學習推理,在十分注重低延遲和成本的場合中有著出色表現(xiàn)。
  • 價格:p5.48xlarge實例的費用為每小時 98.32 美元。
  • 提供 8 個 NVIDIA H100 GPU,每個 GPU 80 GB 內(nèi)存,共計 640 GB 顯存。

圖形優(yōu)化 GPU 實例

  • G4 實例主要用于處理圖形密集型任務。
  • 視頻游戲開發(fā)人員可以使用 G4 實例來渲染視頻游戲的 3D 圖形。
  • 價格:g4dn.xlarge的費用為每小時 0.526 美元。
  • 提供 1 個 16 GB 內(nèi)存的 NVIDIA T4 GPU。

托管 GPU 實例

  • Amazon SageMaker是一項機器學習托管服務。提供支持各種 GPU 實例的訪問,包括 P3、P4 和 P5 實例。
  • 對于希望接觸機器學習,同時不想操心底層基礎設施管理的組織來說,SageMaker 是一個不錯的選擇。
  • 價格:https://aws.amazon.com/sagemaker/pricing/?ref=journal.hexmos.com

使用 Nvidia 的 CUDA 進行GPU 驅(qū)動開發(fā)CUDA是什么?

CUDA是一款 NVIDIA 開發(fā)的并行計算平臺和編程模型,可幫助開發(fā)人員利用 GPU 加速器的強大功能來提高應用程序的速度。

下面,我們將使用 CUDA 來展示一個示例。

設置 CUDA

你可以按照以下步驟操作,在計算機上設置 CUDA。

  • 下載CUDA(https://developer.nvidia.com/cuda-downloads?ref=journal.hexmos.com)
  • 通過上面的鏈接,下載基本的安裝程序以及驅(qū)動程序安裝程序。
  • 打開主文件夾中的.bashrc,將以下內(nèi)容添加到文件中: export PATH="/usr/local/cuda-12.3/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH"
  • 執(zhí)行以下命令 sudo apt-get install cuda-toolkit sudo apt-get install nvidia-gds
  • 重啟系統(tǒng)。
基本命令

在安裝好 CUDA 后,你可以嘗試以下命令。

LSPCI | grep VGA

此命令可識別并列出系統(tǒng)中的 GPU。

nvidia-smi

此命令為 NVIDIA System Management Interface(NVIDIA 系統(tǒng)管理界面)的縮寫,可提供系統(tǒng)中有關(guān) NVIDIA GPU 的詳細信息,包括利用率、溫度、內(nèi)存使用情況等。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

sudo lshw -C display

此命令可提供系統(tǒng)中有關(guān)顯示控制器(包括顯卡)的詳細信息。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

inxi -G

此命令可提供有關(guān)圖形子系統(tǒng)的信息,包括有關(guān) GPU 和顯示器的詳細信息。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

sudo hwinfo --gfxcard

此命令可提供系統(tǒng)中有關(guān)顯卡的詳細信息。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

使用 CUDA 框架

下面,我們來展示 CUDA 的一些具體功能。

數(shù)組加法問題

數(shù)組加法問題很適合演示 GPU 并行化。

考慮以下數(shù)組:

  • 數(shù)組 A = [1,2,3,4,5,6]
  • 數(shù)組 B = [7,8,9,10,11,12]
  • 我們需要計算每個元素之和,并存儲在數(shù)組C中。
  • 即 C = [1+7,2+8,3+9,4+10,5+11,6+12] = [8,10,12,14,16,18]

如果由 CPU 來執(zhí)行整個操作,則代碼如下:

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

前一個循環(huán)遍歷數(shù)組的每個元素,并依次執(zhí)行加法。當需要處理大量數(shù)字時,這種方法就會由于其順序執(zhí)行的性質(zhì)而變得緩慢。

為了克服這個限制,GPU 提供了一種解決方案:并行化加法運算。不同于依次執(zhí)行運算的 CPU,GPU 可以同時執(zhí)行多項加法。

例如,運算 1+7、2+8、3+9、4+10、5+11 和 6+12 可以借助 GPU 并行化同時執(zhí)行。

利用 CUDA,實現(xiàn)并行加法的代碼如下:

我們將使用內(nèi)核文件(.cu)進行演示。

我們來逐行講解代碼。

  • __global__ 表明該函數(shù)是一個內(nèi)核函數(shù),將在 GPU 上調(diào)用。
  • vectorAdd 接受三個整數(shù)指針(a、b 和 c)作為參數(shù),代表相加的向量。
  • threadIdx.x 獲取當前線程的索引(在一維網(wǎng)格中)。
  • 向量 a 和 b 的相應元素之和存儲在向量 c 中。

下面,我們來看看 main 函數(shù)。

創(chuàng)建指針 cudaA、cudaB 和 cudaC,指向 GPU 上的內(nèi)存。

我們使用 cudaMalloc,為向量 cudaA、cudaB 和 cudaC 分配 GPU上的內(nèi)存。

使用 cudaMemcpy 將向量 a 和b 的內(nèi)容從主機復制到 GPU。

使用一個塊和多個(數(shù)量等于向量大小)線程調(diào)用內(nèi)核函數(shù) vectorAdd。

將結(jié)果向量 cudaC 從 GPU 復制回主機。

然后就可以正常輸出結(jié)果了:

我們使用 nvcc 命令執(zhí)行這段代碼。

輸出如下:

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

完整的代碼,請參見這里(https://Github.com/RijulTP/GPUToolkit/tree/main/array-addition?ref=journal.hexmos.com)。

使用 GPU 優(yōu)化 Python/ target=_blank class=infotextkey>Python 中的圖像生成

下面,我們來探討如何使用 GPU 處理來優(yōu)化性能密集型任務,例如圖像生成。

曼德博集合是一種數(shù)學結(jié)構(gòu),可根據(jù)指定方程中特定數(shù)字的行為形成復雜的視覺模式。生成這種集合是一項資源密集型操作。

通過下面的代碼片段,你可以了解到使用 CPU 處理生成曼德博集合的傳統(tǒng)方法,該方法的速度很慢。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

上面的代碼生成結(jié)果需要耗費 4.07 秒。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

為了提高速度,我們可以通過 Numba 庫利用 GPU 的并行化。具體方法如下。

首先,我們導入 Numba 庫的即時編譯、用于 GPU 加速的 CUDA 以及其他實用程序。

@jit指示 Numba 執(zhí)行即時編譯,將 Python 代碼轉(zhuǎn)換為機器代碼,以提高執(zhí)行速度。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

  • mandel_gpu 是使用cuda.jit 創(chuàng)建的 mandel 函數(shù)的 GPU 兼容版本。它可以將 mandel 的邏輯卸載到 GPU。
  • 為此,我們需要使用@cuda.jit,并指定函數(shù)參數(shù)的數(shù)據(jù)類型(f8 表示浮點數(shù),uint32 表示無符號整數(shù))。
  • device=True 參數(shù)表示該函數(shù)將在GPU 上運行。

根據(jù)定義,mandel_kernel 將在 CUDA GPU 上執(zhí)行。負責跨 GPU 線程并行生成曼德博集合。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

接下來,我們可以在 create_fractal_gpu 函數(shù)中使用 GPU 加速的曼德博集合生成。create_fractal_gpu 函數(shù)需要分配 GPU 內(nèi)存,啟動 GPU 內(nèi)核 (mandel_kernel),并將結(jié)果復制回 CPU。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

上述代碼只需 0.0046 秒內(nèi)就能執(zhí)行完成。比之前的 CPU 的代碼要快許多。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

完整的代碼,請參見這里(https://github.com/RijulTP/GPUToolkit/tree/main/mandelbrot?ref=journal.hexmos.com)。

使用 GPU 訓練區(qū)分貓狗的神經(jīng)網(wǎng)絡

GPU在 AI 領(lǐng)域的應用是如今的熱門話題之一,出于演示的目的,下面我們來創(chuàng)建一個用于區(qū)分貓和狗神經(jīng)網(wǎng)絡。

準備工作

  • CUDA
  • 安裝Tensorflow:pip install tensorflow[and-cuda]
  • 我們將使用kaggle 的貓狗數(shù)據(jù)集。
  • 下載完成后,解壓,將訓練文件夾中的貓狗圖片整理到不同的子文件夾,如下所示:

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

導入庫:

  • pandas 和 numpy:用于操作數(shù)據(jù)。
  • Sequential:用于創(chuàng)建神經(jīng)網(wǎng)絡中疊放的線性層。
  • Convolution2D、MaxPooling2D、Dense 和 Flatten:構(gòu)建卷積神經(jīng)網(wǎng)絡(CNN)的各層。
  • ImageDataGenerator:用于在訓練期間進行實時數(shù)據(jù)增強。

初始化卷積神經(jīng)網(wǎng)絡(CNN)

加載訓練數(shù)據(jù)

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

構(gòu)建 CNN 架構(gòu)

編譯模型

訓練模型

訓練完成后,使用 classifier.save 將模型存儲在 .h5 文件中。

在下面的代碼中,我們將使用 trained_model.h5 來識別貓和狗。

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

輸出如下:

AI 時代的 GPU 生存工具包:每個開發(fā)人員必須了解的基本知識

完整的代碼,請參見這里(https://github.com/RijulTP/GPUToolkit/tree/main/neural-network?ref=journal.hexmos.com)。

總結(jié)

在即將到來的 AI 時代,GPU 是不容忽視的存在,我們應該深入了解它的能力。

隨著我們從傳統(tǒng)的順序算法過渡到日益流行的并行算法,GPU 將成為加速復雜計算不可或缺的工具。在 AI 和機器學習任務等具有海量數(shù)據(jù)集和復雜的神經(jīng)網(wǎng)絡的架構(gòu)中,GPU 的并行處理能力具有很大的優(yōu)勢。

此外,GPU 已超出傳統(tǒng)的機器學習領(lǐng)域,在科學研究、模擬和數(shù)據(jù)密集型任務中也有找到了應用。事實證明,GPU 的并行處理能力有助于解決藥物發(fā)現(xiàn)、氣候建模以及金融模擬等各個領(lǐng)域的難題。

分享到:
標簽:GPU
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定