k-diffusion
k-diffusion 是一个基于 PyTorch 的开源项目,实现了 Karras 等人提出的先进扩散模型算法。它旨在优化生成式 AI 的图像合成过程,通过改进的采样策略和架构设计,显著提升了图像生成的质量、速度与稳定性,解决了传统扩散模型在效率与效果平衡上的痛点。
该项目特别适合 AI 研究人员、深度学习开发者以及希望探索前沿生成模型的工程师使用。虽然普通用户通常通过集成该技术的上层应用间接受益,但其核心代码库更偏向于技术底层的研究与定制开发。
k-diffusion 的核心亮点在于引入了创新的“沙漏扩散 Transformer"(Hourglass Diffusion Transformer)架构。这种设计巧妙结合了分层处理思想,在模型底层采用高效的稀疏邻域注意力机制(需配合 NATTEN 加速),而在高层使用全局注意力,既保证了细节捕捉能力,又大幅降低了计算资源消耗。此外,它还全面支持 torch.compile 加速和混合精度训练,为构建高性能图像生成模型提供了灵活且强大的基础框架。无论是复现经典论文成果,还是研发新型 Transformer 扩散模型,k-diffusion 都是值得关注的技术基石。
使用场景
某 AI 艺术工作室正在为高端时尚品牌训练专属的布料纹理生成模型,需要在有限显存下实现高分辨率与细节的完美平衡。
没有 k-diffusion 时
- 传统扩散模型在生成 256x256 以上高清纹理时,显存占用极易溢出,迫使团队大幅降低分辨率或缩减批次大小,严重拖慢迭代速度。
- 使用普通的窗口注意力机制处理局部细节时,生成的布料纹理往往出现重复伪影或边缘断裂,缺乏自然连贯的微观结构。
- 由于缺乏高效的采样算法,每次预览生成都需要数百步迭代,设计师等待结果的时间过长,难以进行实时创意调整。
- 模型架构僵化,无法灵活调整不同层级的注意力机制,导致在捕捉全局图案布局与局部纤维质感之间顾此失彼。
使用 k-diffusion 后
- 借助 Hourglass Diffusion Transformer 架构与 FlashAttention-2 支持,团队能在单卡上流畅训练高分辨率模型,显存效率显著提升,批次大小得以恢复。
- 通过配置 NATTEN 邻域注意力内核,生成的布料纹理在微观层面呈现出自然的随机性与连续性,彻底消除了机械重复的视觉瑕疵。
- 利用 Karras 等人提出的改进采样算法,生成高质量预览图所需的步数大幅减少,设计师可在几分钟内获得反馈并快速修正提示词。
- 灵活的分层配置允许在底层使用邻域注意力捕捉纤维细节,在顶层使用全局注意力把控整体花纹,实现了宏观与微观的双重优化。
k-diffusion 通过先进的架构设计与高效算力利用,让高分辨率、高保真的定制化图像生成从理论走向低成本落地。
运行环境要求
- 未说明
- 强烈建议使用支持 CUDA 的 NVIDIA GPU
- 若要使用高性能的 'image_transformer_v2' 模型(邻域注意力),必须安装自定义 CUDA 内核 (NATTEN),通常仅限 Linux 环境
- 若使用旧版 GPU (Ampere 架构之前),需禁用 bf16 混合精度并使用 FP32 训练
- 显存需求取决于批次大小和分辨率,文档建议若显存不足可减少 batch size 或启用 checkpointing
未说明

快速开始
k-diffusion
这是 Elucidating the Design Space of Diffusion-Based Generative Models(Karras 等,2022)在 PyTorch 上的实现,并进行了增强和添加了额外功能,例如改进的采样算法以及基于 Transformer 的扩散模型。
Hourglass 扩散 Transformer
k-diffusion 包含一种新的模型类型 image_transformer_v2,它借鉴了 Hourglass Transformer 和 DiT 中的思想。
要求
要使用这种新模型类型,您需要安装自定义的 CUDA 内核:
NATTEN 用于在层次结构的低层使用的稀疏(邻域)注意力机制。该模型类型还有一个 移位窗口注意力 版本,不需要自定义 CUDA 内核,但性能较差,训练和推理速度也较慢。
FlashAttention-2 用于全局注意力机制。如果未安装,将回退到普通的 PyTorch 实现。
此外,您还需要确保您的 PyTorch 安装支持 torch.compile()。如果无法使用 torch.compile(),则会回退到急切模式,但这会导致训练速度变慢并占用更多内存。
使用方法
演示
要在不安装自定义 CUDA 内核的情况下,在 Oxford Flowers 数据集上训练一个 256x256 RGB 模型,请先安装 Hugging Face Datasets:
pip install datasets
然后运行以下命令:
python train.py --config configs/config_oxford_flowers_shifted_window.json --name flowers_demo_001 --evaluate-n 0 --batch-size 32 --sample-n 36 --mixed-precision bf16
如果出现内存不足的情况,可以尝试添加 --checkpointing 参数或减少批次大小。如果您使用的是较旧的 GPU(Ampere 之前),请省略 --mixed-precision bf16 以在 FP32 下进行训练。不建议使用 FP16 进行训练。
如果您已经安装并正确配置了 NATTEN(推荐),可以通过指定 --config configs/config_oxford_flowers.json 来使用邻域注意力代替移位窗口注意力进行训练。
配置文件
在配置文件的 "model" 键中:
将
"type"键设置为"image_transformer_v2"。基础补丁大小由
"patch_size"键指定,例如"patch_size": [4, 4]。层次结构中每一层的模型深度由
"depths"配置键指定,例如"depths": [2, 2, 4]。这将构建一个模型:第一层(4x4 补丁)有两个 Transformer 层,第二层(8x8 补丁)也有两个,最高层(16x16 补丁)有四个,随后在第二层再加两个,最后在第一层再加两个。层次结构中每一层的模型宽度由
"widths"配置键指定,例如"widths": [192, 384, 768]。宽度必须是注意力头维度的倍数。层次结构中每一层的自注意力机制由
"self_attns"配置键指定,例如:"self_attns": [ {"type": "neighborhood", "d_head": 64, "kernel_size": 7}, {"type": "neighborhood", "d_head": 64, "kernel_size": 7}, {"type": "global", "d_head": 64}, ]如果未指定,则除最高层外的所有层级都将使用具有 64 维头和 7x7 核心的邻域注意力。最高层则使用具有 64 维头的全局注意力。因此,除了最高层之外,其他层级的 token 数量可能会非常大。
作为备选方案,如果您或您的用户无法使用 NATTEN,也可以在层次结构的低层使用 移位窗口注意力 训练模型。移位窗口注意力的性能不如邻域注意力,且训练和推理速度较慢,但它不需要自定义 CUDA 内核。您可以这样指定:
"self_attns": [ {"type": "shifted-window", "d_head": 64, "window_size": 8}, {"type": "shifted-window", "d_head": 64, "window_size": 8}, {"type": "global", "d_head": 64}, ]每一层的窗口大小必须能整除该层图像的尺寸。使用一种注意力机制训练的模型,必须经过微调才能用于另一种注意力机制。
推理
待补充:此部分尚未编写。
安装
k-diffusion 可以通过 PyPI 安装(pip install k-diffusion),但这样不会包含训练和推理脚本,只提供可供其他项目依赖的库代码。要运行训练和推理脚本,您需要克隆本仓库,并执行 pip install -e <仓库路径>。
训练
要训练模型,可以使用以下命令:
$ ./train.py --config CONFIG_FILE --name RUN_NAME
例如,要在 MNIST 数据集上训练一个模型:
$ ./train.py --config configs/config_mnist_transformer.json --name RUN_NAME
配置文件允许您指定数据集类型。目前支持的类型包括 "imagefolder"(递归查找该文件夹及其子文件夹中的所有图像)、"cifar10"(CIFAR-10)和 "mnist"(MNIST)。此外还支持 "huggingface" 类型,即 Hugging Face Datasets。
多 GPU 和多节点训练可通过 Hugging Face Accelerate 实现。您可以先运行以下命令来配置 Accelerate:
$ accelerate config
然后运行:
$ accelerate launch train.py --config CONFIG_FILE --name RUN_NAME
增强/附加功能
k-diffusion 支持一种高效的分层 Transformer 模型类型。
k-diffusion 支持 Min-SNR 损失加权 的软版本,用于在高分辨率下进行改进的训练,且所需的超参数比 Karras 等人(2022)使用的损失加权更少。
k-diffusion 为 v-diffusion-pytorch、OpenAI diffusion 和 CompVis diffusion 模型提供了封装器,使其能够与 k-diffusion 的采样器以及 ODE/SDE 方法一起使用。
k-diffusion 实现了 DPM-Solver,该方法在与 Karras 算法 2 相同的函数评估次数下能够生成更高质量的样本,并支持自适应步长控制。此外,现在还实现了 DPM-Solver++(2S) 和 (2M),以在较少步数的情况下进一步提升生成质量。
k-diffusion 支持从无条件扩散模型中进行 CLIP 引导的采样(参见
sample_clip_guided.py)。k-diffusion 支持对原生模型和所有封装模型计算对数似然值(而非变分下界)。
k-diffusion 在训练过程中还可以根据 大型批量训练的经验模型(https://arxiv.org/abs/1812.06162),计算梯度噪声尺度(1 / SNR)。
待办事项
- 隐式扩散
版本历史
v0.1.1.post12023/12/07v0.1.12023/10/10v0.1.02023/09/24v0.0.162023/08/12v0.0.152023/05/21v0.0.142023/02/06v0.0.132023/02/06v0.0.122022/11/23v0.0.112022/11/20v0.0.102022/11/04v0.0.92022/10/05v0.0.82022/10/01v0.0.72022/09/30v0.0.62022/09/30v0.0.52022/09/30v0.0.42022/09/30v0.0.32022/09/30常见问题
相似工具推荐
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
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 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。