AI共享环境基本设置和优化

2023-06-10
2分钟阅读时长
934字
阅读
tech , linux , macos , ai

不知不觉,又搬了半年的砖,不出意外的又拖延了更新。

搬砖并不可怕,可怕的是为什么搬砖,可悲的是又进一步拉高了我的极限和侮辱我的三观

回正题

AI 潮流当下,玩玩是必须的,了解和运用是自然的

否则, 在听到一些自以为是的小丑的言论时, 就没有那么多笑点可发掘了

拖延了几个月的文章,先更一篇占位, 开篇先记录下最基础也相对实用(经济)的一些技巧:

本着 模型资源最大化共享复用磁盘最小化占用 的立场, 需要稍微对环境做一些简单配置

以下内容, 相对需要一点 linux 基础 和 macos 环境了解, 主要以自身情况为切入点举例

基本环境配置

set SHARED_HOME=~/ai/shared
set SHARED_COMFYUI=$SHARED_HOME/comfyui

set SD_HOME=~/ai/sd
set SD_COMFYUI_HOME=$SD_HOME/ComfyUI
set SD_WEBUI_HOME=$SD_HOME/stable-diffusion-webui

set CACHE_HOME=~/.cache
set INSIGHTFACE_HOME=~/.insightface

ComfyUI 相关

共享模型路径优化

  • 插件 was-node-suite-comfyui 依赖的 clipseg分割模型

注意: 插件安装后, 正常使用一次 CLIPSeg Model Loader(CLIP分割模型加载器) 后, 才会自动下载 CIDAS/clipseg-rd64-refined 的项目代码到本地缓存目录

mkdir -p $SD_COMFYUI_HOME/models/clipseg
ln -s $CACHE_HOME/huggingface/hub/models--CIDAS--clipseg-rd64-refined $SD_COMFYUI_HOME/models/clipseg/models--CIDAS--clipseg-rd64-refined
  • 插件 comfyui_controlnet_aux 依赖的预处理器

注意: 插件安装后, 正常使用一遍 (把所有预处理器都使用一次) 后, 才会有以下的这些自动下载的模型文件

ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose/yolox_l.onnx $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/yzd-v/DWPose/yolox_l.onnx
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose/dw-ll_ucoco_384.onnx $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/yzd-v/DWPose/dw-ll_ucoco_384.onnx
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/hed/ControlNetHED.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/ControlNetHED.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/normal_bae/scannet.pt $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/scannet.pt
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/midas/dpt_hybrid-midas-501f0c75.pt $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/dpt_hybrid-midas-501f0c75.pt
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/oneformer/150_16_swin_l_oneformer_coco_100ep.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/150_16_swin_l_oneformer_coco_100ep.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/lineart/sk_model.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/sk_model.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/lineart/sk_model2.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/sk_model2.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/pidinet/table5_pidinet.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/table5_pidinet.pth
  • 插件 comfyui_segment_anything 依赖的模型文件
ln -s $SHARED_HOME/models/sam $SD_COMFYUI_HOME/models/sams
ln -s $SHARED_HOME/models/grounding-dino $SD_COMFYUI_HOME/models/grounding-dino
  • 插件 ReActor 依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_COMFYUI_HOME/models/insightface
ln -s $SD_WEBUI_HOME/models/Codeformer/codeformer-v0.1.0.pth $SD_COMFYUI_HOME/models/facerestore_models/codeformer.pth
ln -s $SD_WEBUI_HOME/models/GFPGAN/GFPGANv1.4.pth $SD_COMFYUI_HOME/models/facerestore_models/GFPGANv1.4.pth
  • 插件 ComfyUI_toyxyz_test_nodes 依赖的模型文件

注意: 需要先安装 ComfyUI_IPAdapter_plus 插件并正常可用后 (因复用的是这个插件自动下载到自己插件目录内的模型文件)

ln -s $SD_COMFYUI_HOME/custom_nodes/ComfyUI_IPAdapter_plus/models $SD_COMFYUI_HOME/custom_nodes/ComfyUI_toyxyz_test_nodes/CaptureCam/models
  • 插件 ComfyUI-AnimatedDiff-Evolved 检索路径优化 (改为可支持自定义)

此插件 硬编码 了三个关键的检索路径, 不支持自定义修改, 只能手工调整下其源码, 使其支持 ComfyUIextra_model_paths.yaml 的自定义控制

  1. 修改 ComfyUIfolder_paths.py, 在文件头部的合适位置 ( folder_names_and_paths 声明定义之后即可),补充以下几条检索路径定义:
folder_names_and_paths["AnimateDiffEvolved_Models"] = ([os.path.join(models_dir, "animatediff_evolved_models")], supported_pt_extensions)
folder_names_and_paths["AnimateDiffMotion_LoRA"] = ([os.path.join(models_dir, "animatediff_motion_lora")], supported_pt_extensions)
folder_names_and_paths["AnimateDiffEvolved_video_formats"] = ([os.path.join(base_path, "video_formats")], ".json")
  1. 修改 custom_nodes/ComfyUI-AnimatedDiff-Evolved/animated/model_utils.py, 调整检索路径的定义逻辑
# register motion models folder(s)
# folder_paths.folder_names_and_paths[Folders.ANIMATEDIFF_MODELS] = (
#     [
#         str(Path(__file__).parent.parent / "models")
#     ],
#     folder_paths.supported_pt_extensions
# )
folder_paths.add_model_folder_path(Folders.ANIMATEDIFF_MODELS, str(Path(__file__).parent.parent / "models"))

# register motion LoRA folder(s)
# folder_paths.folder_names_and_paths[Folders.MOTION_LORA] = (
#     [
#         str(Path(__file__).parent.parent / "motion_lora")
#     ],
#     folder_paths.supported_pt_extensions
# )
folder_paths.add_model_folder_path(Folders.MOTION_LORA, str(Path(__file__).parent.parent / "motion_lora"))


#Register video_formats folder
# folder_paths.folder_names_and_paths[Folders.VIDEO_FORMATS] = (
#     [
#         str(Path(__file__).parent.parent / "video_formats")
#     ],
#     [".json"]
# )
folder_paths.add_model_folder_path(Folders.VIDEO_FORMATS, str(Path(__file__).parent.parent / "video_formats"))

各种问题

ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor’

编辑 basicsr 模块的文件 ./venv/lib/python3.10/site-packages/basicsr/data/degradations.py 调整 rgb_to_grayscale 的导出包名

我习惯基于 venv 虚拟环境(其他虚拟环境 或 非虚拟环境, 换对应 lib 目录即可)

# from torchvision.transforms.functional_tensor import rgb_to_grayscale
from torchvision.transforms.functional import rgb_to_grayscale

WebUI 相关

共享模型路径优化

  • 插件 openpose-editor 依赖的模型文件
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose $SD_WEBUI_HOME/models/openpose
  • 插件 sd-webui-segment-anything 依赖的模型文件

注意: 由于此插件内置了 grounding-dino 的 2 个模型的对应配置文件, 这里就只把两个模型映射过来即可

ln -s $SHARED_HOME/models/sam $SD_WEBUI_HOME/models/sam
ln -s $SHARED_HOME/models/grounding-dino/groundingdino_swint_ogc.pth $SD_WEBUI_HOME/extensions/sd-webui-segment-anything/models/grounding-dino/groundingdino_swint_ogc.pth
ln -s $SHARED_HOME/models/grounding-dino/groundingdino_swinb_cogcoor.pth $SD_WEBUI_HOME/extensions/sd-webui-segment-anything/models/grounding-dino/groundingdino_swinb_cogcoor.pth
  • 插件 sd-webui-roop 依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_WEBUI_HOME/models/roop
  • 插件 sd-webui-reactor 依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_WEBUI_HOME/models/insightface
Avatar
zfkun 喜欢游戏、热爱技术、追求艺术、崇尚自由、渴望精彩、最爱唠叨