Hub Python Library documentation
Mixins & métodos de serialização
Mixins & métodos de serialização
Mixins
A biblioteca huggingface_hub oferece uma variedade de mixins que podem ser usados como classe pai para seus objetos, a fim de
fornecer funções simples de upload e download. Consulte nosso guia de integração para
aprender como integrar qualquer framework de ML com o Hub.
Genérico
classe huggingface_hub.ModelHubMixin
< source >( *args**kwargs )
Parâmetros
- repo_url (
str, opcional) — URL do repositório da biblioteca. Usado para gerar o cartão do modelo. - paper_url (
str, opcional) — URL do paper da biblioteca. Usado para gerar o model card. - docs_url (
str, opcional) — URL da documentação da biblioteca. Usado para gerar o cartão do modelo. - model_card_template (
str, opcional) — Modelo do cartão do modelo. Usado para gerar o cartão do modelo. O padrão é um modelo genérico. - language (
stroulist[str], opcional) — Idioma suportado pela biblioteca. Usado para gerar o cartão do modelo. - library_name (
str, opcional) — Nome da biblioteca que integra o ModelHubMixin. Usado para gerar o model card. - license (
str, opcional) — Licença da biblioteca que integra o ModelHubMixin. Usada para gerar o cartão do modelo. Ex.: “apache-2.0” - license_name (
str, opcional) — Nome da biblioteca que integra o ModelHubMixin. Usado para gerar o model card. Usado apenas selicenseestiver definido comoother. Ex.: “coqui-public-model-license”. - license_link (
str, opcional) — URL para a licença da biblioteca que integra o ModelHubMixin. Usado para gerar o model card. Usado apenas selicenseestiver definido comootherelicense_nameestiver definido. Ex.: ”https://coqui.ai/cpml”. - pipeline_tag (
str, opcional) — Tag do pipeline. Usada para gerar o model card. Ex.: “text-classification”. - tags (
list[str], opcional) — Tags a serem adicionadas ao model card. Usado para gerar o model card. Ex.: [“computer-vision”] - coders (
dict[Type, tuple[Callable, Callable]], opcional) — Dicionário de tipos personalizados e seus codificadores/decodificadores. Usado para codificar/decodificar argumentos que não são jsonable por padrão. Por exemplo, dataclasses, argparse.Namespace, OmegaConf, etc.
Um mixin genérico para integrar QUALQUER framework de aprendizado de máquina com o Hub.
Para integrar seu framework, sua classe de modelo deve herdar desta classe. A lógica personalizada para salvar/carregar modelos
deve ser sobrescrita em _from_pretrained e _save_pretrained. PyTorchModelHubMixin é um bom exemplo
de integração de mixin com o Hub. Consulte nosso guia de integração para mais instruções.
Ao herdar de ModelHubMixin, você pode definir atributos de nível de classe. Esses atributos não são passados para __init__, mas para a própria definição da classe. Isso é útil para definir metadados sobre a biblioteca que integra ModelHubMixin.
Para mais detalhes sobre como integrar o mixin com sua biblioteca, consulte o guia de integração.
Exemplo:
>>> from huggingface_hub import ModelHubMixin
# Inherit from ModelHubMixin
>>> class MyCustomModel(
... ModelHubMixin,
... library_name="my-library",
... tags=["computer-vision"],
... repo_url="https://github.com/huggingface/my-cool-library",
... paper_url="https://arxiv.org/abs/2304.12244",
... docs_url="https://huggingface.co/docs/my-cool-library",
... # ^ optional metadata to generate model card
... ):
... def __init__(self, size: int = 512, device: str = "cpu"):
... # define how to initialize your model
... super().__init__()
... ...
...
... def _save_pretrained(self, save_directory: Path) -> None:
... # define how to serialize your model
... ...
...
... @classmethod
... def from_pretrained(
... cls: type[T],
... pretrained_model_name_or_path: Union[str, Path],
... *,
... force_download: bool = False,
... token: Optional[Union[str, bool]] = None,
... cache_dir: Optional[Union[str, Path]] = None,
... local_files_only: bool = False,
... revision: Optional[str] = None,
... **model_kwargs,
... ) -> T:
... # define how to deserialize your model
... ...
>>> model = MyCustomModel(size=256, device="gpu")
# Save model weights to local directory
>>> model.save_pretrained("my-awesome-model")
# Push model weights to the Hub
>>> model.push_to_hub("my-awesome-model")
# Download and initialize weights from the Hub
>>> reloaded_model = MyCustomModel.from_pretrained("username/my-awesome-model")
>>> reloaded_model.size
256
# Model card has been correctly populated
>>> from huggingface_hub import ModelCard
>>> card = ModelCard.load("username/my-awesome-model")
>>> card.data.tags
["x-custom-tag", "pytorch_model_hub_mixin", "model_hub_mixin"]
>>> card.data.library_name
"my-library"_save_pretrained
< source >( save_directory: Path )
Sobrescreva este método na subclasse para definir como salvar seu modelo. Consulte nosso guia de integração para obter instruções.
_from_pretrained
< source >( model_id: strrevision: str | Nonecache_dir: str | pathlib.Path | Noneforce_download: boollocal_files_only: booltoken: str | bool | None**model_kwargs )
Parâmetros
- model_id (
str) — ID do modelo a ser carregado do Huggingface Hub (ex.:bigscience/bloom). - revision (
str, opcional) — Revisão do modelo no Hub. Pode ser o nome de um branch, uma tag git ou qualquer id de commit. O padrão é o commit mais recente no branchmain. - force_download (
bool, opcional, padrãoFalse) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração do Hub, sobrescrevendo o cache existente. - token (
stroubool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Por padrão, será usado o token em cache obtido ao executarhf auth login. - cache_dir (
str,Path, opcional) — Caminho para a pasta onde os arquivos em cache são armazenados. - local_files_only (
bool, opcional, padrãoFalse) — SeTrue, evita o download do arquivo e retorna o caminho do arquivo em cache local, se ele existir. - model_kwargs — Argumentos de palavra-chave adicionais passados ao método _from_pretrained().
Sobrescreva este método em uma subclasse para definir como carregar seu modelo a partir de um pré-treinado.
Use hf_hub_download() ou snapshot_download() para baixar arquivos do Hub antes de carregá-los. A maioria dos argumentos de entrada pode ser passada diretamente para esses 2 métodos. Se necessário, você pode adicionar mais argumentos a este método usando “model_kwargs”. Por exemplo, PyTorchModelHubMixin._from_pretrained() recebe como entrada um parâmetro map_location para definir em qual dispositivo o modelo deve ser carregado.
Confira nosso guia de integração para mais instruções.
from_pretrained
< source >( pretrained_model_name_or_path: str | pathlib.Pathforce_download: bool = Falsetoken: str | bool | None = Nonecache_dir: str | pathlib.Path | None = Nonelocal_files_only: bool = Falserevision: str | None = None**model_kwargs )
Parâmetros
- pretrained_model_name_or_path (
str,Path) —- Ou o
model_id(string) de um modelo hospedado no Hub, por exemplo,bigscience/bloom. - Or a path to a
directorycontaining model weights saved usingsave_pretrained, e.g.,../path/to/my_model_directory/.
- Ou o
- revision (
str, opcional) — Revisão do modelo no Hub. Pode ser o nome de um branch, uma tag git ou qualquer id de commit. Padrão: o commit mais recente no branchmain. - force_download (
bool, opcional, padrãoFalse) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração do Hub, sobrescrevendo o cache existente. - token (
stroubool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Por padrão, será usado o token em cache obtido ao executarhf auth login. - cache_dir (
str,Path, opcional) — Caminho para a pasta onde os arquivos em cache são armazenados. - local_files_only (
bool, opcional, padrãoFalse) — SeTrue, evita o download do arquivo e retorna o caminho do arquivo em cache local, se ele existir. - model_kwargs (
dict, opcional) — Kwargs adicionais para passar ao modelo durante a inicialização.
Baixe um modelo do Huggingface Hub e instancie-o.
push_to_hub
< source >( repo_id: strconfig: dict | huggingface_hub.hub_mixin.DataclassInstance | None = Nonecommit_message: str = 'Push model using huggingface_hub.'private: bool | None = Nonetoken: str | None = Nonebranch: str | None = Nonecreate_pr: bool | None = Noneallow_patterns: list[str] | str | None = Noneignore_patterns: list[str] | str | None = Nonedelete_patterns: list[str] | str | None = Nonemodel_card_kwargs: dict[str, typing.Any] | None = None )
Parâmetros
- repo_id (
str) — ID do repositório para o qual será feito o push (exemplo:"username/my-model"). - config (
dictouDataclassInstance, opcional) — Configuração do modelo especificada como um dicionário de chave/valor ou uma instância de dataclass. - commit_message (
str, opcional) — Mensagem a ser commitada durante o push. - private (
bool, opcional) — Se o repositório criado deve ser privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. - token (
str, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Por padrão, será usado o token em cache obtido ao executarhf auth login. - branch (
str, opcional) — O branch do git no qual o modelo será enviado. O padrão é"main". - create_pr (
boolean, opcional) — Se deve ou não criar um Pull Request a partir debranchcom esse commit. O padrão éFalse. - allow_patterns (
list[str]oustr, opcional) — Se fornecido, apenas os arquivos que corresponderem a pelo menos um padrão serão enviados. - ignore_patterns (
list[str]oustr, opcional) — Se fornecido, os arquivos que corresponderem a qualquer um dos padrões não serão enviados. - delete_patterns (
list[str]oustr, opcional) — Se fornecido, os arquivos remotos que corresponderem a qualquer um dos padrões serão excluídos do repositório. - model_card_kwargs (
dict[str, Any], opcional) — Argumentos adicionais passados para o modelo do cartão do modelo para personalizar o cartão do modelo.
Envie o checkpoint do modelo para o Hub.
Use allow_patterns e ignore_patterns para filtrar com precisão quais arquivos devem ser enviados para o hub. Use delete_patterns para excluir arquivos remotos existentes no mesmo commit. Consulte a referência de upload_folder() para mais detalhes.
save_pretrained
< source >( save_directory: str | pathlib.Pathconfig: dict | huggingface_hub.hub_mixin.DataclassInstance | None = Nonerepo_id: str | None = Nonepush_to_hub: bool = Falsemodel_card_kwargs: dict[str, typing.Any] | None = None**push_to_hub_kwargs ) → str or None
Parâmetros
- save_directory (
strouPath) — Caminho para o diretório em que os pesos do modelo e a configuração serão salvos. - config (
dictouDataclassInstance, opcional) — Configuração do modelo especificada como um dicionário de chave/valor ou uma instância de dataclass. - push_to_hub (
bool, opcional, padrãoFalse) — Se deve ou não enviar seu modelo para o Huggingface Hub após salvá-lo. - repo_id (
str, opcional) — ID do seu repositório no Hub. Usado apenas sepush_to_hub=True. Se não for fornecido, o padrão será o nome da pasta. - model_card_kwargs (
dict[str, Any], opcional) — Argumentos adicionais passados para o modelo do cartão do modelo para personalizar o cartão do modelo. - push_to_hub_kwargs — Argumentos de palavra-chave adicionais passados ao método push_to_hub().
Retorna
str ou None
URL do commit no Hub se push_to_hub=True, None caso contrário.
Salve os pesos em um diretório local.
PyTorch
Implementação de ModelHubMixin para fornecer capacidades de upload/download no Hub para modelos PyTorch. O modelo
é definido no modo de avaliação por padrão usando model.eval() (módulos de dropout são desativados). Para treinar o modelo,
você deve primeiro redefinir o modo de treinamento com model.train().
Veja ModelHubMixin para mais detalhes sobre como usar o mixin.
Exemplo:
>>> import torch
>>> import torch.nn as nn
>>> from huggingface_hub import PyTorchModelHubMixin
>>> class MyModel(
... nn.Module,
... PyTorchModelHubMixin,
... library_name="keras-nlp",
... repo_url="https://github.com/keras-team/keras-nlp",
... paper_url="https://arxiv.org/abs/2304.12244",
... docs_url="https://keras.io/keras_nlp/",
... # ^ optional metadata to generate model card
... ):
... def __init__(self, hidden_size: int = 512, vocab_size: int = 30000, output_size: int = 4):
... super().__init__()
... self.param = nn.Parameter(torch.rand(hidden_size, vocab_size))
... self.linear = nn.Linear(output_size, vocab_size)
... def forward(self, x):
... return self.linear(x + self.param)
>>> model = MyModel(hidden_size=256)
# Save model weights to local directory
>>> model.save_pretrained("my-awesome-model")
# Push model weights to the Hub
>>> model.push_to_hub("my-awesome-model")
# Download and initialize weights from the Hub
>>> model = MyModel.from_pretrained("username/my-awesome-model")
>>> model.hidden_size
256Fastai
huggingface_hub.from_pretrained_fastai
< source >( repo_id: strrevision: str | None = None )
Parâmetros
- repo_id (
str) — A localização onde o fastai.Learner serializado (pickled) está. Pode ser uma das duas opções:- Hospedado no Hugging Face Hub. Ex.: ‘espejelomar/fatai-pet-breeds-classification’ ou ‘distilgpt2’.
Você pode adicionar uma
revisionacrescentando@ao final derepo_id. Ex.:dbmdz/bert-base-german-cased@main. Revision é a versão específica do modelo a ser usada. Como usamos um sistema baseado em git para armazenar modelos e outros artefatos no Hugging Face Hub, ela pode ser um nome de branch, um nome de tag ou um id de commit. - Hospedado localmente.
repo_idseria um diretório contendo o pickle e um pyproject.toml indicando as versões do fastai e do fastcore usadas para construir ofastai.Learner. Ex.:./my_model_directory/.
- Hospedado no Hugging Face Hub. Ex.: ‘espejelomar/fatai-pet-breeds-classification’ ou ‘distilgpt2’.
Você pode adicionar uma
- revision (
str, opcional) — Revisão na qual os arquivos do repositório são baixados. Consulte a documentação desnapshot_download.
Carregue um modelo fastai pré-treinado do Hub ou de um diretório local.
huggingface_hub.push_to_hub_fastai
< source >( learnerrepo_id: strcommit_message: str = 'Push FastAI model using huggingface_hub.'private: bool | None = Nonetoken: str | None = Noneconfig: dict | None = Nonebranch: str | None = Nonecreate_pr: bool | None = Noneallow_patterns: list[str] | str | None = Noneignore_patterns: list[str] | str | None = Nonedelete_patterns: list[str] | str | None = Noneapi_endpoint: str | None = None )
Parâmetros
- learner (Learner) — O *fastai.Learner’ que você deseja enviar para o Hub.
- repo_id (str) — O id do repositório do seu modelo no Hub, no formato “namespace/repo_name”. O namespace pode ser sua conta individual ou uma organização à qual você tem acesso de escrita (por exemplo, ‘stanfordnlp/stanza-de’).
- commit_message (str`, opcional*) — Mensagem para o commit ao fazer push. O padrão é
"add model". - private (bool, opcional) — Se o repositório criado deve ser privado ou não. Se None (padrão), será público por padrão, exceto se o padrão da organização for privado.
- token (str, opcional) —
O token da conta do Hugging Face a ser usado como autorização bearer HTTP para arquivos remotos. Se
None, o token será solicitado por meio de um prompt. - config (dict, optional) — Configuration object to be saved alongside the model weights.
- branch (str, opcional) — O branch do git no qual o modelo será enviado. O padrão é o branch padrão especificado no seu repositório, que por padrão é “main”.
- create_pr (boolean, opcional) — Se deve ou não criar um Pull Request a partir de branch com esse commit. Padrão é False.
- api_endpoint (str, opcional) — O endpoint da API a ser usado ao enviar o modelo para o hub.
- allow_patterns (list[str] ou str, opcional) — Se fornecido, apenas os arquivos que corresponderem a pelo menos um padrão serão enviados.
- ignore_patterns (list[str] ou str, opcional) — Se fornecido, os arquivos que corresponderem a qualquer um dos padrões não serão enviados.
- delete_patterns (list[str] ou str, opcional) — Se fornecido, os arquivos remotos que corresponderem a qualquer um dos padrões serão excluídos do repositório.
Envie os arquivos de checkpoint do aprendiz para o Hub.
Use allow_patterns e ignore_patterns para filtrar com precisão quais arquivos devem ser enviados ao hub. Use delete_patterns para excluir arquivos remotos existentes no mesmo commit. Consulte a referência de [upload_folder] para mais detalhes.
Gera o seguinte erro:
- ValueError se o usuário não estiver conectado ao Hugging Face Hub.