利用HuggingFace 官方的下載工具huggingface-cli 和hf_transfer 從HuggingFace 鏡像站上對模型和資料集進行高速下載。
此腳本只是huggingface-cli 的一個簡單封裝,本意是方便本人自己的習慣使用,如果有對更高級功能的需求,請參考官方文件自行修改。另外,國內用戶也可以參考HuggingFace 鏡像站上提供的下載方式。
12/17/2023 update:新增--include
和--exlucde
參數,可以指定下載或忽略某些檔案。
--include "tokenizer.model tokenizer_config.json"
--include "*.bin"
--exclude "*.md"
--include "*.json" --exclude "config.json"
從HuggingFace上取得到所需模型名,例如lmsys/vicuna-7b-v1.5
:
python hf_download.py --model lmsys/vicuna-7b-v1.5 --save_dir ./hf_hub
如果下載需要授權的模型,例如meta-llama 系列,則需要指定--token
參數為你的Huggingface Access Token。
注意事項:
(1)若指定了--save_dir
,下載過程中會將檔案先暫存在transformers 的預設路徑~/.cache/huggingface/hub
中,下載完成後自動移動到--save_dir
指定目錄下,因此需要在下載前保證預設路徑下有足夠容量。
下載完成後使用transformers 庫載入時需要指定儲存後的路徑,例如:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = "./hf_hub/models--lmsys--vicuna-7b-v1.5" )
若不指定--save_dir
則會下載到預設路徑~/.cache/huggingface/hub
中,這時呼叫模型可以直接使用模型名稱lmsys/vicuna-7b-v1.5
。
(2)若不想在呼叫時使用絕對路徑,又不希望將所有模型保存在預設路徑下,可以透過軟連結的方式進行設置,步驟如下:
mkdir /data/huggingface_cache
~/.cache/huggingface/hub
建立了目錄,需要先刪除: rm -r ~ /.cache/huggingface
ln -s /data/huggingface_cache ~ /.cache/huggingface
save_dir
,會自動下載至第一步建立的目錄下: python hf_download.py --model lmsys/vicuna-7b-v1.5
from transformers import pipeline
pipe = pipeline( " text-generation " , model= " lmsys/vicuna-7b-v1.5 " )
(3)腳本內建透過pip 自動安裝huggingface-cli 和hf_transfer。如果hf_transfer 版本低於0.1.4 則不會顯示下載進度條,可以手動更新:
pip install -U hf-transfer -i https://pypi.org/simple
如出現huggingface-cli: error
問題,嘗試重新安裝:
pip install -U huggingface_hub
如出現關於hf_transfer
的報錯,可以透過--use_hf_transfer False
參數關閉hf_transfer。
和下載模型同理,以zh-plus/tiny-imagenet
為例:
python hf_download.py --dataset zh-plus/tiny-imagenet --save_dir ./hf_hub
--model
: huggingface上要下載的模型名稱,例如--model lmsys/vicuna-7b-v1.5
--dataset
: huggingface上要下載的資料集名稱,例如--dataset zh-plus/tiny-imagenet
--save_dir
: 檔案下載後實際的儲存路徑--token
: 下載需要登入的模型(Gated Model),例如meta-llama/Llama-2-7b-hf
時,需要指定hugginface的token,格式為hf_****
--use_hf_transfer
: 使用hf-transfer 進行加速下載,預設為開啟(True), 若版本低於開啟將不顯示進度列。--use_mirror
: 從鏡像站https://hf-mirror.com/ 下載, 預設開啟(True), 國內用戶建議開啟--include
: 下載指定的文件,例如--include "tokenizer.model tokenizer_config.json"
或--include "*.bin
下載--exclude
: 不下載指定的文件,與include用法一致,例如--exclude "*.md"