告別Hugging Face模型下載難題:掌握高效下載策略,暢享無縫開發體驗
Huggingface國內開源映象:https://hf-mirror.com/
裡面總結了很多下載的方法,下面進行一一講解
方法一:網頁下載
在模型主頁的Files and Version
中中可以獲取檔案的下載連結。無需登入直接點選下載,還可以複製下載連結,用其他下載工具下載。
方法二:huggingface-cli(🔺)
- 詳解地址:https://hf-mirror.com/docs/huggingface_hub/guides/download#download-from-the-cli
huggingface-cli
是 Hugging Face 官方提供的命令列工具,自帶完善的下載功能。
- ** 安裝依賴**
建立專案的虛擬環境後,啟用該環境並執行:
pip install -U huggingface_hub
可以執行huggingface-cli download --h
命令來檢視download功能的引數,如下圖
- 設定環境變數
- Linux
export HF_ENDPOINT=https://hf-mirror.com
- Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror.com"
- python
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
建議將上面這一行寫入 ~/.bashrc
。
vim ~/.bashrc
export HF_ENDPOINT=https://hf-mirror.com
source ~/.bashrc
- 下載模型
以下載Qwen/Qwen2-7B-Instruct模型為例,模型地址:https://huggingface.co/Qwen/Qwen2-7B-Instruct,執行以下命令
可以新增 --local-dir-use-symlinks False
引數禁用檔案軟連結,這樣下載路徑下所見即所得
#以下命令都可
huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen2-7B-Instruct --local-dir /www/algorithm/agent/Qwen2-7B-Instruct
huggingface-cli download --resume-download Qwen/Qwen2-7B-Instruct --local-dir /www/algorithm/agent/Qwen2-7B-Instruct --local-dir-use-symlinks False --token hf_*****
#huggingface-cli download --resume-download gpt2 --local-dir gpt2
huggingface-cli download --resume-download --local-dir-use-symlinks False THUDM/glm-4-9b-chat --local-dir /www/algorithm/agent/glm-4-9b-chat
下載的挺快的7B大模型大概7-8min就下載完成
- 下載資料集
huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir wikitext
方法三:專用多執行緒下載器 hfd
常規工具如瀏覽器預設採用單執行緒下載,由於國內網路運營商線路質量、QoS等因素有時候會很慢,多執行緒加速是一種有效、顯著提高下載速度的方法。
經典多執行緒工具推薦兩個:IDM、Aria2。 IDM 適用於 Windows、aria2 適用於 Linux。因此獲取URL後,可以利用這些多執行緒工具來下載。以我的一次實測為例,單執行緒700KB/s,IDM 8執行緒 6MB/s。千兆寬頻下,利用IDM能跑到80MB/s+。
hfd 是基於 Git 和 aria2 實現的專用於huggingface 下載的命令列指令碼: hfd.sh(Gitst連結)。hfd 相比 huggingface-cli ,魯棒性更好,很少會有奇奇怪怪的報錯,此外多執行緒控制力度也更細,可以設定執行緒數量。
- 具體步驟:
-
Step1:Git clone 專案倉庫中lfs檔案之外的所有檔案,並自動獲取 lfs 檔案的 url;
-
Step2:利用 aria2 多執行緒下載檔案。
-
hfd 是本站開發的 huggingface 專用下載工具,基於成熟工具 git+aria2
,可以做到穩定下載不斷線。
- 下載 hfd
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh
find . -name hfd.sh #檢視檔案位置
依賴安裝:
sudo apt-get install aria2
- 下載Git LFS
下載Git LFS的最新版本。可以在Git LFS的官方網站上找到最新版本的下載連結。在Ubuntu系統上,可以使用以下命令下載Git LFS:
apt-get install git-lfs
- 設定環境變數
- Linux
export HF_ENDPOINT=https://hf-mirror.com
- Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror.com"
- 下載模型
模型網址:THUDM/glm-4-9b-chat,https://hf-mirror.com/THUDM/glm-4-9b-chat/tree/main
./hfd.sh gpt2 --tool aria2c -x 4
- ** 下載資料集**
./hfd.sh wikitext --dataset --tool aria2c -x 4
如果沒有安裝 aria2,則可以預設用 wget:
- 完整命令格式:
$ ./hfd.sh -h
Usage:
hfd <model_id> [--include include_pattern] [--exclude exclude_pattern] [--hf_username username] [--hf_token token] [--tool wget|aria2c] [-x threads] [--dataset]
Description:
使用提供的模型ID從Hugging Face下載模型或資料集。
Parameters:
model_id Hugging Face模型ID,格式為'repo/model_name'。
--include (可選)標誌,用於指定要包括在下載中的檔案的字串模式。
--exclude (可選)標誌,用於指定要從下載中排除的檔案的字串模式。
exclude_pattern 匹配檔名以排除的模式。
--hf_username (可選)Hugging Face使用者名稱,用於身份驗證。
--hf_token (可選)Hugging Face令牌,用於身份驗證。
--tool (可選)使用的下載工具。可以是wget(預設)或aria2c。
-x (可選)aria2c的下載執行緒數。
--dataset (可選)標誌,表示下載資料集。
示例:
hfd bigscience/bloom-560m --exclude safetensors
hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken --tool aria2c -x 8
hfd lavita/medical-qa-shared-task-v1-toy --dataset
方法四:使用環境變數(非侵入式)
非侵入式,能解決大部分情況。huggingface 工具鏈會獲取HF_ENDPOINT
環境變數來確定下載檔案所用的網址,所以可以使用透過設定變數來解決。
HF_ENDPOINT=https://hf-mirror.com python your_script.py
不過有些資料集有內建的下載指令碼,那就需要手動改一下指令碼內的地址來實現了。
常見問題:
Q1: 有些專案需要登入,如何下載?
A:部分 Gated Repo 需登入申請許可。為保障賬號安全,本站不支援登入,需先前往 Hugging Face 官網登入、申請許可,在官網這裡獲取 Access Token 後回映象站用命令列下載。
部分工具下載 Gated Repo 的方法:
huggingface-cli: 新增--token
引數
huggingface-cli download --token hf_*** --resume-download meta-llama/Llama-2-7b-hf --local-dir Llama-2-7b-hf
hfd: 新增--hf_username``--hf_token
引數
hfd meta-llama/Llama-2-7b --hf_username YOUR_HF_USERNAME --hf_token hf_***
其餘如from_pretrained
、wget
、curl
如何設定認證 token。
Q2:不推薦 Git clone原因
此外官方還提供了 git clone repo_url 的方式下載,這種方法相當簡單,然而卻是最不推薦直接用的方法,缺點有二:
- 不支援斷點續傳,斷了重頭再來;
- clone 會下載歷史版本佔用磁碟空間,即使沒有歷史版本,.git資料夾大小也會儲存一份當前版本模型的複製以及元資訊,導致整個模型資料夾磁碟佔用兩倍以上,對於有些存在歷史版本的模型,下載時間兩倍以上,對於網路不夠穩,磁碟不夠大的使用者,嚴重不推薦!
Q3:其他方法推薦(🔺)
可以去其他平臺下載:
- ollama
網址:https://ollama.com/library
- 魔塔社群
網址:https://www.modelscope.cn/models
-
參考連結
-
https://hf-mirror.com/
-
https://blog.csdn.net/weixin_43196262/article/details/135268100
-
https://www.jianshu.com/p/86c4a45f0a18
-
https://zhuanlan.zhihu.com/p/663712983
-