1、Pytorch介紹與安裝

1、Pytorch介紹

PyTorch 是由 Facebook AI Research (FAIR) 團隊開發并維護的一款開源深度學習框架,于 2016 年首次發布。它因其直觀的設計、卓越的靈活性以及強大的動態計算圖功能,迅速在學術界和工業界獲得了廣泛認可,成為當前深度學習研究和開發的主流工具之一。

1.1、核心理念

PyTorch 最顯著的特點是其?“Pythonic”?的設計哲學和?動態計算圖 (Dynamic Computational Graph)?機制。

  1. Pythonic 設計:?PyTorch 深度融入 Python 生態系統,其 API 設計自然、簡潔,非常符合 Python 程序員的思維習慣。你可以像操作普通的 Python 對象(如 NumPy 數組)一樣操作張量(Tensor),使用標準的 Python 控制流(如?if,?for,?while)來構建模型結構。這種無縫集成極大地降低了學習門檻,讓開發者能夠專注于模型設計和算法本身,而非框架的復雜性。

  2. 動態計算圖 (Define-by-Run):?這是 PyTorch 區別于早期靜態圖框架(如 TensorFlow 1.x)的關鍵。計算圖在代碼運行時動態構建。每一步張量操作都會實時擴展計算圖,并立即執行。這種機制帶來了革命性的優勢:

    • 直觀的調試:?由于圖是動態生成的,你可以像調試普通 Python 程序一樣,使用?print?語句、IDE 的斷點調試器逐行檢查張量的值和模型的行為,極大簡化了復雜模型和訓練過程的調試。

    • 無與倫比的靈活性:?動態圖允許模型結構在運行時根據數據或條件動態改變(如 RNN 中可變長度序列處理、樹狀結構網絡、條件計算)。這種靈活性對于前沿研究(如元學習、神經架構搜索)和構建復雜模型至關重要。

    • 更易理解的代碼:?模型定義和訓練循環的代碼流程清晰、線性,更易于閱讀和理解。

1.2、核心組件與功能

PyTorch 提供了一套完整的工具鏈來支持深度學習工作流:

  1. 強大的張量庫:?torch.Tensor?是其核心數據結構,支持高效的 CPU 和 GPU 加速計算。它提供了豐富的數學運算(線性代數、隨機數生成等),并高度兼容 NumPy(通過?.numpy()?和?torch.from_numpy()?輕松轉換)。

  2. 自動微分引擎 (Autograd):?torch.autograd?模塊是 PyTorch 的基石。它通過在動態計算圖上自動追蹤張量操作,實現反向傳播時梯度的自動計算。只需在張量上設置?.requires_grad=True,框架就會記錄所有相關操作,并在調用?.backward()?時自動計算梯度。這極大地簡化了梯度計算,讓開發者無需手動推導和實現復雜的反向傳播。

  3. 神經網絡模塊 (torch.nn):?該模塊提供了構建神經網絡所需的所有基礎構件:

    • 層 (Layers):?預定義了各種層(如 Linear, Conv2d, RNN, LSTM, Transformer, Dropout, BatchNorm 等)。

    • 損失函數 (Loss Functions):?如 MSE, CrossEntropyLoss 等。

    • 優化器 (Optimizers):?如 SGD, Adam, RMSprop 等,用于更新模型參數以最小化損失。

    • 容器 (Containers):?nn.Module?是構建所有模型的基類。通過繼承它并定義?forward?方法,可以輕松組合各種層來創建復雜的網絡結構。nn.Module?還自動管理參數、設備移動(CPU/GPU)、序列化等。

  4. 數據加載與處理 (torch.utils.data):

    • Dataset 類:?定義如何訪問單個樣本。

    • DataLoader:?負責高效地批量加載數據、打亂順序、多進程預讀取等,是訓練循環中數據供給的核心。

    • Transforms:?提供豐富的圖像和數據處理工具(如裁剪、旋轉、歸一化),用于數據增強和預處理。

  5. GPU 加速:?PyTorch 天然支持 CUDA。只需將張量或模型移動到 GPU 設備(.to(‘cuda’)),即可利用 NVIDIA GPU 強大的并行計算能力,顯著加速模型訓練和推理。

  6. 分布式訓練:?torch.distributed?模塊提供了強大的工具(如 DistributedDataParallel - DDP),支持在多 GPU、多節點集群上進行高效的數據并行和模型并行訓練,極大縮短大型模型的訓練時間。

  7. TorchScript 和 TorchDynamo (PyTorch 2.x):?為了滿足生產環境對性能、部署和脫離 Python 環境運行的需求,PyTorch 提供了:

    • TorchScript:?一種將 PyTorch 模型(代碼)轉換為可優化、可序列化的中間表示的方法,可以在 C++ 等環境中高效運行。

    • TorchDynamo (PyTorch 2.0+):?一個創新的即時(JIT)編譯器框架,結合了?torch.compile()?API,能夠在不顯著改變用戶代碼的情況下,自動加速模型訓練和推理,性能提升顯著。

  8. 豐富的生態系統:

    • 領域庫:?TorchVision?(CV),?TorchText?(NLP),?TorchAudio?(音頻) 提供了各自領域常用的數據集、模型架構和轉換工具。

    • Hugging Face Transformers:?PyTorch 是該流行庫的首選后端,提供了大量預訓練的語言模型(如 BERT, GPT)。

    • PyTorch Lightning:?一個輕量級封裝庫,將研究代碼與工程代碼解耦,簡化了訓練流程(如多 GPU、混合精度訓練、日志記錄),加速研究向生產的轉化。

    • ONNX 支持:?方便模型導出到其他支持 ONNX 格式的推理引擎部署。

    • 部署工具:?TorchServe, LibTorch (C++ API) 等支持模型在各種環境下的部署。

1.3、適用場景與優勢總結

  • 研究與原型開發:?動態圖的靈活性和易調試性使其成為學術研究和快速實驗新想法的理想平臺。大量前沿論文的官方實現都基于 PyTorch。

  • 教學與學習:?Pythonic 的設計和直觀的調試使其成為學習深度學習的絕佳工具。

  • 計算機視覺 (CV):?在圖像分類、目標檢測、分割等任務中占據主導地位。

  • 自然語言處理 (NLP):?是 Transformer 等現代 NLP 模型實現和預訓練模型庫(如 Hugging Face)的主要支撐。

  • 強化學習、生成模型等:?其靈活性同樣適用于這些新興且結構多變的領域。

  • 生產部署:?隨著 TorchScript、TorchDynamo (torch.compile()) 以及部署工具鏈的成熟,PyTorch 在生產環境中的應用也日益廣泛。

1.4、優勢總結

  • 易用性與靈活性:?Pythonic 設計 + 動態圖,開發調試效率高。

  • 強大的社區與生態:?擁有龐大且活躍的開發者社區,豐富的庫、模型、教程和資源。

  • 卓越的研究支持:?是學術界的寵兒,最新研究成果往往首選 PyTorch 實現。

  • 成熟的工業應用:?從研究到生產的路徑日益順暢,被眾多科技巨頭采用。

  • 持續創新:?開發團隊(Meta 和開源社區)積極推動,不斷引入新特性(如 PyTorch 2.x 的編譯加速)。

2、安裝Pytorch

2.1、通過官網安裝

?ubuntu系統安裝cuda驅動、cudatoolkit、cuDNN教程見:

1、安裝cuda驅動,cuda toolkit和cuDNN-CSDN博客

查看cuda版本:

(llm) wangqiang@wangqiang:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0

?最新的pytorch只支持pip安裝,去官網Get Started查看PyTorch的安裝需求和安裝命令。

ubuntu系統安裝pytorch 12.8:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

查看安裝的pytorch版本:

方式1:

import torch
print(torch.__version__)

方式2:

終端中運行:

(llm) wangqiang@wangqiang:~$ pip show torch
Name: torch
Version: 2.7.0+cu128
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email: packages@pytorch.org
License: BSD-3-Clause
Location: /home/wangqiang/anaconda3/envs/llm/lib/python3.12/site-packages
Requires: filelock, fsspec, jinja2, networkx, nvidia-cublas-cu12, nvidia-cuda-cupti-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-runtime-cu12, nvidia-cudnn-cu12, nvidia-cufft-cu12, nvidia-cufile-cu12, nvidia-curand-cu12, nvidia-cusolver-cu12, nvidia-cusparse-cu12, nvidia-cusparselt-cu12, nvidia-nccl-cu12, nvidia-nvjitlink-cu12, nvidia-nvtx-cu12, setuptools, sympy, triton, typing-extensions
Required-by: torchaudio, torchvision

卸載pytorch

sudo  pip uninstall torch torchvision torchaudio# 刪除緩存和配置文件:
rm -rf ~/.cache/torch
rm -rf ~/.local/bin/torch_shm_manager

2.2、從源碼安裝

如果需要從源代碼安裝PyTorch,或者想要嘗試最新的開發版本,可以使用以下命令:

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
python setup.py install

2.3、通過pip安裝

pip install torch torchvision torchaudio
  • 默認安裝的是?CPU 版本(不包含 GPU 支持),除非在系統環境已經明確配置了 CUDA 并且 PyPI 源中存在對應的 GPU 版本。
  • 安裝的版本是 PyPI 上的最新穩定版(可能不是與電腦硬件或Python 版本完全兼容的版本)。

3、Pytorch參考鏈接

PyTorch 官網 :https://pytorch.org/

PyTorch 官方入門教程:Get Started

PyTorch 官方文檔:PyTorch documentation — PyTorch 2.7 documentation?

PyTorch 源代碼:https://github.com/pytorch/pytorch

PyTorch 官方英文教程:Welcome to PyTorch Tutorials — PyTorch Tutorials 2.7.0+cu126 documentation

PyTorch 官方中文文檔:主頁 - PyTorch中文文檔

RUNOOB PyTorch教程:PyTorch 教程 | 菜鳥教程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82191.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82191.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82191.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RedisTemplate查詢不到redis中的數據問題(序列化)

RedisTemplate查詢不到redis中的數據問題(序列化) 一.問題描述 存入Redis中的值取出來卻為null,問題根本原因就是RedisTemplate和StringRedisTemplate的序列化問題、代碼示例: SpringBootTest class Redis02SpringbootApplicationTests {Autowiredprivate RedisTe…

【Net】TCP粘包與半包

文章目錄 TCP粘包與半包1 背景2 粘包(packet stick)3 半包(packet split)4 為什么會出現粘包/半包?5 如何解決?6 示例7 總結 TCP粘包與半包 在網絡編程中,粘包和半包問題是常見的 TCP 協議特有…

Leetcode 3566. Partition Array into Two Equal Product Subsets

Leetcode 3566. Partition Array into Two Equal Product Subsets 1. 解題思路2. 代碼實現 題目鏈接:3566. Partition Array into Two Equal Product Subsets 1. 解題思路 這一題我的實現還是比較暴力的,首先顯而易見的,若要滿足題目要求&…

QT中更新或添加組件時出現“”qt操作至少需要一個處于啟用狀態的有效資料檔案庫“解決方法”

在MaintenanceTool.exe中點擊下一步 第一個: 第二個: 第三個: 以上任意一個放入資料庫中

52. N-Queens II

題目描述 52. N-Queens II 回溯法 這道題與第51題是一樣的。51. N-Queens-CSDN博客 class Solution {int columns; //從低位到高位起算,第i位為0表示棋盤第i列可以放置皇后,第i位為1表示棋盤第i列不能放置皇后//邊長為n的棋盤分別有2n-1條正斜線和反…

解鎖AI智能Agent的“風格基因”

從“黑箱”到“智能Agent”:LangChain的架構哲學革新 在LangChain出現之前,開發者直接調用LLM API的方式,充滿了“黑箱”操作的挑戰: 緊耦合的業務邏輯與模型調用: 所有的業務邏輯、API調用、記憶管理、錯誤處理等都可能混雜在同一個代碼塊中。這導致代碼脆弱、難以測試,…

大數據運維過程中常見的一些操作

大數據運維是確保大數據系統穩定運行、高效處理數據的關鍵環節。以下是大數據運維過程中常見的一些操作和任務: 1. 集群部署與配置 基礎設施搭建:部署服務器、網絡設備、存儲系統,配置虛擬化環境(如 Docker、Kubernetes)。分布式系統安裝:安裝 Hadoop、Spark、Hive、Kaf…

STM32中,如何理解看門狗

在STM32微控制器中,看門狗(Watchdog)是一種硬件計時器,用于監控系統運行狀態,防止軟件死鎖或跑飛。其核心機制是:系統需定期“喂狗”(復位看門狗計數器),若未及時喂狗&am…

[AI算法] LLM中的gradient checkpoint機制

文章目錄 什么是gradient checkpoint原理使用場景 注意事項 什么是gradient checkpoint gradient checkpoint是一種優化深度學習模型內存使用的技術,尤其在訓練大型模型時非常有用。它通過犧牲計算時間為代價來減少顯存占用。大多數情況下,transformers…

船舶二階非線性響應方程的EKF與UKF參數辨識

船舶二階非線性響應方程的EKF與UKF參數辨識 本文將詳細闡述使用Python實現擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)對船舶二階非線性響應方程進行參數辨識的過程。全文包含理論推導、算法實現、仿真驗證及結果分析。—### 1. 船舶二階非線性響應方程建模船舶運動可表示為&am…

【ARM AMBA APB 入門 1.1 -- APB 讀寫寄存器 RTL 實現】

請閱讀【ARM AMBA 總線 文章專欄導讀】 文章目錄 APB 寄存器訪問APB 讀寄存器 RTL 代碼實現APB 寫寄存器 RTL 代碼實現 APB 寄存器訪問 APB 讀寄存器 RTL 代碼實現 APB 總線讀寄存器操作代碼實現: wire [31:0] SOC_PLL_CFG_REG; wire [31:0] SOC_PLL_LOCK_REG; wi…

C++修煉:位圖和布隆過濾器

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 1、引言 在計算機科學…

Java大廠后端技術棧故障排查實戰:Spring Boot、Redis、Kafka、JVM典型問題與解決方案

Java大廠后端技術棧故障排查實戰&#xff1a;Spring Boot、Redis、Kafka、JVM典型問題與解決方案 引言 在互聯網大廠&#xff0c;Java后端系統往往承載著高并發、高可用和復雜業務需求。系統架構日益復雜&#xff0c;涵蓋微服務、緩存、消息隊列、數據庫等多種組件&#xff0…

交叉編譯tcpdump工具

1.導出交叉編譯工具鏈 export PATH$PATH:/opt/rockchip/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 下載源碼包libpcap-1.10.5&#xff0c;配置、并編譯安裝。 github倉庫地址 ./configure --hostarm-linux CCarm-linux-gnueabihf-gcc --prefix$PWD/install …

Pytest Fixture 是什么?

Fixture 是什么&#xff1f; Fixture 是 Pytest 測試框架的核心功能之一&#xff0c;用于為測試函數提供所需的依賴資源或環境。它的核心目標是&#xff1a; ? 提供測試數據&#xff08;如模擬對象、數據庫記錄&#xff09; ? 初始化系統狀態&#xff08;如配置、臨時文件&a…

【深度剖析】流處理系統性能優化:解決維表JOIN、數據傾斜與數據膨脹問題

目錄 前言:為什么你的流處理作業總是慢? 一、維表JOIN優化:從普通連接到高性能查詢 1.1 時態表的雙面性 1.2 Lookup Join 優化 1.3 多表JOIN優化策略 二、數據傾斜:單分區也會遇到的隱形殺手 2.1 單分區數據傾斜 2.2 熱點鍵打散技術 2.3 時間窗口預聚合 三、數據…

Codeforces Round 1028 (Div. 2)(ABC)

A. Gellyfish and Tricolor Pansy 翻譯&#xff1a; 水母和小花在玩一個叫 “決斗 ”的游戲。 水母有 a HP&#xff0c;花花有 b HP。 它們各有一個騎士。水母的騎士有 c HP&#xff0c;而花花的騎士有 d HP。 他們將進行一輪游戲&#xff0c;直到其中一方獲勝。對于 k1、2、.…

數字創新智慧園區建設及運維方案

該文檔是 “數字創新智慧園區” 建設及運維方案,指出傳統產業園區存在管理粗放等問題,“數字創新園區” 通過大數據、AI、物聯網、云計算等數字化技術,旨在提升園區產業服務、運營管理水平,增強競爭力,實現綠色節能、高效管理等目標。建設內容包括智能設施、核心支撐平臺、…

緩存一致性協議的影響

在操作系統中&#xff0c;線程切換相比進程切換更輕量級的關鍵原因之一是 緩存&#xff08;Cache&#xff09;的有效性&#xff0c;尤其是對 CPU 緩存&#xff08;如 L1/L2/L3&#xff09;和 TLB&#xff08;Translation Lookaside Buffer&#xff09;的影響。以下從緩存角度詳…

六月一日python-AI代碼

python 運行 import turtle as t # 導入turtle庫并簡稱為t&#xff0c;用于圖形繪制 import random # 導入random庫&#xff0c;用于隨機數生成t.delay(0) # 設置繪圖延遲為0&#xff0c;加快繪圖速度 colors ["red", "blue", "gr…