Hub Python Library documentation
Миксины и методы сериализации
Миксины и методы сериализации
Миксины
Библиотека huggingface_hub предлагает набор миксинов, которые можно использовать в качестве родительского класса для ваших объектов, чтобы обеспечить простые функции загрузки и скачивания. Ознакомьтесь с нашим руководством по интеграции, чтобы узнать, как интегрировать любой ML-фреймворк с Hub.
Универсальный
класс huggingface_hub.ModelHubMixin
< source >( *args**kwargs )
Параметры
- repo_url (
str, необязательный) — URL репозитория библиотеки. Используется для генерации карточки модели. - paper_url (
str, необязательный) — URL статьи библиотеки. Используется для генерации карточки модели. - docs_url (
str, необязательный) — URL документации библиотеки. Используется для генерации карточки модели. - model_card_template (
str, необязательный) — Шаблон карточки модели. Используется для генерации карточки модели. По умолчанию используется универсальный шаблон. - language (
strилиlist[str], необязательный) — Язык, поддерживаемый библиотекой. Используется для генерации карточки модели. - library_name (
str, необязательный) — Название библиотеки, интегрирующей ModelHubMixin. Используется для генерации карточки модели. - license (
str, необязательный) — Лицензия библиотеки, интегрирующей ModelHubMixin. Используется для генерации карточки модели. Например: “apache-2.0” - license_name (
str, необязательный) — Название библиотеки, интегрирующей ModelHubMixin. Используется для генерации карточки модели. Применяется только в том случае, еслиlicenseустановлен в значениеother. Например: “coqui-public-model-license”. - license_link (
str, необязательный) — URL лицензии библиотеки, интегрирующей ModelHubMixin. Используется для генерации карточки модели. Применяется только в том случае, еслиlicenseустановлен в значениеotherи заданlicense_name. Например: ”https://coqui.ai/cpml”. - pipeline_tag (
str, необязательный) — Тег пайплайна. Используется для генерации карточки модели. Например, “text-classification”. - tags (
list[str], необязательный) — Теги, которые будут добавлены в карточку модели. Используются для генерации карточки модели. Например, [“computer-vision”] - coders (
dict[Type, tuple[Callable, Callable]], необязательный) — Словарь пользовательских типов и их кодировщиков/декодировщиков. Используется для кодирования/декодирования аргументов, которые по умолчанию не являются jsonable. Например, dataclasses, argparse.Namespace, OmegaConf и т. д.
Универсальный миксин для интеграции любого фреймворка машинного обучения с Hub.
Чтобы интегрировать ваш фреймворк, класс вашей модели должен наследоваться от этого класса. Пользовательская логика сохранения/загрузки моделей должна быть переопределена в _from_pretrained и _save_pretrained. PyTorchModelHubMixin — хороший пример интеграции миксина с Hub. Дополнительные инструкции см. в нашем руководстве по интеграции.
При наследовании от ModelHubMixin можно определить атрибуты на уровне класса. Эти атрибуты не передаются в __init__, а задаются непосредственно в определении класса. Это удобно для описания метаданных библиотеки, интегрирующей ModelHubMixin.
Для получения подробной информации о том, как интегрировать миксин с вашей библиотекой, ознакомьтесь с руководством по интеграции.
Пример:
>>> 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 )
Переопределите этот метод в подклассе, чтобы определить, как сохранять вашу модель. Инструкции см. в нашем руководстве по интеграции.
_from_pretrained
< source >( model_id: strrevision: str | Nonecache_dir: str | pathlib.Path | Noneforce_download: boollocal_files_only: booltoken: str | bool | None**model_kwargs )
Параметры
- model_id (
str) — идентификатор модели для загрузки из Huggingface Hub (например,bigscience/bloom). - revision (
str, необязательный) — Ревизия модели на Hub. Может быть именем ветки, git-тегом или любым идентификатором коммита. По умолчанию используется последний коммит веткиmain. - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации с Hub, игнорируя существующий кэш. - token (
strилиbool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. По умолчанию используется токен, кэшированный при выполненииhf auth login. - cache_dir (
str,Path, необязательный) — Путь к папке, в которой хранятся кэшированные файлы. - local_files_only (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, не загружать файл, а вернуть путь к локальному кэшированному файлу, если он существует. - model_kwargs — Дополнительные именованные аргументы, передаваемые в метод _from_pretrained().
Переопределите этот метод в подклассе, чтобы определить, как загружать вашу модель из предобученной.
Используйте hf_hub_download() или snapshot_download() для загрузки файлов с Hub перед их чтением. Большинство аргументов, принимаемых на входе, можно напрямую передать этим двум методам. При необходимости вы можете добавить дополнительные аргументы к этому методу с помощью «model_kwargs». Например, PyTorchModelHubMixin._from_pretrained() принимает на вход параметр map_location, чтобы задать устройство, на котором должна быть загружена модель.
См. нашу инструкцию по интеграции для получения дополнительных сведений.
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 )
Параметры
- pretrained_model_name_or_path (
str,Path) —- Либо
model_id(строка) модели, размещённой на Hub, напримерbigscience/bloom. - Or a path to a
directorycontaining model weights saved usingsave_pretrained, e.g.,../path/to/my_model_directory/.
- Либо
- revision (
str, необязательный) — Ревизия модели на Hub. Может быть именем ветки, git-тегом или идентификатором любого коммита. По умолчанию используется последний коммит веткиmain. - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации с Hub, игнорируя существующий кэш. - token (
strилиbool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. По умолчанию используется токен, кэшированный при выполненииhf auth login. - cache_dir (
str,Path, необязательный) — Путь к папке, в которой хранятся кэшированные файлы. - local_files_only (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, не загружать файл, а вернуть путь к локальному кэшированному файлу, если он существует. - model_kwargs (
dict, необязательный) — Дополнительные аргументы, передаваемые в модель при инициализации.
Скачайте модель из Huggingface Hub и создайте её экземпляр.
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 )
Параметры
- repo_id (
str) — идентификатор репозитория, в который выполняется публикация (пример:"username/my-model"). - config (
dictилиDataclassInstance, необязательный) — Конфигурация модели, заданная в виде словаря ключ/значение или экземпляра dataclass. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. - private (
bool, необязательный) — Определяет, должна ли созданная репозитория быть закрытой. ЕслиNone(по умолчанию), репозитория будет публичной, если только по умолчанию для организации не задан закрытый доступ. - token (
str, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. По умолчанию используется токен, кэшированный при выполненииhf auth login. - branch (
str, необязательный) — Git-ветка, на которую будет выполнена отправка модели. По умолчанию используется"main". - create_pr (
boolean, необязательный) — Создавать ли Pull Request из веткиbranchс этим коммитом. По умолчаниюFalse. - allow_patterns (
list[str]илиstr, необязательный) — Если указано, загружаются только файлы, соответствующие хотя бы одному шаблону. - ignore_patterns (
list[str]илиstr, необязательный) — Если указано, файлы, соответствующие любому из шаблонов, не отправляются. - delete_patterns (
list[str]илиstr, необязательный) — Если указано, удалённые файлы, соответствующие любому из шаблонов, будут удалены из репозитория. - model_card_kwargs (
dict[str, Any], необязательный) — Дополнительные аргументы, передаваемые в шаблон карточки модели для её настройки.
Загрузите контрольную точку модели в Hub.
Используйте allow_patterns и ignore_patterns, чтобы точно отфильтровать файлы, которые следует отправить в хаб. Используйте delete_patterns, чтобы удалить существующие удалённые файлы в том же коммите. Подробнее см. в справке по upload_folder().
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
Параметры
- save_directory (
strилиPath) — Путь к каталогу, в котором будут сохранены веса модели и конфигурация. - config (
dictилиDataclassInstance, необязательный) — Конфигурация модели, заданная в виде словаря ключ/значение или экземпляра dataclass. - push_to_hub (
bool, необязательный, по умолчаниюFalse) — Следует ли загружать модель в Huggingface Hub после её сохранения. - repo_id (
str, необязательный) — идентификатор вашего репозитория на Hub. Используется только приpush_to_hub=True. Если не указан, по умолчанию используется имя папки. - model_card_kwargs (
dict[str, Any], необязательный) — Дополнительные аргументы, передаваемые в шаблон карточки модели для её настройки. - push_to_hub_kwargs — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Возвращает
str или None
URL коммита на Hub, если push_to_hub=True, иначе None.
Сохранить веса в локальный каталог.
PyTorch
Реализация ModelHubMixin для предоставления PyTorch-моделям возможностей загрузки и скачивания с Hub. По умолчанию модель переводится в режим оценки с помощью model.eval() (модули dropout отключаются). Для обучения модели сначала необходимо вернуть её в режим обучения с помощью model.train().
См. ModelHubMixin для получения подробной информации о том, как использовать миксин.
Пример:
>>> 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 )
Параметры
- repo_id (
str) — Место, где находится pickle-файл fastai.Learner. Это может быть одно из двух:- Размещено на Hugging Face Hub. Например: ‘espejelomar/fatai-pet-breeds-classification’ или ‘distilgpt2’.
Вы можете добавить
revision, добавив@в концеrepo_id. Например:dbmdz/bert-base-german-cased@main. Revision — это конкретная версия модели, которую следует использовать. Поскольку для хранения моделей и других артефактов на Hugging Face Hub используется система на базе git, это может быть имя ветки, имя тега или идентификатор коммита. - Размещено локально.
repo_idбудет каталогом, содержащим pickle и pyproject.toml, указывающим версии fastai и fastcore, использованные для сборкиfastai.Learner. Например:./my_model_directory/.
- Размещено на Hugging Face Hub. Например: ‘espejelomar/fatai-pet-breeds-classification’ или ‘distilgpt2’.
Вы можете добавить
- revision (
str, необязательный) — Ревизия, в которой загружаются файлы репозитория. См. документациюsnapshot_download.
Загрузите предобученную модель fastai из Hub или из локального каталога.
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 )
Параметры
- learner (Learner) — *fastai.Learner’ для загрузки в Hub.
- repo_id (str) — Идентификатор репозитория вашей модели на Hub в формате «namespace/repo_name». Пространство имён может быть вашим личным аккаунтом или организацией, к которой у вас есть права на запись (например, ‘stanfordnlp/stanza-de’).
- commit_message (str`, необязательный*) — Сообщение для коммита при выполнении push. По умолчанию —
"add model". - private (bool, optional) — Определяет, должна ли созданная репозитория быть закрытой. Если None (по умолчанию), репозитория будет публичной, если только по умолчанию для организации не задан закрытый доступ.
- token (str, optional) —
Токен аккаунта Hugging Face, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если
None, токен будет запрошен через подсказку. - config (dict, необязательный) — Объект конфигурации, который сохраняется вместе с весами модели.
- branch (str, optional) — Git-ветка, на которую будет выполнена отправка модели. По умолчанию используется ветка по умолчанию, указанная в вашем репозитории, которая по умолчанию равна “main”.
- create_pr (boolean, необязательный) — Создавать ли Pull Request из ветки branch с этим коммитом. По умолчанию False.
- api_endpoint (str, optional) — Точка входа API, используемая при отправке модели на хаб.
- allow_patterns (list[str] или str, необязательный) — Если указано, загружаются только файлы, соответствующие хотя бы одному шаблону.
- ignore_patterns (list[str] или str, необязательный) — Если указано, файлы, соответствующие любому из шаблонов, не загружаются.
- delete_patterns (list[str] или str, необязательный) — Если указано, удалённые файлы, соответствующие любому из шаблонов, будут удалены из репозитория.
Загрузите файлы контрольных точек обучающего агента в Hub.
Используйте allow_patterns и ignore_patterns, чтобы точно отфильтровать файлы, которые следует отправить в хаб. Используйте delete_patterns, чтобы удалить существующие удалённые файлы в том же коммите. Подробнее см. в справке по [upload_folder].
Вызывает следующую ошибку:
- ValueError, если пользователь не вошёл в аккаунт на Hugging Face Hub.