Hub documentation

Загрузка моделей

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Загрузка моделей

Чтобы загрузить модели в Hub, вам нужно создать аккаунт на Hugging Face. Модели в Hub представляют собой репозитории на базе Git, которые обеспечивают управление версиями, ветвление, возможность поиска и обмена, интеграцию с десятками библиотек и многое другое! Вы сами решаете, что именно загрузить в свой репозиторий: это могут быть контрольные точки, конфигурации и любые другие файлы.

Вы можете привязать репозитории к отдельному пользователю, например osanseviero/fashion_brands_patterns, или к организации, например facebook/bart-large-xsum. Организации могут собирать модели, связанные с компанией, сообществом или библиотекой! Если вы выберете организацию, модель будет отображаться на странице организации, и каждый член организации сможет вносить вклад в репозиторий. Вы можете создать новую организацию здесь.

ПРИМЕЧАНИЕ: Для получения метрик загрузок модели не должны быть совместимы с библиотеками Transformers/Diffusers. Поддерживаются любые пользовательские модели. Подробнее ниже!

Существует несколько способов загрузить модели, чтобы они были корректно интегрированы в Hub и получали метрики загрузок, описанные ниже.

  • Если ваша модель предназначена для библиотеки, которая имеет встроенную поддержку, вы можете использовать методы, предоставляемые этой библиотекой. Пользовательские модели, использующие trust_remote_code=True, также могут применять эти методы.
  • Если ваша модель — это пользовательская модель PyTorch, можно использовать класс PyTorchModelHubMixin, так как он позволяет добавить from_pretrained и push_to_hub в любой класс nn.Module, подобно моделям в библиотеках Transformers, Diffusers и Timm.
  • Помимо программной загрузки, вы всегда можете использовать веб-интерфейс или командную строку git.

После загрузки модели мы рекомендуем добавить в репозиторий Model Card, чтобы задокументировать модель и сделать её более доступной для поиска.

drawing Example [repository](https://huggingface.co/LiheYoung/depth_anything_vitl14) that leverages [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub). Downloads are shown on the right.

Использование веб-интерфейса

Чтобы создать новый репозиторий модели, перейдите на huggingface.co/new. Затем выполните следующие шаги:

  1. На вкладке Файлы и версии выберите Добавить файл и укажите Загрузить файл:
  1. Далее выберите файл на вашем компьютере для загрузки и оставьте полезное сообщение коммита, чтобы было понятно, что именно вы загружаете:
  1. Затем нажмите Commit changes, чтобы загрузить вашу модель на Hub!

  2. Осмотр файлов и истории

Вы можете проверить свой репозиторий со всеми недавно добавленными файлами!

Интерфейс позволяет просматривать файлы модели и коммиты, а также видеть изменения, внесённые каждым коммитом:

  1. Добавить метаданные

Вы можете добавить метаданные в карточку вашей модели. Вы можете указать:

  • тип задачи, для которой предназначен данный модель, что позволяет использовать виджеты и провайдеров инференса.
  • используемая библиотека (transformers, spaCy и т. д.)
  • язык
  • набор данных
  • метрики
  • лицензия
  • и многое другое!

Подробнее о тегах моделей — здесь.

  1. Добавление трассировок TensorBoard

Любой репозиторий, содержащий трассировки TensorBoard (файлы с именем, включающим tfevents), получает метку TensorBoard. По соглашению мы рекомендуем сохранять трассировки в подпапке runs/. Тогда вкладка «Training metrics» позволяет легко просматривать графики записанных переменных, например, потерь или точности.

Модели, обученные с помощью 🤗 Transformers, по умолчанию генерируют трассировки TensorBoard, если установлен пакет tensorboard.

Загрузка из библиотеки с встроенной поддержкой

Сначала проверьте, относится ли ваша модель к библиотеке, которая поддерживает встроенную загрузку/сохранение в Hub, например Transformers, Diffusers, Timm, Asteroid и т. д.: https://huggingface.co/docs/hub/models-libraries. Ниже мы покажем, насколько это просто для библиотеки вроде Transformers:

from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

model.push_to_hub("nielsr/my-awesome-bert-model")

# reload
model = BertModel.from_pretrained("nielsr/my-awesome-bert-model")

Некоторые библиотеки, например Transformers, поддерживают загрузку кода из Hub. Это способ заставить вашу модель работать с Transformers с помощью флага trust_remote_code=True. Возможно, стоит рассмотреть этот вариант вместо полноценной интеграции библиотеки.

Загрузка модели PyTorch с помощью huggingface_hub

Если ваша модель является (кастомной) моделью PyTorch, вы можете использовать класс class PyTorchModelHubMixin, доступный в Python-библиотеке huggingface_hub. Это минимальный класс, который добавляет любому nn.Module возможности from_pretrained и push_to_hub, а также метрики загрузок.

Вот как его использовать (при условии, что вы выполнили pip install huggingface_hub):

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin


class MyModel(
    nn.Module,
    PyTorchModelHubMixin, 
    # optionally, you can add metadata which gets pushed to the model card
    repo_url="your-repo-url",
    pipeline_tag="text-to-image",
    license="mit",
):
    def __init__(self, num_channels: int, hidden_size: int, num_classes: int):
        super().__init__()
        self.param = nn.Parameter(torch.rand(num_channels, hidden_size))
        self.linear = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        return self.linear(x + self.param)

# create model
config = {"num_channels": 3, "hidden_size": 32, "num_classes": 10}
model = MyModel(**config)

# save locally
model.save_pretrained("my-awesome-model")

# push to the hub
model.push_to_hub("your-hf-username/my-awesome-model")

# reload
model = MyModel.from_pretrained("your-hf-username/my-awesome-model")

Как вы видите, единственное требование состоит в том, чтобы ваша модель наследовалась от PyTorchModelHubMixin. Все атрибуты экземпляра будут автоматически сериализованы в файл config.json. Обратите внимание, что метод init может принимать только аргументы, сериализуемые в JSON. Поддерживаются dataclasses Python.

Это обеспечивает автоматический сбор метрик загрузок, что позволяет отслеживать количество загрузок модели так же, как это доступно для моделей, нативно интегрированных в библиотеки Transformers, Diffusers или Timm. С помощью этого класса-миксина каждая отдельная контрольная точка хранится на Hub в отдельном репозитории, состоящем из 2 файлов:

  • файл pytorch_model.bin или model.safetensors с весами
  • файл config.json, представляющий собой сериализованную версию конфигурации модели. Этот класс используется для подсчета метрик загрузок: каждый раз, когда пользователь вызывает from_pretrained для загрузки config.json, счетчик увеличивается на единицу. См. это руководство по автоматическим метрикам загрузок.

Рекомендуется добавлять карточку модели к каждой контрольной точке, чтобы пользователи могли узнать, о чём эта модель, получить ссылку на статью и т. д.

Ознакомьтесь с документацией huggingface_hub, чтобы узнать больше.

В качестве альтернативы можно просто программно загрузить файлы или папки на хаб: https://huggingface.co/docs/huggingface_hub/guides/upload.

Использование Git

Наконец, поскольку репозитории моделей — это обычные Git-репозитории, вы также можете использовать Git, чтобы отправить файлы вашей модели на Hub. Ознакомьтесь с руководством Начало работы с репозиториями, чтобы узнать, как использовать CLI git для фиксации и отправки ваших моделей.

Update on GitHub