[读论文]DiT Scalable Diffusion Models with Transformers

论文翻译
Scalable Diffusion Models with Transformers-CSDN博客

论文地址:
https://arxiv.org/pdf/2212.09748.pdf

项目地址:
GitHub - facebookresearch/DiT: Official PyTorch Implementation of "Scalable Diffusion Models with Transformers"

论文主页:
Scalable Diffusion Models with Transformers

实验指标

1 可视化展示(x increasing transformer size | y decreasing patch size)
2 Transformer Gflops
   Training Compute (Gflops)
4 FID IS Precision Recalls (256x256 512x512)
5 sampling-up compute (Gflops)

github使用说明

一、采样过程samlpe

Pre-trained DiT checkpoints. You can sample from our pre-trained DiT models with sample.py. Weights for our pre-trained DiT model will be automatically downloaded depending on the model you use. The script has various arguments to switch between the 256x256 and 512x512 models, adjust sampling steps, change the classifier-free guidance scale, etc. For example, to sample from our 512x512 DiT-XL/2 model, you can use:

重新训练DiT检查点。
您可以使用sample.py从我们预训练的DiT模型中进行抽样。
我们预训练的DiT模型的权重将根据您使用的模型自动下载。
该脚本具有各种参数,用于在256x256和512x512模型之间切换,调整采样步骤,更改无分类器的指导尺度等。例如,要从512x512 DiT-XL/2模型中取样,您可以使用:

python sample.py --image-size 512 --seed 1

训练好的模型下载

Custom DiT checkpoints. If you've trained a new DiT model with train.py (see below), you can add the --ckpt argument to use your own checkpoint instead. For example, to sample from the EMA weights of a custom 256x256 DiT-L/4 model, run:

自定义DiT检查点。
如果您使用train.py(见下文)训练了一个新的DiT模型,
那么您可以添加——ckpt参数来使用您自己的检查点。
例如,要从自定义256x256 DiT-L/4型号的EMA权重中采样,请运行:

python sample.py --model DiT-L/4 --image-size 256 --ckpt /path/to/model.pt

二、训练过程

We provide a training script for DiT in train.py.
This script can be used to train class-conditional DiT models, but it can be easily modified to support other types of conditioning. To launch DiT-XL/2 (256x256) training with N GPUs on one node:

我们在train.py中为DiT提供了一个训练脚本。
该脚本可用于训练类条件DiT模型,但是可以很容易地修改它以支持其他类型的条件。在一个节点上使用N个gpu启动DiT-XL/2 (256x256)训练:

torchrun --nnodes=1 --nproc_per_node=N train.py --model DiT-XL/2 --data-path /path/to/imagenet/train

torchrun
--nnodes=1
--nproc_per_node=N
train.py
--model DiT-XL/2
--data-path /path/to/imagenet/train

三、训练结果

PyTorch Training Results

We've trained DiT-XL/2 and DiT-B/4 models from scratch with the PyTorch training script to verify that it reproduces the original JAX results up to several hundred thousand training iterations. Across our experiments, the PyTorch-trained models give similar (and sometimes slightly better) results compared to the JAX-trained models up to reasonable random variation. Some data points:

我们已经用PyTorch训练脚本从头开始训练DiT-XL/2和DiT-B/4模型,以验证它能够再现多达数十万次训练迭代的原始JAX结果。
在我们的实验中,与jax训练的模型相比,pytorch训练的模型给出了类似(有时略好)的结果,但存在合理的随机变化。一些数据点:

These models were trained at 256x256 resolution; we used 8x A100s to train XL/2 and 4x A100s to train B/4. Note that FID here is computed with 250 DDPM sampling steps, with the mse VAE decoder and without guidance (cfg-scale=1).

这些模型以256x256分辨率进行训练;
我们用8倍a100来训练XL/2,
4倍a100来训练B/4。
请注意,这里的FID是用250 DDPM采样步骤计算的,使用mse VAE解码器,没有指导(cfg-scale=1)。

TF32 Note (important for A100 users). When we ran the above tests, TF32 matmuls were disabled per PyTorch's defaults. We've enabled them at the top of train.py and sample.py because it makes training and sampling way way way faster on A100s (and should for other Ampere GPUs too), but note that the use of TF32 may lead to some differences compared to the above results.

TF32说明(对于A100用户很重要)。
当我们运行上述测试时,根据PyTorch的默认设置禁用了TF32 matmul。
我们在train.py和sample.py的顶部启用了它们,因为它使a100上的训练和采样方式更快(对于其他ampere gpu也应该如此),但请注意,与上述结果相比,使用TF32可能会导致一些差异。

eature Update Check out this repository at https://github.com/chuanyangjin/fast-DiT to preview a selection of training speed acceleration and memory saving features including gradient checkpointing, mixed precision training and pre-extrated VAE features.  With these advancements, we have achieved a training speed of 0.84 steps/sec for DiT-XL/2 using just a single A100 GPU.
查看此存储库https://github.com/chuanyangjin/fast-DiT
预览选择的训练速度加速和内存节省功能,包括梯度检查点,混合精度训练和预提取的VAE功能。凭借这些进步,我们仅使用单个A100 GPU就实现了DiT-XL/2的0.84步/秒的训练速度。

Evaluation (FID, Inception Score, etc.)

We include a sample_ddp.py script which samples a large number of images from a DiT model in parallel.
This script generates a folder of samples as well as a .npz file which can be directly used with ADM's TensorFlow evaluation suite to compute FID, Inception Score and other metrics.
For example, to sample 50K images from our pre-trained DiT-XL/2 model over N GPUs, run:

我们包含了一个sample_ddp.py脚本,该脚本从DiT模型中并行采样大量图像。
该脚本生成一个样本文件夹以及一个.npz文件,该文件可以直接与ADM的TensorFlow评估套件一起使用,以计算FID, Inception Score和其他指标
例如,要在N个gpu上从预训练的DiT-XL/2模型中采样50K图像,请运行:

torchrun --nnodes=1 --nproc_per_node=N sample_ddp.py --model DiT-XL/2 --num-fid-samples 50000

torchrun --nnodes=1 --nproc_per_node=N
sample_ddp.py --model DiT-XL/2 --num-fid-samples 50000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/152547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在哪里可以制作一本精美的翻页产品册呢?

你是否曾经为了一张可滑动的画册而翻看了整个产品册?翻页产品册是一种数字化的画册形式,它可以在电脑、手机、平板等设备上进行浏览和阅读。相比传统的纸质画册,翻页产品册有着更多的优势和用途。那么,在哪里可以制作一本这种精美…

分布式系统架构理论与组件

文章目录 1.分布式系统的发展2.分布式系统的挑战3.分布式系统基本理论3.1 CAP定理3.2 PACELC理论3.3 BASE模型3.4 一致性算法 4.分布式架构组件4.1 主要组件4.2 辅助工具4.3 常用架构 5.常用数据库5.1 数据库的发展5.2 OLTP和OLAP5.3 常用NoSQL数据库5.4 常用关系型数据库 1.分…

如何修改Hosts文件(Windows、Linux)本机配置域名解析

Hosts文件是一种在计算机网络中存储主机名与IP地址对应关系的文本文件。通过配置Hosts文件,可以避免在网络环境中DNS无法正常解析时,出现无法访问互联网的问题。 Windows修改hosts文件 1 以windows10系统为例,手指同时按住 windows 键和 X 键…

php-cli

//运行index.php ./php index.php//启动php内置服务器 ./php -S 0.0.0.0:8080//启动内置服务在后台运行,日志输出到本目录下的server.log nohup ./php -S 0.0.0.0:8080 -t . > server.log 2>&1 &# 查找 PHP 进程 ps aux | grep "php -S 0.0.0.0:…

【Python基础篇】运算符

博主:👍不许代码码上红 欢迎:🐋点赞、收藏、关注、评论。 格言: 大鹏一日同风起,扶摇直上九万里。 文章目录 一 Python中的运算符二 算术运算符1 Python所有算术运算符的说明2 Python算术运算符的所有操作…

EDMA的组成及其作用简介

EDMA是什么? 答:EDMA(Enhanced Direct Memory Access)是一种增强型的直接内存访问技术,用于高效地实现数据传输和处理。它是在传统的DMA(Direct Memory Access)基础上进行改进和扩展的。DMA是一…

windows的远程桌面服务RDS存在弱加密证书的漏洞处理

背景 漏洞扫描检测windows服务器的远程桌面服务使用了弱加密的ssl证书 思路 按照报告描述,试图使用强加密的新证书更换默认证书 解决 生成证书 通过openssl1.1.1生成(linux自带openssl,windows安装的是openssl1.1.1w)&#x…

外贸开发信主题怎么写?营销邮件标题推荐?

外贸开发信主题编写方法?如何用QQ邮件群发外贸邮件? 在外贸领域,写一封引人注目的开发信至关重要。外贸开发信主题应当吸引受众,引起兴趣,激发他们与您进一步合作的愿望。为了达到这个目标,蜂邮将探讨一些…

基于STM32设计的酒驾监控系统_优化升级版

与之前的酒驾检测的项目,优化了onenet网络上传代码,保证网络差的环境下也可以正常上传数据。 一、设计需求 1.1 设计需求总结 酒后驾车已经成为威胁人类生命安全的严重问题。为了严格控制酒后驾车,本文设计了一款针对道路行驶的酒后驾车监测系统。该系统采用STM32作为主控…

拖拽式万能DIY小程序源码系统 5分钟创建一个小程序,操作简单 带完整的部署搭建教程

随着移动互联网的发展,越来越多的企业开始使用可视化拖拽式小程序系统来开发和管理自己的应用程序。可视化拖拽式小程序系统为企业提供了一种更快捷、更简便的方式来开发和管理应用程序,这种方式能够大大提高企业的工作效率,使企业更加高效地…

Everything——检索神兵

相信在日常生活工作中,大家肯定会有这样的困惑:由于一时疏忽,自己下载或编写的文件保存的路径丢失,想再次在茫茫内存中找到会很麻烦。今天学长将带来一款软件——Everything,其拥有强大的搜索功能,可以帮助…

AIGC|实践探索Langflow集成AzureOpenAI

目录 一、背景 二、AzureOpenAI介绍 三、langflow集成支持AzureOpenAI langflow集成AzureOpenAI联通改造流程: 四、效果演示 一、背景 langflow是一个LangChain UI,它提供了一种交互界面来使用LangChain,通过简单的拖拽即可搭建自己的实…

时区、时间戳、时间点三者的关系

时区、时间戳、时间点这三个概念与Java的Date类和Calendar类紧密联系。分别说说区别。然后说一下Java的Date类和Calendar类 1. 时间戳 时间戳指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式&…

如何调整图片尺寸:简单实用的教程分享

报名事业编考试的时候,会发现上传照片时会提示图片大小尺寸应该为多少,如果不符合规定就无法提交报名,那么怎么才能修改图片大小呢?最简单的方法就是利用调整照片大小工具来对图片尺寸修改,本文分享一个在线图片处理工…

BLIP:统一视觉语言理解与生成的预训练模型

Li J, Li D, Xiong C, et al. Blip: Bootstrapping language-image pre-training for unified vision-language understanding and generation[C]//International Conference on Machine Learning. PMLR, 2022: 12888-12900. BLIP 是 Salesforce 在 2022 年的工作,文…

分布式锁~

分布式锁 分布式锁是在分布式系统中用于协调多个节点之间对共享资源的访问的一种机制。个人认为实现分布式锁,需要一个中间件例如数据库,redis等等这样的存储锁即可实现分布式锁。 分布式锁实现方案 基于数据库(唯一索引) 基于内存(redis,…

CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用

查看原文>>>最新CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用 气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响,是当前全球关注的核心议题之一。IPCC(Intergovernmental Panel on Climate Change&#…

太激动了!摄像头终于有画面了!

有了放弃的想法 摄像头APP在我这里好好的,到了老外那里就不能 用。反复试了几套源码,都没有画面。后来干脆把老外说通用的APK反编译后,新做了个APP,结果还是没画面。到了这个时候,我是真的有点沮丧,准备放弃…

七、Nacos和Eureka的区别

一、nacos注册中心 二、临时实例与非临时实例 三、区别 Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式临时实例心跳不正常会被剔除,非临时实例则不会被剔除Nacos支持服务列表变更的消息推送模式,服务…

软件外包开发文档需要注意的问题

编写软件开发文档时需要注意以下一些关键问题,以确保文档的质量、有效性和可维护性,通过关注这些问题,您可以确保软件开发文档更容易被理解、使用和维护,从而提高项目的成功几率。北京木奇移动技术有限公司,专业的软件…