玩深度学习,这些信息必须要了解!

包含关系

玩深度学习,这些信息必须要了解!_第1张图片

开发平台(框架)

深度学习的框架,相当于建筑中搭建起了各种钢筋混泥土结构,有了基本的受力和承重结构,用户根据需要按照各自喜好和需求形成房间,改变户型,满足具体的需求。

目前,人工智能的开发平台有很多。

国外有Facebook的Pytorch、Google的tensorflow(2.0版本已收纳keras)、Caffe、Microsoft的ML.NET等,

国内有百度的paddlepaddle(版本为2.0以上的动态图版本,和pytorch的用法是非常相似) 等。

玩深度学习,这些信息必须要了解!_第2张图片

训练硬件(炼丹炉)

随着模型复杂度和数据集规模的增大,计算效率成为了不可忽视的问题。GPU凭借强大的并行计算能力,成为深度学习加速的标配。(显卡是由GPU、显存等组成)

常用于深度学习的显卡gpu

NVIDIA,AMD,Google TPU, Intel Nervana

(注意:选择不同的显卡,环境配置前自然需要安装对应的驱动)

NVIDIA的标准库使在CUDA中建立第一个深度学习库变得非常容易。早期的优势加上NVIDIA强大的社区支持意味着如果使用NVIDIA GPU,则在出现问题时可以轻松得到支持。但是NVIDIA现在政策使得只有Tesla GPU能在数据中心使用CUDA,而GTX或RTX则不允许,而Tesla与GTX和RTX相比并没有真正的优势,价格却高达10倍。
(NVIDIA cuDNN是用于深度神经网络的GPU加速库,CUDA是运算平台。CUDA可以看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN就相当于是位于该工作台上的一把扳手。)

AMD功能强大,但缺少足够的支持。AMD GPU具有16位计算能力,但是跟NVIDIA GPU的Tensor内核相比仍然有差距。

Google TPU具备很高的成本效益。由于TPU具有复杂的并行基础结构,因此如果使用多个云TPU(相当于4个GPU),TPU将比GPU具有更大的速度优势。因此,就目前来看,TPU更适合用于训练卷积神经网络。

Intel Nervana的神经网络处理器(NNP)。凭借着几种迎合CUDA开发者需求的独特性能,它表现得还比较有竞争力。NNP处理器可以解决优化深度学习的CUDA内核中绝大多数的问题。

总体最佳GPU:RTX 2070GPU
避免使用:任何Tesla;任何Quadro;任何Founders Edition;Titan RTX,Titan V,Titan XP
高效但价格昂贵:RTX 2070
高效且廉价:RTX 2060,GTX 1060(6GB)
价格实惠:GTX 1060(6GB)
价格低廉:GTX 1050 Ti(4GB)。或者:CPU(原型设计)+ AWS / TPU(培训);或Colab。
适合Kaggle比赛:RTX 2070
适合计算机视觉研究人员:GTX 2080 Ti,如果训练非常大的网络,建议使用RTX Titans
截至2020年2月,以下GPU可以训练所有SOTA语言和图像模型:
RTX 8000:48 GB VRAM
RTX 6000:24 GB VRAM
Titan RTX:24 GB VRAM

想要选择合适的训练硬件不仅取决于纯粹的性能或者性价比,还要综合考虑性价比+周边生态+深度学习框架:

(36条消息) 深度学习的硬件之争关键年:NVIDIA, AMD, Intel鹿死谁手?_大数据文摘的博客-CSDN博客_amd为什么便宜

显存不够的解决办法

然而随着训练样本越来越大,显存会变得非常有限。除了升级硬件(烧钱)、使用分布式训练(费力),还有GPU和CPU混合训练效率的方法(显存不够内存来凑,甚至有可能获得更好的训练性能),不过这个方法不是我想讲的重点,各位可以训练时自行配置。

好吧,还是给各位大大一个学习链接吧:

(362条消息) 把显存用在刀刃上!17 种 pytorch 节约显存技巧_听 风、的博客-CSDN博客_降低显存占用

对于新手来说,为了能够正常运行程序,通过云服务器进行训练是一个性价比还不错的方法。

【AI Studio】

玩深度学习,这些信息必须要了解!_第3张图片

百度飞桨在线AI开发平台,每天送8点算力卡

AI Studio操作指南: https://blog.csdn.net/weixin_41450123/category_10707833.html

notebook使用指南: https://aistudio.baidu.com/aistudio/projectdetail/39212

后台任务使用指南: https://aistudio.baidu.com/aistudio/projectdetail/1173726

脚本任务使用指南: https://aistudio.baidu.com/aistudio/projectdetail/98453

【google colab】

优点:免费,可使用Google TPU

缺点:账号登录也不是很稳定,有使用额度限制(<12h),恢复时间长

  1. 注册Google账号,更换纯净的IP网址,更改浏览器语言设置为英文。

  1. Goolge Colab使用教程:https://blog.csdn.net/weixin_45912366/article/details/124253460

【AutoDL】

要钱!!!通过学生认证95折,对新手超友好

玩深度学习,这些信息必须要了解!_第4张图片
  1. AutoDL帮助文档

  1. (362条消息) AutoDL使用教程:1)创建实例 2)配置环境+上传数据 3)PyCharm2021.3专业版下载安装与远程连接完整步骤 4)实时查看tensorboard曲线情况_孟孟单单的博客-CSDN博客_autodl

控制台中的实例快捷工具里,有jupyerlab可以直接连接到远程服务器,在里面正常写代码就可以运行。

租用GPU云服务器训练:阿里云、华为云

(26条消息) Pycharm远程连接云服务器训练模型教程_ZHW_AI课题组的博客-CSDN博客_pycharm训练模型

模型组建:

detector=backbone+head+neck

  1. backbone:提取基础特征网络,主干网络(也叫骨干网络)

    VGG、ResNet(ResNet18,50,100)、ResNeXt、DenseNet、SqueezeNet、Darknet(Darknet19,53)、MobileNet、ShuffleNet、DetNet、DetNAS、SpineNet、EfficientNet(EfficientNet-B0/B7)、CSPResNeXt50、CSPDarknet53;

  1. head:检测头,分类+定位,算法网络层

    one-stage(单阶段检测):RPN、SSDYOLO、RetinaNet、CornerNet、CenterNet、MatrixNet、FCOS;

    two-stage(两阶段检测):Faster R-CNN、R-FCN、Mask RCNN (anchor based)、RepPoints(anchor free);

  1. neck:提出一个好的结构或模块,更好适应feature,拓展模块

    SPP、ASPP、RFB、FPN、NAS-FPN、Fully-connected FPN、BiFPN等;

单阶段 :直接对anchor回归和分类最终目标框和类别;
两阶段 :先用anchor回归候选目标框,划分前景和背景,再使用候选框进一步回归和分类,输出最终目标框和对应的类别。
neck :一般翻译成“瓶颈”或是“脖子”,这个翻译总感觉有些问题,此结构主要是将backbone上的多个层级的特征图进行融合加工,增强网络的表达能力,同时,neck决定了head的数量,决定了不同尺度的样本如何分配到不同的head。

以PaddleDetection模型库举例

PaddleDetection模块式地提供YOLOv3,EfficientDet等10余种目标检测算法、ResNet-vd,MobileNetV3等10余种backbone,以及sync batch norm, IoU Loss、可变性卷积等多个扩展模块,这些模块可以定制化地自由组合,灵活配置;同时预置提供100余种训练好的检测模型。

玩深度学习,这些信息必须要了解!_第5张图片
# 模型结构类型
architecture: YOLOv3 
# 预训练模型地址
pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/MobileNetV1_pretrained.pdparams 
norm_type: sync_bn
 
YOLOv3:
  backbone: MobileNet # 骨干网络
  neck: YOLOv3FPN
  yolo_head: YOLOv3Head
  post_process: BBoxPostProcess
 
MobileNet:
  scale: 1
  feature_maps: [4, 6, 13]
  with_extra_blocks: false
  extra_block_filters: []
 
# use default config
# YOLOv3FPN:
 
YOLOv3Head:
  anchors: [[10, 13], [16, 30], [33, 23],
            [30, 61], [62, 45], [59, 119],
            [116, 90], [156, 198], [373, 326]]
  anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]]
  loss: YOLOv3Loss
 
YOLOv3Loss:
  ignore_thresh: 0.7
  downsample: [32, 16, 8]
  label_smooth: false
 
BBoxPostProcess:
  decode:
    name: YOLOBox
    conf_thresh: 0.005
    downsample_ratio: 32
    clip_bbox: true
  nms:
    name: MultiClassNMS
    keep_top_k: 100
    score_threshold: 0.01
    nms_threshold: 0.45
    nms_top_k: 1000

最新的模型配置可以从paddledetection的模型库中下载,同时可在库中查看一些评测效果,根据对应的模型评估指标下载:

PaddleDetection: PaddleDetection的目的是为工业界和学术界提供丰富、易用的目标检测模型 (gitee.com)

玩深度学习,这些信息必须要了解!_第6张图片

模型的部署

对于绝大多数项目,我们的终端设备几乎不可能配一个台式主机,也就意味着没有很强大的计算能力和存储能力。一般都是PC端训练,移动端部署,需要将模型部署到具体的硬件中。

部署的关键在于保证精度的情况下,尽可能压缩模型体积,提升模型预测速度

部署开源工具:腾讯的ncnn、英伟达的tensorrt、百度的paddle-lite、Paddle Inference

部署硬件:ARM开发板FPGA、Edgeboard、Jetson

玩深度学习,这些信息必须要了解!_第7张图片

参考:

  1. (26条消息) 【强化学习】百度Paddle7日打卡营学习心得_爪哇 o_O的博客-CSDN博客_paddle学习计划

  1. (24条消息) 【深度学习】模型训练云服务器平台推荐!!!个人心路历程,新手少踩坑_qq_57319696的博客-CSDN博客_模型训练平台

  1. (26条消息) 基于Paddle的计算机视觉入门教程——第4讲 深度学习的基本实现流程_计算机深度学习过程_一笑奈何LHY的博客-CSDN博客

你可能感兴趣的:(深度学习,人工智能,神经网络)