Hub documentation

Ограничения по хранилищу

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ограничения по хранилищу

В Hugging Face мы стремимся предоставить сообществу ИИ значительные объёмы бесплатного места для хранения в публичных репозиториях, с возможностью докупить дополнительное место при необходимости. Мы также взимаем плату за место для хранения в приватных репозиториях, превышающее бесплатный лимит (см. таблицу ниже).

Ограничения и политики хранения применяются ко всем типам репозиториев (модели, наборы данных, бакеты, …) на Hub.

Мы непрерывно оптимизируем нашу инфраструктуру, чтобы масштабировать хранилище на годы вперед в связи с ростом в сфере ИИ и машинного обучения.

Мы внедрили меры для предотвращения злоупотреблений бесплатным публичным хранилищем. В целом мы просим пользователей и организации убедиться, что загружаемые крупные модели или наборы данных максимально полезны для сообщества (например, по количеству лайков или загрузок). Перейдите на платный аккаунт Organization или User (PRO), чтобы получить повышенные лимиты.

Планы хранения

Тип аккаунтаПубличное хранилищеЧастное хранилище
Бесплатный пользователь или организацияНаилучшие усилия*100 ГБ
PROДо 10 ТБ включено* + дополнительный пакет ✅
гранты доступны для значимых работ†
1 ТБ + оплата по мере использования
Организации команд12 ТБ базовый + 1 ТБ на рабочее место + дополнительный ✅1 ТБ на рабочее место + оплата по мере использования
Организации корпоративного сегмента200 ТБ базовый + 1 ТБ на рабочее место + дополнительный пакет 🏆
До 1 000 ТБ для крупных контрактов
1 ТБ на рабочее место + оплата по мере использования

💡 Командные и корпоративные организации включают 1 ТБ приватного хранилища на каждое место в подписке: например, если в вашей организации 40 участников, то у вас есть 40 ТБ приватного хранилища в рамках подписки.

* Мы стремимся продолжать предоставлять сообществу ИИ щедрые объемы бесплатного хранилища для публичных репозиториев. После первых нескольких гигабайт, пожалуйста, используйте этот ресурс ответственно, загружая контент, который представляет реальную ценность для других пользователей. Если вам требуется значительный объем хранилища, вам необходимо перейти на PRO, Team or Enterprise.

† В некоторых случаях для высокоэффективной работы с открытым исходным кодом, где платный тариф действительно не покрывает потребности, доступны дополнительные квоты на хранилище. Свяжитесь с нами, предоставив доказательства влияния на сообщество (лайки, загрузки, цитирования).

Дополнение Public Storage

Пользователи платных тарифов (PRO, Team или Enterprise) могут оформить подписку на дополнение Public Storage для получения дополнительного публичного хранилища сверх базового лимита своего тарифа.

Дополнение для храненияЦенаЗа ТБ
1 ТБ12 $/мес$12/ТБ/мес
5 ТБ60 долларов в месяц$12/ТБ/мес
10 ТБ120 долларов в месяц$12/ТБ/мес
20 ТБ240 долларов в месяц$12/ТБ/мес
50 ТБ500 долларов в месяц$10/ТБ/мес

Вы можете подписаться на тариф или изменить его на странице настроек Оплата вашего аккаунта или организации. Повышение тарифа вступает в силу немедленно; понижение тарифа запланировано на начало следующего месяца. Если вам требуется больше места для хранения, вы можете связаться с нами, чтобы воспользоваться индивидуальными условиями для больших объёмов.

Частное хранилище Оплата по мере использования

В дополнение к включённым 1 ТБ (или 1 ТБ на рабочее место) частного хранилища в PRO и Team or Enterprise Organizations, за дополнительное частное хранилище взимается плата по вашему способу оплаты в режиме Pay-as-you-go по базовой цене $18/ТБ/мес. Дополнительные скидки на большие объёмы доступны через наших менеджеров по работе с клиентами:

ОбъёмЦена (приватные репозитории)
База$18/ТБ/мес
50 ТБ+$16/ТБ/мес
200 ТБ+$14/ТБ/мес
500 ТБ+$12/ТБ/мес

Подробнее см. в документе по тарифам или посмотрите актуальные цены на huggingface.co/pricing.

Ограничения и рекомендации для репозиториев

Этот раздел не распространяется на Storage Buckets

Помимо ограничений на хранение на уровне аккаунта (пользователя или организации), существуют некоторые ограничения, о которых следует знать при работе с большими объёмами данных в конкретном репозитории, основанном на Git. Учитывая время, необходимое для потоковой передачи данных, неудача при загрузке/публикации в конце процесса или ухудшение качества работы, будь то на hf.co или при локальной работе, могут быть крайне раздражающими. В следующем разделе мы описываем наши рекомендации по оптимальной структуре крупных репозиториев.

Рекомендации

Мы собрали список советов и рекомендаций по структурированию вашего репозитория. Если вы ищете более практические советы, ознакомьтесь с этим руководством о том, как загрузить большой объём данных с помощью библиотеки Python.

ХарактеристикаРекомендуетсяСоветы
Размер репозитория-обновите свой план хранения или свяжитесь с нами для крупных репозиториев (данные объёмом в терабайты)
Файлы в репозитории<100kобъединить данные в меньшее количество файлов
Записей в папке<10kиспользовать подкаталоги в репозитории
Размер файла<200 ГБразделить данные на файлы с чанками
Размер коммита<100 файлов*upload_folder/hf upload автоматически разбивает большие папки на несколько коммитов
Коммиты в репозитории-загрузка нескольких файлов в одном коммите и/или сжатие истории

* Неактуально при прямом использовании CLI git

Пожалуйста, прочитайте следующий раздел, чтобы лучше понять эти ограничения и способы работы с ними.

Пояснения

О чём мы говорим, когда упоминаем «большие загрузки», и какие ограничения с ними связаны? Большие загрузки могут быть очень разнообразными: от репозиториев с несколькими огромными файлами (например, весами модели) до репозиториев с тысячами мелких файлов (например, набором изображений).

Под капотом Hub использует Git для версионирования данных, что накладывает структурные ограничения на то, что вы можете делать в своём репозитории. Если ваш репозиторий приближается к каким-либо из чисел, упомянутых в предыдущем разделе, мы настоятельно рекомендуем ознакомиться с git-sizer, в котором представлена подробная документация о различных факторах, влияющих на ваш опыт работы. Ниже приведён краткий обзор факторов, которые следует учитывать:

  • Размер репозитория: общий объём данных, которые вы планируете загрузить. Для моделей и наборов данных нет ограничения на размер отдельного репозитория, но загрузка учитывается в общей квоте хранилища вашего аккаунта (см. Тарифы на хранилище выше). Если вам нужно больше места, обновите тарифный план или купите дополнительный пакет хранилища.
  • Number of files:
    • Для оптимального опыта работы мы рекомендуем, чтобы общее количество файлов не превышало 100 тыс., а в идеале было значительно меньше. Если файлов больше, попробуйте объединить данные в меньшее количество файлов. Например, файлы json можно объединить в один файл jsonl, а большие наборы данных можно экспортировать в файлы Parquet или в формате WebDataset.
    • Максимальное количество файлов в одной папке не может превышать 10 тыс. файлов. Простое решение — создать структуру репозитория с использованием подкаталогов. Например, репозитория с 1 тыс. папок от 000/ до 999/, каждая из которых содержит не более 1000 файлов, уже достаточно.
  • File size: При загрузке больших файлов (например, весов модели) мы настоятельно рекомендуем разбивать их на части по 200 ГБ каждая.. На это есть несколько причин:
    • Загрузка и скачивание небольших файлов значительно проще как для вас, так и для других пользователей. При потоковой передаче данных могут возникать проблемы с соединением, а использование небольших файлов позволяет избежать необходимости начинать загрузку заново в случае ошибок.
    • Файлы передаются пользователям через CloudFront. По нашему опыту, этот сервис не кэширует очень большие файлы, что приводит к снижению скорости загрузки. В любом случае размер одного файла не превышает 500 ГБ. То есть 500 ГБ — это жёсткий предел для размера одного файла.
  • Количество коммитов: Жёсткого ограничения на общее количество коммитов в истории вашего репозитория нет. Однако, по нашему опыту, удобство работы с Hub начинает снижаться после нескольких тысяч коммитов. Мы постоянно работаем над улучшением сервиса, но следует помнить, что git-репозиторий не предназначен для работы как база данных с большим количеством записей. Если история вашего репозитория становится очень большой, всегда можно объединить все коммиты, чтобы начать с чистого листа, используя super_squash_history из huggingface_hub. Обратите внимание, что это необратимая операция.
  • Количество операций на коммит: Снова здесь нет жёсткого ограничения. Когда коммит загружается на Hub, каждая git-операция (добавление или удаление) проверяется сервером. Если за один раз в коммит попадает сто Large Files, каждый файл проверяется индивидуально, чтобы убедиться, что он был корректно загружен. При отправке данных через HTTP для запроса устанавливается таймаут 60 секунд, что означает, что если процесс занимает больше времени, возникает ошибка. Однако в редких случаях может произойти так, что даже если таймаут сработал на стороне клиента, процесс всё же завершается на стороне сервера. Это можно проверить вручную, просмотрев репозиторий на Hub. Метод upload_folder и команда hf upload автоматически избегают этой проблемы, разбивая большие папки на несколько коммитов. Если вы выполняете коммит вручную, держите около 50–100 файлов на коммит.

Обмен большими наборами данных на Hub

Один из ключевых способов, которыми Hugging Face поддерживает экосистему машинного обучения, — это хостинг датасетов на Hub, включая очень большие. Большие датасеты учитываются в общем квоте хранилища вашего аккаунта, поэтому убедитесь, что ваш план хранилища имеет достаточную емкость перед загрузкой. Дополнительное публичное хранилище можно приобрести как дополнительную опцию.

Для размещения больших наборов данных на Hub требуются следующие условия:

  • Карточка набора данных: мы хотим убедиться, что ваш набор данных может эффективно использоваться сообществом, и одним из ключевых способов обеспечить это является карточка набора данных. Это руководство даёт обзор того, как написать карточку набора данных.
  • Вы делитесь набором данных, чтобы обеспечить его повторное использование сообществом. Если вы планируете загрузить набор данных, который, как ожидается, не будет использоваться повторно, другие платформы, вероятно, будут более подходящими.
  • Вы должны соблюдать ограничения репозитория, описанные выше.
  • Использование форматов файлов, хорошо интегрированных с экосистемой Hugging Face. Мы хорошо поддерживаем форматы Parquet и WebDataset, которые часто являются хорошим выбором для эффективного обмена большими наборами данных. Это также гарантирует, что просмотрщик наборов данных будет работать с вашим набором данных.
  • Избегайте использования пользовательских скриптов загрузки при работе с datasets. По нашему опыту, наборы данных, для использования которых требуется пользовательский код, как правило, имеют ограниченную возможность повторного использования.

Если какие-либо из этих требований трудно выполнить из-за типа данных или области, в которой вы работаете, пожалуйста, свяжитесь с нами.

Обмен большими объёмами моделей на Hub

Как и в случае с наборами данных, крупные модели или большие объёмы моделей (например, сотни автоматических квантов) учитываются в общей квоте хранилища вашего аккаунта. Убедитесь, что ваш план хранилища имеет достаточную ёмкость, либо приобретите дополнение для хранилища.

Гранты для исследовательских команд и некоммерческих организаций

Мы рекомендуем академическим и исследовательским учреждениям перейти на Team, Enterprise или Academia Hub для гарантированных лимитов хранилища. В некоторых случаях гранты на хранилище могут быть доступны для высокоэффективной работы с открытым исходным кодом, если платный тариф действительно не покрывает потребности. Такие заявки рассматриваются индивидуально и требуют подтверждения влияния на сообщество (количество загрузок, цитирования, принятие сообществом и т. д.). Напишите на datasets@huggingface.co или models@huggingface.co с подробным предложением.

Как освободить место в хранилище моего аккаунта/организации?

Существует несколько способов освободить место в вашем аккаунте или организации. Во-первых, если вам нужно больше места, перейдите на тарифный план PRO, Team или Enterprise, чтобы увеличить лимиты хранилища.

⚠️ Важно: Удаление больших файлов — необратимая операция. Перед продолжением убедитесь, что вы создали резервную копию своих файлов.

Ключевые моменты, которые стоит запомнить:

  • Удаление только указателей LFS не освобождает место
  • Если вы не переписываете историю Git, будущие проверки веток/тегов, содержащих удалённые файлы LFS с существующими указателями lfs, завершатся ошибкой (чтобы избежать ошибок, добавьте следующую строку в файл .gitconfig: lfs.skipdownloaderrors=true)

Удаление отдельных файлов LFS

  1. Перейдите на страницу настроек вашего репозитория
  2. Нажмите «List LFS files» в разделе «Storage»
  3. Используйте меню действий для удаления конкретных файлов

Удаление ссылок на pull request

Pull requests создают git-ссылки, в которых хранятся их коммиты. После закрытия или слияния PR вы можете удалить его ссылку, чтобы освободить место на диске. Это особенно полезно в следующих случаях:

  • PRs содержат большие файлы, которые никогда не были объединены
  • Вы сжали основную ветку и удалили файлы позже — эти файлы остаются в истории ветки PR, даже если они не были добавлены самим PR

Чтобы удалить ref PR, откройте закрытый или объединённый PR и найдите внизу уведомление о хранилище, в котором указано примерное количество освобождаемого места. Нажмите «Delete ref», чтобы безвозвратно удалить его.

Удаление ссылки PR необратимо и не позволит никому получить или проверить эти коммиты локально.

Супер-сжатие вашего репозитория с помощью API

Операция super-squash сжимает всю историю Git в один коммит. Используйте super-squash, если вам нужно освободить место, занятое старыми версиями LFS, которые вы не используете. Эта операция доступна только через Hub Python Library или API.

⚠️ Важно: Это необратимая операция, история коммитов будет безвозвратно утеряна, а история файлов LFS будет удалена

Влияние операции squash на вашу квоту хранилища не проявляется мгновенно и будет отражено в вашей квоте в течение 36 часов.

Дополнительно: отслеживание ссылок на файлы LFS

Если вы нашли файл LFS в списке «List LFS files» вашего репозитория, но не знаете, откуда он взялся, вы можете проследить его историю по SHA-256 OID с помощью команды git log:

git log --all -p -S <SHA-256-OID>

Например:

git log --all -p -S 68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3

commit 5af368743e3f1d81c2a846f7c8d4a028ad9fb021
Date:   Sun Apr 28 02:01:18 2024 +0200

    Update LayerNorm tensor names to weight and bias

diff --git a/model.safetensors b/model.safetensors
index a090ee7..e79c80e 100644
--- a/model.safetensors
+++ b/model.safetensors
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+oid sha256:0bb7a1683251b832d6f4644e523b325adcf485b7193379f5515e6083b5ed174b
 size 440449768

commit 0a6aa9128b6194f4f3c4db429b6cb4891cdb421b (origin/pr/28)
Date:   Wed Nov 16 15:15:39 2022 +0000

    Adding `safetensors` variant of this model (#15)
    
    
    - Adding `safetensors` variant of this model (18c87780b5e54825a2454d5855a354ad46c5b87e)
    
    
    Co-authored-by: Nicolas Patry <Narsil@users.noreply.huggingface.co>

diff --git a/model.safetensors b/model.safetensors
new file mode 100644
index 0000000..a090ee7
--- /dev/null
+++ b/model.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+size 440449768

commit 18c87780b5e54825a2454d5855a354ad46c5b87e (origin/pr/15)
Date:   Thu Nov 10 09:35:55 2022 +0000

    Adding `safetensors` variant of this model

diff --git a/model.safetensors b/model.safetensors
new file mode 100644
index 0000000..a090ee7
--- /dev/null
+++ b/model.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+size 440449768
Update on GitHub