-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Refactorization Progress and Plan
Tao Luo edited this page Dec 9, 2019
·
1 revision
-
用 PaddlePaddle API 描述DeepLearning算法,需要写很多代码。需要参考新一代的DL系统(TensorFlow Keras、PyTorch)重新设计便于使用的API。
-
PaddlePaddle代码设计繁复,用户看不懂。新加入团队的同事们也看不懂。为了提升社区活力,鼓励新成员加入贡献,提升用户对PaddlePaddle的信心,必须重写大部分代码。
-
老一代的DeepLearning系统对计算的表示是“a sequence of layers”,新一代的表示是“a graph of operations”。需要核心代码重新设计,支持新的表示方法,提供足够的灵活度,以表达未来会研发出的新算法和新模型。
-
团队人员输出世界一流高质量代码的一次培训。
-
2月:推出了新的PaddlePaddle API,使得算法开发需要写的程序行数下降了~4倍;
-
3月:用新 API 重写了 PaddlePaddle 的八个典型实例,验证了新API的有效性;
-
4月:围绕实例写了 Deep Learning 101 这本书,并且每章录制了视频公开课;
-
5月:开始 PaddlePaddle Cloud 的开发。开始用 IDL 内部应用验证新 API;
-
6月:研读TensorFlow、Caffe2、PyTorch、DyNet的源码,并且规范化;
-
7月:开始重构核心代码(不要只是金玉其外)。国家重点实验室机群搭建完成;
-
8月(https://github.com/PaddlePaddle/Paddle/projects/19)
- 基于重构后的核心代码,实现一部分常用 operators;
- 重新实现Python API,operators 映射成 layers —— 因为用户编程时希望逻辑表达是layers;
- 基于重构后的核心代码和新的Python API实现,可以实现前向神经元网络的训练和inference。用MNIST来验证;
- 规范开发流程:
- 在编码前先写设计文档;
- 编码过程中更新设计;
- 开发验证之后把设计文档更新成用户文档;
- 规范测试流程
- 规范化测试的书写;
- 限制执行时间;
- 确保测试覆盖率;
- 自动测试grandient的计算结果;
-
9月中(Project:https://github.com/PaddlePaddle/Paddle/projects/20)
- 跑通循环神经网络:支持RNN的模型训练,选择情感分类作为第一个验证示例;
- 团队成员并行开发各种operators,确保可以迁移现有layer;
-
9月底:
- 重构后的Paddle核心和Paddle Cloud的分布式架构兼容;
-
10月:
- 实现
if else then
分支operator; - 迁移现有layer;
- 迁移现有demo/models;
- 结合新的应用开发新的 demo/models;
- 高性能加速(与INTEL&NVIDIA联合开发);
- 实现
-
12月初:
- 完成v0.11.0版本的发布工作;