Нет, это не просто милые смайлики на вашем телефоне.

TL;DR

Hugging Face — это платформа сообщества и науки о данных, которая обеспечивает:

  • Инструменты, которые позволяют пользователям создавать, обучать и развертывать модели машинного обучения на основе кода и технологий с открытым исходным кодом (ОС).
  • Место, где широкое сообщество ученых, исследователей и инженеров машинного обучения может собраться вместе и поделиться идеями, получить поддержку и внести свой вклад в проекты с открытым исходным кодом.

🔥 Продвижение ИИ через сообщество

С недавним переходом к гибридным и гибким методам работы мы начинаем наблюдать более широкое использование и внедрение инструментов, которые позволяют группам специалистов по данным, экспертам и любителям сотрудничать удаленно.

Действительно, сообщество ОС становится все более важным, когда речь идет о прогрессе в области ИИ. Ни одна компания, даже «технические гиганты», не смогут «решить ИИ» самостоятельно — обмен знаниями и ресурсами для ускорения и продвижения вперед — это то, к чему движется будущее!

Hugging Face решает эту проблему, предоставляя «хаб» сообщества. Это центральное место, где каждый может делиться моделями и наборами данных и исследовать их. Они хотят стать местом с самой большой коллекцией моделей и наборов данных с целью демократизации ИИ для всех.

🚀 Начало работы - › Ваш репозиторий

Когда вы регистрируетесь, чтобы стать участником Hugging Face, вы получаете размещенный репозиторий на основе Git, в котором вы можете хранить: модели, наборы данных и пространства. Мы углубимся в каждый из них позже в этом разделе.

А пока давайте встанем и побежим!

Зарегистрироваться в качестве индивидуального участника сообщества можно бесплатно. Существует план Pro и отдельные модели ценообразования для организаций.

Я пошел дальше и зарегистрировался, в процессе вы также можете связать домашнюю страницу, учетные записи Github и Twitter, как показано ниже:

После создания учетной записи вы будете перенаправлены в свой личный репозиторий. На этой странице вы можете сделать ряд вещей, в том числе:

  • Смотрите свою ленту активности
  • Просмотр вашего профиля и настроек
  • Создание новой модели, набора данных или пространства
  • Посмотрите, что сейчас в тренде в сообществе Hugging Face.
  • Просмотрите список организаций, к которым вы принадлежите, и перейдите в соответствующие области.
  • Воспользуйтесь полезными ресурсами и документацией

Центральным элементом репозитория является ваша лента действий, которая заполняется по мере того, как вы начинаете создавать (или лайкать) модели, наборы данных и пространства.

Теперь, когда мы готовы, давайте углубимся…

Модели

Когда вы создаете новую «модель», на самом деле это репозиторий Git для файлов, относящихся к модели машинного обучения, которой вы хотите поделиться. Он имеет все ожидаемые преимущества, такие как управление версиями, ветки, возможность обнаружения и так далее.

💡 Шаги, которые я опишу в этом разделе (включая наборы данных и пространства), можно выполнить программно через командную строку с помощью Конечных точек API-концентратора.

Нажав кнопку «+ New» в Hub, а затем выбрав «Model», вы попадете в диалоговое окно, в котором вы можете указать имя и тип лицензии на ОС, для которой вы вносите код своей модели и связанные активы.

Вы также можете контролировать видимость своей модели, то есть сделать ее общедоступной и сделать ее видимой для сообщества Hugging Face или оставить ее частной в вашем личном репозитории или Организации.

После того, как модель будет создана, вы попадете в представление репозитория с выбранной по умолчанию вкладкой «Карточка модели»:

Для обычных пользователей Git вкладка «Файлы и версии» покажется знакомой:

Репозиторий моей модели в данный момент пуст, но на снимке экрана ниже показано, что бы хотела полностью заполненная карточка модели для одной из моделей сообщества Hugging Face:

Есть несколько различных элементов, которые нужно вызвать:

  1. Вверху у нас есть название модели, лайки и сразу под тегами, связанными с моделью. Например, рамки, тип модели и другие атрибуты.
  2. Основная часть карты модели может использоваться для предоставления обзора модели, фрагментов кода для ее использования, ограничений и любой другой соответствующей информации. Содержимое этого элемента определяется путем заполнения файла README.md в репозитории вашей модели правильными тегами.
  3. Вы можете обучить модель, чтобы настроить ее, или даже развернуть ее, указав на экземпляр AWS SageMaker или на собственную контейнерную инфраструктуру Hugging Face Infinity. Если вы хотите использовать модель в своем собственном коде, ‹/› Использовать… откроется фрагмент кода, показывающий, как вы можете импортировать его на основе платформы, используемой для построения модели. Еще одна действительно полезная функция — это Hosted inference API, который позволяет вам отображать виджет, который позволяет пользователям передавать образцы значений в модель для проверки ее вывода. Виджет Hosted Inference API определяется метаданными, содержащимися в файлах вашей модели.
  4. Наконец, вы также можете увидеть метаданные о том, какие наборы данных использовались для обучения модели и пространствах, которые используют модель.

💡Подробная карточка модели важна, потому что она помогает пользователям понять, когда и как применить вашу модель.

Наборы данных

Процесс создания нового набора данных очень похож на процесс создания новой модели. нажмите кнопку «+ Новый» в концентраторе, а затем выберите «Набор данных». Вы указываете имя, тип лицензии, публичный или частный доступ. Затем вы видите представление репозитория с «карточкой набора данных», «файлами и версиями», аналогично тому, что у вас есть в репозитории модели.

Опять ключевые элементы, на которые стоит обратить внимание:

  1. Наряду с заголовком набора данных, лайками и тегами вы также получаете оглавление, поэтому вы можете перейти к соответствующему разделу в теле карточки набора данных.
  2. Основная часть карты набора данных может быть настроена для включения предварительного просмотра встроенного набора данных. Это очень удобно, так как показывает функции, разбиение данных и подмножества (если они есть). Содержимое этих и предыдущих элементов определяется путем заполнения файла README.md в вашем репозитории наборов данных правильными тегами.
  3. Наконец, у вас есть быстрые ссылки на репозиторий GitHub и фрагмент кода для использования набора данных через библиотеку наборов данных Hugging Face python. Есть также дополнительные метаданные, такие как происхождение набора данных, размер и то, какие модели в сообществе Hugging Face были обучены набору данных.

Пробелы

Пространства дают вам место для демонстрации вашей работы в виде автономных демонстрационных приложений машинного обучения. Если вы ищете вдохновения, вам доступно множество пространств, созданных сообществом.

Это хороший способ создать портфолио ваших проектов, которое можно использовать при презентации, совместной работе с коллегами в вашей организации или в более широкой экосистеме машинного обучения.

Чтобы начать, нажмите кнопку «+ New» в Hub, а затем выберите «Space». Это приведет вас к диалоговому окну, в котором вы можете указать имя пространства и тип лицензии.

Вам также нужно будет выбрать SDK. На момент написания вы можете выбрать одну из двух платформ на основе Python для размещения приложений: Gradio или Streamlit. В качестве альтернативы вы можете просто использовать собственный HTML.

Как и при создании новой модели или набора данных, после создания вы направляетесь в репозиторий Space. На карточке приложения появится ваша демонстрация.

Для простоты я просто выбрал пользовательский вариант HTML и отредактировал файл index.html на вкладке «Файлы и версии», чтобы проиллюстрировать это. Но вы можете встроить сюда что угодно, включая контент в iFrame.

После создания пространства и возвращения в свой профиль вы увидите, что оно появилось в вашей ленте активности и готово поделиться со всем миром!

🏄🏽‍♂️ Изучение сообщества

Модели сообщества

Помимо вашего личного (или корпоративного) репозитория, вы также можете изучить все десятки тысяч моделей, наборов данных и пространств, предоставленных сообществом Hugging Face.

Вы можете получить к ним доступ из меню навигации верхнего уровня, которое всегда отображается в верхней части веб-страницы.

Примерно ⅔ моделей в репозитории сообщества были построены в PyTorch, но часто есть альтернативы для каждой из основных задач, доступных в TensorFlow и других распространенных библиотеках ML.

У каждого будет карточка модели, как показано в разделе моделей выше, с ключевой информацией, предоставленной автором, а также размещенный API вывода для просмотра примеров входных и выходных данных модели. На вкладке «Файлы и версии» есть список всех файлов в представлении репозитория, а также папка с предыдущими запусками и сохранениями модели для справки.

Задачи

Теперь вы можете потратить уйму времени, просматривая множество различных моделей сообщества, пытаясь найти ту, которая поможет решить проблему, которую вы пытаетесь решить.

Вместо этого Hugging Face избавил вас от хлопот, предоставив кураторский просмотр моделей в зависимости от задачи, которую вы пытаетесь решить с помощью ИИ.

Большинство вкладов сообщества Hugging Face подпадают под категорию моделей НЛП (обработка естественного языка). Но вы также можете найти модели, связанные с задачами моделей аудио и компьютерного зрения.

Документация для каждой задачи объясняется наглядно и интуитивно понятно. Помимо диаграмм, каждое объяснение сопровождается коротким видео на YouTube, а также ссылками на демонстрацию с использованием Inference API и ссылками на модели, созданные сообществом.

Также есть описание возможных вариантов использования и вариантов задач. На многих страницах с описанием задач есть записные книжки и сценарии для обучения, которые помогут приступить к работе. Сценарии охватывают весь процесс от настройки и загрузки набора данных до предварительной обработки (с использованием токенизаторов), сравнения моделей и тонкой настройки (с помощью Trainer API).

📔 Все вместе!

В этом заключительном разделе мы рассмотрим, как легко начать использовать Hugging Face для варианта использования с Transformers, Trainer и Inference API в сочетании с блокнотом Python.

Одним из основных преимуществ использования инструментов Hugging Face является то, что вы можете сократить время обучения, ресурсы и воздействие на окружающую среду при создании и обучении модели с нуля. Путем точной настройки существующей предварительно обученной модели, а не обучения всего с нуля, вы можете перейти от данных к прогнозам за гораздо более короткий промежуток времени.

1. Синхронизация и аутентификация

Hugging Face поощряет и упрощает обмен тем, что вы делаете или настраиваете с остальной частью сообщества Hugging Face, посредством синхронизации ваших блокнотов с Hugging Face Hub. Если вы войдете с токеном, который можно сгенерировать в разделе Токены доступа вашего профиля пользователя, ваши модели будут синхронизированы с веб-сайтом.

🧐 Примечание. Здесь мы используем стандартную среду Colabatory, но премиум-варианты позволяют проводить прямое обучение работе с Amazon SageMaker и AutoNLP, а также несколькими методами развертывания, включая собственный Infinity Hugging Face.

2. Подготовка данных

Как упоминалось ранее, Hugging Face Github предоставляет большой выбор наборов данных, если вы ищете что-то для тестирования или тонкой настройки модели.

Здесь мы тестируем собственную модель Hugging Face DistilBERT, чтобы точно настроить модель ответов на вопросы.

После того, как необходимые библиотеки установлены и импортированы, мы можем продолжить и загрузить набор данных, используя библиотеку наборов данных, в одну строку. Наборы данных Hugging Face обычно структурированы в формате Pyarrow, однако можно также импортировать файлы JSON или CSV.

Затем мы предварительно обрабатываем обучающие данные. Функция Transformers AutoTokenizer используется для упрощения процесса. Еще лучше, что многие токенизаторы являются «быстрыми» токенизаторами, поддерживаемыми Rust для еще более эффективной обработки.

Шаблон Colab показывает пользователю, как обрезать длинные документы и учитывать разделение контекста при токенизации. Hugging face также предоставляет инструменты, помогающие сопоставить токены с исходным контекстом данных с помощью сопоставления смещения.

Существует метод сопоставления набора данных для применения токенизации ко всему набору данных.

3. Доработка модели под ваши требования

Как только набор данных подготовлен, мы можем точно настроить модель. В составе библиотеки преобразователей есть класс AutoModelForQuestionAnswering, предварительно обученный на основе контрольной точки модели. Затем все, что нам нужно сделать, это определить аргументы обучения для модели PyTorch и передать их в Trainer API.

Гиперпараметры можно легко настроить в соответствии с желаемыми результатами/средой.

4. Обучение индивидуальной модели

Следующая строка кода — это все, что вам нужно, чтобы начать процесс обучения модели.

trainer.train()

5. Выходные данные модели

После запуска модели ее можно синхронизировать с концентратором с помощью Trainer API с помощью одной строки кода:

trainer.push_to_hub()

Стандартный документ Colab также включает шаблон для создания прогнозов и их последующей обработки в значимые результаты.

После загрузки карта вашей модели будет выглядеть примерно так, как показано на снимке экрана ниже. Затем ее можно настроить с помощью редактирования.

Затем вы можете запустить прогнозы на веб-сайте Hugging Face на странице вашей автоматически созданной модели с помощью Hosted Inference API или загрузить контрольную точку модели в Python, чтобы начать делать прогнозы на основе вашей точно настроенной модели.

Еще одна интересная функция — вы можете просматривать показатели обучения и показатели модели в Tensorboard, если модель была создана в TensorFlow.

Итак, у вас есть это, мы дали краткий обзор того, что такое Hugging Face, как начать делиться моделями и наборами данных, ориентироваться в сообществе и как повторно использовать существующую модель сообщества для ваших собственных вариантов использования.

👏 Отдельное спасибо моему брату Tahir Mahmood, который стал соавтором этого поста!

📚 Дополнительная литература и полезные ресурсы