Добавить в корзинуПозвонить
Найти в Дзене
SunN1nja

Hugging Face предложила заменить GitHub Actions: CI стал быстрее на 30%, а GPU-тесты запускаются за копейки

Современная разработка всё сильнее зависит от автоматического тестирования. Практически каждый проект на GitHub использует GitHub Actions для проверки кода, запуска тестов и сборки приложений. Но у стандартного подхода есть ограничения: ограниченный выбор оборудования, отсутствие доступных GPU и зависимость от инфраструктуры GitHub. Команда Hugging Face решила эту проблему необычным способом — оставить GitHub Actions в качестве системы управления CI, но перенести выполнение задач на собственную платформу Hugging Face Jobs. Результат оказался весьма впечатляющим: CPU-задачи стали выполняться примерно на 30% быстрее, а разработчики получили возможность запускать полноценные GPU-тесты без поддержки собственных серверов. Hugging Face Jobs — это облачная серверless-платформа, позволяющая запускать команды и скрипты практически на любом типе оборудования. Разработчик может выбрать: Например, можно запустить обычный Python-скрипт: hf jobs run python:3.12 python -c "print('Hello world')"
Или
Оглавление
Hugging Face предложила заменить GitHub Actions
Hugging Face предложила заменить GitHub Actions

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

Но у стандартного подхода есть ограничения: ограниченный выбор оборудования, отсутствие доступных GPU и зависимость от инфраструктуры GitHub.

Команда Hugging Face решила эту проблему необычным способом — оставить GitHub Actions в качестве системы управления CI, но перенести выполнение задач на собственную платформу Hugging Face Jobs.

Результат оказался весьма впечатляющим: CPU-задачи стали выполняться примерно на 30% быстрее, а разработчики получили возможность запускать полноценные GPU-тесты без поддержки собственных серверов.

Что такое Hugging Face Jobs

Hugging Face Jobs — это облачная серверless-платформа, позволяющая запускать команды и скрипты практически на любом типе оборудования.

Разработчик может выбрать:

  • Docker-образ;
  • тип процессора;
  • необходимую видеокарту;
  • переменные окружения;
  • секреты и токены.

Например, можно запустить обычный Python-скрипт:

hf jobs run python:3.12 python -c "print('Hello world')"

Или выполнить задачу на GPU:

-2

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

Как работает интеграция с GitHub Actions

Для интеграции была создана специальная прослойка под названием huggingface/jobs-actions.

Схема работы выглядит следующим образом.

Когда разработчик создаёт Pull Request, GitHub запускает workflow.

Если в конфигурации указан специальный раннер вроде:

-3

или

-4

GitHub отправляет событие специальному диспетчеру Hugging Face.

Далее происходит автоматический запуск временного раннера внутри Hugging Face Jobs.

GitHub воспринимает его как обычный self-hosted runner и передаёт ему выполнение задач.

После завершения работы контейнер автоматически уничтожается.

Таким образом GitHub остаётся центром управления CI, а вычисления выполняются на инфраструктуре Hugging Face.

Настройка начинается с диспетчера

Первым шагом необходимо создать специальный Space-диспетчер.

Для этого Hugging Face предлагает продублировать готовый проект:

-5

После запуска Space пользователь получает webhook-адрес вида:

-6

Этот адрес потребуется для дальнейшей интеграции с GitHub.

Если настройка выполняется через терминал, используется следующая команда:

После создания диспетчера необходимо определить URL:

-7

Этот этап подготавливает инфраструктуру для получения событий от GitHub.

После выполнения этих команд диспетчер будет готов принимать webhook-запросы и запускать задачи на серверах Hugging Face.

Создание GitHub App

Следующий этап — создание GitHub App.

В настройках диспетчера необходимо указать репозиторий:

-8

После этого система автоматически создаёт GitHub-приложение, которое сможет:

  • получать события workflow;
  • регистрировать временные раннеры;
  • запускать задания через Hugging Face Jobs.

Также потребуется токен Hugging Face с правами на запуск задач.

Он сохраняется в секрете:

-9

После установки приложения на нужный репозиторий GitHub начинает передавать задания новой инфраструктуре.

Как изменить существующий workflow

Самая приятная часть заключается в том, что менять GitHub Actions практически не нужно.

Стандартная конфигурация выглядит так:

-10

Для переноса на Hugging Face достаточно заменить её на:

-11

Если необходим GPU:

-12

Фактически весь перенос CI может ограничиться одной строкой в workflow-файле.

После изменения GitHub начнёт автоматически отправлять задания на инфраструктуру Hugging Face.

Проверка работоспособности

Для тестирования Hugging Face предлагает создать минимальный workflow.

Сначала создаётся файл:

-13

Этот workflow запускает простейшую проверку на инфраструктуре Hugging Face.

После отправки изменений можно проверить выполнение:

-14

Эти команды позволяют увидеть статус GitHub Actions, активные задачи Hugging Face и журналы диспетчера.

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

Почему Docker-образ имеет значение

Во время экспериментов разработчики столкнулись с неожиданной проблемой.

Первоначально использовался стандартный образ:

ubuntu:22.04

Однако он требовал установки множества пакетов при каждом запуске.

В итоге команда перешла на образ Playwright:

-15

Для GPU-задач использовался:

-16

Это позволило существенно сократить время запуска тестов и ускорить CI.

Насколько быстрее работает новый подход

Наиболее интересны реальные результаты проекта Trackio.

Стандартный GitHub Actions на ubuntu-latest выполнял тесты примерно за:

1m40s

После перехода на Hugging Face Jobs время сократилось до:

1m10s

То есть примерно на 30%.

GPU-проверка на машине t4-small завершалась всего за:

45s

Причём стоимость такого запуска составляла менее одного цента.

Для проектов в области ИИ это особенно важно, поскольку полноценные GPU-тесты становятся доступны даже небольшим командам.

Почему это может изменить рынок CI

До сих пор GitHub Actions оставался фактическим стандартом для большинства open-source проектов.

Однако Hugging Face предлагает интересную альтернативу.

Разработчики сохраняют привычный интерфейс GitHub Actions, но получают:

  • более гибкий выбор оборудования;
  • поддержку GPU;
  • собственные Docker-образы;
  • более быстрые тесты;
  • удобную работу с логами;
  • возможность подключения датасетов и моделей напрямую из экосистемы Hugging Face.

Особенно выиграть могут проекты, связанные с искусственным интеллектом, где GPU уже давно стал обязательным инструментом разработки.