Use as ferramentas de download oficiais do HuggingFace, huggingface-cli e hf_transfer, para baixar modelos e conjuntos de dados em alta velocidade do site espelho do HuggingFace.
Este script é apenas um encapsulamento simples de huggingface-cli. Destina-se a facilitar meu próprio uso. Se você precisar de funções mais avançadas, consulte a documentação oficial e modifique-a você mesmo. Além disso, os usuários domésticos também podem consultar o método de download fornecido no site espelho HuggingFace.
Atualização de 17/12/2023: Adicionados parâmetros --include
e --exlucde
para especificar se deseja baixar ou ignorar determinados arquivos.
--include "tokenizer.model tokenizer_config.json"
--include "*.bin"
--exclude "*.md"
--include "*.json" --exclude "config.json"
Obtenha o nome do modelo necessário do HuggingFace, como lmsys/vicuna-7b-v1.5
:
python hf_download.py --model lmsys/vicuna-7b-v1.5 --save_dir ./hf_hub
Se você baixar um modelo que requer autorização, como a série meta-llama, será necessário especificar o parâmetro --token
como seu token de acesso Huggingface.
Coisas a serem observadas:
(1) Se --save_dir
for especificado, o arquivo será armazenado temporariamente no caminho padrão dos transformadores ~/.cache/huggingface/hub
durante o processo de download. Após a conclusão do download, ele será automaticamente movido para o diretório especificado. por --save_dir
, portanto, ele precisa ser baixado. Certifique-se de que haja capacidade suficiente no caminho padrão com antecedência.
Após o download, você precisa especificar o caminho após salvar ao carregar usando a biblioteca de transformadores, por exemplo:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = "./hf_hub/models--lmsys--vicuna-7b-v1.5" )
Se --save_dir
não for especificado, ele será baixado para o caminho padrão ~/.cache/huggingface/hub
. Neste momento, ao chamar o modelo, você pode usar diretamente o nome do modelo lmsys/vicuna-7b-v1.5
.
(2) Se você não quiser usar o caminho absoluto ao chamar e não quiser salvar todos os modelos no caminho padrão, poderá defini-lo por meio de um soft link .
mkdir /data/huggingface_cache
~/.cache/huggingface/hub
, ele precisa ser excluído primeiro: rm -r ~ /.cache/huggingface
ln -s /data/huggingface_cache ~ /.cache/huggingface
save_dir
ao executar o script de download posteriormente, ele será baixado automaticamente para o diretório criado na primeira etapa: 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) O script integrado instala automaticamente huggingface-cli e hf_transfer por meio do pip. Se a versão do hf_transfer for inferior a 0.1.4, a barra de progresso do download não será exibida e poderá ser atualizada manualmente:
pip install -U hf-transfer -i https://pypi.org/simple
Se ocorrer huggingface-cli: error
:, tente reinstalar:
pip install -U huggingface_hub
Se houver um erro sobre hf_transfer
, você pode desligar hf_transfer através do parâmetro --use_hf_transfer False
.
O mesmo que baixar o modelo, tomando zh-plus/tiny-imagenet
como exemplo:
python hf_download.py --dataset zh-plus/tiny-imagenet --save_dir ./hf_hub
--model
: O nome do modelo a ser baixado no huggingface, por exemplo --model lmsys/vicuna-7b-v1.5
--dataset
: O nome do conjunto de dados a ser baixado no huggingface, por exemplo --dataset zh-plus/tiny-imagenet
--save_dir
: o caminho real de armazenamento do arquivo após o download--token
: Ao baixar um modelo que requer login (Gated Model), como meta-llama/Llama-2-7b-hf
, você precisa especificar o token hugginface no formato hf_****
--use_hf_transfer
: Use hf-transfer para acelerar downloads. Está habilitado por padrão (True). Se a versão for inferior à habilitada, a barra de progresso não será exibida.--use_mirror
: Baixe do site espelho https://hf-mirror.com/, habilitado por padrão (True), recomenda-se que usuários domésticos o habilitem--include
: Baixe o arquivo especificado, como --include "tokenizer.model tokenizer_config.json"
ou --include "*.bin
download--exclude
: não baixa o arquivo especificado, consistente com o uso de inclusão, por exemplo --exclude "*.md"