Используйте официальные инструменты загрузки HuggingFace, humgingface-cli и hf_transfer, для быстрой загрузки моделей и наборов данных с зеркального сайта HuggingFace.
Этот скрипт представляет собой простую инкапсуляцию HuggingFace-Cli. Он предназначен для облегчения моего использования. Если вам нужны более сложные функции, обратитесь к официальной документации и измените ее самостоятельно. Кроме того, отечественные пользователи также могут воспользоваться методом загрузки, представленным на зеркальном сайте HuggingFace.
Обновление от 17.12.2023: добавлены параметры --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
Если вы загружаете модель, требующую авторизации, например серию мета-лама, вам необходимо указать параметр --token
в качестве токена доступа Huggingface.
Что следует отметить:
(1) Если указан --save_dir
, файл будет временно сохранен в пути преобразователей по умолчанию ~/.cache/huggingface/hub
во время процесса загрузки. После завершения загрузки он будет автоматически перемещен в указанный каталог. по --save_dir
, поэтому его необходимо загрузить. Предварительно убедитесь, что в пути по умолчанию достаточно места.
После скачивания необходимо указать путь после сохранения при загрузке с помощью библиотеки трансформеров, например:
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) Встроенный скрипт автоматически устанавливает Huggingface-cli и hf_transfer через pip. Если версия 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
, вы можете отключить hf_transfer с помощью параметра --use_hf_transfer False
.
То же, что и скачивание модели, на примере 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 в формате hf_****
--use_hf_transfer
: использовать hf-transfer для ускорения загрузки. Он включен по умолчанию (True). Если версия ниже включенной, индикатор выполнения не будет отображаться.--use_mirror
: Загрузка с зеркального сайта https://hf-mirror.com/, включена по умолчанию (True), отечественным пользователям рекомендуется включить ее.--include
: загрузить указанный файл, например --include "tokenizer.model tokenizer_config.json"
или --include "*.bin
download--exclude
: не загружать указанный файл, в соответствии с использованием включения, например --exclude "*.md"