通用的抽象
背景、需求
- 自动根据输入信息进行结构化建模
- 面向对象是编程的一种通用抽象,那AI能不能进行一种更通用,更符合人类的抽象模版?
- 自然语言交互的方式进行项目讨论
- 通用抽象引擎, 通用NP问题解决,用于芯片制造,布局布线。
- 通用基础计算单元,算法基础范式
要求
- 怎么表达“抽象的程度” ,“抽象的能力”
- 怎么表达“对象”的行为(“方法”),对象除了属性还有方法
对象
- 所有都抽象为对象,对象的定义本身包含所有的约束,只要能生成出合格的对象就是符合约束
- 基础对象
- 对象的属性
- 组合对象
- 对象之间的转换关系
- 对任意事物的抽象,或者说约束。
- AI试图生成符合要求的合格对象
- AI试图生成对象的定义
- 示例
- NetList -> 对象 -> 对象 -> PR结果
- sequence -> 语言对象 -> sequence
编程语言/程序库/API
- 定义一个对象
- 对象的组合
- 对象之前的转换的方法
- 逻辑判断、运算
- 可以直接使用深度模型和梯度下降进行训练、求解
- 可以直接实现现在的LLM的需求
- 每个token就是一个基础对象
- 每个固定的句子就是组合之后的对象
- token的输出就是转换之后的对象
LLM大模型的抽象解释
- tensor:对象的属性
- dot/gemm:对象的转换
- 对象的组合:attention
- 文生图的工作分析
- 输入一串的文本,经过抽象成内部的表达:一堆的“语言抽象出来的对象(不同层级)”的组合
- 转换成图像的抽象对象的表达
- 通过“图像对象”转换成图像
- 语言 -> 语言对象 -> 图像对象 -> 图像
- 端到端的训练,同时训练中间的3次转换的模型
应用
设计一个通用的思维方式,对基础模型进行按照通用的思维方式进行微调
以设计的固定关键字作为通用的接口,遵循一个通用的“模版接口”
作为AI的专用思考语言,思考的方式
作为人类和AI交互的接口,避免自然语言的不精确
在生产环境下描述需求是非常复杂的。他们不知道如何写提示词,描述不准确会导致 AI 的回复质量低下,进而使开发者失去信心。其次,是 context(上下文)的处理。在复杂工程中,如果 context 给得不对或给得太少,AI 就无法理解整个架构,可能会出现一些幻觉,比如新增错误的类或改错地方,这会导致准确率下降。
避免和解决,“许愿”式的交互——目前大模型的用户无法清晰描述具体需求,更像是在表达愿望
目前AI只能理解和生成一些低层级的抽象,不能生成和设计高层级的设计
对于辅助编程来说,只能实现一些固定简单功能的函数,对于复杂的类抽象设计不能实现,高层次的功能不容易描述和表达。
工程化接口
- 通用的抽象方法
- 派生/继承/重写:对基础对象进行扩展,复用公共的定义
- 对象的初始化的表达
- 构造函数,基类的构造
- 成员变量的实例化
- 引用-指针
- 组合:一个对象可以包含多个不同类型的定义/抽象,组合形成新的定义/抽象
- 变换:成员函数,定义一个支持一个或者多个定义/抽象的输入,输出一个或者多个定义/抽象
- 适用场景:isa的定义,建模的定义,
- 扩展到所有的抽象工作
- 定义一种简单的脚本语言,适用于通用的抽象表达
§§§§§§§§§§§§§§§§§§§§§§§§§§
继承, 初始化参数 构造函数 static
组合(实例化) 及初始化 调用构造函数
初始化序列,层层构造
方法(变换)
- 构造函数也是方法的一种
引用-指针
- 所有的成员变量都是被使用都是采用指针或者引用
构造函数是必须的吗?
- python 作为config 被解析成ast,只是利用了python的语法,替代toml
- 动态解析python model + model运行
class axi4(logic): logic a logic b logic c
class axi4_m(clk_module): def init(): f = logicFifo(axi4,8) logicFifo f
class INT8 class INT32 class INT64
class A: def Create(INT8, INT32) def Cycle(self, INT8, INT32) INT8 a1 INT32 a2
class B(A): INT64 b1
class C(): def init(A, B) A c1 B c2
class D(): def init(): d1() d2() d3(&d1,&d2) A d1 B d2 C d3