说明
IL工具从底层到顶层分别是:函数字典、规则集、函数链和立体图。简单比较一下这几个层级工具的作用和异同点。
内容
1 作用
- 函数字典:将函数的管理抽象化,为上层的调用提供了基础。
- 规则集:将一些组合动作封装起来,减少复杂逻辑的重复书写和调试。
- 函数链:实现一个简单的功能,例如一次建模活动。
- 立体图:实现完整的功能,例如构建一个完整的线上服务。
2 异同点(特点)
2.1 修改频次
把这些IL模块比喻为乐高积木:
- 1 函数字典产生最基本的积木,一旦产生后,修改就比较少
- 2 函数集:是几个积木拼起来的小模块,更多的在于重新组合和微调,频次稍高
- 3 函数链:用基本的积木和一些拼好的模块构成一个半成品,会不断的重新组合,频次更高
- 4 立体图:拼成一个成品。从开始到成型一直在变,稳定后则会通过分叉不断调优。
2.2 逻辑作用
- 1 函数字典之前讨论过比较多,概念化,动态化函数,使用者不必知道函数存在哪,如何导入。
- 2 规则集。本质上相当于一个内存中的接口,做起来比较费时,所以一定要具有通用性的组合动作才值得开发。(例如数据IO,既繁琐又常用)
- 3 函数链更像是一个pipeline,将一系列动作有机的结合在一起。函数链具有调优功能。
- 4 立体图是一个更大的概念。是上层应用的组合。
2.3 技术细节
- 1 函数字典目前没有用其他技术,但未来可能会使用图判断依赖
- 2 规则集。本质上使用了变量空间(
VarSpace
)实现了规则间的依赖,这些依赖是比较固定的。因为规则集通常是一个常用动作的抽象,变化不多。 - 3 函数链。虽然也是按步骤进行的,但是其依赖不通过变量空间,而是通过连接点(
Connector
)完成连接,其核心是一张路由表(RouteTable
)。通过连接点实现了复用(某些数据可以容易被其他规则集/函数访问而不必重新运行)和平行空间(一条路由就是一个空间)。连接点还会提供一些具体信息,便于分析和管理。简单来说,函数链管理若干连接点,连接点通过路由表实现一个复杂的pipeline。 - 4 立体图。其核心是子图和连接点。一个子图由若干函数链组成,形成一个完整的功能,子图内的连接点除了具有类似函数链连接点的功能还具有类似nginx的功能。有时候,子图就是产品的某个功能。每个子图都会连接到一个连接点,和函数链不同,这个连接点是具有层级的,所以是立体的。这样做的是为了可以实现更复杂的产品,在子图级别向上堆叠。
3 ILD(Integrated Logic Density) 逻辑集成密度
一个程序逻辑相当于1行代码, IL可以管理10万级别的逻辑
- 1 一个函数如果等同于一个计算逻辑,其内部有1~10个程序逻辑,平均按5计算
- 2 一个规则集按5条规则函数计算,每个规则函数平均有5个函数,那么就相当 25计算逻辑(125程序逻辑)
- 3 一个函数链,相当于125计算逻辑(625程序逻辑)
- 4 一个立体图中的一个子图,相当于625计算逻辑(3125程序逻辑)
- 5 一个稍微复杂的立体图,假设有5层,每层有5个子图,那么有15625个计算逻辑(78125程序逻辑)
IL工具要保证可靠、快速的实现这个量级的逻辑。
- 比较辛苦的工作是累积函数和规则集
- 比较有意思的是用函数和规则集构建函数链和立体图
IL可以真正有效的管理这个量级的逻辑,是活的。上面考虑的集成度只是一个空间的逻辑数,当我们希望进行全局参数调优,或者不断加入新的制程进行比较时,算法会对所有的可能进行处理。这里就靠运筹学方面的算法了。
PS: 一个深度学习模型也只是一条计算逻辑。