使用 PyTorch/CUDA 在 GPU 上撰寫反饋類神經網路程式

更新於 2024/11/10閱讀時間約 7 分鐘

我們在輝達 nVidia Jetson Orin Nano 的裝置上,可以透過 PyToch 以及 CUDA 來使得反饋類神經網路的運算,不透過 CPU 而交由 GPU 來作運算執行;它與原來在 CPU 上執行 PyTorch 的反饋類神經網路的撰寫程式差異不大,這也是我們使用 PyTorch 的好處;絕大部份在 GPU 的平行運算的工作,都由 PyTorch 來解決掉了,程式撰寫只需要專注在程式邏輯的開發。

在同時有 CPU 及 GPU 的運算上,因為所有的人機界面;包括文字輸出入、檔案輸出入以及繪圖,都是直接由 CPU 來負責,而 GPU 只能執行數值計算的部份。因此在使用 CUDA 作 GPU 的運算時,就必須要將資料以及變數在 CPU 及 GPU 之間搬移;這樣才能有效地使用 CUDA/GPU 加速運算的好處。

raw-image


  • 模型學習目標

首先,我們還是先以「墨西帽」的模型作為例子來作說明。

raw-image
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-2*np.pi,2*np.pi,0.1)
y=np.sin(x)*x
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x,y,'b.')
plt.grid()
plt.show()
  • 建立類神經網路類別

再來按照原來在 CPU 環境上,同樣建立類神經網路類別;這一部份也沒有改變。

import torch
from torch import nn

class classNeural(nn.Module):
def __init__(self,n_input,n_hidden,n_output):
super().__init__()
self.n_input=n_input
self.n_hidden=n_hidden
self.n_output=n_output
#--------
self.layer1=nn.Linear(n_input,n_hidden)
self.layer2=nn.Linear(n_hidden,n_output)
self.active=nn.Sigmoid()
#--------
def forward(self,x):
x=self.active(self.layer1(x))
return self.layer2(x)


  • 確認 CUDA/GPU 裝置準備完備

接下來必需要詢問 PyTorch,目前的裝置是否支援 CUDA 的 GPU 運算。

device=torch.device('cpu')
if torch.cuda.is_available():
device=torch.device('cuda')
  • 資料搬移到 GPU

然後,我們要把訓練資料透過「to(‘cuda’)」這個函數,將資料從 CPU 搬到 GPU 上。

X_train=torch.tensor(x.astype('float32')).unsqueeze(dim=1).to(device)
Y_train=torch.tensor(y.astype('float32')).unsqueeze(dim=1).to(device)
  • 類神經網路搬移到 GPU

再來,創建類神經網路變數,並且透過「to(‘cuda’)」,將類神經網路也搬到 GPU 上。

torch.manual_seed(13)
neural=classNeural(1,10,1).to(device)
  • 在 GPU 進行類神經網路訓練

一般來說,最花費運算時間及資源的,就是訓練類神經網路,也是最需要使用 GPU 的部份;這一段程式的寫法其實與在 CPU 上的寫法是一樣的,但是因為訓練資料以及類神經網路變數都在 GPU 上,所以整個運算也就會在 GPU 上面執行。

neural.train()
n_epoche=5000
mae_x=[]
mae_y=[]

for epoche in range(n_epoche):
Y_pred=neural(X_train)
loss=loss_fn(Y_pred,Y_train)
optimizer.zero_grad()
loss.backward()
optimizer.step()
  • 輸出在 GPU 訓練好的模型的預測數值

最後,在輸出訓練好的類神經網路模型的預測值的時候,要注意所有的輸出到人機界面的數值,包括文字顯示或繪圖或檔案的資料,都必須要透過函數「to(‘cpu’)」由 GPU 搬到 CPU 上,才能進行。

neural.eval()
with torch.inference_mode():
Y_pred=neural(X_train)
y_pred=Y_pred.to("cpu").numpy()
#—————————————————
plt.plot(x,y,'b.',label='training data')
plt.plot(x,y_pred,'r-',label='prediction')
plt.grid()
plt.legend(fontsize=12)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
raw-image
  • 觀察並確認類神經網路在 GPU 上運算

在執行類神經網路訓練時,我們可以同時透過 Jetson Orin Nano 的「jtop」指令,觀察在 Jetson Orin Nano 裝置上 GPU 的執行狀態,可以確認主要的計算都在 GPU 上面執行。

raw-image




avatar-img
4會員
17內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
甘果的沙龍 的其他內容
本篇文章介紹如何使用 PyTorch 這個強大的工具程式庫來建立一個反饋類神經網路。從單變數的「墨西哥帽」模型學習,到設定類神經網路的結構和訓練方法,資料轉換、類神經網路創建以及訓練過程的步驟。此外,也分析訓練過程中的誤差趨勢,幫助理解模型性能,適合希望快速掌握 PyTorch 的人工智慧開發者。
本文說明在安裝實體具有多核 GPU 的環境下,可以透過 Python 「多執行緒的」程式,讓 CPU 及 GPU 依照特性,各自同時進行運算,得到最好的算力配置。
本文描敘如何配合 nVidia Jetson Orin Nano 的多核心 GPU 的裝置,利用 PyTorch 來作 CUDA python 程式開發。
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
本文介紹如何在Python開發過程中建立虛擬環境以避免程式庫衝突,並使用Jupyter Notebook切換不同的虛擬環境。讓開發者能夠輕鬆地在不同環境中工作,提升開發效率。本文涵蓋從建立虛擬環境到管理Jupyter核心的完整步驟,適合希望優化其Python開發流程的讀者。
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
本篇文章介紹如何使用 PyTorch 這個強大的工具程式庫來建立一個反饋類神經網路。從單變數的「墨西哥帽」模型學習,到設定類神經網路的結構和訓練方法,資料轉換、類神經網路創建以及訓練過程的步驟。此外,也分析訓練過程中的誤差趨勢,幫助理解模型性能,適合希望快速掌握 PyTorch 的人工智慧開發者。
本文說明在安裝實體具有多核 GPU 的環境下,可以透過 Python 「多執行緒的」程式,讓 CPU 及 GPU 依照特性,各自同時進行運算,得到最好的算力配置。
本文描敘如何配合 nVidia Jetson Orin Nano 的多核心 GPU 的裝置,利用 PyTorch 來作 CUDA python 程式開發。
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
本文介紹如何在Python開發過程中建立虛擬環境以避免程式庫衝突,並使用Jupyter Notebook切換不同的虛擬環境。讓開發者能夠輕鬆地在不同環境中工作,提升開發效率。本文涵蓋從建立虛擬環境到管理Jupyter核心的完整步驟,適合希望優化其Python開發流程的讀者。
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
你可能也想看
Google News 追蹤
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
Thumbnail
神經處理單元(NPU)主要用於加速人工智慧(AI)和機器學習(ML)任務。 以下是一些主要的應用領域和使用者: AI和機器學習:NPU是人工智慧和機器學習領域的直接受益者。這些技術依賴數據而蓬勃發展,NPU擅長消化和解釋大量資料集,使機器能夠以前所未有的速度學習。 智慧型設備和物聯網:在智慧型
這陣子輝達真的太熱門了,有很多人分享GPU硬體相關的技術,也有人分享與老黃一起工作的點點滴滴,總之非常精彩。 而老黃也說過輝達不只有硬體還有軟體,講到軟體大家第一個聯想到的是CUDA,有了CUDA的加持讓NVIDIA的GPU有更好的效能,不過NVIDIA另一個佈局已久的平台比較少人提起-Omniv
Thumbnail
NVIDIA的新目標:AI晶圓代工 NVIDIA宣布,他們的目標是成為支援企業開發AI應用程式的「AI晶圓代工」。這與接受客戶委託製造半導體的代工廠相似,NVIDIA將提供技術、專業知識和基礎設施,幫助實現AI應用程式。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
NVIDIA、Intel、Tenstorrent和RISC-V在AI半導體領域的競爭和合作。Intel在AI領域推出了一系列產品,Tenstorrent和Rapidus合作開發新技術,而RISC-V開放源碼指令集架構也受到了廣泛關注。這些內容都展示了AI半導體市場的技術革新和競爭激烈的情況。
Thumbnail
這篇文章探討了NVIDIA在推論式AI半導體市場的挑戰,以及介紹了Intel在AI領域的強化舉措。文章中提到了新興企業可能有機會取代現有市場領導者,並討論了RISC-V技術在AI半導體市場的應用和其他相關動向。
Thumbnail
科技巨擘聯手推進生成式AI發展 開創人工智慧新時代 在生成式人工智慧(Generative AI)的浪潮中,雲端運算龍頭AWS和晶片巨擘NVIDIA攜手合作,推出一系列革命性的基礎設施、軟體和服務。
Thumbnail
NVIDIA 黃仁勳 - AI人工智慧時代如何帶動全球新產業革命(個人紀錄用) 🇺🇸Omniverse 就是未來集大成,而加速運算、人工智慧就是兩個最重要的技術核心 🇺🇸CPU效能的擴充速度正在大幅降低,提出「運算通膨」概念
Thumbnail
本文透過 Cloud Native Taiwan User Group 之 Infra Labs 雲端主機進行深度學習環境部署,包含 Nvidia GPU driver、PyTorch、Jupyter Lab 等,並進行相關安裝過程說明。
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
Thumbnail
神經處理單元(NPU)主要用於加速人工智慧(AI)和機器學習(ML)任務。 以下是一些主要的應用領域和使用者: AI和機器學習:NPU是人工智慧和機器學習領域的直接受益者。這些技術依賴數據而蓬勃發展,NPU擅長消化和解釋大量資料集,使機器能夠以前所未有的速度學習。 智慧型設備和物聯網:在智慧型
這陣子輝達真的太熱門了,有很多人分享GPU硬體相關的技術,也有人分享與老黃一起工作的點點滴滴,總之非常精彩。 而老黃也說過輝達不只有硬體還有軟體,講到軟體大家第一個聯想到的是CUDA,有了CUDA的加持讓NVIDIA的GPU有更好的效能,不過NVIDIA另一個佈局已久的平台比較少人提起-Omniv
Thumbnail
NVIDIA的新目標:AI晶圓代工 NVIDIA宣布,他們的目標是成為支援企業開發AI應用程式的「AI晶圓代工」。這與接受客戶委託製造半導體的代工廠相似,NVIDIA將提供技術、專業知識和基礎設施,幫助實現AI應用程式。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
NVIDIA、Intel、Tenstorrent和RISC-V在AI半導體領域的競爭和合作。Intel在AI領域推出了一系列產品,Tenstorrent和Rapidus合作開發新技術,而RISC-V開放源碼指令集架構也受到了廣泛關注。這些內容都展示了AI半導體市場的技術革新和競爭激烈的情況。
Thumbnail
這篇文章探討了NVIDIA在推論式AI半導體市場的挑戰,以及介紹了Intel在AI領域的強化舉措。文章中提到了新興企業可能有機會取代現有市場領導者,並討論了RISC-V技術在AI半導體市場的應用和其他相關動向。
Thumbnail
科技巨擘聯手推進生成式AI發展 開創人工智慧新時代 在生成式人工智慧(Generative AI)的浪潮中,雲端運算龍頭AWS和晶片巨擘NVIDIA攜手合作,推出一系列革命性的基礎設施、軟體和服務。
Thumbnail
NVIDIA 黃仁勳 - AI人工智慧時代如何帶動全球新產業革命(個人紀錄用) 🇺🇸Omniverse 就是未來集大成,而加速運算、人工智慧就是兩個最重要的技術核心 🇺🇸CPU效能的擴充速度正在大幅降低,提出「運算通膨」概念
Thumbnail
本文透過 Cloud Native Taiwan User Group 之 Infra Labs 雲端主機進行深度學習環境部署,包含 Nvidia GPU driver、PyTorch、Jupyter Lab 等,並進行相關安裝過程說明。