刚开始接触Flux,在ComfyUI上借用了前辈的一个流程,流程中用到了CheckpointLoaderNF4节点,从此开始了折腾之旅。。。。
1. 安装ComfyUI_bnb_nf4_fp4_Loaders
通过ComfyUI-Manager可以搜到这个插件,但是由于star不够,默认不允许安装,可以修改
/custom_nodes/ComfyUI-Manager/config.ini 中的
security_level = normal-
但是,这样仍然是无法安装的,最后提示(IMPORT FAILED)
通过日志可以看到是Bitsandbytes版本不够,需要0.44.0
2. 安装Bitsandbytes
首先想到的自然是:pip install bitsandbytes,但是目前的镜像源上,最高只有0.43.0,那只能自己编译了。
之前以为只要直接pip install -r requirement.txt就行了,导致虽然在ComfyUI上看到新的节点,但是执行流程时仍然报错,看日志是缺少libbitsandbytes_cuda121.so包,所以才发现没那么简单。。。
下载源码
mkdir install
git clone https://github.com/TimDettmers/bitsandbytes.git
cd bitsandbytes/
当然,可以使用0.44.0-release版本
更新CMake
编译Bitsandbytes,需要CMake >= 3.22.1 和Python >= 3.8
想直接yum install cmake=3.22.1,发现清华源上没有,那就手工安装吧
去 https://cmake.org/download/下载次新版3.29.8,找到cmake-3.29.8-linux-x86_64.sh下载,放到服务器上直接运行
编译
回到 bitsandbytes目录下:
cmake -DCOMPUTE_BACKEND=cuda -S . (注意这里有个小点点)
make
pip install -e . (注意这里有个小点点)
安装/更新cuda
在bitsandbytes目录下执行:bash install_cuda.sh 122 ~/local 1
这里的122是CUDA_VERSION,取值是110,111,112,113,114,115,116,117,118,120,121,122,123, 124,125
~/local是安装路径
最后的1是指,是否将安装成功的CUDA路径同步到.bashrc环境变量中,1表示“是”
修改环境变量
export BNB_CUDA_VERSION=122
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/YOUR_USERNAME/local/cuda-12.2
检查
编译完成之后,在bitsandbytes/bitsandbytes目录下会生成libbitsandbytes_cuda122.so文件
此时执行python -m bitsandbytes,发现仍然报错,提示需要libbitsandbytes_cuda121.so文件,应该是跟环境变量设置有关系,懒得管了,直接复制libbitsandbytes_cuda122.so文件,重命名成libbitsandbytes_cuda121.so文件
重启
重新登录系统,conda activate my_env切换到工作环境,重启ComfyUI,发现CheckpointLoaderNF4已经可以选择,并且流程正常运行。