谢邀。
我是Keras团队的工程师,也是主持这次code分离的工程师。
首先来介绍一下这个项目最早的初衷是什么。TF是一个巨大的项目,涉及到的代码从最底层硬件交互,到中间的算子,然后到最上层用户python,编译整个项目是一个非常耗时耗力的过程。在google内部,我们有十分强大的编译工具和cache,一般build整个项目只要几分钟。但是在普通用户的单机上,基本上就是几个小时。(我们以前组里开玩笑说租一个最大的GCP虚拟机来编译TF,七七八八大概一次要5美金左右)。所以基本上让用户从GitHub上来贡献代码就是个劝退的过程。要么PR是只改document,要么就是完全没有测试过,然后我们工程师要自己帮用户跑一遍测试。
在19年的时候大家就意识到了这个问题,TF这个项目不能无限的扩大下去。Infra组的Gunhan就提出了一个modular TF的设计(感兴趣的小伙伴可以去看看)。
主要的想法就是把不同层的代码分开打包和编译,然后互相只通过公开的接口来交互。我们这次的项目也是同样的初衷,具体的设计可以从下面看到。
原本这个设计在20年初就通过了,后来因为疫情稍微延后了一下。主要的时间是花在了清理TF和Keras之间的依赖关系上,而且原本很多Keras代码直接使用了非公开API,把它们全都改写成公开API花了很多功夫。
具体的成果就是现在编译Keras完全不耗时(因为python不需要编译),跑单元测试也基本很快,更重要的是基本理清了既存代码里的依赖关系。
站在用户的角度说,这个改动是基本没有影响的,我们只是把代码挪了个地方,正常的tf.keras API也没有任何改变。对于想贡献代码的小伙伴应该会让体验更加好一点。
希望这个回答能够解答大家的疑问,而不是让大家觉得我们在反复横跳[doge]。
谢谢