comfyui的大模型自动下载脚本

why

  • 代理速度慢
  • hf mirror个别时候也慢,请求太多会被限制

特点

  • 借助modelscope同步大模型

脚本

保存为 comfyui_download.sh


llm_download() {
	local url
	local repo
	local include
	local dry_run=${dry_run}

	[ -n "$*" ] && eval "$@" || local -p

	[ -n "$url" ] && {
		read repo1 repo2 file <<<$(echo $url | awk -F/ '{print $4,$5, $NF}')
		repo="$repo1/$repo2"
		include="$file"
	}

	for name in "*/$include" "$include"; do
		$dry_run uvx modelscope download $repo --include "$name" || {
			$dry_run uvx --from huggingface hf download $repo --include "$name"
		}
	done

}

comfyui_workflow_download() {
	local workflow
	local comfyui_home
	local dry_run=${dry_run}
	local help="comfyui_workflow_download workflow=/Users/hogwarts/Documents/ComfyUI/user/default/workflows/video_wan2_2_14B_t2v.json  comfyui_home=~/project/ComfyUI "

	[ -n "$*" ] && eval "$@" || {
		local -p
		return
	}

	cat "$workflow" |
		jq -c '..|.models? //empty | .[]' | sort | uniq |
		while read model; do
			local name=$(echo "$model" | jq -r .name)
			local url=$(echo "$model" | jq -r .url)
			local directory=$(echo "$model" | jq -r .directory)

			local link_file="$comfyui_home/models/$directory/$name"

			[ -f "$link_file" ] && continue

			llm_download url="$url"

			local model_file=$(find ~/.cache/huggingface ~/.cache/modelscope/ -name "$name" | head -1)
			echo model_file=$model_file
			$dry_run ln -s "$model_file" "$link_file"
		done

}

comfyui_workflow_download_all() {
	local comfyui_home

	[ -n "$*" ] && eval "$@" || {
		local -p
		return
	}

	find $comfyui_home/user/*/workflows -type f | while read workflow; do
		comfyui_workflow_download workflow="$workflow" comfyui_home="$comfyui_home"
	done

}

使用方法

source  comfyui_download.sh

comfyui_workflow_download_all comfyui_home=<你的comfyui目录>

comfyui_workflow_download_all comfyui_home=~/project/ComfyUI