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)
安装步骤
- 克隆仓库:
git clone https://github.com/gensyn-ai/rl-swarm.git
cd rl-swarm
- 安装依赖:
pip install -r requirements.txt
- 配置环境变量:
export SWARM_CONTRACT="0xFaD7C5e93f28257429569B854151A1B8DCD404c2"
export CONNECT_TO_TESTNET=true
- 启动训练节点:
./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"]
贡献指南
我们欢迎社区贡献!请遵循以下规范:
- 使用英文提交PR
- 每个分支只包含一个功能修改
- 编写清晰的提交信息
- 关联相关issue
问题报告请包含:
- 重现步骤
- 预期与实际行为
- 环境信息
- 日志文件(非截图)
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码
![]()
RL Swarm:去中心化强化学习协作训练平台的更多相关文章
- 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目异同
Filecoin,Storj 以及 PPIO 这三个存储公链的设计思路是不一样的,没有优劣之分,写这篇文章也并不是为了争论各项目的好坏对错.去中心化存储是一个长期商业赛道,不同团队在同一个赛道上往不同 ...
- 比特股-去中心化交易所, STEEM - 去中心化社区, EOS - 下一代智能合约
libsnark 是实现了 zkSNARK 模式的 C++ 库.zkSNARK 是一个证明/验证计算完整性的加密方法,也即零知识验证的算法, https://github.com/scipr-lab/ ...
- serf 中去中心化系统的原理和实现
原文:https://www.infoq.cn/article/principle-and-impleme-of-de-centering-system-in-serf serf 是出自 Hashic ...
- 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店
今天我们来编写一个完整的去中心化(区块链)应用(Dapps), 本文可以和编写智能合约结合起来看. 写在前面 阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么除此之 ...
- 理解去中心化 稳定币 DAI
本文转载于深入浅出区块链, 原文链接 随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器. 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机 ...
- 去中心化存储的QoS是什么?
我的前面一篇文章讲到如何做去中化存储,文其中提到了QoS (Quality of Service),那么QoS是什么?为什么QoS那么重要?下面将详细描述. 什么是QoS? 提到QoS,就要先了解Qo ...
- 谈互联网开放平台:“去中心化”大势所趋 zz
文/磐石之心 几天前与好友聊到众筹咖啡馆的事情,他向我讲述了一个非常具有特色的众筹咖啡馆案例.而这个案例也引发我对当前互联网开放.去中心和集权的一些思考,今天就简单写出来与大家分享. 一个无赚钱目的的 ...
- Filecoin:一种去中心化的存储网络(二)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
- Filecoin:一种去中心化的存储网络(一)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
- 如何在Solidity中建立DAO(去中心化自治组织)?
本文将帮助您理解 DAO 的概念,并帮助您构建一个基本的 DAO. 什么是 DAO? 您可以将 DAO 视为基于互联网的实体(比如企业),由其股东(拥有代币和比例投票权的成员)共同拥有和管理.在 DA ...
随机推荐
- 【Java】操作数据库
工具: eclipse MySQL Navicat for MySQL MySQL 连接驱动:mysql-connector-java-5.0.4-bin.jar SQL 代码 CREATE TABL ...
- study Rust-1【Rust的特点和应用场景】
Rust语言的特点 高性能 - Rust 速度惊人且内存利用率极高.由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成. 可靠性 - Rust ...
- Redis实现高并发场景下的计数器设计
大部分互联网公司都需要处理计数器场景,例如风控系统的请求频控.内容平台的播放量统计.电商系统的库存扣减等. 传统方案一般会直接使用RedisUtil.incr(key),这是最简单的方式,但这种方式在 ...
- fiddler抓包常用辅助工具
一.过滤器 1.hosts: 只展示内网或外网的hosts,internet(外网),Intranet(内网) 展示下面的hosts/隐藏下面的hosts/:选择后填写需要设置的hosts(地址前面的 ...
- thinkphphp 计算分页 和分页总数 和sql计算分页 php
利用page计算分页 $p=input('p')?input('p'):1; $limit=6; $res=db('points_log')->where(['p_uid'=>$uid,' ...
- 小白也能行【手撕ResNet代码篇(附代码)】:详解可复现
目录 前言 model BasicBlock 和Bottleneck ResNet ResNet18\34\50\101\152 data train test 代码运行以及测试结果 前言 之前已经给 ...
- 揭秘AI自动化框架Browser-use(终):利用MCP与Spring AI,3行代码复刻Browser-use实现
技术背景与目标 在前几篇文章中,我们深入解析了Browser-use框架的核心机制,包括DOM树遍历与分析.提示词构造.任务分解与规划.以及浏览器操作的函数调用.我们将通过Spring AI和Play ...
- JSP (一) -- 初识JSP
目录 概念 作用 JSP开发 创建JSP JSP编写Java代码 访问JSP JSP与Servlet JSP实现原理 概念 JSP (Java SErver Pages),简化Servlet设计,在H ...
- 基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建(2)——Win10环境下Kubernetes(k8s)部署
继续上一篇,本篇进行K8S环境部署. K8s部署: 1. 访问k8s-for-docker-desktop 的github地址: https://github.com/AliyunContainer ...
- Web前端入门第 48 问:纯 CSS 使用 column 属性实现瀑布流布局
什么是瀑布流? 看一张图,以下图片来源于花瓣网截图: 如上图所示,瀑布流就是让内容按列显示,自动填充空白. 使用 column 实现瀑布流 源码: <div class="masonr ...
