Skip to main content

通用的抽象

背景、需求

  1. 自动根据输入信息进行结构化建模
  2. 面向对象是编程的一种通用抽象,那AI能不能进行一种更通用,更符合人类的抽象模版?
  3. 自然语言交互的方式进行项目讨论
  4. 通用抽象引擎, 通用NP问题解决,用于芯片制造,布局布线。
  5. 通用基础计算单元,算法基础范式

要求

  1. 怎么表达“抽象的程度” ,“抽象的能力”
  2. 怎么表达“对象”的行为(“方法”),对象除了属性还有方法

对象

  1. 所有都抽象为对象,对象的定义本身包含所有的约束,只要能生成出合格的对象就是符合约束
    1. 基础对象
    2. 对象的属性
    3. 组合对象
    4. 对象之间的转换关系
  2. 对任意事物的抽象,或者说约束。
  3. AI试图生成符合要求的合格对象
  4. AI试图生成对象的定义
  5. 示例
    1. NetList -> 对象 -> 对象 -> PR结果
    2. sequence -> 语言对象 -> sequence

编程语言/程序库/API

  1. 定义一个对象
  2. 对象的组合
  3. 对象之前的转换的方法
    1. 逻辑判断、运算
  4. 可以直接使用深度模型和梯度下降进行训练、求解
  5. 可以直接实现现在的LLM的需求
    1. 每个token就是一个基础对象
    2. 每个固定的句子就是组合之后的对象
    3. token的输出就是转换之后的对象

LLM大模型的抽象解释

  1. tensor:对象的属性
  2. dot/gemm:对象的转换
  3. 对象的组合:attention
  4. 文生图的工作分析
    1. 输入一串的文本,经过抽象成内部的表达:一堆的“语言抽象出来的对象(不同层级)”的组合
    2. 转换成图像的抽象对象的表达
    3. 通过“图像对象”转换成图像
    4. 语言 -> 语言对象 -> 图像对象 -> 图像
    5. 端到端的训练,同时训练中间的3次转换的模型

应用

设计一个通用的思维方式,对基础模型进行按照通用的思维方式进行微调

以设计的固定关键字作为通用的接口,遵循一个通用的“模版接口”

作为AI的专用思考语言,思考的方式

作为人类和AI交互的接口,避免自然语言的不精确

在生产环境下描述需求是非常复杂的。他们不知道如何写提示词,描述不准确会导致 AI 的回复质量低下,进而使开发者失去信心。其次,是 context(上下文)的处理。在复杂工程中,如果 context 给得不对或给得太少,AI 就无法理解整个架构,可能会出现一些幻觉,比如新增错误的类或改错地方,这会导致准确率下降。

避免和解决,“许愿”式的交互——目前大模型的用户无法清晰描述具体需求,更像是在表达愿望

目前AI只能理解和生成一些低层级的抽象,不能生成和设计高层级的设计

对于辅助编程来说,只能实现一些固定简单功能的函数,对于复杂的类抽象设计不能实现,高层次的功能不容易描述和表达。

工程化接口

  1. 通用的抽象方法
    1. 派生/继承/重写:对基础对象进行扩展,复用公共的定义
    2. 对象的初始化的表达
      1. 构造函数,基类的构造
      2. 成员变量的实例化
    3. 引用-指针
    4. 组合:一个对象可以包含多个不同类型的定义/抽象,组合形成新的定义/抽象
    5. 变换:成员函数,定义一个支持一个或者多个定义/抽象的输入,输出一个或者多个定义/抽象
    6. 适用场景:isa的定义,建模的定义,
  2. 扩展到所有的抽象工作
  3. 定义一种简单的脚本语言,适用于通用的抽象表达

§§§§§§§§§§§§§§§§§§§§§§§§§§

继承, 初始化参数 构造函数 static

组合(实例化) 及初始化 调用构造函数

初始化序列,层层构造

方法(变换)

  1. 构造函数也是方法的一种

引用-指针

  1. 所有的成员变量都是被使用都是采用指针或者引用

构造函数是必须的吗?

  1. python 作为config 被解析成ast,只是利用了python的语法,替代toml
  2. 动态解析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