百度飞桨PaddlePaddle-21天零基础实践深度学习-【手写数字任务】3

@百度飞桨PaddlePaddle-21天零基础实践深度学习-【手写数字任务】3

资源配置

面对更加复杂的机器学习或深度学习任务,需要运算速度更高的硬件(如GPU、NPU),甚至同时使用多个机器共同训练一个任务(多卡训练和多机训练)。可以通过资源配置的优化,提升模型训练效率。

单GPU训练

飞桨动态图通过fluid.dygraph.guard(place=None)里的place参数,设置在GPU上训练还是CPU上训练。

with fluid.dygraph.guard(place=fluid.CPUPlace()) #设置使用CPU资源训神经网络。
with fluid.dygraph.guard(place=fluid.CUDAPlace(0)) #设置使用GPU资源训神经网络,默认使用服务器的第一个GPU卡。"0"是GPU卡的编号,比如一台服务器有的四个GPU卡,编号分别为0、1、2、3。

or

use_gpu = False
place = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()

分布式训练

Why ?
强大模型加上海量的训练数据,经常导致模型训练耗时严重。
在机器资源充沛的情况下,分布式训练能将大部分模型的训练时间压缩到小时级别。
两种实现模式:模型并行和数据并行。

GPU硬件技术支持>>>>>>>>>>数据并行
PRC通信方式 (通常CPU)
NCCL2通信方式 (飞桨GPU)

训练过程

训练过程优化思路

  1. 计算分类准确率,观测模型训练效果。(评价指标)fluid.layers.accuracy
  1. 检查模型训练过程,识别潜在问题。
    check_shape变量打印“尺寸”,验证网络结构是否正确。
    check_content变量打印“内容值”,验证数据分布是否合理。
  1. 加入校验或测试,更好评价模型效果。
    训练集:训练过程完成
    验证集:模型参数的选择和调整
    测试集:真实反映模型效果
  1. 加入正则化项,避免模型过拟合。
    模型过于敏感,训练数据量太少或其中的噪音太多>>>过拟合
    优化器中设置regularization参数即可实现。
  1. 可视化分析。matplotlib库 or VisualDL
#引入matplotlib库
import matplotlib.pyplot as plt

or

# 安装VisualDL
!pip install --upgrade --pre visualdl
#引入VisualDL库,定义作图数据存储位置
from visualdl import LogWriter
log_writer = LogWriter("./log")

模型保存

模型加载和恢复训练

训练过程主动或被动的中断 >>>>>飞桨支持从上一次保存状态开始继续训练,只要随时保存训练过程中的模型状态,就不用从初始状态重新训练。

恢复训练有如下两个要点
1.保存模型时>>>>同时保存模型参数和优化器参数。
2.恢复参数时>>>>同时恢复模型参数和优化器参数。

#保存模型
使用model.state_dict()获取模型参数。
使用optimizer.state_dict()获取优化器和学习率相关的参数。
调用fluid.save_dygraph()将参数保存到本地。

#恢复模型
使用load_dygraph获得模型参数和优化器参数。

你可能感兴趣的:(神经网络,机器学习,深度学习,python)