AMD RX580 AI部署记录:ComfyUI+Flux

FLUX生成的图片

FLUX.1 是由 Black Forest Labs 开发的文本到图像生成模型,而它提供的 FLUX.1 [schnell]可以在比较低端的拥有 8GB 显存的 GPU 上运行。我调查了一下互联网上各路大神的部署方案,发现有一个 ComfyUI-Zluda 项目,支持使用 AMD RX580 显卡做部署推理。本文是此项目部署的实践,并最终成功运行并推理生成图片,特此将部署过程分享给大家。


ComfyUI-Zluda的安装部署

按照ComfyUI-Zluda提供的安装指南安装后ComfyUI可以成功运行,但是无法成功使用 FLUX.1[schnell] 推理出图片,生成都都是纯灰色的图。经过我的探索最终修复了这个问题,下面我把我这边完整的安装步骤提供给大家,我电脑的硬件配置请查看我之前的博客文章X99 平台组装记录,使用的系统是 Windows11LTSC。

  • github拉取该项目到本地;

  • 项目推荐使用 python3.10,我使用 miniconda 单独创建名为 comfyui 的 python3.10 的环境;

  • 安装 vc_redist.x64.exe

  • 安装 HIP SDK 5.7.1

    • HIP SDK 5.7.1 官方应该已经是不支持 AMD RX580 这款旧型号显卡,需要安装额外的依赖才能完整支持,我通过安装ROCmLibs-for-gfx1103-AMD780M-APU这个项目v0.5.7版本相关库文件rocblas.for.gfx803.override.with.vega10.7z,替换HIP SDK 5.7.1的部分文件,实现功能支持;

    • 解压 rocblas.for.gfx803.override.with.vega10.7z 压缩文件后,我们能看到以下文件:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      .
      ├── library
      │   ├── Kernels.so-000-gfx803.hsaco
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_4xi8I_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BB_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_BS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_CC_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_AlikC_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_CC_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_DD_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_DD_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HH_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_HS_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_I8I_HPA_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_SS_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_SS_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Ailk_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_AlikC_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_BjlkC_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_BjlkC_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bjlk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bjlk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback.dat
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bljk_Cijk_Dijk_fallback_gfx803.hsaco
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.co
      │   ├── TensileLibrary_Type_ZZ_Contraction_l_Alik_Bljk_Cijk_Dijk_gfx900.dat
      │   ├── TensileLibrary_lazy_gfx803.dat
      │   ├── TensileLibrary_lazy_gfx900.dat
      │   └── TensileManifest.txt
      └── rocblas.dll

      1 directory, 169 files
      • rocblas.dll 文件,复制替换 ROCm 安装目录下的 ./5.7/bin/rocblas.dll 文件;
      • library 文件夹,复制替换 ROCm 安装目录下 ./5.7/bin/rocblas/library 文件夹;
  • 配置环境变量,修改用户变量PATH添加ROCm的路径:C:\Program Files\AMD\ROCm\5.7\bin

  • 配置环境变量,添加系统变量HIP_PATH添加ROCm的路径:C:\Program Files\AMD\ROCm\5.7\

  • 打开PowerShell终端,进入 ComfyUI-Zluda 项目目录,执行.\install.bat 安装依赖;

  • 接着请执行 .\fixforrx580.bat 执行针对 AMD RX580 显卡的依赖安装;

  • 完成以上步骤,在此目录执行 .\comfyui.bat --use-split-cross-attention 启动程序,可以看到以下日志信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    *** Checking and updating to new version if possible
    remote: Enumerating objects: 13, done.
    remote: Counting objects: 100% (13/13), done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 13 (delta 7), reused 7 (delta 5), pack-reused 0 (from 0)
    Unpacking objects: 100% (13/13), 5.71 KiB | 77.00 KiB/s, done.
    From https://github.com/patientx/ComfyUI-Zluda
    0c4bebf5..7763bf82 master -> origin/master
    Updating 0c4bebf5..7763bf82
    Fast-forward
    comfy/samplers.py | 3 +++
    comfy_extras/nodes_wan.py | 6 +++---
    2 files changed, 6 insertions(+), 3 deletions(-)

    [START] Security scan
    [DONE] Security scan
    ## ComfyUI-Manager: installing dependencies done.
    ** ComfyUI startup time: 2025-03-02 22:22:46.798
    ** Platform: Windows
    ** Python version: 3.10.16 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:19:12) [MSC v.1929 64 bit (AMD64)]
    ** Python executable: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\venv\Scripts\python.exe
    ** ComfyUI Path: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda
    ** ComfyUI Base Folder Path: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda
    ** User directory: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\user
    ** ComfyUI-Manager config path: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\user\default\ComfyUI-Manager\config.ini
    ** Log path: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\user\comfyui.log

    Prestartup times for custom nodes:
    14.4 seconds: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\custom_nodes\ComfyUI-Manager

    Warning, you are using an old pytorch version and some ckpt/pt files might be loaded unsafely. Upgrading to 2.4 or above is recommended.

    ***----------------------ZLUDA-----------------------------***
    :: ZLUDA detected, disabling non-supported functions.
    :: CuDNN, flash_sdp, mem_efficient_sdp disabled).
    ***--------------------------------------------------------***
    :: Device : Radeon RX 580 Series [ZLUDA]

    Total VRAM 8192 MB, total RAM 98210 MB
    pytorch version: 2.2.1+cu118
    Set vram state to: NORMAL_VRAM
    Device: cuda:0 Radeon RX 580 Series [ZLUDA] : native
    Using sub quadratic optimization for attention, if you have memory or speed issues try using: --use-split-cross-attention
    ComfyUI version: 0.3.18
    [Prompt Server] web root: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\web
    ### Loading: ComfyUI-Manager (V3.25.1)
    [ComfyUI-Manager] network_mode: public
    ### ComfyUI Revision: 3687 [7763bf82] | Released on '2025-03-02'

    Import times for custom nodes:
    0.0 seconds: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\custom_nodes\websocket_image_save.py
    0.0 seconds: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\custom_nodes\ComfyUI-deepcache
    2.8 seconds: C:\Users\lewlh\workspaceWin\ComfyUI-Zluda\custom_nodes\ComfyUI-Manager

    Starting server

    To see the GUI go to: http://127.0.0.1:8188
    [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json
    [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json
    [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/github-stats.json
    [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json
    [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
    FETCH ComfyRegistry Data: 5/36
    FETCH ComfyRegistry Data: 10/36
    FETCH ComfyRegistry Data: 15/36
    FETCH ComfyRegistry Data: 20/36
    FETCH ComfyRegistry Data: 25/36
    FETCH ComfyRegistry Data: 30/36
    FETCH ComfyRegistry Data: 35/36
    FETCH ComfyRegistry Data [DONE]
    [ComfyUI-Manager] default cache updated: https://api.comfy.org/nodes
    nightly_channel: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/remote
    FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json [DONE]
    [ComfyUI-Manager] All startup tasks have been completed.
  • 程序会自动打开浏览器访问 http://127.0.0.1:8188/ 进入 ComfyUI 页面,点击左下角齿轮状设置按钮,最新版本的程序可以在设置页面设置系统语言为中文了。

部署FLUX.1 [schnell]

我是通过学习零度解说的博文,第一次学习如何部署使用 ComfyUI 的,相关链接请查看References。本章节我提炼具体的步骤,以帮助你快速完成第一个可运行的 Pipeline:

下载依赖

下载以下模型文件,并按照要求放在指定的目录下:

flux_schnell_example.png

在ComfyUI中配置使用Flux

将下载的flux_schnell_example.png图片拖动到 http://127.0.0.1:8188/ ComfyUI 页面,程序会自动识别此图片中的 workflow,此时检查一下相关的模型是否是之前下载的模型:

  • UNet加载器需要设置 UNet 为 flux1-schnell.safetensors,数据类型修改为 fp8_e4m3fn;
  • 双CLIP加载器CLIP名称1设置为 t5xxl_fp8_e4m3fn.safetensors,CLIP名称2设置为 clip_l.safetensors;
  • 加载VAE设置VAE为 ae.safetensors;
  • 设置提示词,并降低默认分辨率,此处我设置为 456*800,整体配置如下图所示:

ComfyUI's setting

  • 最终运行 182 秒后生成了此图像:

a very beautiful girl in the bus window, photorealism, perspective,9:16.

需要注意的是,这套配置我在使用的过程中会出现程序异常退出的情况,整体而言还是不大稳定,玩一玩可以,当作生产力工具就不大行了!

References