机器学习:资料流图(Data Flow Graphs)模型训练架构

资料流模型将运算任务描述成一个"有向无环图",节点表示资料运算和储存,节点之间的连线表示资料流向以及节点的依赖关系。

TensorFlow

名字由多维度资料集 - "张量(Tensor)"与"资料流(Flow)"组成,使用拓扑图代表资料流关联,具备痊域优化能力。

  • 设计原则
    • 资料流:支持各种类型的数值计算任务。
    • 拓扑图:避免运行阶段的重复建构以提升运行效能。
    • 异质性:支援CPU、GPU、TPU等运算单元以及TCP、gRPC、RDMA等通讯。
  • 系统架构
    • 应用层:提供多种程序语言撰写环境。
    • API介面层:提供多种程序语言介面。
    • 图计算层:负责单机或分散式的计算环境。
    • 资料操作层:负责於实体运算单元上"张量"的操作与运算。
    • 网路层(Network Layer):透过 gRPC 和 RDMA 实现程序(Process)间的通讯。
    • 装置管理层(Device Layer):负责实际的网路及运算单元管理。
  • 交谈(Session)
    管理资料流的运行状态。
    • 角色
      • Client
        序列化、传输以及启动程序撰写时所定义的 GraphDef 任务。
      • Master
        进行模型剪枝(Pruning)将任务组成"最小生成树",将任务切割成分区图(Graph Partition),之後通知 Worker 执行分配的任务分区图。
      • Worker
        将任务切割成子分区图(Sub Graph Partition)给运算单元执行。
    • 参数
      • Cluster:运行丛集及透过 ClusterSpec 设定 Job 及 Task 的组态资讯。
      • Job:使用 job_id 来识别 Worker。
      • Task:使用 job_id:task_index 来识别任务。
  • 模型复制
    • In-Graph
      将输入资料、拓扑图(tf.Graph)和参数(tf.Variables)分配到不同的节点上执行,如果任务(Task)失败则整个任务失败,容错能力较低。
    • Between-Graph:
      参数会透过 Cheif Worker 存取,以共享方式储存在"参数服务器(PS)"上,包含参数初始化、Checkpoint、Tensorboard Summary。
  • 分散式策略
    • ParameterServerStrategy
      参数服务器架构:定义 PS 与 Worker 实体数量、执行节点、通讯组态。
    • MultiWorkerMirroredStrategy
      Ring-AllReduce架构。

PyTorch

采取组态档案以及指令(CLI)参数方式组成程序,采用动态图(Dynamic Graph)以及 Autograd 实作梯度运算,目前缺乏像 TensorFlow 一样支援多种服务器以及移动端等架构运行环境。

  • 分散式架构
    • 参数
      • Group:程序集合
      • World_size:全域的程序数量
      • Rank:表示程序的识别码及优先序(Rank0为主节点)
      • local_rank:程序内的编号
    • 运行架构
      • 点对点通讯(Point-to-Point Communication):程序间的资料传输
      • 集合通讯(Collective Communication):支援 AllReduce以及Boardcast等集合通讯
  • 程序介面
    • DataParallel
      使用 Optimizer 来合并及广播梯度及参数,容易遭遇附载平衡问题,造成单点瓶颈。
    • DistributedDataParallel
      采用 Ring-AllReduce 最佳频宽解决方案。
  • 通讯引擎
    • Gloo:常用於 CPU 丛集
    • NCCL:常用於 GPU 丛集

<<:  Day 14 Compose GridLayout

>>:  30天零负担轻松学会制作APP介面及设计【DAY 10】

Day-07 Logistic Regression 介绍

在前面两天我们已经说完基础的 Regression 跟 Classification 了,为什麽在...

IEEE-754 与浮点数运算

本文目标 IEEE-754 规范对於工程发展的重要性 认识浮点数 使用演算法改善浮点数运算时带来的误...

【Day9】React Proptype的验证及套用方法看这里 ! ٩(●˙▿˙●)۶…⋆ฺ

如果我们想要强迫传来的Prop是某种型态或是强迫某个Prop一定要被传入的话, 我们可以使用Prop...

离职倒数16天:推荐在日本软件业工作吗?「东京并不是一个让你实现梦想的地方。东京是一个能让你不去注意到自己的梦想并未实现的地方。」

前几天有朋友问我「推荐在日本软件业工作吗?」 我有点不太知道怎麽回答,因为我没在其他地方工作过,无从...

Day02 捷径只能自己写吗?

Hello 大家 今天下班就是四天的连假了! 要去哪里玩呢? 疫情这样我应该是把自己关在家吧 其实捷...