• Pytorch深度学习笔记之一


    几年前,笔者自学了几课机器学习,但没有涉及深度学习。最近开始看一下PyTorch的一些用法,顺便也了解一下深度学习。所以,从这篇开始,将会发布几篇关于使用PyTorch深度学习的笔记。
    另外,公司发的新笔记本里居然有一块GPU, 8GB显存的 NVIDIA RTX A2000, 不知道算中端还是低端,但反正跑起来确实比CPU强多了(见下面程序)。
    本篇笔记是来源于一个网上的课程的第一章,讲的是PyTorch以及Jupyter的安装。不过笔者加了一些基础知识,以及几个不同环境下的自己做的实验在里面,另外还加了一个CPU v.s. GPU 的程序性能比拼实验。蛮有意思吧。所以最后写下来,已经和原来的课程内容有较大的不同了。

    Chapter 1. Install PyTorch & Jupyter Notebook

    1.1 Upgrade pip

    本步骤不是必须的。

    version 2x.x.x, 21 is for python3, 20 is still python2

    sudo pip install --upgrade pip
    
    • 1

    1.2 Install Pytorch and Jupyter

    Step 1. Install virtualenv

    virtualenv 是为了解决Python package版本依赖混乱的问题而建立的一个独立的Python运行环境。
    安装命令如下:

    pip install virtualenv
    
    • 1

    Step 2. Create virtualenv

    For Linux

    mkdir ~/TestAI
    cd ~/TestAI
    
    # -p is to specify Python version 
    ~/.local/bin/virtualenv -p /usr/bin/python3 venv
    
    # Or just the command below 
    # virtualenv -p /usr/bin/python3 venv 
    
    ls ~/TestAI/venv 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    For Windows

    mkdir TestAI
    cd TestAI
    
    virtualenv venv 
    
    dir TestAI\venv 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Step 3. Activate virtualenv

    For Linux

    cd ~/TestAI
    
    source venv/bin/activate
    
    • 1
    • 2
    • 3

    For Windows

    cd TestAI 
    
    venv/Scripts/activate 
    
    • 1
    • 2
    • 3

    Step 4. Install PyTorch

    CPU version for Linux
    pip install torch==1.9.0+cpu torchvision==0.10.0+cpu torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
    
    • 1
    CPU version for Mac & Windows
    pip install torch torchvision torchaudio
    
    • 1
    GPU version on Windows
    1. Download CUDA toolkit from here
      https://developer.nvidia.com/cuda-toolkit-archive
      For example, download CUDA11.3

    2. Access: https://download.pytorch.org/whl/torch_stable.html

    3. Download the following whl file
      https://download.pytorch.org/whl/cu113/torch-1.12.1%2Bcu113-cp310-cp310-win_amd64.whl

    4. In virtual env, run:

    pip install "C:\Users\\Downloads\torch-1.12.1+cu113-cp310-cp310-win_amd64.whl"
    
    • 1
    1. Verify the installation
    >>> import torch
    >>> torch.cuda.is_available()
    >>> True
    
    • 1
    • 2
    • 3
    GPU version on Linux (not verified)

    Run

    pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
    
    • 1

    Step 5. Test whether installation is successful

    $python
    >>> import torch
    >>>
    >>> torch.cuda.is_available()
    
    • 1
    • 2
    • 3
    • 4

    Step 6. Exit virtualenv

    Run this command in virtualenv

    deactivate
    
    • 1

    Step 7. Install Jupyter Notebook

    Jupyter Notebook 是一个开源的 Web 应用。它能够让你创建和分享包含可执行代码、可视化结构和文字说明的文档。

    In virutalenv, run:

    pip install jupyter
    
    • 1

    Run on Windows, enter into virtualenv, then,

    jupyter notebook
    
    • 1

    Then Web Browser will open jupyter home page locally.

    结束: 连按2次 Ctrl+C

    1.3 比较 CPU 和 GPU 的计算效率

    运行以下程序:

    import time 
    import torch 
    
    rows = 20000
    cols = 20000
    
    a = torch.rand(rows, cols)
    b = torch.rand(rows, cols)
    
    beg = time.time_ns()
    c = a.matmul(b)
    end = time.time_ns()
    
    # about 30 seconds 
    print("Time elapsed %.2f seconds" % ((end-beg)/1e9))
    
    a1 = a.cuda()
    b1 = b.cuda()
    
    beg = time.time_ns()
    c1 = a1.matmul(b1)
    end = time.time_ns()
    
    # less than 1 second
    print("Time elapsed %.2f seconds" % ((end-beg)/1e9))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    运行结果如下:

    Time elapsed 31.31 seconds
    Time elapsed 0.60 seconds
    
    • 1
    • 2

    所以,做上面的矩阵相乘运算,GPU的效率是CPU的52倍: 31.3 / 0.6 = 52

    (完)

  • 相关阅读:
    【前端面试必知】虚拟DOM与diff算法详解
    golang web补充知识:单元测试
    【系统架构】-什么是MDA架构、ADL、DSSA
    基于进化思想的聚类算法及其类簇融合算法(Matlab代码实现)
    自己实现 SpringMVC 底层机制 系列之--实现任务阶段 2- 完成客户端浏览器可以请求控制层
    ArcGIS基础:点要素分割线要素和提取线要素的交点
    工时管理:警惕员工时间偷窃!企业应该如何避免?
    集群中用Memcached来实现session共享
    阿里云全面降价,释放了什么信号?
    字段映射 mapStruct lombok
  • 原文地址:https://blog.csdn.net/nirendao/article/details/127127550