Switch-Hub
switch-hub — это удобная утилита для переключения между разными источниками моделей и датасетов: Hugging Face Hub,
Cloud.ru Repo. Она позволяет прозрачно работать с моделями и датасетами в разных экосистемах, не изменяя привычный
интерфейс.
- Лёгкое переключение между хранилищами: Hugging Face Hub, Cloud.ru Repo.
- Минимальные изменения в коде — привычный интерфейс transformers, datasets, diffusers ....
- Гибкость для CI/CD, исследований и продакшена.
pip install switch-hubfrom transformers import AutoModel
from switch_hub import HubSwitcher
switcher = HubSwitcher()
# Переключаемся на Hugging Face Hub
switcher.switch_to_hf()
model = AutoModel.from_pretrained('dmitryradionov/some-model')
# Переключаемся на Repo Cloud.ru и пушим модель туда
switcher.switch_to_rh()
model.push_to_hub('70e5f7a7-f6a7-4fd7-a8ea-e288150b6fb8/some-model')
# Загружаем модель из Cloud.ru Repo
model_mr = AutoModel.from_pretrained('70e5f7a7-f6a7-4fd7-a8ea-e288150b6fb8/some-model')
# Снова переключаемся на Hugging Face Hub и пушим модель назад
switcher.switch_to_hf()
model_mr.push_to_hub("dmitryradionov/some-model")Для работы с приватными и большинством публичных репозиториев, потребуется токен доступа:
- Hugging Face Hub:
HF_TOKEN - Cloud.ru Repo:
RH_TOKEN(обязателен всегда)
1. Через переменные окружения или .env файл
Рекомендуется для локальной разработки и CI/CD:
Пример .env:
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RH_TOKEN=rh_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy2. Явно в конструктор HubSwitcher
from switch_hub import HubSwitcher
switcher = HubSwitcher(
hf_token="hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
rh_token="rh_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
)- RH_TOKEN обязателен для Cloud.ru Repo всегда
- HF_TOKEN обязателен только для приватных репозиториев Hugging Face, но рекомендуется указывать всегда, чтобы избежать лимитов и быть готовым к работе с приватным контентом Hugging Face
- Никогда не публикуйте свои токены в открытых источниках — используйте секреты сборки и переменные окружения
reset()
Восстанавливает все переменные окружения и внутренние настройки, которые были изменены при переключении между хабами.
Используйте этот метод, если нужно вручную откатить все изменения состояния, внесённые switcher'ом, например после
завершения операций с приватным registry.
Пример:
switcher.switch_to_rh()
# ... работа с приватным хабом ...
switcher.reset() # Возвращение к исходным параметрам окруженияcontext(mode)
Контекстный менеджер для временного переключения хаба.
После выхода из блока with окружение автоматически восстанавливается к исходному.
Пример:
from switch_hub import HubSwitcher
switcher = HubSwitcher()
with switcher.context('rh'):
# В этом блоке все операции проходят через Cloud.ru Repo
model = AutoModel.from_pretrained('cloudru_id/some-model')
# ... другие операции ...
# После выхода из блока — автоматически восстановлен Hugging Face/прежний хаб
# mode: может быть 'hf' (Hugging Face Hub) или 'rh' (Cloud.ru Repo)- Исследование новых моделей: переключайтесь между публичными репозиториями и приватным registry.
- Экспорт и импорт моделей между облаком и Hugging Face.
- Автоматизация CI/CD пайплайнов для MLOps.
P.S. Эти способы аутентификации работают для моделей, датасетов, diffusers и других библиотек, поддерживаемых
switch-hub.
Рекомендуется всегда указывать RH_TOKEN и HF_TOKEN через переменные окружения или секреты инфраструктуры для
максимальной гибкости и безопасности.