← Журнал · · Разбор

Как хранить веса модели из HuggingFace в S3

Друзья, столкнулся сейчас с задачей кеширования весов из HF в локальном S3, чтобы использовать в VLLM.
Пришел к интересным результатам.

Что нужно знать про кеш HF моделей?
Обычно кеш сохраняется в ~/.cache/huggingface/hub

blobs/: Содержит бинарные файлы моделей и датасетов.
refs/: Хранит информацию о последних ревизиях репозиториев.
snapshots/: Содержит снимки конкретных ревизий репозиториев в виде soft links.

Также сейчас внедряется Chunk-based caching (Xet) - Ээто способ кеширования, при котором большие файлы (например, веса моделей) разбиваются на небольшие чанки (блоки) фиксированного размера. Но пока не все репозитории переведены из GIT LFS в Xet. Поэтому этот способ опустим.

Проблема загрузки кеша в S3
Папка snapshots хранит soft links, которые просто так не засунуть в s3 хранилище.

Варианты решения

1️⃣Копирование через rclone кеша HF 👎
скачиваем веса

huggingface-cli download gpt2

и загружаем в s3 через rclone с флагом --copy-links

rclone copy --copy-links ~/.cache/huggingface/hub/models--gpt2 <s3_config>:<bucket>/path

тогда вместо soft links мы загрузим копии файлов.

Но это увеличит размер вдвое - так что вариант не подходит.

Можем запаковать кеш в архив tar. Тогда сможем загрузить в S3 без проблем, но добавятся операции по архивации и разархивации, что съест время. Можно попробовать формат zstd.

2️⃣Прямое скачивание весов и импорт через local path 👍
Скачиваем веса в конкретную папку. Не забываем про быстрый способ.

HF_HUB_ENABLE_HF_TRANSFER=True huggingface-cli download --local-dir hf_cache/ Qwen/Qwen3-1.7B

Далее клонируем в S3

rclone copy hf_cache/ <s3_config>:<bucket>/path

в VLLM используем вместо пути HF Qwen/Qwen3-1.7B локальный путь скаченных из S3 весов

{
"model":"/root/models/hf_cache",
"served_model_name": "Qwen3-1.7B"
}

Простой и изящный способ)

3️⃣Тензерирование😩
Способ на основе CoreWeave's Tensorizer.
Когда мы решаем проблему не только хранения весов в S3, но и быстрой загрузки в GPU из локальной файловой системы!

Он достоин отдельного поста, так что stay tuned)

Оригинал в Telegram ↗

↑↓ выбор · Enter открыть · Esc закрыть