TensorFlow vs. PyTorch:深度學習框架與硬體加速技術

更新於 發佈於 閱讀時間約 5 分鐘

上一篇講理論跟數學,真的是很難連結到實際的運用。

在訓練深度學習模型時,選擇合適的開發框架硬體加速技術可以大幅提升效率。這篇先快速介紹 TensorFlowPyTorch,並說明 CPU、GPU、CUDA 如何影響運算效能。下一篇會實作 PyTorch。

參考影片:TensorFlow in 100 Seconds

CUDA Simply Explained - GPU vs CPU Parallel Computing for Beginners

PyTorch in 100 Seconds


🏗️ TensorFlow 簡介

TensorFlow 由 Google 開發,是目前最受歡迎的深度學習框架之一,擁有完整的生態系統。

📌 特色

  • 處理多維度的資料(Tensor 是一種多維的向量或矩陣(multi-dimensional arrays))
  • 靜態計算圖(Graph-Based Execution):讓模型可以優化計算並進行分布式訓練。
  • Keras API:內建 Keras,提供直覺的高層 API,適合初學者。
  • 跨平台:可運行於手機(TensorFlow Lite)、瀏覽器(TensorFlow.js)、雲端(TPU 支援)。

📌 適合的應用場景

  • 大規模模型(如 BERT、GPT),適合企業應用和雲端部署。
  • Spotify 推薦音樂、醫療使用看核磁共振的疾病報告分析、自動駕駛。
  • 需要 TensorFlow Serving 部署的應用,如 AI 服務或 API。

🔥 PyTorch 簡介

PyTorch 由 Meta(前 Facebook)開發,近年來成為研究領域的主流框架,因為它更靈活且易於除錯

📌 特色

  • 動態計算圖(Eager Execution):允許即時運行並方便除錯,類似 Python 的風格。
  • TorchScript:能將動態圖轉為靜態圖,提升執行效率。
  • 支援自動微分(Autograd):大幅簡化反向傳播的實作。

📌 適合的應用場景

  • 學術研究、原型開發:動態計算圖讓研究人員更快實驗新架構。
  • 電腦視覺、自然語言處理:很多 SOTA(State-of-the-Art)模型都使用 PyTorch。

👉 簡單來說TensorFlow 適合企業級部署,而 PyTorch 更適合研究與開發!


來玩玩看

  1. 到官網安裝

https://pytorch.org/

在 cmd 命令提示元貼上安裝的指令 (我沒有cuda,先用CPU裝)

raw-image
raw-image

手寫數字辨識(MNIST)

  • MNIST 資料集 包含 0 到 9 共 10 種手寫數字,每個影像為 28x28 像素 的灰階圖片。
  • 我們將使用 多層感知機(MLP) 來訓練模型。
  • 訓練完成後,我們可以用這個模型來辨識手寫數字!

原本想要自己玩玩看,示範給讀者們,結果我的筆電電腦滿溢進入死當的狀態嗚嗚嗚


CPU、GPU、CUDA:運算硬體的影響

在訓練神經網路時,選擇合適的硬體可以大幅提升效能。

🖥️ CPU(中央處理器)

  • 適合小型模型推論(Inference),但對大規模訓練較慢。
  • 一般用來處理 資料預處理、輕量級推論 等任務。

🎮 GPU(圖形處理器)

  • 專門處理矩陣運算,適合深度學習訓練
  • 多核心運算能同時計算數千個參數,大幅加快訓練速度。
  • NVIDIA GPU + CUDA 是目前深度學習的標準配置。

⚙️ CUDA(NVIDIA 平行計算架構)讓GPU 處理AI工作

  • CUDA(Compute Unified Device Architecture) 是 NVIDIA 開發的平行運算框架,讓 GPU 能夠處理 AI 工作負載。
  • 可以在 GPU 跟 CPU之間轉換
  • 提供大規模平行運算,速度比 CPU 快數十倍

👉 CPU 通常只有 8~16 個核心,但 GPU幾千個 CUDA 核心(CUDA Cores),可以同時運算大量矩陣數據。

👉 在訓練深度學習模型時,GPU 可以同時計算多個神經元的權重更新,大幅加速計算過程。

  • PyTorch 與 TensorFlow 都支援 CUDA,可透過 torch.cuda.is_available()tf.config.list_physical_devices('GPU') 來檢查 GPU 是否啟用。

NVIDIA 最新的 GPU(如 RTX 30/40 系列、A100、H100) 內建 Tensor Cores,專門為 AI 訓練優化,可進一步提升運算速度。

官網連結

📌 簡單總結:

  • CPU:適合輕量級推論與資料處理。
  • GPU:適合大規模訓練,可透過 CUDA 加速計算。
  • CUDA:NVIDIA 的 GPU 加速技術,幾乎是 AI 訓練的標準配備!

🎯 總結

  • TensorFlow 適合企業應用與部署,PyTorch 更靈活、適合研究。
  • 訓練模型時,GPU + CUDA 會比 CPU 更快,尤其是大規模數據與深度神經網路
  • 想要訓練高效能模型,建議使用NVIDIA GPU 並確保 CUDA 已啟用!

👉 你的電腦有支援 GPU 嗎?可以試著檢查一下 CUDA 是否開啟!😉

留言0
查看全部
avatar-img
發表第一個留言支持創作者!
很常聽到深度學習,但到底是在學些什麼?今天來跟我一起學習一個重要的概念: 多層感知機(MLP, Multi-Layer Perceptron)是最基礎的神經網路之一。它雖然簡單,卻是許多進階模型的基礎,例如 CNN(卷積神經網路) 和 Transformer(變換器)(某論文),用於處理自然語言模
這篇文章提供關於Git分支(Branch)和合併(Merge)的進階教學,包含建立分支、在不同分支修改檔案、合併分支以及處理合併衝突等步驟,並輔以圖文說明,適合初學者學習。
這篇文章提供 Git 版本控制系統的完整教學,從基礎概念到進階操作,包含圖文並茂的步驟說明和範例,讓讀者可以快速上手並應用於團隊協作及 GitHub Pages 部署網站。
這篇文章介紹如何使用 Google Colaboratory 進行線性回歸的梯度下降練習,包含手刻梯度下降法和使用 scikit-learn 的方法,並探討學習率、數據標準化、NaN 值等問題與解決方案。另外介紹,Matplotlib 進行結果可視化。
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
很常聽到深度學習,但到底是在學些什麼?今天來跟我一起學習一個重要的概念: 多層感知機(MLP, Multi-Layer Perceptron)是最基礎的神經網路之一。它雖然簡單,卻是許多進階模型的基礎,例如 CNN(卷積神經網路) 和 Transformer(變換器)(某論文),用於處理自然語言模
這篇文章提供關於Git分支(Branch)和合併(Merge)的進階教學,包含建立分支、在不同分支修改檔案、合併分支以及處理合併衝突等步驟,並輔以圖文說明,適合初學者學習。
這篇文章提供 Git 版本控制系統的完整教學,從基礎概念到進階操作,包含圖文並茂的步驟說明和範例,讓讀者可以快速上手並應用於團隊協作及 GitHub Pages 部署網站。
這篇文章介紹如何使用 Google Colaboratory 進行線性回歸的梯度下降練習,包含手刻梯度下降法和使用 scikit-learn 的方法,並探討學習率、數據標準化、NaN 值等問題與解決方案。另外介紹,Matplotlib 進行結果可視化。
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
你可能也想看
Google News 追蹤
前言 最近在研究GAT,在網路上看到使用torch和DGL實作的GAT模型的程式碼,就想說下載下來自己跑跑看,這篇文章:Understand Graph Attention Network。途中遇到問題,把找到的解法記錄下來,給也有一樣問題的朋友參考。 正文 在Colab直接使用: !p
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Google Brain 開發了 Tensor2Tensor(T2T),讓深度學習開發變得更加容易,T2T 是 TensorFlow 的擴展,包含深度學習模型庫,其中包
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 75 ,我們在給定句子 「 Transformers possess surprising emerging features 」的情
前言 其實摸機器學習、深度學習也有一陣子了,雖然大致上都理解,不過有些細節若不是那麼清楚,我也沒仔細去弄懂。今天剛好在《強化式學習:打造最強 AlphaZero 通用演算法》這本書看到之前略過的幾個名詞,書中有解釋其背後代表的東西的功能,在此記錄下來,以後又忘掉時可回來查看。 正文 "激活
前言 最近在研究GAT,在網路上看到使用torch和DGL實作的GAT模型的程式碼,就想說下載下來自己跑跑看,這篇文章:Understand Graph Attention Network。途中遇到問題,把找到的解法記錄下來,給也有一樣問題的朋友參考。 正文 在Colab直接使用: !p
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Google Brain 開發了 Tensor2Tensor(T2T),讓深度學習開發變得更加容易,T2T 是 TensorFlow 的擴展,包含深度學習模型庫,其中包
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 75 ,我們在給定句子 「 Transformers possess surprising emerging features 」的情
前言 其實摸機器學習、深度學習也有一陣子了,雖然大致上都理解,不過有些細節若不是那麼清楚,我也沒仔細去弄懂。今天剛好在《強化式學習:打造最強 AlphaZero 通用演算法》這本書看到之前略過的幾個名詞,書中有解釋其背後代表的東西的功能,在此記錄下來,以後又忘掉時可回來查看。 正文 "激活