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

甘果-avatar-img
發佈於程式
更新 發佈閱讀 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
甘果的沙龍
5會員
33內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
甘果的沙龍的其他內容
2025/04/26
本文章說明如何在已安裝 Python 3.9 的 iMac mini 上設定 Python 虛擬環境,以及如何使用 venv 工具、安裝常用函式庫(如 numpy、pyTorch 等),並設定 Jupyter 連動不同 Python 虛擬環境。
Thumbnail
2025/04/26
本文章說明如何在已安裝 Python 3.9 的 iMac mini 上設定 Python 虛擬環境,以及如何使用 venv 工具、安裝常用函式庫(如 numpy、pyTorch 等),並設定 Jupyter 連動不同 Python 虛擬環境。
Thumbnail
2025/04/19
這篇文章說明如何在iMac mini M4上設定Jupyter Notebook作為遠端程式設計伺服器,方便使用iPad進行程式開發。文章涵蓋Jupyter Notebook的安裝、設定遠端連線以及建立可執行的shell script,讓伺服器能持續運作。
Thumbnail
2025/04/19
這篇文章說明如何在iMac mini M4上設定Jupyter Notebook作為遠端程式設計伺服器,方便使用iPad進行程式開發。文章涵蓋Jupyter Notebook的安裝、設定遠端連線以及建立可執行的shell script,讓伺服器能持續運作。
Thumbnail
2025/04/10
本文介紹如何將蘋果iMac mini作為CP值最高的人工智慧程式設計伺服器,搭配 iPad 進行遠端程式設計工作。文章說明瞭啟動遠端服務、連接SSH伺服器、使用外接硬碟及連接FTP伺服器等步驟,並推薦了相關應用 app。
Thumbnail
2025/04/10
本文介紹如何將蘋果iMac mini作為CP值最高的人工智慧程式設計伺服器,搭配 iPad 進行遠端程式設計工作。文章說明瞭啟動遠端服務、連接SSH伺服器、使用外接硬碟及連接FTP伺服器等步驟,並推薦了相關應用 app。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
CUDA(Compute Unified Device Architecture) 是由 NVIDIA公司開發的並行計算平台 和 程式設計模型,主要用於利用 GPU(圖形處理器)的強大運算能力來加速通用計算任務。以下是其核心概念與應用: 一、核心概念 GPU 加速計算: 傳統上 G
Thumbnail
CUDA(Compute Unified Device Architecture) 是由 NVIDIA公司開發的並行計算平台 和 程式設計模型,主要用於利用 GPU(圖形處理器)的強大運算能力來加速通用計算任務。以下是其核心概念與應用: 一、核心概念 GPU 加速計算: 傳統上 G
Thumbnail
CUDA Core(通用計算單元) 是 NVIDIA GPU(圖形處理器)中的基本計算單元,專門設計用來執行並行計算任務。它們是 NVIDIA CUDA 平台的核心部分,用來處理圖形渲染和一般計算任務,特別是那些需要大規模數據運算的應用,例如遊戲圖形、科學模擬和人工智慧(AI)。 1. CUD
Thumbnail
CUDA Core(通用計算單元) 是 NVIDIA GPU(圖形處理器)中的基本計算單元,專門設計用來執行並行計算任務。它們是 NVIDIA CUDA 平台的核心部分,用來處理圖形渲染和一般計算任務,特別是那些需要大規模數據運算的應用,例如遊戲圖形、科學模擬和人工智慧(AI)。 1. CUD
Thumbnail
本文說明在安裝實體具有多核 GPU 的環境下,可以透過 Python 「多執行緒的」程式,讓 CPU 及 GPU 依照特性,各自同時進行運算,得到最好的算力配置。
Thumbnail
本文說明在安裝實體具有多核 GPU 的環境下,可以透過 Python 「多執行緒的」程式,讓 CPU 及 GPU 依照特性,各自同時進行運算,得到最好的算力配置。
Thumbnail
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
Thumbnail
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
Thumbnail
本文介紹如何在 nVidia Jetson Orin Nano 裝置上安裝 PyTorch,並運用其 Python 及 CUDA 環境進行機器學習和人工智慧的開發。提供詳細步驟。適合希望在該平臺上開展研究與開發的使用者。
Thumbnail
本文介紹如何在 nVidia Jetson Orin Nano 裝置上安裝 PyTorch,並運用其 Python 及 CUDA 環境進行機器學習和人工智慧的開發。提供詳細步驟。適合希望在該平臺上開展研究與開發的使用者。
Thumbnail
輝達的 Jetson Orin Nano 是一款小型、平價但功能強大的電腦,擁有完整的平行運算與人工智慧能力;對學術或教學用途非常適合。本文將介紹如何安裝 Python 和 CUDA 環境,並探討其在遠端伺服器替代方案的優勢,是學習與研究 AI 和平行運算的理想選擇。
Thumbnail
輝達的 Jetson Orin Nano 是一款小型、平價但功能強大的電腦,擁有完整的平行運算與人工智慧能力;對學術或教學用途非常適合。本文將介紹如何安裝 Python 和 CUDA 環境,並探討其在遠端伺服器替代方案的優勢,是學習與研究 AI 和平行運算的理想選擇。
Thumbnail
要使用 CUDA(Compute Unified Device Architecture)來加速計算,首先需要在你的系統上設置和安裝相關的工具。CUDA 是由 NVIDIA 開發的平行計算框架,用於加速大量數據的運算,尤其在圖像處理、機器學習、科學計算等領域很有應用。 可以參考官方的安裝方式 以
Thumbnail
要使用 CUDA(Compute Unified Device Architecture)來加速計算,首先需要在你的系統上設置和安裝相關的工具。CUDA 是由 NVIDIA 開發的平行計算框架,用於加速大量數據的運算,尤其在圖像處理、機器學習、科學計算等領域很有應用。 可以參考官方的安裝方式 以
Thumbnail
神經處理單元(NPU)主要用於加速人工智慧(AI)和機器學習(ML)任務。 以下是一些主要的應用領域和使用者: AI和機器學習:NPU是人工智慧和機器學習領域的直接受益者。這些技術依賴數據而蓬勃發展,NPU擅長消化和解釋大量資料集,使機器能夠以前所未有的速度學習。 智慧型設備和物聯網:在智慧型
Thumbnail
神經處理單元(NPU)主要用於加速人工智慧(AI)和機器學習(ML)任務。 以下是一些主要的應用領域和使用者: AI和機器學習:NPU是人工智慧和機器學習領域的直接受益者。這些技術依賴數據而蓬勃發展,NPU擅長消化和解釋大量資料集,使機器能夠以前所未有的速度學習。 智慧型設備和物聯網:在智慧型
Thumbnail
借鏡於真實神經系統,科學家正在研發神經型態的人工智慧。其中包括矽晶體的神經型態人工智慧,例如脈衝神經網路(SNN),或者利用材料的物理或化學特性來產生類似突觸的可塑性記憶(memristive)的特性。本文將簡介最新的神經型態人工智慧,他們將開啟低耗能高效率的人工智慧時代。
Thumbnail
借鏡於真實神經系統,科學家正在研發神經型態的人工智慧。其中包括矽晶體的神經型態人工智慧,例如脈衝神經網路(SNN),或者利用材料的物理或化學特性來產生類似突觸的可塑性記憶(memristive)的特性。本文將簡介最新的神經型態人工智慧,他們將開啟低耗能高效率的人工智慧時代。
Thumbnail
(2023/4/16) 聽完‎在 Apple Podcasts 上的《財報狗 - 掌握台股美股時事議題》:205.【財經時事放大鏡】NVIDIA GTC 與美國晶片法 Q: 為何語言要大量訓練深度學習不是用擅長複雜運算/電晶體密度也較高的CPU? 其實也不了解GPU/CPU的差異關鍵在哪? A:(f
Thumbnail
(2023/4/16) 聽完‎在 Apple Podcasts 上的《財報狗 - 掌握台股美股時事議題》:205.【財經時事放大鏡】NVIDIA GTC 與美國晶片法 Q: 為何語言要大量訓練深度學習不是用擅長複雜運算/電晶體密度也較高的CPU? 其實也不了解GPU/CPU的差異關鍵在哪? A:(f
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News