模型層 開放閱讀

PyTorch

PyTorch

概念 ID
pytorch
更新時間
2026-05-29
來源數量
待補

3 秒看懂

PyTorch 是當前深度學習領域使用最廣泛的開源架構之一。它由 Meta(原 Facebook)AI 團隊主導開發,現已歸屬獨立的 PyTorch 基金會(Linux 基金會旗下)。其核心定位是提供靈活、直觀且支援動態計算圖的張量運算與自動微分基礎設施,主要應用於模型研究、原型開發及工業部署。

3 分鐘產業解釋

PyTorch 之所以成為主流,關鍵在於其 “define-by-run”動態計算圖設計——運算圖在每次前向傳播時即時建置,極大簡化了除錯過程,並原生支援 Python 控制流(如迴圈和條件語句)。這一特性在 NLP、生成式 AI 及複雜控制流密集的研究中優勢明顯。與之配套的 torch.nntorch.optimtorch.utils.data 等模組建置了完整的建模、訓練、資料載入生態。

產業端,PyTorch 不只是在學術界佔據主導(據各大頂會論文統計,使用率已超 80%),在工業界的落地也迅速鋪開。通過 TorchScripttorch.jit 可實現模型圖化與序列化,便於生產環境部署;TorchServe 提供模型服務化;PyTorch Lightning 等高層封裝進一步提升了工程化效率。此外,PyTorch 與 CUDA 深度繫結,支援 GPU 加速,且在分散式訓練(涵蓋資料並行、模型並行、流水線並行)方面持續演進,已成為千億引數大型模型訓練的核心基座之一。

15 分鐘專家深入

PyTorch 的技術架構可分為以下幾個層面:

  1. 張量庫(ATen 與 LibTorch):底層 C++ 實現的通用張量運算庫,不包含自動微分。它為上層提供統一的多維陣列介面,支援 CPU、CUDA、ROCm 等多種後端,並實現了運算元融合與記憶體最佳化。
  2. 自動微分引擎(Autograd):基於運算圖建置與反向累積梯度的系統。在執行時記錄張量間的運算關係,形成有向無環圖,通過 backward() 觸發反向傳播。支援高階導數。
  3. 神經網路模組(torch.nn):提供層、啟用函式、損失函式等高層抽象,引數管理與 Module 機制使模型組織變得模組化。
  4. 最佳化器與排程器(torch.optim):實現了 SGD、Adam、AdamW 等主流最佳化演算法,並可搭配學習率排程器靈活控制訓練動態。
  5. 資料載入(torch.utils.data):通過 DatasetDataLoader 實現高效資料預處理、分批載入和多程序並行資料饋送。
  6. 分散式訓練torch.distributed 包提供 NCCL/GLOO 後端通訊,整合 DistributedDataParallel (DDP) 實現多卡資料並行;Fully Sharded Data Parallel (FSDP) 採用 ZeRO 策略最佳化視訊記憶體佔用;torch.distributed.pipelining 等支援流水線並行,聯合張量並行可支撐超大型模型。

在模型精度方面,PyTorch 支援自動混合精度(AMP),通過 torch.cuda.amp 在 FP32 與 FP16/BF16 之間自動切換,兼顧訓練速度與數值穩定性。硬體生態上除了 NVIDIA GPU,還在拓展 Intel Gaudi、AMD Instinct、Apple M 系列晶片(Metal Performance Shaders)、以及行動端(PyTorch Mobile)的支援。

技術原理(最深部分)

動態計算圖與自動微分

PyTorch 的自動微分基於 “tape-based” 模式:每個 Tensor 物件都有一個 grad_fn 屬性,指向前向過程中生成該張量的運算函式。前向傳播時,各運算節點被記錄下來,構成一個反向傳播路徑圖。

x = torch.tensor(2.0, requires_grad=True)   # 葉子張量,grad_fn=None
y = x ** 2                                   # y.grad_fn =
z = y * 3                                    # z.grad_fn =
z.backward()                                 # 從 z 開始反向計算梯度
# x.grad 變為 dz/dx = 6 * x = 12

反向傳播不儲存完整圖結構,只保留求梯度所需的狀態,這樣記憶體更省,圖也能包含任意 Python 控制流。每次前向會重新建置圖,因此對於形狀、值或結構會變化的模型非常靈活。

高階特性:vmap、functorch 與 torch.compile

為兼顧靈活性與效能,PyTorch 2.0 引入了 torch.compileTorchDynamotorch.compile 通過捕獲 Python 位元組碼將 PyTorch 程式碼轉換為計算圖,進而利用後端(如 Inductor)生成高效核心。它有效彌合了動態圖與靜態圖效能的差距,使得此前必須手動編寫 Triton 核心或採用 JIT 的最佳化變得自動化。另一項重要功能是 vmap(向量化對映),可實現免迴圈的批次計算,自動提升張量運算維度。

自動微分公式與引數

設損失 L 為標量,關於引數 W 的梯度計算依賴於鏈式法則的累積。反向時,每個節點的 backward() 方法接收上游梯度,乘以本地雅可比後向下游傳遞。對於具有大量共享權重的模型(如 RNN),在一次 backward() 呼叫過程中,不同時間步或子模組對該引數的梯度會自動累加到 .grad 屬性中,無需 retain_graph=True 或多次呼叫 backward()。設定 retain_graph=True 常用於保留計算圖以支援高階導數或後續再次反向傳播;多次呼叫 backward() 則多用於從多個獨立損失項分別累積梯度。引數更新在最佳化器 step() 中完成,預設採用 param = param - lr * param.grad,並應用權重衰減、動量等修正項。

技術演進史

  • 2016 年:PyTorch 由 Adam Paszke 等人在 Soumith Chintala 主導下於 Meta AI 釋出首個公開版本,主推動態計算圖與 Pythonic 介面。
  • 2017 年:0.2~0.3 版本大幅完善,支援 cuDNN、資料並行(DataParallel),在 CV 與 NLP 任務中迅速吸引研究者。
  • 2018 年:1.0 釋出,引入 TorchScript(JIT),提供從研究到生產的轉換路徑,並整合 C++ 前端,推動工業部署。
  • 2019~2020 年:分散式架構成熟,DDP 成為標配;同時 PyTorch Mobile 釋出,支援端側推論。
  • 2021 年:PyTorch 1.10 引入 FX 中間表示,允許圖級變換;FSDP 等大型模型訓練能力開始成型。
  • 2022 年:PyTorch Foundation 成立,移交 Linux 基金會治理,吸引 AMD、AWS、Google Cloud、Meta、Microsoft、NVIDIA 等核心成員。
  • 2023 年:PyTorch 2.0 釋出核心 torch.compile,TorchDynamo/Inductor 實現圖捕獲與程式碼生成,訓練效率大幅提升。
  • 2024 年:持續整合 SOTA 特性,如 FP8 訓練、ZeRO-3 最佳化、更完善的 vmap 與自動並行支援,並在大規模叢集(數千 GPU)穩定性上增強。

技術路線對比(量化表)

以下對比基於公開技術文件與社群實踐(無精確資料時標為定性)。

維度PyTorchTensorFlow/KerasJAX/FlaxPaddlePaddle
圖模式動態圖(優先)及 TorchScript 靜態圖靜態圖優先(Eager 模式後期補齊)函式式靜態圖(jit 編譯)動態圖+靜態圖混合
程式設計風格Pythonic 命令式宣告式(早期)逐步命令式純函式式 + 加速器命令式,API 類似 PyTorch
分散式訓練DDP/FSDP/Pipeline, 靈活MultiWorkerMirroredStrategy/TPU 親和pmap/pjit 原生 SPMD分散式策略豐富,支援工業場景
生態系統極端豐富:Hugging Face、TIMM、Detectron2較全,但新模型庫集中在 PyTorch快速增長,學術研究居多百度系模型庫與垂類覆蓋
部署方案TorchServe、ONNX、TensorRT 整合TF Serving、TF Lite, 成熟通過 jax2tf 轉 TF,或直接 jitPaddle Serving, Lite
硬體支援NVIDIA CUDA/AMD ROCm/Intel Gaudi/Apple Metal同樣廣泛,TPU 原生支援TPU/GPU 領先,CPU 適配良好NVIDIA/崑崙芯/昇騰等
社群規模活躍度最高(Stars ~80k,論文使用率與貢獻者活躍度領先)Stars 數量最多(~185k),但核心活動下降快速增長(DeepMind 主力)中文社群強大,國際化較弱
易用性除錯直觀、學習曲線平緩Keras 易用,底層 TF 複雜函式式思維門檻較高對國內開發者友好

注意:GitHub Stars 等資料隨時間變化,此處僅反映相對規模。

上下游

上游 包括:

  • 底層計算庫:CUDA/cuDNN/NCCL(NVIDIA)、MIOpen/RCCL(AMD)、oneAPI(Intel)、MPS(Apple)等廠商驅動與加速庫。
  • 張量編譯器:如 OpenAI Triton(PyTorch 2.0 Inductor 後端使用)、MLIR 等。
  • 資料基礎設施:儲存(如 S3、HDFS)、資料湖、特徵平台。

下游 涵蓋:

  • 模型庫與開發工具:Hugging Face Transformers/Diffusers、TIMM(影像模型)、MMDetection、Lightning、Catalyst。
  • 訓練平台:雲端服務商(AWS SageMaker、GCP Vertex AI、Azure ML)的託管訓練服務,以及 Kubernetes 上的訓練運算元(如 Kubeflow、Volcano)。
  • 部署架構:TorchServe、BentoML、Ray Serve、ONNX Runtime、TensorRT、OpenVINO 等推論最佳化庫。
  • 端側:PyTorch Mobile、ExecuTorch(新一代移動推論)支援 iOS/Android/嵌入式裝置。

關鍵指標

PyTorch 的關鍵評估維度:

  • 吞吐量(samples/s):在特定硬體與模型下,使用 torch.compile 與混合精度訓練的理論峰值。通常參考 MLPerf 結果(但無確切歸屬時不提供數字)。
  • 視訊記憶體佔用:FSDP/梯度檢查點/最佳化器狀態分片等技術可將單卡視訊記憶體佔用降低數倍,使千億引數模型在較小叢集上可訓練。
  • 編譯效能加速比:torch.compile 相較於 eager 模式可提升 1.2x~2x(視模型結構而異,[未充分揭露])。
  • GPU 利用率:通常期望通過非同步資料載入和核心融合,使 GPU 保持在 90% 以上利用率。
  • 易用性定性:學術界 80% 以上使用率,GitHub 活躍度[估計]每月數萬次 commit 相關活動。
  • 部署延遲與吞吐:TorchServe 結合 TensorRT 等可提供毫秒級推論延遲。

供需與市場資料

深度學習架構市場由研究與工業需求共同驅動。根據 [各機構開發者調查,未量化]PyTorch 在研究論文中的提及率遠超 TensorFlow,已成為事實標準。雲端廠商紛紛將 PyTorch 作為預設支援的架構,推出最佳化的訓練容器和推論方案。大型科技公司(Meta、OpenAI、Stability AI 等)的大型模型訓練幾乎全部基於 PyTorch 生態建置。據 [行業報告估計],AI 架構市場由 PyTorch 佔據超過 60% 的份額,且仍在增長。需求方面,隨著生成式 AI、多模態模型的爆發,對 PyTorch 的分散式訓練、模型並行、記憶體最佳化特性需求極強,帶動 PyTorch 核心開發者和生態工具公司的就業市場熱度。

代表公司與資本對映

  • Meta(原 Facebook):PyTorch 的原始創造者和持續貢獻者,投入大量工程資源維護核心架構。
  • NVIDIA:深度合作最佳化 CUDA kernel 和 GPU 支援,提供 NGC 容器、NeMo 架構(基於 PyTorch)。
  • Microsoft:Azure 上與 PyTorch 深度整合,通過 Deepspeed 庫提供 ZeRO 最佳化,降低大型模型訓練成本。
  • AMD:投入力量完善 ROCm 對 PyTorch 的支援,試圖打破 NVIDIA 壟斷。
  • Google:雖主推 JAX,但在其 Vertex AI 等雲端服務上對 PyTorch 進行了一等公民支援。
  • Hugging Face:基於 PyTorch 建置最大的模型分享平台,估值數十億美元,受益於 PyTorch 生態。
  • Lightning AI:提供 PyTorch Lightning 以及雲端上訓練平台,獲得多輪融資。
  • Anyscale(Ray)和 OctoML(專注於 ML 模型最佳化)等同樣構築在 PyTorch 之上,對映資本關注點。

投資邏輯

  • 間接投資:PyTorch 本身非上市實體,其價值反映在受益於 PyTorch 生態的工具鏈公司和雲端平台。例如,NVIDIA 的 GPU 需求因 PyTorch 大規模訓練熱潮而激增,微軟 Azure 因整合 PyTorch 工作流獲得更多 AI 客戶。
  • 開源商業化模式:圍繞 PyTorch 提供企業級支援、託管訓練服務、端到端 MLOps 成為賽道。關注能降低 PyTorch 使用門檻和成本(如自動調優、高效微調、自動化並行策略)的初創公司。
  • 風險:PyTorch 演進步伐快,API 變遷可能導致依賴方持續投入適配;同時候選架構(如 JAX 在多模態和特定硬體上的效能優勢)可能分流部分尖端研究需求。但 PyTorch 的生態粘性和社群活力仍是強有力的護城河。

常見誤讀糾偏

誤讀 1:PyTorch 只適合研究,不適合生產。 糾正:TorchScript、torch.compile、TorchServe 以及廣泛的 ONNX/TensorRT 匯出支援,已使 PyTorch 在生產環境中得到驗證(如 Meta 的推薦系統、特斯拉的自動駕駛模型、OpenAI 的 API 服務等)。許多大型網際網路公司的關鍵業務負載執行在 PyTorch 上。

誤讀 2:PyTorch 的 GPU 支援僅限 NVIDIA,其他硬體生態弱。 糾正:AMD ROCm 已實現 PyTorch 的 ROCm 版,效能差距正在縮小;Intel Gaudi 在微軟 Azure 上的 PyTorch 適配進展迅速;Apple Silicon 也通過 MPS 後端提供加速。雖 NVIDIA CUDA 仍最優,但多元化已成趨勢。

誤讀 3:torch.compile 可以完全替代手動最佳化,不需要了解底層。 糾正:torch.compile 能自動最佳化大部分場景,但對於複雜控制流或自定義運算元,仍需要理解 TorchDynamo 的捕獲限制和 Inductor 的生成邏輯。極致效能最佳化(如特定記憶體版面配置、融合模式)仍可能需要手動編寫運算元或定製編譯器 pass。

學習路徑

  1. 基礎入門(約 1 周):學習張量操作、自動微分、nn.Module 建置簡單網路,參考官方《60 分鐘入門》。
  2. 實戰練習(2~4 周):使用 torchvision 和 torchtext 完成影像分類、文本生成等任務;掌握 Dataset/DataLoader 編寫,以及訓練迴圈和驗證。
  3. 效能與除錯(持續):學習 PyTorch Profiler、TensorBoard 視覺化、混合精度訓練、梯度累積等技術;理解快取分配器與 CUDA 流。
  4. 分散式訓練(2~3 周):從 DDP 開始,逐步接觸 FSDP、DeepSpeed 整合、模型並行原理,並在多卡/多機環境實踐。
  5. 部署與編譯(2 周):探索 TorchScript、torch.compile、ONNX 匯出、行動端部署流程。
  6. 高階特性:研究 torch.fx 圖變換、自定義 autograd.Function、Triton 核心編寫,以及 torch.vmap 等函式式介面。

推薦資源:官方文件與教程、d2l.ai《動手學深度學習》、《Programming PyTorch for Deep Learning》書籍、以及 fast.ai 課程。

一句話總結

PyTorch 憑藉動態圖靈活性、Python 原生體驗和強大的分散式訓練能力,已成為 AI 研究與工業的核心架構,並通過 torch.compile 等創新持續彌合易用性與極致效能的鴻溝。

延伸閱讀與來源

  • 官方文件與 2.0 技術白皮書:pytorch.org
  • PyTorch Foundation 公告:Linux 基金會官網
  • “PyTorch 2: Faster Machine Learning Through Dynamic Python Bytecode Transformation” – Meta AI 部落格
  • 各大雲端廠商關於 PyTorch 整合的技術部落格(AWS、GCP、Azure)
  • 學術論文如 “Array Programming with PyTorch” (2019) 介紹核心設計
  • 行業分析:State of AI Report 等年度報告中對架構使用資料的分析
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型