torax
Torax 是一款由 Google DeepMind 开源的可微分托卡马克核心输运模拟器,专为核聚变研究中的快速正向建模、脉冲设计、轨迹优化及控制器开发而打造。它基于 Python 和 JAX 框架编写,旨在解决传统模拟工具在计算速度慢、难以进行梯度分析以及扩展新物理模型时手续繁琐等痛点。
这款工具特别适合聚变领域的科研人员、控制算法工程师以及希望将机器学习引入物理模拟的开发者使用。Torax 的核心亮点在于其“可微分”特性:利用 JAX 的自动微分能力,用户无需手动推导复杂的雅可比矩阵,即可直接对仿真结果进行灵敏度分析或执行基于梯度的非线性偏微分方程求解。这不仅大幅加速了轨迹优化和数据驱动的参数识别过程,还让集成机器学习代理模型(如 QuaLiKiz 神经网络)变得自然流畅。
在功能上,Torax 涵盖了离子与电子的热输运、粒子输运及电流扩散等耦合物理过程,支持多种数值求解器,并能灵活导入各类平衡位形文件。通过与经典模拟器 RAPTOR 的对比验证,Torax 在保证计算精度的同时,为聚变能源的研究与设计提供了一个高效、灵活且易于扩展的现代化仿真平台。
使用场景
某聚变能源实验室的控制团队正致力于为 ITER 混合场景设计最优的等离子体电流剖面轨迹,以最大化聚变功率输出并避免不稳定性。
没有 torax 时
- 优化效率低下:传统模拟器无法自动计算梯度,工程师只能依靠耗时极长的“试错法”或有限差分法来调整加热参数,单次轨迹优化需数天甚至数周。
- 模型扩展困难:若想引入新的机器学习代理模型(如 QLKNN 湍流传输模型)替代经验公式,必须手动推导复杂的雅可比矩阵,极易出错且开发周期漫长。
- 灵敏度分析缺失:难以快速量化输入参数(如杂质辐射率)对最终等离子体状态的敏感度,导致控制器设计缺乏鲁棒性依据。
- 工作流耦合僵硬:现有的闭源或非标代码难以与现代化的 Python 数据科学栈无缝集成,阻碍了数据驱动的参数识别流程。
使用 torax 后
- 秒级梯度优化:利用 JAX 的自动微分能力,torax 可直接通过基于梯度的非线性求解器进行轨迹优化,将原本数周的迭代过程缩短至几小时甚至几分钟。
- 无缝集成 AI 模型:研究人员无需手写导数,即可直接将 QLKNN 等神经网络代理模型嵌入物理方程中,灵活验证新物理机制对传输的影响。
- 精准灵敏度洞察:借助自动微分特性,团队能瞬间完成对任意参数输入的灵敏度分析,快速识别关键控制变量,显著提升控制器设计的可靠性。
- 流畅的现代工作流:基于纯 Python 和 JAX 的架构,torax 轻松与现有 ML 工具链耦合,实现了从仿真到数据驱动参数识别的端到端自动化。
torax 通过将可微分物理模拟与高性能计算相结合,彻底改变了聚变装置脉冲设计与控制优化的研发范式,让复杂的非线性偏微分方程求解变得既快又准。
运行环境要求
- Linux
未说明(基于 JAX,通常支持 CPU/GPU/TPU,但 README 未明确指定显卡型号或 CUDA 版本要求)
未说明

快速开始
什么是 TORAX?
TORAX 是一个可微分的托卡马克芯部输运模拟器,旨在实现快速且精确的正向建模、脉冲设计、轨迹优化以及控制器设计工作流。TORAX 使用 JAX 和 Python 编写,其设计动机如下:
- 开源且可扩展,便于灵活的工作流耦合。
- JAX 提供自动微分能力和代码编译功能,从而实现快速运行。可微性使得基于梯度的非线性偏微分方程求解器能够进行快速准确的建模,并对仿真结果相对于任意参数输入的敏感性进行分析,进而支持诸如轨迹优化和半经验模型的数据驱动参数识别等应用。自动微分特性还允许通过添加新的物理模型(包括机器学习代理模型)或新的参数输入来轻松扩展这些应用,而无需手动推导雅可比矩阵。
- Python-JAX 是一种天然适合与物理模型的机器学习代理模型进行耦合的框架。
如需更全面的文档,请参阅我们的 readthedocs 页面。
在 v1.0.0 版本中,TORAX 具备以下物理和数值功能集:
- 离子和电子热输运、电子粒子输运以及电流扩散的耦合偏微分方程组
- 有限体积法离散化
- 多种求解器选项:带有 Pereverzev-Corrigan 项的线性求解器及预测校正法,牛顿-拉夫森法的非线性求解器,以及使用 jaxopt 库进行优化的非线性求解器
- 基于最后闭合磁通面处总电流或环电压的极向磁通边界条件
- 欧姆加热功率、离子-电子热交换、聚变功率、轫致辐射、杂质谱线辐射,以及一项 [ICRH 机器学习代理模型](目前仅覆盖有限的工况)。
- 基于 Sauter 解析模型的新生代自举电流和电导率。
- 与 [QLKNN_7_11] 和 QLKNN10D [van de Plassche 等人, Phys. Plasmas 2020] 的 QuaLiKiz 神经网络代理模型相耦合,用于描述基于物理机制的湍流输运。
- 支持通用几何形状,可通过 CHEASE、FBT 或 EQDSK 平衡文件提供。
- 为测试和演示目的,
data/third_party/geo目录下提供了一个单一的 CHEASE 平衡文件。该文件对应于 ITER 混合场景下的平衡态,基于 [Citrin 等人, Nucl. Fusion 2010] 的模拟结果,并从 PINT 获取。PINT 许可证文件位于data/third_party/geo中。 - 通过提供一系列随时间变化的几何文件,可以支持时变几何。
- 为测试和演示目的,
- 使用局部自适应源设置内部边界条件的简单台基模型。
- 锯齿振荡触发及剖面重分布。
用户还可以通过自定义的解析模型或预设数据来引入额外的加热和电流驱动源。
模型的实现已通过将仿真输出与 RAPTOR [Felici 等人, Plasma Phys. Control. Fusion 2012] 托卡马克输运模拟器的结果直接对比进行了验证。
本项目并非 Google 官方支持的产品。
开发路线图
我们的 readthedocs 页面中概述了 开发路线图。
安装指南
系统要求
请安装 Python 3.11 或更高版本。
确保已安装 tkinter:
sudo apt-get install python3-tk
安装方法
准备虚拟环境
安装 Virtualenv(如果尚未安装):
pip install --upgrade pip
pip install virtualenv
创建并激活虚拟环境:
python3 -m venv toraxvenv
source toraxvenv/bin/activate
从 PyPI 安装
使用 TORAX 最简单的方式是通过 PyPI 进行安装:
pip install torax
您可以检查一切是否正常运行:
run_torax --config=examples/basic_config.py --quit
如果您计划参与 TORAX 的开发,则需要克隆仓库,详情请参阅 贡献指南 和 贡献提示。
运行示例
以下命令将使用默认配置文件 examples/basic_config.py 运行 TORAX:
run_torax --config='examples/basic_config.py'
仿真进度会通过终端进度条显示当前时间和已完成百分比。
若要运行更复杂的、受 ITER 启发的仿真,可以执行:
run_torax --config='examples/iterhybrid_rampup.py'
以及
run_torax --config='examples/iterhybrid_predictor_corrector.py'
此外,还可以通过附加到上述运行命令的标志以及环境变量来进一步配置。例如,若需提高输出的详细程度,可以使用 --log_progress 标志。
run_torax --config='examples/iterhybrid_rampup.py' --log_progress
设置环境变量
错误检查
若设置为 True,将在内部例程中启用错误检查。主要用于调试。默认值为 False,因为这与持久化编译缓存不兼容。
$ export TORAX_ERRORS_ENABLED=<True/False>
JAX 编译与缓存
若设置为 False,JAX 将不会编译 TORAX 的内部函数。主要用于调试。默认值为 False。
$ export JAX_DISABLE_JIT=<True/False>
以下设置启用了 JAX 的持久化缓存,会使 JAX 将编译后的程序存储到文件系统中,在某些情况下可减少重新编译的时间:
$ export JAX_COMPILATION_CACHE_DIR=<您选择的路径,例如 ~/jax_cache>
$ export JAX_PERSISTENT_CACHE_MIN_ENTRY_SIZE_BYTES=-1
$ export JAX_PERSISTENT_CACHE_MIN_COMPILE_TIME_SECS=0.0
设置标志
log_progress - 输出每个时间步的仿真时间、dt 以及求解器迭代次数(对于非线性求解器,还包括 dt 回溯次数)。
run_torax \
--config=examples/iterhybrid_predictor_corrector.py \
--log_progress
output_dir - 覆盖默认输出目录。
run_torax \
--config=examples/iterhybrid_predictor_corrector.py \
--output_dir=/path/to/output/dir
运行包含完整断言检查的测试
要运行启用所有断言检查的 pytest 测试套件,可以使用以下命令:
TORAX_JAXTYPING=True TORAX_ERRORS_ENABLED=True pytest . -n auto
模拟后处理
模拟完成后,模拟状态及其派生量的时间历程将被写入一个带时间戳的文件,文件格式为 state_history_%Y%m%d_%H%M%S.nc。输出目录可由用户配置,默认路径为 /tmp/torax_results。
为了充分利用内存中的(非持久化)缓存,进程在模拟结束时并不会终止。您可以修改 runtime_params,切换 log_progress 和 plot_progress 标志,并重新运行模拟。以下修改会触发重新编译:
- 网格分辨率
- 演化变量(即所求解的方程)
- 更改内部使用的函数,例如输运模型、时间步长计算器、源项模型、求解器模型或pedestal模型。
清理工作
您可以通过取消激活虚拟环境来退出 Python 虚拟环境:
deactivate
(可选)安装 QLKNN-hyper
TORAX 中默认的输运模型是 QLKNN_7_11,它作为 TORAX 的依赖项被安装。另一种选择是使用 QLKNN-hyper-10D,也称为 QLKNN10D K.L. van de Plassche PoP 2020。QLKNN_7_11 基于 QuaLiKiz 2.8.1,其碰撞算子相比 QLKNN10D 的训练数据集有所改进。QLKNN_7_11 的训练数据还包括杂质密度梯度作为输入特征,并且对近 LCFS 区域的覆盖范围优于 QLKNN-hyper-10D。然而,在某些特定场景下,例如与其他模拟器进行基准测试,或与 QLKNN_7_11 进行对比时,使用 QLKNN10D 仍然可能具有价值。
下载 QLKNN-hyper 的依赖项:
git clone https://gitlab.com/qualikiz-group/qlknn-hyper.git
要使用 QLKNN10D,请将您的 TORAX 配置文件中 transport 部分的 model_path 设置为克隆后的仓库路径。
模拟教程
请参阅我们 readthedocs 页面 中的教程部分。
引用 TORAX
关于 TORAX 的论文已在 arXiv 上发布:arXiv:2406.06718。引用该论文即可正确引用 TORAX:
@article{torax2024arxiv,
title={{TORAX: A Fast and Differentiable Tokamak Transport Simulator in JAX}},
author={Citrin, Jonathan and Goodfellow, Ian and Raju, Akhil and Chen, Jeremy
and Degrave, Jonas and Donner, Craig and Felici, Federico and Hamel, Philippe
and Huber, Andrea and Nikulin, Dmitry and Pfau, David and Tracey, Brendan, and
Riedmiller, Martin and Kohli, Pushmeet},
journal={arXiv preprint arXiv:2406.06718},
year={2024}
}
版本历史
v1.3.12026/03/31v1.3.02026/02/09v1.2.02025/12/09v1.1.12025/09/24v1.1.02025/09/12v1.0.32025/06/09v1.0.22025/06/05v1.0.12025/05/22v1.0.02025/05/19v0.3.32025/04/22v0.3.22025/04/17v0.3.12025/04/02v0.3.02025/03/20v0.2.02024/11/19v0.1.02024/05/01常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。
scikit-learn
scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最
keras
Keras 是一个专为人类设计的深度学习框架,旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。 无论是刚入门的学生、专注算法的研究人员,还是需要快速落地产品的工程师,都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。 Keras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码,即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性,还允许开发者根据需求自由选择:利用 JAX 或 PyTorch 的即时执行模式进行高效调试,或切换至速度最快的后端以获得最高 350% 的性能提升。此外,Keras 具备强大的扩展能力,能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群,是连接原型开发与生产部署的理想桥梁。