huggingface_hub v1.0: обновление, httpx-бэкенд и новый CLI | AiManual
AiManual Logo Ai / Manual.
07 Янв 2026 Гайд

huggingface_hub v1.0: что сломалось, что работает и как не сойти с ума при обновлении

Полный гайд по переходу на huggingface_hub v1.0: обновление библиотеки, переход на httpx-бэкенд, использование нового CLI на Typer. Все изменения и обратная сов

Тот самый момент, когда библиотека взрослеет

Hugging Face Hub вырос из удобной утилитки в полноценную экосистему. И как любой взрослый проект, он накопил технический долг. Версия 1.0 - это не просто новая цифра. Это признание: "Мы больше не игрушка, мы инфраструктура". И с этим признанием приходят болезненные, но необходимые изменения.

Если вы обновитесь без подготовки, половина ваших скриптов перестанет работать. Серьезно. Особенно если используете кастомные конфигурации или работаете с большими файлами через Git LFS.

Зачем вообще обновляться? Старая версия работала

Вот типичный диалог в моей голове каждый раз, когда выходит мажорное обновление:

  • "Не трогай то, что работает"
  • "Но там обещают скорость"
  • "А если сломается?"
  • "Зато красиво..."

С huggingface_hub v1.0 все проще. Потому что старое "работало" через боль и страдания. HTTP-клиент на requests тормозил на больших файлах, CLI был непоследовательным, а поддержка hf_xet (их проприетарного формата для больших файлов) висела костылями.

💡
Если вы используете HuggingFace Downloader для массовой загрузки моделей, обновление обязательно. Новый httpx-бэкенд ускоряет скачивание в 2-3 раза на медленных соединениях.

Шаг первый: безопасное обновление без сердечного приступа

Не делайте так:

pip install huggingface_hub --upgrade

И все. Прямо в продакшн. Без тестов. На удаленном сервере в три часа ночи.

Делайте так:

1 Создайте виртуальное окружение для тестов

Это занимает 30 секунд, но спасает от часов отладки. Отдельное окружение - ваш полигон для экспериментов.

2 Проверьте зависимости

Запустите pip list | grep huggingface. Увидите что-то вроде:

БиблиотекаВерсияЧто делать
huggingface_hub0.20.3Обновлять
transformers4.36.0Проверить совместимость
datasets2.16.0Проверить совместимость

Transformers и datasets обычно обновляются вместе с huggingface_hub, но лучше проверить. Особенно если у вас кастомные пайплайны.

3 Обновите с флагом --upgrade-strategy

Вместо простого upgrade используйте:

pip install huggingface_hub==1.0.0 --upgrade --upgrade-strategy eager

Этот флаг обновит все зависимости, которые указаны в requirements huggingface_hub. Иначе можете получить конфликт версий.

4 Запустите тесты на своих скриптах

Не официальные тесты huggingface. Ваши скрипты. Те, которые качают модели, загружают датасеты, работают с репозиториями. Особое внимание - авторизация и работа с приватными репозиториями.

httpx: замена requests, которая действительно быстрее

Requests был стандартом де-факто. Пока не появились асинхронные запросы и HTTP/2. Теперь стандарт - httpx. И разница заметна сразу.

Представьте: вы качаете модель на 7ГБ. В старой версии это 15 минут ожидания с периодическими таймаутами. В новой - 8-9 минут с плавным прогресс-баром. Разница не в магии, а в том, как httpx обрабатывает соединения.

Что изменилосьСтарое (requests)Новое (httpx)
Пулинг соединенийБазовыйПродвинутый с keep-alive
ТаймаутыГлобальныеНа уровне запроса
Сжатиеgzipgzip, brotli автоматически
АсинхронностьЧерез отдельные библиотекиВстроенная поддержка async/await

Самое главное: обратная совместимость. Ваш код продолжит работать. Библиотека сама подключает httpx вместо requests. Но если у вас были кастомные конфигурации HTTP-клиента - проверьте их.

Проблема №1 после обновления: прокси. Если ваша сеть использует корпоративный прокси, httpx может не подхватить настройки из переменных окружения как requests. Придется явно передавать proxy параметры.

Новый CLI: наконец-то человечный интерфейс

Старый CLI напоминал археологическую находку. Разные команды с разными опциями, непоследовательные флаги, помощь, которая помогает только создателям. Новый CLI построен на Typer - и это меняет все.

Typer дает автоматическую валидацию, подсказки табов, цвета, прогресс-бары. И главное - единообразие. Теперь все команды работают по одному принципу.

Что стало лучше в CLI

  • hf login теперь запоминает контекст. Залогинился один раз - работаешь везде. Раньше токен "терялся" между сессиями
  • hf upload показывает реальный прогресс, а не просто вращающийся курсор
  • hf repo create создает репозитории с правильными настройками по умолчанию (private, а не public)
  • Автодополнение работает из коробки. Активируете один раз - получаете подсказки всегда

Попробуйте просто запустить hf --help. Увидите структурированный вывод, где сразу понятно, какие команды доступны. Это мелочь, но она экономит кучу времени.

💡
Если вы автоматизируете публикацию моделей через Codex и HF-skills, новый CLI упростит скрипты. Меньше обработки ошибок, больше встроенной валидации.

hf_xet: слон в посудной лавке

hf_xet - проприетарный формат Hugging Face для работы с огромными файлами (100ГБ+). В v0.x поддержка была экспериментальной. В v1.0 она стала первой опцией.

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

Как отключить hf_xet и вернуться к обычному Git LFS:

export HF_HUB_ENABLE_HF_TRANSFER=0

Или в коде:

os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0"

Но перед отключением подумайте: hf_xet действительно ускоряет загрузку больших файлов в 5-10 раз. Если вы работаете с большими моделями - оставьте его включенным.

Ошибки, которые убьют ваше время

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

Ошибка 1: ImportError на hf_transfer

Вы видите сообщение про hf_transfer, хотя ничего не устанавливали. Решение простое:

pip install hf-transfer

Или отключите hf_xet как показано выше. Библиотека пытается использовать ускоренную загрузку, но не находит нужный пакет.

Ошибка 2: Сломанная авторизация в CI/CD

Раньше работало с HF_TOKEN. Теперь требует дополнительных настроек. Добавьте в ваш CI-скрипт:

hf login --token $HF_TOKEN
# а не просто export HF_TOKEN=...

CLI теперь кэширует токен в конфигурационных файлах. Без явного login он может его не найти.

Ошибка 3: Таймауты на больших файлах

httpx по умолчанию использует другие таймауты. Если качаете модель на 30ГБ, увеличьте лимиты:

from huggingface_hub import configure_http_backend
configure_http_backend(backend="httpx", timeout=120.0)

А что с обратной совместимостью?

Официально - полная. Практически - есть нюансы.

Основной API (huggingface_hub.HfApi, huggingface_hub.hf_hub_download) работает без изменений. Но внутренние импорты могли сломаться. Если вы импортировали что-то из huggingface_hub.utils - проверьте.

Самый болезненный момент - кастомные HTTP-клиенты. Если вы передавали свой экземпляр requests.Session, теперь нужно передавать httpx.Client. Сигнатуры похожи, но не идентичны.

💡
Проверьте интеграции с другими инструментами. Например, если вы используете EdgeVec для локальных LLM, убедитесь что загрузка моделей из Hugging Face работает через новый бэкенд.

Миграционный чеклист: отметьте пункты

  1. Создали тестовое окружение? □
  2. Проверили совместимость transformers/datasets? □
  3. Обновили через --upgrade-strategy eager? □
  4. Протестировали авторизацию? □
  5. Проверили загрузку самой большой модели в проекте? □
  6. Обновили CI/CD скрипты с hf login? □
  7. Настроили таймауты для больших файлов? □
  8. Решили, оставлять hf_xet или отключать? □

Итог: обновляться или подождать?

Обновляться. Сейчас. Потому что:

  • Скорость загрузки увеличивается в разы
  • CLI перестает бесить своей непоследовательностью
  • Поддержка hf_xet становится стабильной
  • Асинхронные операции работают из коробки

Да, придется потратить пару часов на тесты. Но эти часы окупятся в следующем же проекте, когда вы будете качать модель не 40 минут, а 15.

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

А если все сломалось - откатитесь. pip install huggingface_hub==0.20.3 еще работает. Но это временное решение. Будущее за v1.0, и оно уже здесь.