← Журнал · · Разбор
Как хранить веса модели из 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)