• 首页
  • 关于

鸽子窝:Pigeon's Blog

笨蛋鸽子的小窝
笔记

XJTU-深度学习工具与平台-2026春-思路梳理

2026-06-11 浏览量 0 暂无评论

第一章

四种模型:CV\GAN\NLP\RL
计算框架,第一代Caffe,配置文件提供layer级操控,不够灵活
第二代,用DAG描述,分TF和Pytorch
TF是静态图,可以全局优化,代码复杂,效率高,没有中间结果
PT是动态图,边执行边定义,代码简介,不能全局优化
自动求导:将复杂的函数拆分为算子组合。

第二章

定义一个新的Net,必须继承Torch.nn.Module

GoogLenet

Inception,有多个branch,最后在通道维度叠加。
注意要先用1x1降维,padding需要设定以保证维度不变

Resnet

out=out+x
注意两种块,Basic直接卷积,BottleNeck是先降再生减小计算开销。

Torchvison使用

PIL/numpy是在【-255,+255】的,需要ToTensor到0,1

自定义DataSet需要重写三个类,Len、getitem、init
读入用pd.readcsv

第三章

矩阵运算是大部分Net或Layer的基础。
矩阵运算的优化,以A*B为例,对B取转置,并对A、B分快。
CPU:Control Unit和Cache大,ALU相对更少,可以处理复杂的控制逻辑、支持prefetch, jump Branch等逻辑,不擅长处理大量数据。
GPU:ALU很多,Cache和Control相对更少,不能解决复杂逻辑,对稠密数据计算效率高。
GPU矩阵优化:Block级分块=>warp级分快=>Thread级分快
Software Pipling: 在一个device计算时,另一个device开始fetch。
脉动阵列:从上向下灌入数据,从左到右传递数据。

第四章

传统编译器

GNU vs LLVM
GNU:一个编译器->一个target
LLVM: 一个编译器->LLVM IR->一个target
IR保证了编译器的跨平台。
LLVM Middle End的一次Pass是对源程序的完整扫描与优化处理。

AI编译器

把Graph编译为机器码。
相似之处:

  • 理念类似
  • 优化方式类似
  • 软件结构盏类似
  • AI编译器依赖传统编译器

    区别

  • IR。AI的IR High Level(部分图); Traditional的是Low Level(汇编)
  • 优化。AI Compiler会做专业领域的优化,如Op Fusion或降精度fp16

    前端优化

  • 通过图的优化,降低复杂度或计算开销
  • 数据流图作为IR,允许任何等价图pass化简
  • 与硬件无关
    算术表达式化简、公共子表达式消去、死代码消除、常量折叠
    图优化:算子融合、布局转换、内存分配
    死代码优化:
  • 通常是因为其他Pass引起的四代码
  • 避免执行不必要的操作,减少时间。
  • 节省资源分配
  • 压缩代码行数,提高可读性
    BN:归一化、使得训练更快更稳定
    算子融合:
  • 减少内核启动开销
  • 减少内存读取,提高计算密度

    后端优化:

    算子优化、循环优化。

    第五章

    神经网络稀疏化是在资源受限平台部署的前提。
    剪枝的好处:

  • 同等内存下,大稀疏模型精度高于小稠密模型
  • 剪枝之后,同体积参数量效果也好与原生模型
  • 资源有限时,剪枝是好的压缩方法
  • 可以向硬件支持方向发展

    非结构化剪枝

    阈值剪枝,不删除神经元、不改变矩阵维度,精度高,难加速,有要求。
    存储及计算,两方面受益。

结构化剪枝

删掉某个过滤器,通过L1范数评估重要性。
时间和空间复杂度的减少,取决于n

激活稀疏

Apoz,记0元素占比。接近于1,该剪了
Sbnet,动态的掩码

  • 先训练,然后再验证集上获取APOZ
  • 修剪神经元
  • 重新训练

    梯度稀疏

    Distributed同步时,小于阈值的梯度不同步,本地攒着。

    量化

    核心就是减少bit,用fp8/fp16/三值来表示权重以降低存储计算开销。
    优点:

  • 保持精度
  • 节省内存
  • 加速计算
  • 节能、减少芯片面积

    轻量化网络

    卷积分为深度分离卷积+1x1卷积

    [!warn]
    标准卷积参数量:K^2 *M*N
    深度卷积: K^2*M*1+M*N*1^2
    运算次数:F^2*Para
    仿存: Para+F^2*cishu

    第六章

    仅提高并行处理效率是不够的,串行部分决定理论加速上限。
    线性加速比是有可能的。

    算子内并行

    SIMD

    算子间并行

    模型并行

    把模型按layer划分到不同device,但是本质穿行。

    流水线并行

    注意还是模型并行,每个Device有一部分模型
    Gpipe算法,Micro-Batch执行完后统一Backward
    PipeDream算法:第一个 split 前向结束立即开始反向

    数据并行

    每个device是完整模型,训练数据切片,交换梯度,用平均值或者和。
    两个实现:
    Reduce+BroadCast
    Reduce-Scatter+All-Gather

法1耗时:

  • 中心法,($\alpha+2\frac{S}{B}$)+NSC
  • 树递归,$2*\log_{2}(N)*\left( \alpha+\frac{S}{B}+SC\right)$
    法2 Ring-Allreduce:
  • 第k个节点发给下家第k份数据,并接受上家第k-1份数据
  • 根据第k-1个数据和自己的k-1数据,发给下家
  • N-1次迭代后,每个节点都有一个chunck的最后结果
  • 再N-1次迭代,ALL-gather
  • 每个worker的数据量是2*(N-1)*K/N,一手一发

    同步SGD和异步SGD

    一个能收敛,一个速度快

Torch.Distributed和Horovod

Torch原生:

  • 只实现了组网和通信
  • 没有数据集分割
  • Allreduce需要显式调用
  • 开发运行效率低
    Horovod:
  • 专注数据并行
  • 支持多框架
  • 易用
  • 小巧
    优点:
  • 不再依赖torch
  • 命令封装好
  • 多后端支持
  • 提供提升效率的函数

    第七章

    Docker:Registry/Image/Container

    特色

  • 轻量级
  • 标准化
  • 运行环境一致
  • 启动快
  • 隔离性
    多个image,可以从一个base image加载;多个container可以服用一个image(Copy-on-Write)
    景象:静态、只读、类
    Container:动态、读写、对象
    命令:
    FROM 指定基础景象
    RUN 运行命令
    WORKDIR 指定默认命令位置
    COPY 复制到镜像

命名空间(Namespace)的隔离
pid、net、mnt、user

Fairness:公平调度

单资源:MAX-MIN,给最少的分资源
多资源:DRF。给Domain Resource最少的分资源

Affeninty: 拓补分陪

基于Quota——产生碎片
HiveD:优先从High-Level调度资源

FlexBility

弹性:有空余,可以用超过Quota的资源
抢占:没空余,收回一部分资源
被抢占的作业直接失败,checkpoiint之后的丢失

第八章

对抗攻击,加一点小噪声但是还像是原来的图
有约束条件,扰动小于delta
神经网络用非鲁棒的特征辅助识别
有目标:希错到某个结果。
无目标:错了酒OK
对抗布丁:特殊图案,骗过检测器或分类起

被动防御

在不修改模型的情况下找到对抗样本。
特征缩减、平滑、高斯噪声、Resize等

主动防御

拿对抗样本训练,告诉模型错的该怎么分。
不能泛化、有计算开销。

保密

联邦学习:各参与方不上传原始数据,只上传参数、梯度或模型更新。
同态加密允许服务器直接在密文上算,解密后的结果等价于明文计算结果。

伦理

偏见、假新闻等。

阿里云 2C2G 的小鸡为什么只有 1.6G内存?
没有了
  • 文章目录
  • 站点概览
    author

    13 日志
    6 分类
    Creative Commons

    浏览量 : 0

    © 2026 鸽子窝:Pigeon's Blog. Power By Typecho . Theme by Shiyi

    This is just a placeholder img.