告別Hugging Face模型下載難題:掌握高效下載策略,暢享無縫開發體驗

汀、人工智能發表於2024-08-08

告別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 官方提供的命令列工具,自帶完善的下載功能。

  1. ** 安裝依賴**

建立專案的虛擬環境後,啟用該環境並執行:

pip install -U huggingface_hub

可以執行huggingface-cli download --h命令來檢視download功能的引數,如下圖

  1. 設定環境變數
  • 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
  1. 下載模型

以下載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就下載完成

  1. 下載資料集
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,可以做到穩定下載不斷線。

  1. 下載 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
  1. 設定環境變數
  • Linux
export HF_ENDPOINT=https://hf-mirror.com

  • Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror.com"

  1. 下載模型

模型網址:THUDM/glm-4-9b-chat,https://hf-mirror.com/THUDM/glm-4-9b-chat/tree/main

./hfd.sh gpt2 --tool aria2c -x 4

  1. ** 下載資料集**
./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_pretrainedwgetcurl如何設定認證 token。

Q2:不推薦 Git clone原因

此外官方還提供了 git clone repo_url 的方式下載,這種方法相當簡單,然而卻是最不推薦直接用的方法,缺點有二:

  1. 不支援斷點續傳,斷了重頭再來;
  2. 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

相關文章