ComfyUI 共用模型:讓多個 ComfyUI 專案讀同一份模型,避免重複下載佔用空間

摘要

ComfyUI 預設把模型下載到每個專案自己的資料夾,同一台電腦有好幾個 ComfyUI 專案,同一個模型就要下載好幾次、佔好幾份硬碟空間。ComfyUI 其實可以設定一個固定位置來放模型,把模型集中在共用資料夾後,每個專案都會自動到這裡找,新模型也只要下載一次。

文章目錄

ComfyUI 載入模型時,會依設定的模型來自動到目標資料夾找檔案,擴散模型、文字編碼器、VAE 預設都在每個 ComfyUI 專案自己的安裝目錄裡各有一個資料夾。我電腦上有兩個 ComfyUI 專案都用 MOSS-Image,它的模型總共約 12 GB,兩專案各下載一份就佔掉約 24 GB。ComfyUI 其實可以設定一個固定位置來放模型,所以我把模型搬到一個共用資料夾,再提供參數給每個專案來讓它知道這個位置,它們啟動後都會自動到共用資料夾找模型。最後兩個專案的模型選單都能列出同一批模型,新模型也只下載到共用資料夾。

本文的測試環境是 Windows 11 與 ComfyUI 0.43.2,接上共用資料夾的兩個專案分別是 comfy-cli 安裝的 ComfyUI,以及一個內嵌 ComfyUI 的生圖專案。後者原本自己存了約 22 GB 的 Qwen-Image 模型,搬進共用資料夾後,兩個專案都能選 MOSS-Image 和 Qwen-Image。

建立共用資料夾

改成共用之後,模型在硬碟上只剩一份,每個專案都到同一個資料夾找:

左邊兩個 ComfyUI 專案的模型資料夾各存一份約 12 GB 的 MOSS-Image,共約 24 GB,右邊兩個專案都到共用資料夾使用同一份 MOSS-Image

共用資料夾裡的子資料夾要和 ComfyUI models 底下的名稱一樣,模型才會出現在對應節點的選單,例如放在 diffusion_models 的檔案會列在「載入擴散模型」節點。我把共用資料夾建在 E:\models,目前只用到擴散模型、文字編碼器和 VAE 三種,其他類型等用到時再建,少了資料夾也不影響 ComfyUI 啟動:

1E:\models\
2├─ extra_model_paths.yaml
3├─ diffusion_models\
4├─ text_encoders\
5└─ vae\

接著把模型從原本專案的 models 搬進共用資料夾裡同名的子資料夾。原檔和共用資料夾在同一個磁碟機時,搬移只是改檔案的位置,MOSS-Image 約 12 GB 的模型不到一秒就搬完,跨磁碟機才要完整複製一次。

撰寫設定檔

模型搬好後,要寫一份 extra_model_paths.yaml 告訴 ComfyUI 共用資料夾的位置。我把它放在共用資料夾裡,最上層的 shared 是自己取的名稱,底下每一行是一種模型類型和它的子資料夾:

1shared:
2  base_path: .
3  is_default: true
4  checkpoints: checkpoints/
5  diffusion_models: diffusion_models/
6  text_encoders: text_encoders/
7  vae: vae/
8  loras: loras/
9  controlnet: controlnet/
10  clip_vision: clip_vision/
11  upscale_models: upscale_models/
12  embeddings: embeddings/
13  style_models: style_models/
14  model_patches: model_patches/
15  audio_encoders: audio_encoders/
16  latent_upscale_models: latent_upscale_models/
17  vae_approx: vae_approx/
18  hypernetworks: hypernetworks/
19  photomaker: photomaker/
20  gligen: gligen/
21  configs: configs/

base_path: . 表示子資料夾都從設定檔所在的位置算起,之後整個共用資料夾搬到別的磁碟機,設定檔也不用改。is_default: true 讓 ComfyUI 先找共用資料夾,再找專案自己的 models。要共用新的模型類型時,在這裡加一行就好,custom node 不在這份設定裡,仍然裝在各專案自己的 ComfyUI。

讓專案指向共用設定檔

設定檔寫好後,還要讓每個專案的 ComfyUI 啟動時讀到它。能改啟動指令的專案,加上 --extra-model-paths-config 參數指向這份設定檔。不想動啟動指令的專案,就在 main.py 同一層放一份 extra_model_paths.yaml,ComfyUI 啟動時會自動讀取。兩種做法擇一即可,改了設定都要重新啟動 ComfyUI 才會生效。

內嵌 ComfyUI 的生圖專案是由自己的啟動腳本執行 main.py,原本就用 --base-directory 把模型、輸出等資料夾指到專案裡。我在同一行加上設定檔的路徑,選單就同時列出專案自己的模型和共用資料夾的模型:

1python main.py --base-directory <專案資料夾> --extra-model-paths-config E:\models\extra_model_paths.yaml

comfy-cli 安裝的 ComfyUI 平常用 comfy launch 啟動,我沒有動啟動指令,改在工作區的 ComfyUI 資料夾、main.py 旁邊放一份設定檔。這份檔案不在共用資料夾裡,所以內容照抄共用資料夾那份,只把 base_path: . 改成完整路徑 base_path: E:/models,缺點是之後新增模型類型時兩份都要改。

Comfy Desktop 會自己產生設定檔,檔案開頭註明不要手動修改,要改用它的設定畫面。依官方說明,在 Settings 的 Storage 按「Add Shared Directory」加入共用資料夾,再按「Use for Model Downloads」,之後 Desktop 下載的模型就會存到這裡。

確認專案讀取共用資料夾

重新啟動後,ComfyUI 的 Log 會列出每個額外的搜尋路徑,出現共用資料夾的路徑就代表設定檔讀到了:

1[INFO] Adding extra search path diffusion_models E:\models\diffusion_models
2[INFO] Adding extra search path text_encoders E:\models\text_encoders
3[INFO] Adding extra search path vae E:\models\vae

接著打開節點的模型選單,挑一個只放在共用資料夾的模型來確認,因為同名檔案在選單只列一次,看不出用的是哪一份。我在 comfy-cli 安裝的 ComfyUI 放一個「載入擴散模型」節點,選單裡出現了原本只在生圖專案裡的 Qwen-Image:

「載入擴散模型」節點的模型選單列出 MOSS-Image 與 Qwen-Image 兩個擴散模型

兩個專案都讀得到之後,我才刪掉另一份重複的 MOSS-Image,硬碟上只留共用資料夾這一份。

新模型的下載位置

共用之後,新模型也要存進共用資料夾,不然又會多出一份。從網頁手動下載時,直接存到對應的子資料夾。用 comfy-cli 的 comfy model download 下載時,它預設存到工作區的 models,要用 --relative-path 寫上共用資料夾的完整路徑:

1comfy model download --url <模型網址> --relative-path E:\models\loras

總結

兩個 ComfyUI 專案改讀共用資料夾後,MOSS-Image 與 Qwen-Image 在硬碟上各只存一份,之後用 comfy-cli 下載的新模型也直接存進共用資料夾。

接著可以做什麼

下一篇ComfyUI 官方 MCP 安裝與使用:讓 Claude Code 執行 workflow 產圖AI
Ted Liou

Ted Liou

Unity 現役工程師,Unity、AI 技術開發經驗分享與諮詢。