Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions AReaL_architecture.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
@startuml
!theme plain
skinparam componentStyle uml2
skinparam backgroundColor white
skinparam defaultFontSize 12

' 应用层 - 用户交互入口
frame "应用层 (Application Layer)" as AppLayer {
component [CLI工具] as CLI <<用户命令行接口,提供快速启动和配置管理功能>>
component [主程序入口] as MainEntry <<系统主入口点,协调整个训练流程>>
component [快速启动工具] as QuickStart <<提供简化的实验启动接口>>
}

' API层 - 系统接口定义
frame "API层 (API Layer)" as APILayer {
component [模型API] as ModelAPI <<定义模型接口,包括生成、训练、推理等核心功能>>
component [系统API] as SystemAPI <<定义系统配置和实验管理接口>>
component [数据API] as DataAPI <<定义数据集和数据处理接口>>
component [智能体API] as AgentAPI <<定义智能体行为和奖励函数接口>>
component [环境API] as EnvAPI <<定义强化学习环境接口>>
component [配置管理] as ConfigMgmt <<统一的配置管理和参数解析>>
}

' 调度层 - 资源管理和任务调度
frame "调度层 (Scheduler Layer)" as SchedulerLayer {
component [本地调度器] as LocalScheduler <<在单机或本地集群上调度任务>>
component [Slurm调度器] as SlurmScheduler <<在Slurm集群环境中调度分布式任务>>
component [客户端接口] as SchedulerClient <<提供统一的调度客户端接口>>
}

' 系统层 - 核心分布式计算框架
frame "系统层 (System Layer)" as SystemLayer {
component [主控节点] as MasterWorker <<协调整个训练过程,管理实验状态和监控>>
component [模型工作节点] as ModelWorker <<执行模型训练和参数更新>>
component [推理工作节点] as RolloutWorker <<执行模型推理和数据采样>>
component [生成服务器] as GenServer <<专门处理文本生成请求的异步服务>>
component [通信框架] as CommFramework <<处理节点间通信和数据流>>
component [数据缓冲区] as DataBuffer <<管理训练数据的异步缓冲和流式处理>>
component [控制器管理] as ControllerMgmt <<管理各种控制器和工作流协调>>
}

' 实现层 - 具体功能实现
frame "实现层 (Implementation Layer)" as ImplLayer {
component [模型实现] as ModelImpl <<具体的模型架构实现,如Qwen、GPT等>>
component [数据集实现] as DatasetImpl <<各种数据集的具体实现和预处理>>
component [智能体实现] as AgentImpl <<智能体行为的具体实现>>
component [环境实现] as EnvImpl <<强化学习环境的具体实现>>
component [算法实现] as AlgoImpl <<PPO、GRPO等RL算法的具体实现>>
component [并行化实现] as ParallelImpl <<分布式并行计算的具体实现>>
}

' 训练层 - 训练算法和流程
frame "训练层 (Training Layer)" as TrainingLayer {
component [异步PPO训练] as AsyncPPO <<异步PPO强化学习训练流程>>
component [同步PPO训练] as SyncPPO <<传统同步PPO训练流程>>
component [监督微调] as SFT <<监督学习微调流程>>
component [实验管理] as ExpMgmt <<实验配置和执行管理>>
}

' 评估层 - 模型评估和基准测试
frame "评估层 (Evaluation Layer)" as EvalLayer {
component [数学推理评估] as MathEval <<数学问题求解能力评估>>
component [代码生成评估] as CodeEval <<编程任务完成能力评估>>
component [综合评估] as ComprehensiveEval <<多任务综合能力评估>>
component [基准测试] as Benchmark <<与其他系统的性能对比测试>>
}

' 定义层次间的依赖关系
AppLayer --> APILayer : "调用"
APILayer --> SchedulerLayer : "依赖"
SchedulerLayer --> SystemLayer : "调度"
SystemLayer --> ImplLayer : "使用"
ImplLayer --> TrainingLayer : "支持"
TrainingLayer --> EvalLayer : "产出模型用于"

' 内部组件关系
CLI --> MainEntry
MainEntry --> QuickStart
ModelAPI --> SystemAPI
SystemAPI --> ConfigMgmt
MasterWorker --> ModelWorker
MasterWorker --> RolloutWorker
MasterWorker --> GenServer
ModelWorker --> CommFramework
RolloutWorker --> DataBuffer
GenServer --> ControllerMgmt

' 跨层直接依赖关系 (虽然有层次但存在直接调用)
note right of SystemLayer : 注意:系统层的某些组件\n可能直接调用API层接口,\n这是当前版本的设计特点
note right of ImplLayer : 注意:实现层的组件\n会直接实现API层定义的接口,\n形成接口-实现的对应关系
@enduml
88 changes: 88 additions & 0 deletions AReaL_architecture_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# AReaL 系统架构功能视图

## 概述

本文档提供了 AReaL (Ant Reasoning RL) 系统的高层功能视图,以 PlantUML 组件图的形式展示系统的分层架构和主要功能组件。

## 架构图文件

- **文件**: `AReaL_architecture.puml`
- **类型**: PlantUML 组件图
- **描述**: 展示 AReaL 系统的7层功能架构

## 系统分层说明

### 1. 应用层 (Application Layer)
系统的最顶层,为用户提供交互入口:
- **CLI工具**: 用户命令行接口,提供快速启动和配置管理功能
- **主程序入口**: 系统主入口点,协调整个训练流程
- **快速启动工具**: 提供简化的实验启动接口

### 2. API层 (API Layer)
定义系统的核心接口和抽象:
- **模型API**: 定义模型接口,包括生成、训练、推理等核心功能
- **系统API**: 定义系统配置和实验管理接口
- **数据API**: 定义数据集和数据处理接口
- **智能体API**: 定义智能体行为和奖励函数接口
- **环境API**: 定义强化学习环境接口
- **配置管理**: 统一的配置管理和参数解析

### 3. 调度层 (Scheduler Layer)
负责资源管理和任务调度:
- **本地调度器**: 在单机或本地集群上调度任务
- **Slurm调度器**: 在Slurm集群环境中调度分布式任务
- **客户端接口**: 提供统一的调度客户端接口

### 4. 系统层 (System Layer)
核心分布式计算框架:
- **主控节点**: 协调整个训练过程,管理实验状态和监控
- **模型工作节点**: 执行模型训练和参数更新
- **推理工作节点**: 执行模型推理和数据采样
- **生成服务器**: 专门处理文本生成请求的异步服务
- **通信框架**: 处理节点间通信和数据流
- **数据缓冲区**: 管理训练数据的异步缓冲和流式处理
- **控制器管理**: 管理各种控制器和工作流协调

### 5. 实现层 (Implementation Layer)
提供具体功能实现:
- **模型实现**: 具体的模型架构实现,如Qwen、GPT等
- **数据集实现**: 各种数据集的具体实现和预处理
- **智能体实现**: 智能体行为的具体实现
- **环境实现**: 强化学习环境的具体实现
- **算法实现**: PPO、GRPO等RL算法的具体实现
- **并行化实现**: 分布式并行计算的具体实现

### 6. 训练层 (Training Layer)
执行具体的训练算法和流程:
- **异步PPO训练**: 异步PPO强化学习训练流程
- **同步PPO训练**: 传统同步PPO训练流程
- **监督微调**: 监督学习微调流程
- **实验管理**: 实验配置和执行管理

### 7. 评估层 (Evaluation Layer)
模型评估和基准测试:
- **数学推理评估**: 数学问题求解能力评估
- **代码生成评估**: 编程任务完成能力评估
- **综合评估**: 多任务综合能力评估
- **基准测试**: 与其他系统的性能对比测试

## 层次关系

系统采用分层架构设计,层次间的主要依赖关系为:
- 应用层 → API层 → 调度层 → 系统层 → 实现层 → 训练层 → 评估层

需要注意的是,虽然系统整体上是分层的,但某些组件之间可能存在直接的相互依赖,这主要是当前版本的设计特点或实现需要。

## 如何查看图表

1. 使用在线 PlantUML 编辑器:访问 [PlantUML Online](http://www.plantuml.com/plantuml/uml/) 并粘贴 `AReaL_architecture.puml` 文件内容
2. 使用本地 PlantUML 工具:安装 PlantUML 后运行 `plantuml AReaL_architecture.puml`
3. 使用支持 PlantUML 的 IDE 插件,如 VS Code 的 PlantUML 扩展

## 系统特色

该架构图突出展示了 AReaL 系统的核心特色:
- **异步强化学习**: 系统层的异步执行框架支持完全异步的RL训练
- **分层设计**: 清晰的层次分离使系统易于理解和维护
- **分布式架构**: 支持从单机到1000+ GPU的大规模分布式训练
- **灵活扩展**: API层和实现层的分离支持灵活的功能扩展