Turing.jl
Turing.jl 是一款基于 Julia 语言构建的开源概率编程库,旨在让贝叶斯推断变得简单高效。它主要解决了传统统计建模中算法实现复杂、代码复用性低以及计算效率难以平衡的痛点,让用户能够专注于模型逻辑本身,而无需手动推导繁琐的数学公式或编写底层采样代码。
这款工具特别适合数据科学家、统计研究人员以及需要处理不确定性量化问题的开发者使用。无论是构建复杂的层次模型,还是进行机器学习中的参数估计,Turing.jl 都能提供灵活的支持。其核心亮点在于采用了直观的宏语法(如 @model),允许用户用接近自然数学表达的方式定义概率模型;同时,它内置了包括 NUTS 在内的多种先进马尔可夫链蒙特卡洛(MCMC)采样算法,并能自动利用 Julia 的高性能特性加速计算。此外,作为 Julia 生态的一部分,Turing.jl 拥有活跃的社区支持和丰富的教程资源,帮助用户快速上手并解决实际问题。如果你希望在保持代码简洁的同时获得工业级的计算性能,Turing.jl 是一个值得尝试的专业选择。
使用场景
某医疗数据科学家正在构建一个预测新药疗效的统计模型,需要处理小样本临床数据并量化参数不确定性。
没有 Turing.jl 时
- 建模门槛高:必须手动推导复杂的后验分布公式,或依赖黑盒商业软件,难以灵活定制层级贝叶斯结构。
- 不确定性量化困难:传统点估计方法(如最小二乘法)只能给出单一预测值,无法提供置信区间,导致医生难以评估风险。
- 迭代效率低下:每次调整先验假设或模型结构都需要重写大量底层采样代码,开发周期长达数周。
- 小样本表现差:在仅有几十例患者数据时,常规机器学习模型容易过拟合,缺乏利用先验知识正则化的能力。
使用 Turing.jl 后
- 声明式建模:利用
@model宏直接用概率编程语言描述变量关系,像写数学公式一样定义层级模型,无需手动推导。 - 完整不确定性输出:内置 NUTS 等高级采样器自动运行 MCMC,直接生成参数的后验分布,清晰展示疗效预测的可信范围。
- 快速原型验证:修改先验分布(如将正态分布改为柯西分布)仅需改动一行代码,几分钟内即可重新采样并对比结果。
- 小样本鲁棒性:通过引入医学专家的先验知识(如药物半衰期范围),有效约束模型空间,在极少数据下仍能得出可靠结论。
Turing.jl 将繁琐的贝叶斯推断转化为直观的代码表达,让研究人员能专注于领域逻辑而非算法实现,显著提升了小数据场景下的决策可靠性。
运行环境要求
- Linux
- macOS
- Windows
未说明 (可选,取决于具体使用的推理算法后端)
未说明

快速开始
基于概率编程的贝叶斯推断
开始使用
安装 Julia(请参阅 Julia 官方网站;运行最新版 Turing.jl 至少需要 Julia 1.10.8)。然后,启动 Julia REPL 并运行:
julia> using Pkg; Pkg.add("Turing")
您可以使用 @model 宏定义模型,然后通过 sample 函数进行马尔可夫链蒙特卡洛采样:
julia> using Turing
julia> @model function linear_regression(x)
# 先验分布
α ~ Normal(0, 1)
β ~ Normal(0, 1)
σ² ~ truncated(Cauchy(0, 3); lower=0)
# 似然函数
μ = α .+ β .* x
y ~ MvNormal(μ, σ² * I)
end
julia> x, y = rand(10), rand(10)
julia> posterior = linear_regression(x) | (; y = y)
julia> chain = sample(posterior, NUTS(), 1000)
您可以在 https://turinglang.org 找到 TuringLang 的主要文档,其中包含关于 Turing.jl 功能的概述以及大量带有 Turing.jl 模型示例的教程。
Turing.jl 的 API 文档则专门位于 https://turinglang.org/Turing.jl/stable。
贡献
问题报告
如果您在使用 Turing.jl 时发现任何错误或不直观的行为,请务必 提交一个问题!无需担心将问题提交到正确的仓库;如有必要,我们会将其迁移到合适的仓库。
拉取请求
我们当然也非常欢迎拉取请求。如果您不确定某个功能是否受欢迎,可以先创建一个问题进行讨论。
提交 PR 时,非破坏性更新(补丁版本)应针对 main 分支;破坏性更新(小版本)则应针对 breaking 分支。
如果您的问题或 PR 一段时间内未收到回复,请随时在评论中 @TuringLang/maintainers。
其他交流渠道
Turing.jl 用户群体通常在 Julia Slack 的 #turing 频道 中最为活跃。如果您没有 Julia Slack 的邀请,可以从 Julia 官方网站 获取。
此外,在 Julia Discourse 上也经常有关于 Turing.jl 的讨论主题(您可以通过例如 “turing” 标签 进行搜索)。
最近有哪些变化?
我们每两周发布一期简报,总结 TuringLang 生态系统中的最新动态,您可以在我们的 官网、GitHub 或 Julia Slack 上查看。
对于 Turing.jl 本身,完整的变更日志可在 HISTORY.md 或 我们的 GitHub 发布页面 中找到。
Turing.jl 在 TuringLang 生态系统中处于什么位置?
Turing.jl 是用户的主要入口,旨在为 TuringLang(以及更广泛的 Julia 生态系统)中的所有功能提供统一且便捷的接口。
具体而言,它结合了使用 DynamicPPL.jl 指定概率模型的能力,并与多种推理算法相结合,例如:
- 马尔可夫链蒙特卡洛(包括抽象接口 AbstractMCMC.jl,以及具体的采样器,如 AdvancedMH.jl、AdvancedHMC.jl 等)。
- 使用 AdvancedVI.jl 进行变分推断。
- 最大似然估计和最大后验估计,这些依赖于 SciML 的 Optimization.jl 接口。
引用 Turing.jl
如果您在工作中使用了 Turing.jl,我们将会非常感激您能够引用以下文献:
Turing.jl:一种通用的概率编程语言
托尔·埃尔伦德·菲耶尔德、许凯、大卫·维德曼、穆罕默德·塔雷克、卡梅隆·皮费尔、马丁·特拉普、塞思·D·阿克森、孙显达、马库斯·豪鲁、佩内洛普·永、威尔·泰布特、祖宾·加拉马尼、何虹
ACM 概率机器学习汇刊,2025年(已接受)
Turing:一种用于灵活概率推理的语言
何虹、许凯、祖宾·加拉马尼
第二十一届国际人工智能与统计会议论文集,PMLR 84:1682-1690,2018年。
展开以查看 BibTeX 格式
@article{10.1145/3711897,
author = {Fjelde, Tor Erlend and Xu, Kai and Widmann, David and Tarek, Mohamed and Pfiffer, Cameron and Trapp, Martin and Axen, Seth D. and Sun, Xianda and Hauru, Markus and Yong, Penelope and Tebbutt, Will and Ghahramani, Zoubin and Ge, Hong},
title = {Turing.jl: a general-purpose probabilistic programming language},
year = {2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3711897},
doi = {10.1145/3711897},
note = {Just Accepted},
journal = {ACM Trans. Probab. Mach. Learn.},
month = feb,
}
@InProceedings{pmlr-v84-ge18b,
title = {Turing: A Language for Flexible Probabilistic Inference},
author = {Ge, Hong and Xu, Kai and Ghahramani, Zoubin},
booktitle = {Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics},
pages = {1682--1690},
year = {2018},
editor = {Storkey, Amos and Perez-Cruz, Fernando},
volume = {84},
series = {Proceedings of Machine Learning Research},
month = {09--11 Apr},
publisher = {PMLR},
pdf = {http://proceedings.mlr.press/v84/ge18b/ge18b.pdf},
url = {https://proceedings.mlr.press/v84/ge18b.html},
}
版本历史
v0.43.52026/04/01v0.43.42026/04/01v0.43.32026/03/26v0.43.22026/03/14v0.43.12026/03/09v0.43.02026/03/05v0.42.92026/03/02v0.42.82026/01/28v0.42.72026/01/28v0.42.62026/01/26v0.42.52026/01/26v0.42.42026/01/09v0.42.32026/01/07v0.42.22026/01/05v0.42.12025/12/21v0.6.152025/12/21v0.42.02025/12/04v0.41.42025/11/24v0.41.32025/11/21v0.41.22025/11/21常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器