Code Structure

  • request-sim: 模拟client发送请求

  • router_v2: Blitzscale主体部分,作为全局调度器、控制器,触发扩缩容,并通过调度逻辑将批处理请求发送到后端算子进行执行

      • main: 主函数,解析传入参数并转换为Controller的参数
    • server: 注册HTTP请求端点并运行server进行监听
    • stub: 定义router向后端发送gRPC请求的方法
    • queue: 请求进入系统后append添加到这个队列中,next_batch每次从队列中取出下一个batch
    • lib: 定义使用到的各种结构体
    • infer: Infer类,控制向request发送流式响应,并相应创建disaggregation/colocation的controller
    • health/error: 使用到的健康/错误结构体
    • replica: 与调度/扩缩容相关的代码
      • disaggregation: PD分离下的控制类,进行调度、扩缩容
      • colocation: PDColocation下的控制类
      • metrics: 系统内负载的数据结构
      • relay_queue 实现zigzag prefill的队列,转移的batch在这里存放
      • mod: colocation相关的控制类
      • config: 配置类
      • cybernetics:
        • exec_blitz: blitz中进行扩容的策略(tanz,rdmabroadcast,rdma p2p,nvlbroadcast...)
        • exec_serverless: serverless llm的扩容方式,从磁盘/内存中加载参数
        • mod: exec_blitz中执行参数发送的方法实现
        • planner: 循环监控系统状态,并生成扩缩容计划
      • steersman: 存储模型信息、replica与物理拓扑的映射等
  • src: 模型执行后端,在这里发送CUDA kernel给GPU进行模型执行,并且通过RDMA、Tanz、NVLink进行模型参数传递

    • server: main函数所在的目录,初始化stub、service并启动grpc server
    • service: grpc service实现的位置,实现向外暴露的grpc端点服务
    • model: 抽象整个模型
    • layer: 抽象模型单个层
    • kernel: flashinfer相关算子,以及绑定算子实现的文件
    • blitz: 关于activation传递、kvcache传递、pd migration、参数广播、参数加载等blitzscale核心逻辑
  • scripts: 运行整个系统测试的脚本

    • batchv2: 当前可用脚本
  • config: 用于scripts测试的配置文件(toml)

Key implementations in each file are listed below...