2020-01-12 00:02:04 weixin_39833897 阅读数 1497
  • 树莓派+python 系统部分

    本课程主要讲如何安装树莓派操作系统,如何采购树莓派,如何联网,笔记本如何控制,树莓派如何共享网盘,桌面共享,如何使用souceinsight,如何使用Pycharm进行写代码

    1096 人正在学习 去看看 程光淼


[原创文章,若有参考请引用]
长期以来,深度学习研究都依赖于台式机+高性能显卡的配置,需要大量计算资源的深度学习实验,对于需要移动办公或追求极致办公体验的人群或喜欢使用笔记本开展研究的人群不是十分友好,如何利用笔记本开展深度学习实验呢?
很早以前,喜欢打游戏的发烧友们脑洞大开给硬件弱鸡的mac配备eGPU,并且体验十分不错。而促进性能提升的技术支持,在于雷电系列接口的发展,目前雷电3接口全速状态下可以达到40Gb/s的传输速率,因而使用外接显卡坞可以基本满足开展深度学习程序中数据交换的需要。英文研究社区发起了eGPU.io,可供学习者相互讨论,但中文社区关于这方面的讨论极少,而讨论ubuntu系统+外置显卡进行深度学习的更是极少极少。
笔者以带有全速雷电3接口的雷蛇灵刃15标准版为依托,借助雷蛇幻彩显卡坞、华硕XG Station显卡坞驱动RTX2080Ti、RTX2070均实现了基于ubuntu18.04LTS的深度学习环境配置。其实通过外置显卡进行深度学习环境配置本身并不难,关键在于动手实践:
(1)实践之前,我们需要购置一台笔记本,推荐型号包括dell xps15 (9570就行,有钱可以购买9575)、雷蛇灵刃14或15或者其他带有全速!全速!全速!雷电3接口的笔记本电脑(一定要问清楚是全速还是半速雷电3接口)。至于显卡坞的话华硕、雷蛇的都行,其他系列亦可以尝试一下,但商家都会告诉你不支持linux,不要害怕,不要相信这些所谓技术顾问或客服的水平!买过来就对了,因为ubuntu16.04LTS、18.04LTS均带有丰富的驱动,包括雷电接口驱动,能够轻松识别雷电接口设备。
(2)给笔记本电脑安装Ubuntu18.04LTS双系统,雷蛇客服和网络喷子表示雷蛇装不了ubuntu,但笔者在失败3次之后找到了问题的关键,参照下列注意事项可以轻松在雷蛇笔记本上安装ubuntu。
(3)在ubuntu系统上配置深度学习环境。首先是Nvidia驱动,如果笔记本自带独立显卡,而显卡型号又和外置显卡型号不同,那么此时一定要选择一个同时支持内外独立显卡的驱动,具体参照后文。
(4)此后的CUDA多版本安装、Anaconda3安装、conda创建多虚拟环境并安装pytorch-gpu、tensorflow-gpu就与普通情况一致了。

1. 软硬件准备

1.1 硬件配置

笔记本电脑型号:雷蛇灵刃15标准版(自带RTX1060独显)
显卡坞:雷蛇幻彩X(尝试了华硕XG Station显卡坞亦可,雷电3接口的显卡坞均可尝试,但不同显卡坞支持不同独立显卡)
外置显卡:RTX2080Ti(结合雷蛇幻彩X)、RTX2070(结合华硕XG Station)
整体安装效果上图中,左侧为华硕XG Station, 右侧围雷蛇幻彩X显卡坞,安装成功后运行nvidia-smi命令会有如下结果:
在这里插入图片描述
同样地,在X Server Settings菜单内也可以查看GPU0和GPU1的详细信息。
在这里插入图片描述

1.2 系统

win10专业版+ubuntu18.04LTS
ubuntu18.04LTS是最新的长期支持版本,自带雷电驱动,可以自动地识别外置显卡,支持即插即拔,十分方便。
在这里插入图片描述

2. 具体步骤

2.1 给雷蛇笔记本安装ubuntu18.04LTS

使用Rufus制作启动盘
如果是雷蛇笔记本的话,一定一定一定一定一定一定一定要在win10系统的那个盘压缩一部分空白内存用于挂载到 \boot,不然无法安装成功

2.2 设置启动项

在win10安装easyBCD可以轻松设置每一次启动的首选项是ubuntu

2.3 在ubuntu上配置环境

  1. 雷电3接口连接笔记本与显卡坞
  2. 开机
  3. 安装nvidia驱动,这步是关键哦,输入 lspci |grep -i vga,会出现如下信息:
    在这里插入图片描述
    以笔者电脑为例,有1060与2080Ti双独立显卡,那么需要选择同时支持二者的nvidia驱动,一定要去nvidia官网查询,然后安装
  4. 安装cuda9.0、cuda10.1(你也可以只安装1个,cuda版本切换请参考:https://blog.csdn.net/qq_23996885/article/details/90205937)
  5. 安装anaconda3,去官网
  6. pytorch,安装0.3版本+1.x版本即可满足绝大部分需要,通过conda安装pytorch-gpu0.3.1版本,请参考https://ptorch.com/news/145.html
    安装pytorch-gpu1.x版本:https://pytorch.org/get-started/previous-versions/
    安装tensorflow-gpu
  7. 检验
    使用conda activate torch110激活pytorch1.1.0虚拟环境,运行python,import torch,然后
    通过torch.__version__查看版本信息
    torch.cuda.is_available()查看是否可用gpu
    torch.cuda.device_count()得到可用gpu个数
    torch.cuda.get_device_name(0)、torch.cuda.get_device_name(1)分别获取gpu名字,
    通过下图结果可以发现pytorch将性能强悍的外置显卡2080Ti作为0号显卡优先使用。
    在这里插入图片描述

附件

conda虚拟环境创建、复制、删除、切换

复制base创建新的环境
创建、激活、退出、删除虚拟环境

2017-11-20 22:13:27 Lauyeed 阅读数 4022
  • 树莓派+python 系统部分

    本课程主要讲如何安装树莓派操作系统,如何采购树莓派,如何联网,笔记本如何控制,树莓派如何共享网盘,桌面共享,如何使用souceinsight,如何使用Pycharm进行写代码

    1096 人正在学习 去看看 程光淼

       最近,一直在自学深度学习。一边学习理论,一遍学习编程。在做CNN的时候,手头的笔记本电脑就吃不消了,运行的速度明显跟不上。本来想买一台带好点的显卡,可是调研了一下,带NVIDIA 1080的差不多要1万左右,更不用说更高的配置。

       偶然发现百度云里面有一款用于服务深度学习者的产品:百度深度学习。

       浅试了一下,个人感觉有以下几个优点,值得用来进行深度学习的学习:

       1. 上手容易。有帮助文档,可以帮助新手入门。虽然不是很丰富,但是上手很容易。

       2. 价格还算可以接受。因为我只是新手,计算的任务仅限于测试一些案例和调试一些参数。而该产品是使用按量计费的,最便宜的配置5.16元/时(Nvidia K40),非常符合我的需求,用完即可释放。

       3. 系统镜像已经预置了Tensorflow,keras等主流框架,非常方便。而且如果有缺少的包,也可自行安装。

       当然,也有不好的地方:

       1. 每次用完释放,无法保存镜像,每次都要重新下载数据。

       2. 用的是python2.7的版本。我笔记本上一直用的事Python3.5的版本。

       以下,简单描述一下使用过程(假设已经有百度云账号而且账号里面的余额不少于100元):

       1. 进入百度深度学习平台(https://cloud.baidu.com/product/bdl.html)

       2. 点击“立即使用”

       3. 点击“创建集群”

       4. 输入集群名称(随便取)、输入管理员密码、选择集群镜像、选择配置

       5. 点击“下一步”,点击“去支付”,随即你就拥有了一个带有Nvidia K40显卡的计算机。

       6. 进入管理控制台,点击集群名称,在基本信息里面可以看到公网IP,可以通过该IP访问该计算机。(该产品还自带了Jupyter notebook,不过目前没有太多的帮助文档,试用了一下,目前好像不太好用),以下是集群信息:

               

       7. 打开“Putty”(或者其他类似功能的工具),输入上述公网IP,输入用户名root,密码(创建集群时设置的密码),即可登陆集群。

       8. 集群中内置了3个domo,可以试一下,运行速度比笔记本快了很多。

      

       接下来就是上传自己的代码、数据、运行,并下载运行结果。集群是利用百度另一款产品,BOS实现数据的上传和下载。这里需要另外购买BOS,对于学习来说,BOS很便宜,是按照储存的量来计费的。以下是1GB的费用,只要0.74801元/月

     

        按照我的理解,集群需要通过BOS作为中转来实现和本地的数据交换。也就是说,本地计算机需要上传数据到BOS,然后集群从BOS上下载数据;算完之后,需要将集群上的数据上传到BOS,然后本地电脑再从BOS上下载,稍微有点麻烦,希望以后能够实现直接的上传和下载。不过,因为BOS和集群属于同一个内网,所以速度很快,可以达到20M/s。

       以下,介绍BOS的创建:

       1. 进入对象存储:https://cloud.baidu.com/product/bos.html

       2. 点击“立即使用”

       3. 点击“新建Bucket”,输入“Bucket名称”,(该名称是唯一的,可通过该名称储存,下载数据),区域和集群一致,存储类型选择“标准”,读写权限选择“公共读写”(我这里主要是用来学习,读数据的安全不是很重视,为了方便,选择“公共读写”)

       4. 点击“确定”,即可拥有一个类似硬盘的云盘

       5. 点击你创建的“Bucket名称”,即可进行文件的上传

       6. 这里假设你上传了文件cifar10_vgg16.zip文件,点击获取地址,即可获得该文件的地址file_address(指文件地址)

       7. 在Putty中输入wget file_address,即可从BOS中下载该文件到深度学习平台 

       以上介绍了文件的上传,即从本地上传到BOS,集群再从BOS中下载。反过来的过程,即从集群上传文件到BOS,需要使用BOS CLI,

       1. 从以下地址下载BOS CLI安装包https://cloud.baidu.com/doc/Downloadcenter/CLI.html

       2. 通过上述步骤将该安装包从本地上传到BOS,然后从BOS下载到集群

       3. 在Putty中解压安装包、安装

    $ unzip bce-cli-0.10.8.zip
    $ cd bce-cli-0.10.8
    $ python setup.py install
       4. 安装完之后,就可以把集群中的文件上传到BOS,这里假设你要上传mnist.py

    bce bos cp mnist.py bos:/mybucket/mnist.py
       (这里mybucket要换成你刚才创建的Bucket名称)

       这样,就可以实现代码、数据在集群和本地电脑上的上传和下载,就可以愉快地进行深度学习了。

       以下,通过vgg16神经网络分类cifar10数据集对比一下,我破烂的笔记本电脑(ThinkPad E430c)和带一个Nvidia K40集群的速度:


ThinkPad E430C 8.8examples/sec
Nvidia K40 460examples/sec
       通过以上表格,K40可以达到笔记本电脑的52倍!
       用完之后,要记得点击“释放”,这样集群就自动删除了,然后百度会根据的用的时间进行计费。

       不好的事,集群释放之后,你计算的结果,上传的数据就跟着消失了(BOS中的数据不会消失)。等下一次你要算的时候,就要从头开始,不过每次创建的时间也不会太长,估计在3分钟左右,也可以接受。




        


       

2017-10-08 20:00:36 Charlie_Black 阅读数 291
  • 树莓派+python 系统部分

    本课程主要讲如何安装树莓派操作系统,如何采购树莓派,如何联网,笔记本如何控制,树莓派如何共享网盘,桌面共享,如何使用souceinsight,如何使用Pycharm进行写代码

    1096 人正在学习 去看看 程光淼

  研究的专业方向是关于深度学习方面,最近想动手在自己笔记本上跑了一下,于是动手写一下这方面的经验。目的一是总结而是能够时不时看一下反思,等哪天想出思路,SCI也能够触手可得。


工作室中有可以搞深度学习的服务器,但是我先是在自己的笔记本上尝试运行下,出什么问题至少可以返工。

先说一下笔记本配置,我觉得我是搞深度学习最穷配置的吧。微笑微笑

联想笔记本,win8系统(没听错,不是Linux ,笔记本还得做其他任务呢),只有cpu,没有GPU,没有英伟达的显卡

caffe框架  opencv(用的话只用cv2的包) 还有Anaconda(python2.7) VS2013(一定安装2013)  

1、安装caffe框架,安装Anaconda,解释下,搞深度学习有很多框架可以使用,但是caffe是目前初学者最好用的,也是应用最广的。caffe框架有多个接口,但是应用最好的还是python接口。对于python我也没有学过,从零开始学习吧。学习python的好的工具就是Anaconda(初学者)。安装教程推荐如下吧:

1)http://blog.csdn.net/sinat_27403413/article/details/52791489

2)http://www.cnblogs.com/yixuan-xu/p/5858595.html

我是按照以上两个教程配置的,但是在运行配置的过程中也是该出错就出错,等哪天出现错误我再重新贴出来。

2、caffe框架安装完成要使用手写体数据进行测试,相当于hello world。


这是编译好的caffe文件部分截图,这过程中出的问题蛮多的,网上一个一个搜,基本上都能解决。手写体数据测试参考教程:非常全而且系统

从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试 - Yixuan-Xu - 博客园
http://www.cnblogs.com/yixuan-xu/p/5862657.html

3、配置OPENCV

参考教程较多,找不到原来的网址了。

4、安装好caffe之后,我分别测试了mnist数据库和cifar10——图像分类任务,效果挺好的。












2017-08-07 13:33:27 qq_23947237 阅读数 574
  • 树莓派+python 系统部分

    本课程主要讲如何安装树莓派操作系统,如何采购树莓派,如何联网,笔记本如何控制,树莓派如何共享网盘,桌面共享,如何使用souceinsight,如何使用Pycharm进行写代码

    1096 人正在学习 去看看 程光淼

暑期深度学习实训笔记


本笔记包含深度学习的整体框架的summary:

  • 机器学习的大概流程
  • 得分函数
  • 损失函数
  • 寻参K近邻与交叉验证
  • 梯度下降
  • 神经网络的基本流程

目录

(一) 机器学习的大概流程

  • 数据收集数据,加定标签
  • 训练训练分类器,完成分类任务
  • 测评测试、评估当前分类器效果

(二) 得分函数

f(xw)=f(x,w) = 每个类别的得分值。

  • x:输入
  • w:参数

score function such as f(xw)=wx+bf(x,w)=w*x+b

  • 输入高维向量经过得分函数得到一个对应于每个类别的得分数值,分数越高则代表属于该类别的概率越大。

  • 一组得分值可经过e指数放大差别,再归一化得到一个[0,1]的概率值;也可以通过s型神经元σ函数映射到[0,1]。

(三) 损失函数

得分函数的分类效果好坏需要有损失函数来评估调整。得分函数分类得分的结果是由score function的 w 参数决定的,输入的 x 通过合理的 w 得到的得分才能更接近于正确的分类。

Loss function的值越大代表分类效果越差,越小越好,为0是理想状态。在softmax分类器中概率越接近于0,loss值越大;概率接近于1,loss值越小。

loss


  • softmax函数:一组得分值可经过e指数放大差别,再归一化得到一组[0,1]的概率值。

soft max


(四) 寻参的K近邻与交叉验证

(一) K近邻(KNN)分类算法,简单的机器学习算法之一。

knn

(1) k值参数不同,分类结果不同。若K=3,由于红点所占比例为2/3,绿点将被赋予红色类,若K=5,由于蓝点比例为3/5,因此绿点被赋予蓝色类。

(2) 给定一个训练数据集:对新的输入实例,在数据集中找到与该实例最邻近的k个实例,若这k个实例中大多数属于某个类,则把输入实例分为这个类。

(3) 算法中,当训练集、距离度量、k值和分类决策规则确定后,对于任何一个新的输入实例,它所属的类唯一确定。例如图像处理对动物的分类中,取L1度量,得到度量值取前10个(k=10),根据10个当中的标签类别比例,来得出分类结果。

交叉

(二) 数据可分为traintest,数据量并不大很宝贵。充分利用数据可采用交叉验证

(1) 将数据分为train、validation、test。做法为:假设5重交叉验证,将训练集分为5份,选择其中4份作为train,另一份作为val,train经过5次同时也val经过5次,将5次的平均作为该参数下的val结果。

**t {1/2/3/4} --------- v {5}**
**t {1/2/3/5} --------- v {4}**
**t {1/2/4/5} --------- v {3}**
**t {1/3/4/5} --------- v {2}**
**t {2/3/4/5} --------- v {1}**

(2) 然后对于不同的参数,重复这样的训练。选择准确率最高的参数作为最后的参数。在训练过程中不test,最终才test。

(五) 梯度下降

  • 优化loss function,达到最优。
  • 跟随梯度去寻找山坡的最低点,梯度是山坡的一个最陡峭的方向,我们沿着这个最陡峭的方向可以最快的走到山坡的最低点。
  • 沿着梯度的反方向去走,这就是梯度下降。由于梯度方向是使得LOSS值增加幅度最大的方向,所以为了LOSS能减少就要朝着梯度下降的方向去寻找最小点。
  • 多次迭代梯度下降更新参数以致收敛,一次沿着这个梯度下降的方向走多远叫做学习率。学习率对最优化问题起着决定性的作用,因为如果学习率太大有可能有跳过最低点才寻到的不是最小值,而学习率太小又会使得网络收敛太慢。

(六) 神经网络的基本流程

神经网络

  • 1、前向传播

  • 得分 → lossloss → 正则化惩罚 → LOSSLOSS

  • 正则化就是对权重参数进行惩罚,目的就是找到一组更平滑的参数项。正则化项的结果就是对于不同权重参数 WW 进行不同力度的惩罚惩罚也就是增加其 LOSSLOSS。正则化对于整个分类模型来说非常重要,可以很有效的抑制了过拟合现象。

  • LOSSLOSS:即损失函数的最终版公式。LOSSLOSS由两部分组成的,一部分是得分函数对应的 lossloss;另一部分是正则化惩罚项值

公式

  • 参考网址:http://blog.csdn.net/tangyudi/article/details/52090167

  • 正则化,防止过拟合。λ在这里我们称做正则化参数。若λ变大说明目标函数的作用变小,正则化项的作用变大,对参数的限制能力加强,这会使得参数的变化不那么剧烈,减少代价函数对特定参数的敏感性。参数代入正则化后的代价函数,代价值比未正则化时少了。例如2个维度的参数是10和1000,相差990,都乘以1/2变成5和500,相差495。

  • 2、反向传播

  • 对于X,Y,Z若干个输入来说分别对于LOSS值做了多大的贡献,链式求导法则

  • 加法门 : 均分

  • 乘法门 : 互换

  • MAX门 : 取最大

  • 3、更新参数

1.非线性的函数:激活函数。**σ函数在某些位置斜率接近于0,在反向传播链式求导过程中梯度为0,难以更新。**因此,用MAX函数代替。

drop

2.drop-out防止过拟合。Dropout的出现很好的可以解决这个问题,每次做完dropout,相当于从原始的网络中找到一个更瘦的网络,让某些指定的神经元不参与计算和更新。让某个神经元的激活值以一定的概率p,让其停止工作。 test用全部神经元,训练只用部分。不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重需要保留仅仅只是暂时不更新而已,因为下次样本输入时它可能又要工作了。
3.权重初始化不可以全部设置为0,因为这样会导致各项参数会沿着相同的方向更新。

(七) 结尾

深度学习的基础为神经网络,基本上它的框架理清了。
2017.8.7

2019-04-17 00:02:44 dongyuqing1987 阅读数 671
  • 树莓派+python 系统部分

    本课程主要讲如何安装树莓派操作系统,如何采购树莓派,如何联网,笔记本如何控制,树莓派如何共享网盘,桌面共享,如何使用souceinsight,如何使用Pycharm进行写代码

    1096 人正在学习 去看看 程光淼

选什么样的机器

深度学习主要对GPU有要求,所以选择机器的时候一定要有一块差不多的显卡注意要N卡。最稳妥的是组装一台机器。如果真的想来个笔记本,一定要谨慎,后面会说明原因。

先安装一个系统

买回一个电脑最常见的情况里面有一个windows或者组装机是没有系统的。开始我们的工作前强烈建议好好考虑一下更换自己的系统。
换的话当然是linux,无论是深度学习框架,还是写代码做实验的工作效率,linux的体验都是无与伦比的。所以想很爽的完成深度学习,首先要基于Linux系统。个人推荐Ubuntu,选一个近期的大版本,(即双数年份的4月版本,如:16.04,18.04)。废话不多说,开搞

安装盘制作

首先制作一个U盘做系统盘,这篇博客详细介绍了制作的方法。基本上都是常规操作没有遇到什么大坑。

开始安装

有了系统盘就可以开始装系统了

正常流程:

如果你是组装的台式机,无论是Ubuntu安装,还是window+ubuntu双系统,教程都比较多,算是常规操作了。

笔记本的坑:

如果是笔记本的话,要多多小心,上面的常规操作可能不成功。个人建议是要买哪个型号的机器提前看看网上有没有安装成功的案例,有的话再入手不迟。如果搜不到,要多多小心哦!

装上驱动

这里驱动主要是显卡驱动,深度学习要爽的话,当然要来一块N卡,显卡好用,CUDA难装。台式机依然是常规操作,教程很多.一步步来急不得。

显卡的坑

笔记本由于双显卡问题,导致安装cuda又变的很坑。个人经验将显卡驱动和cuda分开安装的方法成功率很高。
下面是个人在各种笔记本电脑上安装cuda的战绩:

  1. 深海泰坦x6ti 成功
  2. 神舟战神 失败
  3. thinkpad p470 成功

验证

到此位置你的ubuntu+cuda环境就搭建好了。
在终端中,用nvidia-smi查看驱动是否正常,返回列表中显示正常的显卡信息就成功了。
如图中表示显卡驱动正常要注意的是通过上述验证的话并不代表CUDA能正常运行。在安装CUDA的过程中大家都得到了"NVIDIA_CUDA-9.0_Samples",默认的话会放在根目录下。选几个例子跑一下,结果正确表明CUDA安装真的成功了。

没有更多推荐了,返回首页