Hub documentation

Образы контейнеров

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Образы контейнеров

Container Images — это тип репозитория на Hugging Face Hub для образов Docker и других OCI. Реестр контейнеров Hugging Face, cr.hf.co, хранит образы на хранилище Xet. Загружайте и скачивайте их с помощью hf image — рекомендуемого клиента; также поддерживаются стандартные клиенты, такие как Docker, Podman, crane, skopeo, ORAS и Helm.

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

Создание репозитория

Перейдите на huggingface.co/new-container и выберите организацию, имя и видимость. Или используйте API:

curl -X POST https://huggingface.co/api/containers/my-org/my-app \
  -H "Authorization: Bearer $HF_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"private": true}'

Создайте репозиторий перед отправкой: попытка отправить в несуществующий репозиторий завершится ошибкой NAME_UNKNOWN. На его странице, https://huggingface.co/containers/my-org/my-app, перечислены теги. Права на получение и отправку определяются видимостью репозитория и ролью каждого участника в организации.

Отправка и получение с помощью hf image

hf image, расширение CLI hf, передаёт только те части каждого слоя, которые изменились с предыдущей версии, что обеспечивает более высокую скорость по сравнению с другими OCI-клиентами.

hf extensions install hf-image
hf auth login                                   # or set HF_TOKEN
hf image build -t cr.hf.co/my-org/my-app:v2 .   # optional: docker build works too
hf image push cr.hf.co/my-org/my-app:v2
hf image pull cr.hf.co/my-org/my-app:v2

Используются ваш токен доступа Hugging Face (read для получения, write для отправки) и требуется Docker с хранилищем образов containerd. Образы, отправленные с помощью hf image, могут быть получены любым клиентом.

Поскольку hf image хранит слои без сжатия, образы, которые он отправляет, получают другие дайджесты, чем при использовании docker push. Чтобы сохранить дайджесты docker push, например для подписей или развёртываний, закреплённых по дайджесту, используйте hf image push --preserve-digests. Это работает медленнее: изменённые слои в этом случае отправляются и загружаются целиком, как при docker push.

Использование Docker и других клиентов OCI

Хотя мы рекомендуем использовать hf image (см. предыдущий раздел), чтобы в полной мере воспользоваться преимуществами бэкенда Xet, вы также можете взаимодействовать с реестром через любой OCI-клиент.

Войдите, указав имя пользователя Hugging Face и User Access Token в качестве пароля: read для получения, write для отправки. Публичные образы можно получить без входа.

echo $HF_TOKEN | docker login cr.hf.co -u <username> --password-stdin
docker tag my-app cr.hf.co/my-org/my-app:v1
docker push cr.hf.co/my-org/my-app:v1
docker pull cr.hf.co/my-org/my-app:v1

Другие клиенты OCI работают аналогичным образом. Helm добавляет имя чарта к URL: helm push mychart-0.1.0.tgz oci://cr.hf.co/my-org выполняет публикацию в my-org/mychart, который должен существовать заранее.

Удаление изображений

На Hub удалите тег с помощью Удалить этот тег в его меню на странице изображения или тега. С помощью hf image удалите теги изображения, а затем удалите его по дайджесту:

hf image untag cr.hf.co/my-org/my-app:v1                # prints the image's digest
hf image delete cr.hf.co/my-org/my-app@sha256:<digest>

Если образ всё ещё используется, например, другим тегом, удаление отклоняется, и выводится список того, что необходимо удалить в первую очередь. Удаление многоплатформенного образа также приводит к удалению его платформенных образов.

Сборка мусора

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

Ограничения

  • Имена изображений имеют вид cr.hf.co/<namespace>/<name> и записываются строчными буквами.
  • Слои до 100 ГБ, манифесты до 4 МБ.
  • Отображение нового тега в списке может занять несколько секунд.
Update on GitHub