mctx

GitHub
2.6k 206 非常简单 1 次阅读 3天前Apache-2.0开发框架
AI 解读 由 AI 自动生成,仅供参考

mctx 是一个基于 JAX 框架原生实现的蒙特卡洛树搜索(MCTS)算法库。它专为强化学习领域设计,支持包括 AlphaZero、MuZero 和 Gumbel MuZero 在内的多种先进搜索算法。简单来说,mctx 让智能体能够在复杂环境中通过“模拟推演”来做出更优决策,从而最大化累积奖励。

在人工智能研究中,将搜索算法与深度神经网络结合是提升智能体性能的关键路径,但传统实现往往依赖 C++ 等编译型语言,导致代码难以阅读、修改和扩展,这在一定程度上阻碍了研究人员的创新效率。mctx 的出现正是为了解决这一痛点。它利用 JAX 的特性,既保持了高性能计算能力,又提供了 Python 级别的易用性和灵活性,让开发者能够轻松地在纯 Python 环境中进行实验和迭代。

mctx 的核心技术亮点在于其完全支持 JIT(即时)编译,显著提升了计算速度。同时,它天然支持批量输入并行处理,能够充分利用 GPU 或 TPU 等硬件加速器的算力,高效处理由深度神经网络参数化的大规模环境模型。这种设计使得算法在处理复杂任务时依然保持极高的响应速度。

这款工具主要面向 AI 研究人员、算法工程师以及对强化学习感兴趣的开发者。如果你正在探索基于搜索的智能体算法,或者希望在不牺牲性能的前提下快速验证新的研究想法,mctx 提供了一个平衡了性能与开发体验的理想平台。通过 PyPI 即可快速安装上手,助力你更高效地投身于下一代搜索算法的研究与开发中。

使用场景

某AI研究团队正在开发基于MuZero算法的复杂策略游戏智能体,需要利用蒙特卡洛树搜索(MCTS)结合深度神经网络模型进行决策优化,以在有限计算资源下实现超越人类玩家的博弈水平。

没有 mctx 时

  • 开发门槛高且迭代慢:传统高效MCTS实现多依赖C++编写,Python研究人员需跨越语言障碍进行混合编程,调试困难,导致算法原型验证周期长达数周。
  • 硬件加速利用率低:自定义实现难以完美适配GPU/TPU的并行计算特性,往往只能串行处理单个状态搜索,无法充分利用现代加速器的批量计算能力,训练效率低下。
  • 代码复用性与兼容性差:自行维护的搜索算法与JAX生态割裂,无法直接享受JAX的自动微分和即时编译(JIT)优势,每次修改网络结构都需重写大量底层交互代码。
  • 扩展实验成本高:若想尝试Gumbel MuZero等变体算法,需从头重构搜索逻辑,缺乏统一接口支持快速切换不同搜索策略,严重阻碍创新探索。

使用 mctx 后

  • 纯Python原生开发体验:mctx提供JAX原生的MCTS实现,研究人员仅需使用Python即可调用高性能搜索算法,无需关心底层C++细节,原型开发时间缩短至几天。
  • 极致并行计算性能:天然支持批量输入并行搜索,能充分榨取GPU/TPU算力,显著加快大规模神经网络环境模型下的推理速度,提升整体训练吞吐量。
  • 无缝集成JAX生态:完全兼容JAX的JIT编译和自动微分,搜索过程可端到端梯度传播,代码简洁且易于维护,实现了性能与易用性的最佳平衡。
  • 灵活配置算法变体:内置AlphaZero、MuZero及Gumbel MuZero等多种标准算法接口,参数高度可配置,研究者可通过少量代码调整快速对比不同搜索策略效果。

mctx通过提供高性能、易用的JAX原生MCTS实现,消除了强化学习研究中搜索算法的工程壁垒,让研究者能专注于算法创新而非底层优化。

运行环境要求

操作系统
  • 未说明
GPU

未说明(但文中提到支持加速器加速,通常指 GPU/TPU)

内存

未说明

依赖
notes该库是 JAX 原生的蒙特卡洛树搜索(MCTS)实现,完全支持 JIT 编译以加速计算。算法针对批量输入并行操作,旨在充分利用加速器(如 GPU/TPU)并与深度神经网络参数化的环境模型配合使用。可通过 PyPI 或 GitHub 安装。
python未说明
jax
mctx hero image

快速开始

Mctx: MCTS-in-JAX

Mctx 是一个库,提供了基于 JAX 的原生实现,支持蒙特卡洛树搜索(MCTS)算法,例如 AlphaZeroMuZeroGumbel MuZero。为了提升计算速度,该实现完全支持 JIT 编译。Mctx 中的搜索算法是为批量输入设计的,并且可以并行运行。这使得加速器能够得到充分利用,同时也让这些算法能够处理由深度神经网络参数化的大型学习型环境模型。

安装

你可以通过 PyPI 安装最新发布的 Mctx 版本:

pip install mctx

或者从 GitHub 安装最新的开发版本:

pip install git+https://github.com/google-deepmind/mctx.git

动机

自人工智能研究的早期以来,学习和搜索一直是重要的研究课题。正如 Rich Sutton 所说:

我们应该认识到的一点是通用方法的强大之处——即使可用的计算资源变得非常庞大,这些方法仍然能够随着计算能力的提升而不断扩展。目前看来,能够以这种方式无限扩展的两种方法就是 搜索学习

近年来,搜索算法与由深度神经网络参数化的学习模型成功结合,产生了迄今为止最强大、最通用的强化学习算法之一(如 MuZero)。然而,在将搜索算法与深度神经网络结合使用时,通常需要高效的实现,而这些实现往往用快速编译的语言编写;这可能会牺牲易用性和可 hack 性,尤其是对于不熟悉 C++ 的研究人员而言。因此,这限制了这一关键领域的采用和进一步研究。

通过这个库,我们希望帮助全球的研究人员参与到这一激动人心的研究领域中。我们提供了诸如 MCTS 等核心搜索算法的 JAX 原生实现,我们认为这些实现能够在性能和易用性之间取得良好的平衡,适合希望在 Python 中探索基于搜索算法的研究人员。Mctx 提供的搜索方法高度可配置,允许研究人员在这个领域探索各种想法,并为下一代基于搜索的智能体做出贡献。

强化学习中的搜索

在强化学习中,智能体 必须学会与 环境 交互,以最大化标量 奖励 信号。在每一步中,智能体必须选择一个动作,并获得相应的观测和奖励。智能体用来选择动作的任何机制都可以称为智能体的 策略

传统上,策略可以直接由函数近似器参数化(如 REINFORCE),或者通过检查一组已学习的动作价值估计来推断策略(如 Q 学习)。另一种方法是利用搜索,即在每个状态下,通过使用学习到的环境 模型 进行 搜索,即时构建针对当前状态的局部策略或价值函数,从而选择动作。

在任何非平凡环境中,对所有可能的未来行动序列进行穷举搜索在计算上都是不可行的,因此我们需要能够在有限的计算预算内发挥最大作用的搜索算法。通常,我们需要先验信息来指导搜索树中哪些节点需要扩展(以减少我们构建的树的 宽度),同时还需要价值函数来估计那些未到达回合终止状态的不完整路径的价值(以减少搜索树的 深度)。

快速入门

Mctx 提供了一个低层次的通用 search 函数,以及两个高层次的具体策略:muzero_policygumbel_muzero_policy

用户需要提供若干学习到的组件,以指定 MuZero 所使用的表示、动力学和预测模块。在 Mctx 库的上下文中,根状态 的表示由 RootFnOutput 指定。RootFnOutput 包含来自策略网络的 prior_logits、根状态的估计 value,以及任何适合用于环境模型表示根状态的 embedding

环境的动力学模型需要由一个 recurrent_fn 来指定。recurrent_fn(params, rng_key, action, embedding) 函数接受一个 action 和一个状态 embedding。该函数应返回一个元组 (recurrent_fn_output, new_embedding),其中包含 RecurrentFnOutput 以及下一个状态的嵌入。RecurrentFnOutput 包含此次转移的 rewarddiscount,以及新状态的 prior_logitsvalue

examples/visualization_demo.py 中,你可以看到如下策略调用:

policy_output = mctx.gumbel_muzero_policy(params, rng_key, root, recurrent_fn,
                                          num_simulations=32)

policy_output.action 包含搜索建议的动作,该动作可以传递给环境。为了改进策略,policy_output.action_weights 包含可用于训练策略概率的目标值。

我们推荐使用 gumbel_muzero_policyGumbel MuZero 在正确评估动作价值的情况下,能够保证策略的改进。策略改进的效果可以在 examples/policy_improvement_demo.py 中看到。

示例项目

以下项目展示了 Mctx 的使用:

  • Pgx — 一个包含 20 多个向量化 JAX 环境的集合,包括西洋双陆棋、国际象棋、将棋、围棋,以及一个 AlphaZero 示例。
  • 使用 Mctx 的基础学习演示 — 随机迷宫上的 AlphaZero。
  • a0-jax — 四子连线、五子棋和围棋上的 AlphaZero。
  • muax — Gym 风格环境中(CartPole、LunarLander)的 MuZero。
  • 经典 MCTS — 四子连线的一个简单示例。
  • mctx-az — 带有 AlphaZero 子树持久化的 Mctx。

请告诉我们你的项目!

引用 Mctx

本仓库是 DeepMind JAX 生态系统的一部分,如需引用 Mctx,请使用以下引用格式:

@software{deepmind2020jax,
  title = {DeepMind JAX 生态系统},
  author = {DeepMind 以及 Babuschkin, Igor、Baumli, Kate、Bell, Alison、Bhupatiraju, Surya、Bruce, Jake、Buchlovsky, Peter、Budden, David、Cai, Trevor、Clark, Aidan、Danihelka, Ivo、Dedieu, Antoine、Fantacci, Claudio、Godwin, Jonathan、Jones, Chris、Hemsley, Ross、Hennigan, Tom、Hessel, Matteo、Hou, Shaobo、Kapturowski, Steven、Keck, Thomas、Kemaev, Iurii、King, Michael、Kunesch, Markus、Martens, Lena、Merzic, Hamza、Mikulik, Vladimir、Norman, Tamara、Papamakarios, George、Quan, John、Ring, Roman、Ruiz, Francisco、Sanchez, Alvaro、Sartran, Laurent、Schneider, Rosalia、Sezener, Eren、Spencer, Stephen、Srinivasan, Srivatsan、Stanojevi\'{c}, Milo\v{s}、Stokowiec, Wojciech、Wang, Luyu、Zhou, Guangyao、Viola, Fabio},
  url = {http://github.com/deepmind},
  year = {2020},
}

版本历史

v0.0.62025/09/02
v0.0.52023/11/24
v0.0.42023/11/24
v0.0.32023/07/24
v0.0.22022/07/26

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架