UGraph 是深度学习框架,UGraph 中的 U 是 unify 的缩写,UGraph 致力于实现几方面的统一: 1. 动态图和静态图的统一;2. 训练和推理的统一;3. 各种芯片调用的统一;4. 单机计算和分布式计算的统一。在此之前,这些功能都有不同的实现方式,并且需要使用不同的框架,比如 TensorFlow、PyTorch、oneDNN、TensorRT、MNN、Megatron-LM 和 HugeCTR 等。UGraph 将探索深度学习框架中使用到的各类技术,尝试以统一的方式解决这些问题。
设计目标:
- 易用性:模型训练:易于调试、修改;模型部署:易于嵌入各类应用中;框架开发:架构清晰、文档齐全、开发成本低。
- 高性能:充分发挥计算设备提供的计算和并发潜能。
- 统一:在统一的架构下,解决深度学习的各类问题,即降低框架的开发成本,也避免用户在不同框架之间迁移的成本。
UGraph 仅为 peitingkuan 个人开发的研究性项目,目的是学习深度学习框架中的各类技术、提高个人的开发水平和验证想法的正确性。文档中提到的功能,仅为愿景和目标,并非已经实现的功能。此项目目前仅处于 Demo 的开发阶段。
- 如何设计统一的深度学习框架:介绍 UGraph 构建统一的深度学习框架使用的方法。
- “Graph”概述:UGraph 统一动态图与静态图运行时的方法。
- UGraph 架构:UGraph 的架构设计。
安装 cmake 3.17.0 及以上版本,执行 ugraph/script/ 目录下的脚本生成工程并编译:
- Windows,使用 Visual Studio 2017 编译
- MacOS,使用 Xcode 编译
- Linux,使用 make 命令编译
在 ugraph/test 和 ugraph/python/ugraph/test 目录分别提供了 c++ 及 python 的单元测试。