RL Swarm:去中心化强化学习协作训练平台

项目概述

RL Swarm 是由Gensyn团队维护的去中心化强化学习协作训练平台。该系统允许用户加入"蜂群"与其他参与者共同训练模型,利用集体智能提升训练效率。核心特点包括:

  • 真正的P2P架构,无需中心化服务器
  • 支持从消费级设备到专业GPU集群的异构硬件
  • 通过Gensyn测试网实现链上身份追踪
  • 基于GenRL-Swarm库的可组合框架

当前测试网运行的是reasoning-gym蜂群,专注于训练模型解决多样化推理任务。

功能特性

核心能力

  • 🐝 去中心化协作训练:通过DHT网络实现节点间通信
  • 🔗 区块链集成:智能合约记录训练进度和贡献
  • 📊 动态资源分配:根据硬件性能自动分配模型大小
  • :puzzle_piece: 模块化设计:支持自定义多智能体多阶段环境
  • 🌐 Web监控界面:实时查看训练指标和节点状态

支持模型

当前默认模型池包含:

  • Gensyn/Qwen2.5-0.5B-Instruct
  • Qwen/Qwen3-0.6B
  • nvidia/AceInstruct-1.5B
  • dnotitia/Smoothie-Qwen3-1.7B
  • Gensyn/Qwen2.5-1.5B-Instruct

安装指南

硬件要求

最低配置

  • arm64/x86 CPU (32GB RAM)
  • Python ≥ 3.8

推荐配置

  • NVIDIA GPU (RTX 3090/4090/5090, A100, H100)

安装步骤

  1. 克隆仓库:
git clone https://github.com/gensyn-ai/rl-swarm.git
cd rl-swarm
  1. 安装依赖:
pip install -r requirements.txt
  1. 配置环境变量:
export SWARM_CONTRACT="0xFaD7C5e93f28257429569B854151A1B8DCD404c2"
export CONNECT_TO_TESTNET=true
  1. 启动训练节点:
./start_swarm.sh

使用说明

基础使用

加入测试网蜂群:

from hivemind_exp import HivemindNode

node = HivemindNode(
    model_name="Gensyn/Qwen2.5-0.5B-Instruct",
    is_coordinator=False
)
node.connect_to_swarm()

Web界面

启动监控服务:

docker-compose build --no-cache
docker-compose up

访问 http://localhost:8080 查看实时训练数据。

核心代码

DHT通信模块

class HivemindNode:
    """P2P节点核心类"""
    def __init__(self, model_name: str, key: str = ""):
        self.model_name = model_name
        self.key = key or str(uuid.uuid4())
        self.round_cache = defaultdict(dict)
        
    def get_stage_outputs(self, r, s):
        """获取指定阶段输出"""
        return self.round_cache.get((r, s))
    
    def put_stage_outputs(self, r, s, question, value):
        """存储阶段输出"""
        self.round_cache[(r, s)][question] = value

智能合约交互

class SwarmCoordinator:
    """处理链上交互"""
    def __init__(self, web3: Web3, contract_address: str):
        self.web3 = web3
        self.contract = web3.eth.contract(
            address=contract_address,
            abi=json.load(open("contracts/SwarmCoordinator.json"))["abi"]
        )
    
    def register_peer(self, peer_id):
        """注册节点到合约"""
        self.contract.functions.registerPeer(peer_id).transact()

消息处理

def stage3_message(node_key: str, question: str, outputs: dict):
    """生成第三阶段训练消息"""
    try:
        decision = outputs["final_agent_decision"][node_key]
        feedback = _extract_tagged(decision, "summarize_feedback")
        majority = _extract_tagged(decision, "majority")
        return f"{feedback}...Majority: {majority}"
    except Exception:
        return outputs["answer"]

贡献指南

我们欢迎社区贡献!请遵循以下规范:

  1. 使用英文提交PR
  2. 每个分支只包含一个功能修改
  3. 编写清晰的提交信息
  4. 关联相关issue

问题报告请包含:

  • 重现步骤
  • 预期与实际行为
  • 环境信息
  • 日志文件(非截图)
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    公众号二维码
posted @ 2025-06-28 10:37  qife  阅读(64)  评论(0)    收藏  举报