Skip to main content

Module execution

Module execution 

Source
Expand description

Graph execution engine for graph-structured Transformer

§🎯 GraphTransformer 定位说明

GraphTransformer 主要用于

  1. 可视化注意力拓扑:导出 DOT/Graphviz 格式,直观理解注意力模式
  2. 动态剪枝弱边:运行时剪除弱注意力连接,减少冗余计算
  3. 添加自定义连接:实验长程连接、稀疏注意力等架构变体
  4. 拓扑缺陷检测:发现孤立节点、梯度阻断、缺失残差连接
  5. 执行前向传播:基于拓扑排序的张量计算,支持边上传递张量消息

GraphTransformer 不用于

  • 高性能推理:对于生产环境推理,建议转换为标准 LlamaModel(使用 llama.cppvllm
  • 大规模训练:对于训练任务,使用 PyTorch/JAX 等成熟框架

§核心优势

  • 显式表示注意力:每条注意力边可单独访问/修改(黑盒推理引擎做不到)
  • 动态拓扑编辑:支持运行时修改图结构(传统静态图做不到)
  • 可视化支持:导出 DOT 格式,用 Graphviz 渲染
  • 张量传递语义:边上携带 Q/K/V 投影张量,实现消息传递计算

§使用示例

use god_gragh::transformer::graph_transformer::GraphTransformer;
use god_gragh::tensor::traits::TensorBase;

// 1. 创建 GraphTransformer
let mut transformer = GraphTransformer::new(2, 4, 256);
transformer.build_graph(&[1, 2, 3, 4]);

// 2. 可视化注意力拓扑
let dot = transformer.to_dot();
std::fs::write("attention_graph.dot", dot).unwrap();
// 用 Graphviz 渲染:dot -Tpng attention_graph.dot -o attention_graph.png

// 3. 剪枝弱注意力边(阈值=0.01)
let pruned_count = transformer.prune_weak_edges(0.01);
println!("剪枝了 {} 条边", pruned_count);

// 4. 执行前向传播
let output = transformer.forward(&[1, 2, 3, 4]);
println!("Output shape: {:?}", output.shape());

// 5. 添加自定义长程连接
// transformer.add_skip_connection(layer_0, layer_11);

§与 DifferentiableGraph 的关系

  • GraphTransformer: 用于分析和编辑已有的 Transformer 结构
  • DifferentiableGraph: 用于优化图结构(梯度下降学习最优架构)

典型工作流:

  1. 用 GraphTransformer 可视化和分析初始结构
  2. 用 DifferentiableGraph 优化结构(剪枝、架构搜索)
  3. 用 GraphTransformer 验证优化结果

§性能说明

GraphTransformer 包含图遍历和动态编辑开销,不适合高性能推理场景。 对于生产环境,建议:

  1. 用 GraphTransformer 分析/优化结构
  2. 导出为静态图(Safetensors 格式)
  3. llama.cppvllm 进行推理

§GraphTransformer forward() 实现详解

§执行流程

  1. 拓扑排序:确定计算顺序,确保依赖先计算
  2. 节点执行:按拓扑序执行每个节点的操作
  3. 边上传递:通过边上的张量消息传递信息
  4. 缓存中间结果:避免重复计算

§张量传递语义

  • SelfAttention 边:携带 Q/K/V 投影张量
  • DataFlow 边:携带数据流张量(激活值)
  • Residual 边:携带残差连接张量(恒等映射)

§节点类型与执行

  • TokenEmbedding:提供 token 嵌入向量
  • HiddenState:聚合输入和边消息
  • AttentionOutput:加权求和注意力输出
  • FFNOutput:应用 FFN 变换

Structs§

GraphExecutor
Graph executor for executing Transformer computation graphs
GraphTransformer
Graph-structured Transformer wrapper