如何更改 Hugging Face 模型預設下載位置:一點都不難
日期:2024-11-01
輕鬆地更改 Hugging Face 模型的預設下載位置。無論是為了節省磁碟空間、方便管理還是版本控制。
為什麼需要更改下載位置?
在某些情況下,默認的下載位置可能不合適。
- 空間不足:如果你的系統磁碟空間有限,需要將模型下載到其他位置。
- 環境管理:在 Docker 容器中,希望將模型儲存在特定的掛載路徑。
- 版本控制:為了更好地管理不同版本的模型,將其存儲在指定位置有助於組織。
如何設定模型下載位置?
使用
cache_dir
參數
在從 Hugging Face 下載模型時,你可以使用cache_dir
參數指定模型的緩存目錄。以下是一個範例代碼:def main(prompt, output_filename): # 設定模型 ID model_id = "runwayml/stable-diffusion-v1-5" # 從預訓練模型載入 Stable Diffusion 管道 pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float32, cache_dir="/cache_wei/")
在這段代碼中,
cache_dir
參數將指定下載的模型存儲位置。root@08d912ebf816:/# ls app bin boot cache_wei dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
你可以看到在容器內的根目錄
cache_wei
出現了!root@08d912ebf816:/cache_wei# ls models--runwayml--stable-diffusion-v1-5 models--shenzhi-wang--Llama3-8B-Chinese-Chat
這些目錄的命名通常由以下幾部分組成:
- models:這是根目錄,表示這裡存放的是模型相關的數據。
- **–**:這是分隔符,用來分隔不同的部分。Hugging Face 使用雙破折號
--
作為分隔符,以處理名稱中的特殊字符和空格。 - 模型擁有者/組織:例如
runwayml
和shenzhi-wang
,這些是模型的擁有者或開發者的名稱,指示該模型的來源。 - 模型名稱:如
stable-diffusion-v1-5
和Llama3-8B-Chinese-Chat
,這是模型的具體名稱,通常會包含版本號或其他識別信息。
models–runwayml–stable-diffusion-v1-5:
runwayml
是模型的擁有者或組織名稱。stable-diffusion-v1-5
是模型的名稱和版本號,表示這是 Stable Diffusion 模型的第 1.5 版本。
models–shenzhi-wang–Llama3-8B-Chinese-Chat:
shenzhi-wang
是這個模型的擁有者。Llama3-8B-Chinese-Chat
是模型的名稱,表示這是一個 8 億參數的 Llama 3 模型,專門用於中文對話。
模型緩存目錄的結構
root@08d912ebf816:/cache_wei/models--runwayml--stable-diffusion-v1-5# ls
blobs refs snapshots
在 Hugging Face 的模型緩存目錄中,你會看到以下子目錄:
blobs:這個目錄包含實際的模型權重檔案和其他大型文件的數據。這些檔案的格式通常是 Hugging Face 特定的,以支持模型的快速加載和使用。這些權重檔案對於模型的正確運行至關重要。
root@08d912ebf816:/cache_wei/models--runwayml--stable-diffusion-v1-5# cd blobs/ root@08d912ebf816:/cache_wei/models--runwayml--stable-diffusion-v1-5/blobs# ls 19da7aaa4b880e59d56843f1fcb4dd9b599c28a1d9d9af7c1143057c8ffae9f1 5dbd88952e7e521aa665e5052e6db7def3641d03 1a02ee8abc93e840ffbcb2d68b66ccbcb74b3ab3 76e821f1b6f0a9709293c3b6b51ed90980b3166b 2c2130b544c0c5a72d5d00da071ba130a9800fb2 82d05b0e688d7ea94675678646c427907419346e 469be27c5c010538f845f518c4f5e8574c78f7c8 9d6a233ff6fd5ccb9f76fd99618d73369c52dd3d8222376384d0e601911089e8 4d3e873ab5086ad989f407abd50fdce66db8d657 a2b5134f4dbc140d9c11f11cba3233099e00af40f262f136c691fb7d38d2194c 5294955ff7801083f720b34b55d0f1f51313c5c5 d008943c017f0092921106440254dbbe00b6a285f7883ec8ba160c3faad88334 55d78924fee13e4220f24320127c5f16284e13b9 daf7e2e2dfc64fb437a2b44525667111b00cb9fc
refs:這個目錄包含對應的模型引用,如不同版本的標籤或指向特定提交的引用。這有助於在需要時追蹤或切換到特定的模型版本,從而方便管理和使用不同版本的模型。
root@08d912ebf816:/cache_wei/models--runwayml--stable-diffusion-v1-5/refs# ls main
snapshots:這個目錄包含模型的快照,通常是在特定時間點上保存的模型版本。這對於版本控制和恢復特定狀態的模型非常有用,特別是在進行實驗或調整模型參數時。
root@08d912ebf816:/cache_wei/models--runwayml--stable-diffusion-v1-5/snapshots# ls f03de327dd89b501a01da37fc5240cf4fdba85a1
Docker掛載本地目錄進入cache_dir之中
docker run -v D:/local/:/cache_wei <image_name>
你在下docker run指令的時候,就要掛載cache_wei到本地目錄D:/local中
這樣你在容器內的 Hugging Face 模型緩存目錄才會一起出現在本地端唷!
不用Docker直接在本地跑模型會存在哪?
def main(prompt, output_filename):
# 設定模型 ID
model_id = "runwayml/stable-diffusion-v1-5"
# 從預訓練模型載入 Stable Diffusion 管道
pipe = StableDiffusionPipeline.from_pretrained(model_id,
torch_dtype=torch.float32)
直接在本地跑,並且不設定 cache_dir
的話,模型會存放在 ~/.cache/huggingface/hub
裡面!
ubuntu@ubuntu:~/.cache/huggingface/hub$ ls
models--stabilityai--stable-diffusion-2-inpainting version_diffusers_cache.txt
models--THUDM--chatglm2-6b version.txt
models--THUDM--chatglm-6b
ubuntu@ubuntu:~/.cache/huggingface/hub$ cd models--stabilityai--stable-diffusion-2-inpainting/
ubuntu@ubuntu:~/.cache/huggingface/hub/models--stabilityai--stable-diffusion-2-inpainting$ ls
blobs refs snapshots
ubuntu@ubuntu:~/.cache/huggingface/hub/models--stabilityai--stable-diffusion-2-inpainting$ cd blobs/
ubuntu@ubuntu:~/.cache/huggingface/hub/models--stabilityai--stable-diffusion-2-inpainting/blobs$ ls
1d7b0e6916576464d3bbb0a6ab3792e4cf8c3cbf
297118f6c192917e8712ae6f76054e2090b03a12
4260d8ba1dc67225503a3a6a6a582c9e6dff8595
469be27c5c010538f845f518c4f5e8574c78f7c8
5294955ff7801083f720b34b55d0f1f51313c5c5
74a85ab991aa7f0aa14a95799b475e70f6640da9
76e821f1b6f0a9709293c3b6b51ed90980b3166b
9bcbb17f54b039f58bf78677fab8cd8a35dd686f6c9dd553e3646a8b0aaff41a
a1d993488569e928462932c8c38a0760b874d166399b14414135bd9c42df5815
ae0c5be6f35217e51c4c000fd325d8de0294e99c
cce6febb0b6d876ee5eb24af35e27e764eb4f9b1d0b7c026c8c3333d4cfc916c
d30e3eb38cf0609c58ad5b0c0da476d1463d9f8b
d56b14868b81a50d952b0ebf1455568a5f0fa717
結論
在使用 Hugging Face 的 transformers
庫時,自定義模型下載位置就像為你的模型選擇一個舒適的家🏡。透過 cache_dir
參數,你能靈活管理你的模型儲存位置,讓每個模型都有自己獨特的空間✨。這樣不僅能讓你的磁碟空間保持井然有序,還能確保下次使用時不會重複下載,節省時間和流量⏳。
希望這篇文章能幫助你在 Hugging Face 的旅程中輕鬆駕馭,讓探索模型的過程充滿樂趣!如果還有其他問題,隨時來找我,讓我們一起把 AI 玩得更精彩!🚀
喜歡 好崴寶 Weibert Weiberson 的文章嗎?在這裡留下你的評論!本留言區支援 Markdown 語法。