• [AI实战营] AI绘画专栏之 提升40% 4步搞定StableCascadeComfyui工作流 不再报错
     上一期我们提到了Stability更新的Cascade模型,这个模型在图像质量上对比SDXL提升了40%的性能,现已官方版本支持了Comfyui的工作流,让我们4步搞定它吧   StableCascade 链接:https://pan.quark.cn/s/445dafab6de  模型概述      稳定级联由三个模型组成:阶段 A、阶段 B 和阶段 C,代表生成图像的级联, 因此得名“Stable Cascade”。A级和B级用于压缩图像,类似于VAE在稳定扩散中的工作。但是,通过这种设置,可以实现更高的图像压缩。虽然 Stable Diffusion 模型使用 空间压缩因子为8,编码分辨率为1024 x 1024至128 x 128的图像,Stable Cascade 实现 压缩系数为 42。这将 1024 x 1024 图像编码为 24 x 24,同时能够准确地解码 图像。这带来了更便宜的训练和推理的巨大好处。此外,C 阶段负责 用于生成给定文本提示的小型 24 x 24 潜伏物。下图直观地显示了这一点        图片      对于此版本,我们为 C 阶段提供了两个检查点,为 B 阶段提供了两个检查点,为 A 阶段提供了一个检查点 一个 10 亿和 36 亿参数版本,但我们强烈建议使用 36 亿版本,因为大多数工作都是 投入到微调中。B阶段的两个版本分别为7亿个和15亿个参数。两者都实现了 然而,15亿人擅长重建小而精细的细节。因此,您将实现 如果使用每个变体的较大变体,则效果最佳。最后,阶段 A 包含 2000 万个参数,并且是固定的,因为 它的体积小。  这个在工作流中很好的体现了这一点C -B -A的级联方式  视频教学  ,时长03:21  第一步更新Comfyui到最新版本  秋叶版本操作如下  本地版本点击本地的update  第二步,下载对应的模型  存放位置如下  模型存放地址ComfyUI\models\unetCLIP存放地址ComfyUI\models\clipstage_a放在ComfyUI\models\vae  复制  第三步下载工作流  第四步填入提示词就可以啦~  transparent cube suspended, volcanic landscape within, molten lava rivers flowing, night sky canvas, twinkling stars speckled above, moon's glow soft, juxtaposition of icy chill against fiery eruptions, glacial formations bordering the inferno, slow dance of ash and vapor, lunar reflection on icy surfaces, cube edges catching the celestial light, dynamic contrast of elements,  primeval earth forces encased,  (best quality, 4k, 8k, highres, masterpiece:1.2), ultra-detailed,   (photorealistic:1.37), frozen and fiery, harmonious duality, (nature photography), volcanic activity vibrant, (environmental art),   (digital painting), atmospheric effects, mystical emanation, elemental balance, serene, sublime geology,  复制  显存占用情况    Sora论文以及官方视频集锦  https://yv4kfv1n3j.feishu.cn/docx/KOXHdpf6CoyYmaxwr4DcOVnMnze  复制  
  • [AI实战营] AI绘画专栏之SD扩图这么简单?谁说扩图只能用comfyui或者MJ?
    在开发Java应用程序时,异常处理显得尤为重要。只有正确处理所有可能出现的异常,才能确保应用的健壮性和稳定性。传统上,我们会在每个可能抛出异常的方法中使用try-catch捕获异常,这当然可以解决问题,但代码冗长且难以维护。相比之下,使用AOP(Aspect Oriented Programming)来实现全局异常捕获会更加优雅高效。​Java异常基础在Java中,所有异常都继承于Throwable类。主要分为两大类:Checked Exception和Unchecked Exception。Checked Exception:编译时即可检查到的异常,如IOException。必须用try-catch捕获或在方法声明上抛出。Unchecked Exception:运行时异常,如NullPointerException。不需要捕获也可编译通过。除此之外,Error并不是一个Exception,表示严重问题无法进行恢复。传统方式-方法内catch我们可以在每个可能抛出异常的方法内用try-catch来捕获:public void method() { try { // code } catch (Exception e) { // handle exception } }这种方式容易产生大量重复代码,维护复杂。如果忘记添加catch也会导致部分异常无法处理。AOP实现全局捕获AOP思想是将公共功能从主线业务中分离出来形成一个独立模块。我们可以用AOP框架如Spring AOP或AspectJ实现全局异常捕获:@Aspect public class GlobalExceptionHandler { @AfterThrowing(value = "execution(* com.example.service.*.*(..))", throwing="ex") public void handleException(Exception ex) { // 统一处理所有服务层抛出的异常 } }实战技巧除捕获异常,我们还可以返回一个友好的错误码:@AfterThrowing(value = "execution(* com.example.controller.*.*(..))", throwing="ex") public ResponseEntity handleControllerException(Exception ex) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(Result.fail("10000", ex.getMessage())); }同时,记录到日志中有助于问题排查:@AfterThrowing(value = "execution(* com.example..*(..))", throwing="ex") public void logException(Exception ex) { logger.error("异常:{}", ex); }这样不论方法内部抛出什么异常,我们都可以实现统一处理。大大提高了应用的可靠性。是不是很炫酷!请给个小红心支持一下。下次再聊更多AOP技巧。
  • [分享交流] AI绘画专栏之 SDXL 4G显存就能跑SDXL ?SD1.7或将对F8优化merge(46)
    关于SDXL的生态目前还未完全稳定,但是不得不提到的就是SDXL的在VAE,CLIP,UNET三大组件的巨大提升,其101亿的参数量是原本SD的N倍,那么对于SDXL的生态介绍我们再次重复一遍。4G的显存都能跑SDXL意味着将来大模型Lora将降低其大小,炼丹炉压力更小~添加描述SDXL为什么强?0.1参数训练量为101亿 其中BASE模型35 亿 加REFINER模型66亿 SD的8倍???0.2对Stable Diffusion原先的U-Net(XL Base U-Net 一共14个模块),VAE,CLIP Text Encoder三大件都做了改进。可以明显减少显存占用和计算量0.3增加一个单独的基于Latent(潜在)的Refiner(炼制)模型,来提升图像的精细化程度。【新增:对Base模型生成的图像Latent特征进行精细化,其本质上是在做图生图的工作。】0.4设计了很多训练Tricks(技巧)(这些Tricks都有很好的通用性和迁移性,能普惠其他的生成式模型),包括图像尺寸条件化策略,图像裁剪参数条件化以及多尺度训练等。0.5先发布Stable Diffusion XL 0.9测试版本,基于用户使用体验和生成图片的情况,针对性增加数据集和使用RLHF技术优化迭代推出Stable Diffusion XL 1.0正式版。0.6采样方法禁用DDIM (保留意见、非绝对),不需要开启CN,随着CN的支持,可以开启CN的XL版本。所有的环境需要都是XL的生态0.7直接出1024分辨率图片 1024 * 1024 起步添加描述 随之而来的就是对大显存的占用,但随着新的PR的提出,或将在4G的测试显存,并在一定的内存占用上解决!!!A big improvement for dtype casting system with fp8 storage type and manual cast一个很大的提升对于FP8的内存和手动转换在 pytorch 2.1.0 之后,pytorch 添加了 2 个新的 dtype 作为存储类型:float8_e5m2、float8_e4m3fn。1基于讨论使用 fp8 作为训练/使用 NN 模型的参数/梯度的论文。我认为值得对 fp8 格式进行一些优化。3此外,一些扩展也已经支持这个功能5速度提升由于将 FP8 与 FP16 一起使用,因此计算需要一些额外的操作来强制转换 dtype。它会降低速度(特别是对于较小的批量)批量大小768x768 标清1.x fp16768x768 标清1.x fp81024x1024 SDXL fp161024x1024 SDXL fp818.27 秒/秒7.85 秒/秒3.84 秒/秒3.67 秒/秒43.19 秒/秒3.08 秒/秒1.51 秒/秒1.45 秒/秒会降低质量吗?几乎不会什么是FP8 FP16?Fp16:意味模型用16位浮点数存,相对于Fp32更小更快,但是无法用于CPU,因为有的半浮点精度运算在CPU上不支持。通常为了更快的运算,在GPU上我们也会将Fp32转换成Fp16,这个可以在设置里配置。那么随之而来的一个params是8个byte(字节),FP32就是4个byte,FP8就是一个Byte,FP或者BF16相对已经是比较好的出图质量了。以下测试结果来自原PR作者琥珀青叶,如果你想要尝试,在源码中切换此PR即可首先SD1的时候FP16存下来是2G,SDXL因为参数变多了FP16也要5G,这样很多显卡就hold不住了。所以青叶做了个事情,就是load的时候用FP8放在显存里,这样SDXL存在显存是2.5G。但是在每一层运算的时候把对应的FP8转到FP16,所以整个计算流程看起来是是一致的。同时整个流程的显存占用也下来的。正常启动测试开启FP8并开启内存缓存优化XYZ测试关闭前后对比起初的静态内存占用为5.3运行后稳定在6.4左右开启前后对图片直连影响很小,有细微细节差距搭配LCM测试当前所有的PR审核已经通过,或将在测试后在1.7进行升级推出正式版本