[DAY 10] Pytorch 简介

前言


在开始进入我们各式各样的深度模型之前,我们要先来介绍一个非常 Powerful 的 Deep Learning Framework, 也就是之後我们会使用的 Pytorch
在我们依照 Paper 提出的模型架构或单纯依照我们的想法去实现模型过程中,我们常常会陷入一种疯狂的思维中,那便是希望尽可能完整的或者说钜细靡遗的实作出自己的想法,因此常常会做的事情就是想要直接 " *Write From Scratch *",这个逻辑本身没错,因为确实按照理论的计算方式去直接写成城市去 Run 一定可以达到我们要的目标,也是因为这样一步一步的建构起来我们才有一种脚踏实地的感觉,知道自己的想法有确确实实的被实作在电脑上并准确地执行着。
但其实就想我们建造一量车子一样,其实我们不需要重新发明轮子也可以把我们对车子的设计付诸实现。我们在学习一项新的技能时,从 "Bottom UP" 一步步往上想法固然非常好,但我们先可以使用现成的工具们先组出一个能动的模型或者系统,从 "Top Down" 的方式先取得一个 Big Picture ,知道这个模型的 Prototype 在运行会有甚麽结果,然後未来若是有需要我们在逐步把每个细节填满这样就好 ~

Pytorch


Pytorch
阿讲了这麽多,阿峻怎麽没讲要用甚麽已经有的 Tool 呢XDDDDD
啊我这不就来了吗 >< 在本系列会用的 Deep Learning 的 Library 就是 Pytorch,是一个支援 Python 且语法接近在写 Python 那样方便的函式库喔~
附上官网连结:
URL : (https://pytorch.org/)
https://ithelp.ithome.com.tw/upload/images/20190920/20120549sEraDwo0Pl.png

简介背景

自从硬体的计算速度逐年往上升以来,Deep Learning 逐渐走出上一次的 AI 寒冬 重回人们的视野。在研究领域上逐渐开始有越来越多人投资人力以及财力进来,各路人马为了更加有效的研究深度学习以及更好更有效地实作出深度学习网路,开始了陆续制作能够提供深度学习计算的 Library 供使用者快速的实作出想法并加以观察结果,着名的例子像是 Berkely 的Caffe 以及 Facebook 以前开源的 Torch
https://ithelp.ithome.com.tw/upload/images/20190920/20120549Xulnex14ul.jpg (尽管 Torch 已经不再支援更新了)
- *图片来源 : https://makerpro.cc/2018/06/deep-learning-frameworks/*
然而以前的 Library 在语法设计上较为复杂,使用者在使用并不是非常的方便以及易用,并且以前众多的 Library 只支援 Lua 或者 C++,这些语言无法向 Python 简单简洁书写,对於使用者来说并ˋ不是非常的友善。因此,在2017年由 Adam Paszke、Sam Gross 与 Soumith Chintala 以及众多 Facebook 研究员或者工程师(主要成员来自 Facebook FAIR 和其他多家实验室)所领导开发的PyTorch出现在大众的视野里。
Pytorch 如同其官网的主打口号,它是一种 Python 优先的深度学习框架,意即他是针对 Python 这个语言特性去作设计,因此你在使用它时会发现它对 Python 的支援性十分的高并且可以与多种 Library 作结合,你甚至有一种在如同使用其他 Python Library的感觉一样简单容易,它与Python完美结合的界面以及易用性是它为何能快速崛起的原因。
https://ithelp.ithome.com.tw/upload/images/20200925/20120549edvBzgcyPG.jpg

安装

我们可以跟 Jupyter 安奘的方式一样我们可以使用 pip 来简单安奘

pip install torch torchvision

但详情还是请参考官网准确地说明,一步一步贴即可,但因为安装 GPU版本可能要考虑到CUDA版本是否与 Pytorch 版本合得起来(这一部分真的要参照官网文档)所以比较稍微麻烦,後须若是有闲我来讲讲我怎麽建置我的 DL 开发环境好了XD

实作环境

作为一个深度学习网路 Library 怎麽可能不支援使用 GPU 作加速计算XD,但打造一个支援GPU加速计算的环境并不是如此的方便以及可能要考虑到实体GPU的采买(经济因素),当然这是一个好机会向妈妈以训练深度网路的藉口买张 GTX 2080TI 来"顺便"打奥德赛探索主角技能数成长的过程(大误)。我们已经有了Python 的开发环境,但这个环境不见得已经可以支援GPU加速计算了,虽然Pytorch也是支援CPU计算,但用CPU计算怕是会算到天亮XDQQ当然有了Jupyter之後只需要灌好CUDA以及cuDNN就可以安装Pytorch的GPU版本,但为了方便我们练习,是不是有个地方就像 Jupyter官网一样让我们可以是是使用一下有 GPU 的环境? 答案当然是肯定的齁XDD要不然我打啥 XDDDD 让我们使用 Google 的 Colab 的平台来试试。啥?你说懒得Google !!来来来~ Let me google for you
它本质上你可以直接是作一种 Jupyter 来使用喔,使用起来十分直觉!
开好使用页面之後也记得要改变 Setting 加入 GPU 资源才能使用 GPU加速计算喔
https://ithelp.ithome.com.tw/upload/images/20190920/20120549YT7bsISnVi.png
按下 Setting 修改 Hardware Accelerator 成 "GPU" 并记得一定要按下 "SAVE"
https://ithelp.ithome.com.tw/upload/images/20190920/20120549MiPQG5cCfu.png
接者我们在Code block中使用 "nvdia-smi" 来检查是否已经成功抓到GPU资源即可

!nvidia-smi

https://ithelp.ithome.com.tw/upload/images/20190920/20120549aAr1UqYx8C.png
上面我们是抓到 Tesla K80 这张GPU,听说幸运的话可以拿到 T4 GPU。但因为是云端上的免费资源,所以google本身会对GPU作虚拟化,所以我们无法使用到完整的一张GPU,例如 colab 上的 T4大概只有 Nvidia GTX 1080 TI 计算速度的一半QQ
另外有人会许有发现有另一个 Hardware Accelerator 选项是 "TPU", TPU 本身是 google自行研发的硬体加速器,类似GPU对於DL计算的帮助一样,它也可以加速DL计算,关於TPU的介绍在此不做多说,在硬体介绍那张有余力也可以来介绍一下,附上Colab 上使用 TPU 的教学

基本语法练习

你是不是以为这一次的基础语法我总算会好好贴上给大家练习跟使用XDDD

Naive~
----阿峻20190920

关於基础语法这件事我觉得帮大家挑选一下早已有的、优秀的、现成的整理或教学给你们参考就好,这边我们就不把精力放在基础语法的撰写了,但它的语法与Python具有高度相似性,所以大家在使用上并不会感到太多的压力。另外,关於Pytorch 的基础语法使用上,我倒是觉得可以让大家在实做的过程中逐渐熟悉就好,在能够使用Python的情况倒是不用刻意去练习各别的基础语法,组在一起练习写一个具有完整功能的 Function 或者 Module可能更有练习效果!
但我们还是贴一下我觉得不错的连结啦 ><

  1. Pytorch 官网 tutorial
    URL : (https://pytorch.org/tutorials/?source=Google&medium=PaidSearch&utm_campaign=1711272647&utm_adgroup=67277775336&utm_keyword=pytorch%20tutorials&utm_offering=AI&utm_Product=PYTorch&gclid=CjwKCAjw8ZHsBRA6EiwA7hw_scpYOsJnHNCVb2CfC1FaJ6QOfJypFiklcU9rgR4Ql80LXnxYszfFOhoCnRYQAvD_BwE)
  2. 莫凡 Pytorch
    URL : (https://morvanzhou.github.io/tutorials/machine-learning/torch/)
  3. Pyladies 系列文整理
    URL : (https://medium.com/pyladies-taiwan/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E6%96%B0%E6%89%8B%E6%9D%91-pytorch%E5%85%A5%E9%96%80-511df3c1c025)

後语

在练习、熟练完Python、Pytorch的基本语法之後,我们就可以开始尝试性的去组model来玩玩、练习以及观察一下效果并做一些实务的练习来跟上潮潮的世界潮流XDDDD


<<:  [Day10] Cloud Spanner

>>:  [Day 20] 回测与报表

【Day 23】为美好的 Windows 献上 ETW - Event Tracing for Windows

环境 Windows 10 21H1 ETW 介绍 历史 ETW (Event Tracing fo...

Day 7 python字典

今天我们要介绍的是python的字典,所谓的字典就是指将元素用{}包住并且元素是由一个键(key)配...

Day 4【HTML + CSS】於是他开始像灵犬莱西一样到处蒐集证据

【前言】 不知道大家有没有看过 Youtube 上面一些 5~12 小时的 Coding 教学影片...

[DAY24]安装PGAdmin(02)

接着我们要利用PGADMIN连线我们Heroku上的资料库插件 打开PGADMIN,输入昨天输入的密...

ISO 27001 资讯安全管理系统 【解析】( 十三)

陆、第五章 领导统御 成功的ISMS是由上而下实行的,透过考虑利害关系者的要求及采取有效控制措施将营...