Hub documentation
Обратная совместимость с LFS
Обратная совместимость с LFS
Загрузки с устаревших или не поддерживающих Xet клиентов по-прежнему проходят по стандартному пути Git LFS, даже если репозиторий уже использует хранилище Xet. После загрузки файла в LFS фоновый процесс автоматически мигрирует его в хранилище Xet. Архитектура Xet обеспечивает обратную совместимость для устаревших клиентов, загружающих файлы из репозиториев с поддержкой Xet, за счёт моста Git LFS. Клиент с поддержкой Xet получает информацию о реконструкции файла из CAS для загрузки файла из хранилища Xet, тогда как устаревший клиент получает от моста единый URL, который выполняет работу по реконструкции запрашиваемого файла и возвращает URL ресурса. Это позволяет загружать файлы по URL, чтобы вы могли продолжать использовать веб-интерфейс Hub или curl. Благодаря автоматической миграции загрузок файлов LFS и возможности для старых клиентов продолжать загрузку файлов из репозиториев с поддержкой Xet, разработчики и остальные пользователи Hub могут обновлять свои конвейеры в собственном темпе.
Хранилище Xet обеспечивает бесшовный переход для существующих репозиториев Hub. Не нужно даже знать, используется ли бэкенд Xet. Репозитории с поддержкой Xet продолжают использовать формат файлов-указателей Git LFS; добавление Xet backed hash присутствует только в веб-интерфейсе для удобства. На практике это означает, что существующие и вновь созданные репозитории не будут выглядеть по-разному при выполнении bare clone. Для каждого крупного (или бинарного) файла по-прежнему будет создаваться файл-указатель, соответствующий спецификации файлов-указателей Git LFS.
Эта симметрия позволяет клиентам, не поддерживающим Xet (например, более ранним версиям huggingface_hub, взаимодействовать с репозиториями на базе Xet без каких-либо проблем. Более того, в рамках одного репозитория поддерживается смешанное использование файлов, хранящихся в Git LFS и Xet. Бэкенд Xet указывает, находится ли файл в хранилище Git LFS или Xet, что позволяет сервисам нижнего уровня запрашивать правильные URL из S3, независимо от того, в какой системе хранения размещено содержимое.
Устаревшее хранилище: Git LFS
Устаревшая система хранения на Hub, Git LFS, использует многие из тех же соглашений, что и репозитории с поддержкой Xet. Бэкенд Git LFS на Hub — это Amazon Simple Storage Service (S3). При вызове Git LFS содержимое файлов сохраняется в S3, где имя файла для последующего доступа формируется на основе хеша SHA256. Эта архитектура хранения относительно проста и позволила Hub хранить файлы миллионов репозиториев моделей, наборов данных и пространств.
Основное ограничение Git LFS заключается в его файловом подходе к дедупликации. Любое изменение файла, независимо от того, насколько оно велико или мало, приводит к тому, что версионируется весь файл. Это вызывает значительные накладные расходы при передаче файлов, поскольку при отправке в репозиторий загружается весь файл, а при получении последней версии на ваш компьютер — скачивается весь файл.
Это приводит к ухудшению опыта разработки и увеличению количества дополнительных хранилищ.
Update on GitHub