更新中英文 README 和文档,修正 API 示例与代码同步 (merge request !307)
高性能视频/图像生成 DiT (Diffusion Transformer) 推理框架
English | 简体中文
kDiT 是一个专为扩散模型(Diffusion Transformer)设计的高性能推理框架,支持视频生成(T2V/I2V)和图像生成(T2I)任务。框架提供了丰富的优化技术和灵活的配置选项,可在单卡或多卡环境下高效运行大规模 DiT 模型。
我们正在抓紧制作Dockerfile,敬请期待。
# 克隆仓库 git clone https://github.com/Tencent/KsanaDiT.git cd KsanaDiT # 执行安装脚本(自动处理所有依赖) bash scripts/install_public.sh
安装脚本会自动检测硬件环境并安装相应的依赖。
kDiT 提供多种使用方式,满足不同场景的需求:
通过 Python Pipeline API 直接在本地运行,适合脚本化批量生成或集成到自有系统中:
from kdit import Pipeline # 创建推理管道 pipeline = Pipeline.from_models("path/to/model") # 生成视频/图像 result = pipeline.generate(prompt, ...)
详细用法请参考 快速开始 和 examples 目录。
kDiT 支持作为 ComfyUI 的自定义节点使用,提供可视化工作流体验:
# 1. 克隆 kDiT 仓库 git clone https://github.com/Tencent/KsanaDiT.git # 2. 进入 kDiT 目录并执行安装脚本 cd KsanaDiT ./scripts/install_public.sh
安装过程中,脚本会交互式提示输入 ComfyUI 的安装根目录。安装完成后,重启 ComfyUI 即可在节点列表中看到 kDiT 相关节点。
详细的代码可以参考examples
import torch from kdit import Pipeline from kdit.config import ( DistributedConfig, RuntimeConfig, SampleConfig, ) # 创建推理管道 pipeline = Pipeline.from_models( "path/to/Wan2.2-T2V-A14B", dist_config=DistributedConfig(num_gpus=1) ) # 生成视频 video = pipeline.generate( "街头摄影,戴耳机的酷女孩滑板,纽约街头,涂鸦墙背景", sample_config=SampleConfig(steps=40), runtime_config=RuntimeConfig( seed=1234, size=(720, 480), frame_num=17, return_frames=True, ), ) print(f"生成视频形状: {video.shape}")
from kdit import Pipeline from kdit.config import RuntimeConfig, SampleConfig from kdit.pipelines.context_builders.wan import WanI2VExtraInputs pipeline = Pipeline.from_models("path/to/Wan2.2-I2V-A14B") video = pipeline.generate( "女孩扇子轻微挥动,吹口仙气后,手上的闪电飞到空中开始打雷", extra_inputs=WanI2VExtraInputs(start_img_path="input.png"), sample_config=SampleConfig(steps=40), runtime_config=RuntimeConfig( seed=1234, size=(512, 512), frame_num=17, ), )
参考 run_turbo_diffusion
import torch from kdit import Pipeline from kdit.config import ( ModelConfig, RuntimeConfig, SampleConfig, SolverType, ) pipeline = Pipeline.from_models( "path/to/Qwen-Image", model_config=ModelConfig(run_dtype=torch.bfloat16), ) image = pipeline.generate( "一只可爱的橘猫坐在窗台上,阳光透过窗户洒在它的毛发上", sample_config=SampleConfig( steps=20, cfg_scale=4.0, solver=SolverType.FLOWMATCH_EULER, ), runtime_config=RuntimeConfig( seed=42, size=(1024, 1024), ), )
import torch from kdit import Pipeline from kdit.config import ( ModelConfig, KsanaAttentionConfig, KsanaAttentionBackend, KsanaLinearBackend, ) model_config = ModelConfig( run_dtype=torch.float16, attention_config=KsanaAttentionConfig(backend=KsanaAttentionBackend.SAGE_ATTN), linear_backend=KsanaLinearBackend.FP8_GEMM, ) pipeline = Pipeline.from_models( ("high_noise_fp8.safetensors", "low_noise_fp8.safetensors"), model_config=model_config, )
from kdit import Pipeline from kdit.config import LoraConfig, SampleConfig pipeline = Pipeline.from_models( "path/to/Wan2.2-T2V-A14B", lora_config=LoraConfig("path/to/Wan2.2-Lightning-4steps-lora"), ) # 使用 4 步快速生成 video = pipeline.generate( prompt, sample_config=SampleConfig( steps=4, cfg_scale=1.0, sigmas=[1.0, 0.9375, 0.6333, 0.225, 0.0], ), )
from kdit.config.cache_config import ( DCacheConfig, DBCacheConfig, HybridCacheConfig, ) # 使用混合缓存策略 cache_config = HybridCacheConfig( step_cache=DCacheConfig(fast_degree=50), block_cache=DBCacheConfig(), ) video = pipeline.generate( prompt, cache_config=cache_config, )
# 方式 1: 使用 CUDA_VISIBLE_DEVICES CUDA_VISIBLE_DEVICES=0,1,2,3 python your_script.py # 方式 2: 使用 torchrun CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node=4 your_script.py
from kdit import Pipeline from kdit.config import DistributedConfig pipeline = Pipeline.from_models( model_path, dist_config=DistributedConfig(num_gpus=4), )
# 日志级别: debug/info/warn/error export KSANA_LOGGER_LEVEL=info
框架支持通过 YAML 文件配置模型参数,配置文件位于 kdit/settings/ 目录:
kdit/settings/
qwen/t2i_20b.yaml
qwen/edit_20b.yaml
wan/t2v_14b.yaml
wan/ti2v_5b.yaml
wan/i2v_14b.yaml
wan/vace_14b.yaml
完整示例代码位于 examples/ 目录:
examples/
examples/local/wan/wan2_2_t2v.py
examples/local/wan/wan2_2_i2v.py
examples/local/wan/wan2_1_vace.py
examples/local/qwen/qwen_image_t2i.py
examples/local/qwen/qwen_image_edit.py
我们配置了完备的测试,目前耗时较久,后续我们会持续精简,仅限开发者关注。
# 运行所有测试 pytest tests/ # 运行特定测试 pytest tests/kdit/pipelines/wan2_2_t2v_test.py # 运行 GPU 测试 bash scripts/ci_tests/ci_kdit_gpus.sh
我们欢迎社区贡献!在提交 PR 之前,请确保:
git commit
# 安装开发依赖 pip install -e ".[dev]" # 运行代码风格检查 pre-commit run --all-files # 运行测试 pytest tests/
各版本详细变更记录请查看 CHANGELOG。
本项目采用 Apache 2.0 许可证 - 详见 LICENSE 文件
本项目受益于以下优秀开源项目:
如果这个项目对你有帮助,请给我们一个 ⭐️ Star!
Made with ❤️ by kDiT Team
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
kDiT
高性能视频/图像生成 DiT (Diffusion Transformer) 推理框架
English | 简体中文
📖 简介
kDiT 是一个专为扩散模型(Diffusion Transformer)设计的高性能推理框架,支持视频生成(T2V/I2V)和图像生成(T2I)任务。框架提供了丰富的优化技术和灵活的配置选项,可在单卡或多卡环境下高效运行大规模 DiT 模型。
✨ 核心特性
📦 支持的模型
视频生成模型
图像生成模型
🛠️ 安装
Docker
我们正在抓紧制作Dockerfile,敬请期待。
环境要求
安装步骤
安装脚本会自动检测硬件环境并安装相应的依赖。
🔌 接口支持
kDiT 提供多种使用方式,满足不同场景的需求:
本地 Pipeline 方式
通过 Python Pipeline API 直接在本地运行,适合脚本化批量生成或集成到自有系统中:
详细用法请参考 快速开始 和 examples 目录。
ComfyUI 集成
kDiT 支持作为 ComfyUI 的自定义节点使用,提供可视化工作流体验:
安装过程中,脚本会交互式提示输入 ComfyUI 的安装根目录。安装完成后,重启 ComfyUI 即可在节点列表中看到 kDiT 相关节点。
🚀 快速开始
详细的代码可以参考examples
文本生成视频 (T2V)
图像生成视频 (I2V)
TurboDiffusion
参考 run_turbo_diffusion
文本生成图像 (T2I)
🎯 高级功能
FP8 量化推理
LoRA 加速推理
智能缓存优化 - 持续优化中
多 GPU 分布式推理
📊 性能优化技术
量化与计算优化
注意力机制后端
缓存策略
采样器
🔧 配置说明
环境变量
模型配置
框架支持通过 YAML 文件配置模型参数,配置文件位于
kdit/settings/目录:qwen/t2i_20b.yaml- Qwen 图像生成模型配置qwen/edit_20b.yaml- Qwen 图像编辑模型配置wan/t2v_14b.yaml- Wan2.2 T2V 模型配置wan/ti2v_5b.yaml- Wan2.2 TI2V 5B 模型配置wan/i2v_14b.yaml- Wan2.2 I2V 模型配置wan/vace_14b.yaml- Wan2.1 Vace 模型配置📚 示例代码
完整示例代码位于
examples/目录:examples/local/wan/wan2_2_t2v.py- 文本生成视频示例examples/local/wan/wan2_2_i2v.py- 图像生成视频示例examples/local/wan/wan2_1_vace.py- 视频可控编辑示例examples/local/qwen/qwen_image_t2i.py- 文本生成图像示例examples/local/qwen/qwen_image_edit.py- 图像编辑示例🧪 测试
我们配置了完备的测试,目前耗时较久,后续我们会持续精简,仅限开发者关注。
🤝 贡献指南
我们欢迎社区贡献!在提交 PR 之前,请确保:
git commithook)3. 添加必要的文档和注释📋 更新日志
各版本详细变更记录请查看 CHANGELOG。
📄 许可证
本项目采用 Apache 2.0 许可证 - 详见 LICENSE 文件
🙏 致谢
本项目受益于以下优秀开源项目:
📮 联系方式
🗺️ 路线图
已完成 ✅
进行中 🚧
如果这个项目对你有帮助,请给我们一个 ⭐️ Star!
Made with ❤️ by kDiT Team