计算图
date
Dec 19, 2024
slug
grpah-ir
status
Published
tags
AI-Infra
summary
type
Post
基于计算图的AI框架


计算图与优化执行
图优化

图调度与执行
计算图的单设备算子间调度
- 数据流图准确的描述了算子之间的依赖关系
- 根据数据流图找到相互独立的算子进行并发调度,提高计算的并行性

计算图的切分与多设备执行


- 计算图切分:给定一个计算图,将计算图切分后(单算子子图)放置到多设备上,每个设备拥有计算图的一部分。
- 插入跨设备通信:经过切分计算图会被分成若干子图,每个子图被放置在一个设备上,进行跨设备跨子图数据传输。
动态图转换为静态图

基于追踪Trace:直接执行用户代码,记录下算子调用序列,将算子调用序列保存为静态图,执行中脱离前端语言环境,由运行时按照静态图逻辑执行;
- 优点:能够更广泛地支持宿主语言中的各种动态控制流语句;
- 缺点:执行场景受限,只能保留程序有限执行轨迹并线性化,静态图失去源程序完整控制结构;
基于源代码解析:以宿主语言的抽象语法树(AST)为输入,转化为内部语法树,经过别名分析,SSA(static single value assignment),类型推断等Pass,转换为计算图表示;
- 优点:能够更广泛地支持宿主语言中的各种动态控制流语句
- 缺点:
- 后端实现和硬件实现会对静态图表示进行限制和约束,多硬件需要切分多后端执行逻辑;
- 宿主语言的控制流语句并不总是能成功映射到后端运行时系统的静态图表示;
- 遇到过度灵活的动态控制流语句,运行时会退回到由前端语言跨语言调用驱动后端执行;
