震撼登场!英伟达开源图像生成模型Sana ,1秒生图、支持中英文和emoji

近日,英伟达开源了一款名为 Sana 的图像生成模型,这一模型仅有0.6亿个参数,极大降低了运行门槛。

在这里插入图片描述
据了解,Sana 能够生成4096×4096分辨率的图像,并且可以在16GB 的显卡上运行,不到1秒的时间内生成1024×1024分辨率的高质量图片,这一速度在同类模型中表现突出。

研究团队引入了一种深度压缩自编码器(DC-AE),相比于传统的自编码器,Sana 的压缩比高达32倍,大大减少了潜在标记的数量,这对于生成超高分辨率图像至关重要。其次,Sana 采用了线性扩散变换器(DiT),用线性注意力取代了传统的二次注意力,从而将复杂度降低到 O (N),并通过3×3深度卷积提升了局部信息的捕捉能力。这样的设计使得 Sana 在生成4K 图像时延迟提高了1.7倍。

在文本编码方面,Sana 选择了小型的解码器专用大语言模型 Gemma,取代了传统的 T5模型。Gemma 在理解和执行复杂指令方面表现更为出色,增强了图像与文本之间的对齐能力。此外,Sana 还优化了训练和推理策略,通过自动标记和选择高 CLIP 评分的描述,提升了文本与图像的一致性。新提出的 Flow-DPM-Solver 算法将推理步骤减少到了14-20步,显著提高了性能。

综合性能方面,Sana 在多个先进的文本到图像扩散模型中表现优异。在512×512分辨率下,Sana-0.6的吞吐量是 PixArt-Σ 的5倍,并且在图像生成质量方面表现出色。而在1024×1024分辨率下,Sana-0.6B 在小于3亿参数的模型中也有着显著的优势。

Sana-0.6B 不仅性能强劲,还可以在16GB 的笔记本 GPU 上快速生成图像,助力内容创作者高效地实现创作目标。据称,Sana0.6B性能上和Flux-12B也具备竞争力,参数量只有其1/20,速度却是整整快100倍。

有趣的是,Sana提示词支持英文、中文和 emoji。用户可以输入中文诗句,生成与之相关的艺术图像。此外,Sana 还具有一定的安全性,当用户输入不当词汇时,系统会自动用红心图案❤️替代,从而避免不适内容的生成。

比如给出提示词“一只可爱的 🐼 在吃 🎋, 水墨画风格”,可以看到模型能精准识别emoji。

在这里插入图片描述
值得一提的是,Sana 已获得官方对 ComfyUI 的支持,并配备了 Lora 训练工具。这使得用户在使用过程中更加便捷,实用性也大幅提升,感兴趣的朋友可以自己试试。

项目入口:https://nv-sana.mit.edu/

快速上手

  1. 如何将 SanaPipeline 与 🧨diffusers 一起使用
# run `pip install git+https://github.com/huggingface/diffusers` before use Sana in diffusers
import torch
from diffusers import SanaPipeline

pipe = SanaPipeline.from_pretrained(
    "Efficient-Large-Model/Sana_1600M_4Kpx_BF16_diffusers",
    variant="bf16",
    torch_dtype=torch.bfloat16,
)
pipe.to("cuda")

pipe.vae.to(torch.bfloat16)
pipe.text_encoder.to(torch.bfloat16)

# for 4096x4096 image generation OOM issue
if pipe.transformer.config.sample_size == 128:
    from patch_conv import convert_model
    pipe.vae = convert_model(pipe.vae, splits=32)

prompt = 'A cute 🐼 eating 🎋, ink drawing style'
image = pipe(
    prompt=prompt,
    height=4096,
    width=4096,
    guidance_scale=5.0,
    num_inference_steps=20,
    generator=torch.Generator(device="cuda").manual_seed(42),
)[0]

image[0].save("sana.png")

  1. 如何将 SanaPAGPipeline 与 🧨diffusers 结合使用
# run `pip install git+https://github.com/huggingface/diffusers` before use Sana in diffusers
import torch
from diffusers import SanaPAGPipeline

pipe = SanaPAGPipeline.from_pretrained(
  "Efficient-Large-Model/Sana_1600M_4Kpx_BF16_diffusers",
  variant="bf16",
  torch_dtype=torch.bfloat16,
  pag_applied_layers="transformer_blocks.8",
)
pipe.to("cuda")

pipe.text_encoder.to(torch.bfloat16)
pipe.vae.to(torch.bfloat16)

# for 4096x4096 image generation OOM issue
if pipe.transformer.config.sample_size == 128:
    from patch_conv import convert_model
    pipe.vae = convert_model(pipe.vae, splits=32)

prompt = 'A cute 🐼 eating 🎋, ink drawing style'
image = pipe(
    prompt=prompt,
    height=4096,
    width=4096,
    guidance_scale=5.0,
    pag_scale=2.0,
    num_inference_steps=20,
    generator=torch.Generator(device="cuda").manual_seed(42),
)[0]
image[0].save('sana.png')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值