Hub Python Library documentation
Загрузка файлов
Загрузка файлов
Загрузка одного файла
hf_hub_download
huggingface_hub.hf_hub_download
< source >( repo_id: strfilename: strsubfolder: str | None = Nonerepo_type: str | None = Nonerevision: str | None = Nonelibrary_name: str | None = Nonelibrary_version: str | None = Nonecache_dir: str | pathlib.Path | None = Nonelocal_dir: str | pathlib.Path | None = Noneuser_agent: dict | str | None = Noneforce_download: bool = Falseetag_timeout: float = 10token: bool | str | None = Nonelocal_files_only: bool = Falseheaders: dict[str, str] | None = Noneendpoint: str | None = Nonetqdm_class: type[tqdm.std.tqdm] | None = Nonedry_run: bool = False ) → str or DryRunFileInfo
Параметры
- repo_id (
str) — Имя пользователя или организации и имя репозитория, разделённые символом/. - filename (
str) — Имя файла в репозитории. - subfolder (
str, необязательный) — Необязательное значение, соответствующее папке внутри репозитория модели. - repo_type (
str, необязательный) — установите"dataset","space"или"kernel", если загрузка выполняется из репозитория датасета, пространства или ядра,Noneили"model", если загрузка выполняется из репозитория модели. По умолчанию —None. - revision (
str, необязательный) — Необязательный идентификатор ревизии Git, который может быть именем ветки, тегом или хэшем коммита. - library_name (
str, необязательный) — Название библиотеки, которой соответствует объект. - library_version (
str, необязательный) — Версия библиотеки. - cache_dir (
str,Path, необязательный) — Путь к папке, в которой хранятся кэшированные файлы. - local_dir (
strилиPath, необязательный) — Если указано, загруженный файл будет размещён в этой директории. - user_agent (
dict,str, необязательный) — Информация о user-agent в виде словаря или строки. - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли скачать файл, даже если он уже есть в локальном кэше. - etag_timeout (
float, необязательный, по умолчанию10) — При получении ETag, сколько секунд ждать отправки данных сервером, прежде чем прервать ожидание; значение передаётся вhttpx2.request. - token (
str,bool, необязательный) — Токен, используемый для загрузки.- Если
True, токен читается из папки конфигурации HuggingFace. - Если передана строка, она используется в качестве токена аутентификации.
- Если
- local_files_only (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, не загружать файл, а вернуть путь к локальному кэшированному файлу, если он существует. - headers (
dict, необязательный) — Дополнительные заголовки, которые будут отправлены вместе с запросом. - endpoint (
str, необязательный) — Точка входа Hub, на которую отправляется запрос. По умолчанию используется значениеHF_ENDPOINT. - tqdm_class (
tqdm, необязательный) — Если указан, переопределяет поведение полосы прогресса по умолчанию. Передаваемый аргумент должен наследоваться отtqdm.auto.tqdmили как минимум имитировать его поведение. По умолчанию используется собственная полоса прогресса HF, которую можно отключить, установив переменную окруженияHF_HUB_DISABLE_PROGRESS_BARS. - dry_run (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, выполняется тестовый прогон без фактической загрузки файла. Возвращает объект DryRunFileInfo с информацией о том, что было бы загружено.
Возвращает
str или DryRunFileInfo
- Если
dry_run=False: локальный путь к файлу или, если сеть отключена, последняя версия файла, кэшированная на диске. - Если
dry_run=True: объект DryRunFileInfo, содержащий информацию о загрузке.
Исключения
RepositoryNotFoundError или RevisionNotFoundError или ~utils.RemoteEntryNotFoundError или LocalEntryNotFoundError или EnvironmentError или OSError или ValueError
- RepositoryNotFoundError —
Если репозиторий, из которого выполняется загрузка, не найден. Это может быть связано с тем, что он не существует,
или с тем, что он установлен как
private, и у вас нет к нему доступа. - RevisionNotFoundError — Если не удалось найти ревизию для загрузки.
~utils.RemoteEntryNotFoundError— Если файл для загрузки не найден.- LocalEntryNotFoundError — Если сеть отключена или недоступна, а файл не найден в кэше.
EnvironmentError— еслиtoken=True, но токен не найден.OSError— Если ETag не может быть определён.ValueError— Если значение какого-либо параметра недействительно.
Загрузите указанный файл, если он ещё отсутствует в локальном кэше.
Новая структура кэшируемых файлов выглядит так:
- Каталог кэша содержит одну подпапку для каждого repo_id (с разделением по типу репозитория)
- внутри каждой папки репозитория:
- refs — это список последних известных пар ревизия => commit_hash
- blobs содержит фактические файлы (идентифицируемые по их git-sha или sha256, в зависимости от того, являются ли они файлами LFS или нет)
- snapshots содержит одну подпапку на каждый коммит, каждый «коммит» содержит подмножество файлов, которые были разрешены на этом конкретном коммите. Имя каждого файла является символьной ссылкой на blob на этом конкретном коммите.
[ 96] .
└── [ 160] models--julien-c--EsperBERTo-small
├── [ 160] blobs
│ ├── [321M] 403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bd
│ ├── [ 398] 7cb18dc9bafbfcf74629a4b760af1b160957a83e
│ └── [1.4K] d7edf6bd2a681fb0175f7735299831ee1b22b812
├── [ 96] refs
│ └── [ 40] main
└── [ 128] snapshots
├── [ 128] 2439f60ef33a0d46d85da5001d52aeda5b00ce9f
│ ├── [ 52] README.md -> ../../blobs/d7edf6bd2a681fb0175f7735299831ee1b22b812
│ └── [ 76] pytorch_model.bin -> ../../blobs/403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bd
└── [ 128] bbc77c8132af1cc5cf678da3f1ddf2de43606d48
├── [ 52] README.md -> ../../blobs/7cb18dc9bafbfcf74629a4b760af1b160957a83e
└── [ 76] pytorch_model.bin -> ../../blobs/403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bdЕсли указан local_dir, структура файлов из репозитория будет воспроизведена в этом месте. При использовании этого параметра cache_dir не используется, а в корне local_dir создаётся папка .cache/huggingface/ для хранения метаданных, связанных с загруженными файлами. Хотя этот механизм менее надёжен, чем основная система кэширования, он оптимизирован для регулярного получения последней версии репозитория.
hf_hub_url
huggingface_hub.hf_hub_url
< source >( repo_id: strfilename: strsubfolder: str | None = Nonerepo_type: str | None = Nonerevision: str | None = Noneendpoint: str | None = None )
Параметры
- repo_id (
str) — Имя пространства имён (пользователя или организации) и имя репозитория, разделённые символом/. - filename (
str) — Имя файла в репозитории. - subfolder (
str, необязательный) — Необязательное значение, соответствующее папке внутри репозитория. - repo_type (
str, необязательный) — установите"dataset","space"или"kernel", если загрузка выполняется из репозитория датасета, пространства или ядра,Noneили"model", если загрузка выполняется из репозитория модели. По умолчанию —None. - revision (
str, необязательный) — Необязательный идентификатор ревизии Git, который может быть именем ветки, тегом или хэшем коммита. - endpoint (
str, необязательный) — Точка входа Hub, на которую отправляется запрос. По умолчанию используется значениеHF_ENDPOINT.
Сформируйте URL файла на основе предоставленной информации.
Разрешённый адрес может быть как URL, размещённым на huggingface.co, так и ссылкой на Cloudfront (сеть доставки контента, или CDN) для больших файлов размером более нескольких МБ.
Пример:
>>> from huggingface_hub import hf_hub_url
>>> hf_hub_url(
... repo_id="julien-c/EsperBERTo-small", filename="pytorch_model.bin"
... )
'https://huggingface.co/julien-c/EsperBERTo-small/resolve/main/pytorch_model.bin'Примечания:
Cloudfront дублируется по всему миру, поэтому загрузка для конечного пользователя значительно быстрее (а также это снижает наши затраты на пропускную способность).
Cloudfront по умолчанию агрессивно кэширует файлы (TTL по умолчанию составляет 24 часа), однако в данном случае это не проблема, так как на huggingface.co мы реализуем систему версионирования на основе git, что означает, что файлы хранятся на S3/Cloudfront с адресацией по содержимому (то есть имя файла является его хэшем). Использование имен файлов с адресацией по содержимому гарантирует, что кэш никогда не будет устаревшим.
Что касается кэширования на стороне клиента в этой библиотеке, мы основываем наше кэширование на метке сущности объекта (
ETag), которая является идентификатором конкретной версии ресурса [1]_. ETag объекта: его git-sha1, если он хранится в git, или его sha256, если он хранится в git-lfs.
Ссылки:
Скачать снимок репозитория
huggingface_hub.snapshot_download
< source >( repo_id: strrepo_type: str | None = Nonerevision: str | None = Nonecache_dir: str | pathlib.Path | None = Nonelocal_dir: str | pathlib.Path | None = Nonelibrary_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = Noneetag_timeout: float = 10force_download: bool = Falsetoken: bool | str | None = Nonelocal_files_only: bool = Falseallow_patterns: list[str] | str | None = Noneignore_patterns: list[str] | str | None = Nonemax_workers: int = 8tqdm_class: type[tqdm.asyncio.tqdm_asyncio] | None = Noneheaders: dict[str, str] | None = Noneendpoint: str | None = Nonedry_run: bool = False ) → str or list of DryRunFileInfo
Параметры
- repo_id (
str) — Имя пользователя или организации и имя репозитория, разделённые символом/. - repo_type (
str, необязательный) — установите"dataset","space"или"kernel", если загрузка выполняется из репозитория датасета, пространства или ядра,Noneили"model", если загрузка выполняется из репозитория модели. По умолчанию —None. - revision (
str, необязательный) — Необязательный идентификатор ревизии Git, который может быть именем ветки, тегом или хэшем коммита. - cache_dir (
str,Path, необязательный) — Путь к папке, в которой хранятся кэшированные файлы. - local_dir (
strилиPath, необязательный) — Если указано, загруженные файлы будут размещены в этой директории. - library_name (
str, необязательный) — Название библиотеки, которой соответствует объект. - library_version (
str, необязательный) — Версия библиотеки. - user_agent (
str,dict, необязательный) — Информация о user-agent в виде словаря или строки. - etag_timeout (
float, необязательный, по умолчанию10) — При получении ETag, сколько секунд ждать отправки данных сервером, прежде чем прервать ожидание; значение передаётся вhttpx2.request. - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли скачать файл, даже если он уже есть в локальном кэше. - token (
str,bool, необязательный) — Токен, используемый для загрузки.- Если
True, токен читается из папки конфигурации HuggingFace. - Если передана строка, она используется в качестве токена аутентификации.
- Если
- headers (
dict, необязательный) — Дополнительные заголовки, которые нужно включить в запрос. Эти заголовки имеют приоритет над остальными. - endpoint (
str, необязательный) — Точка входа Hub, на которую отправляется запрос. По умолчанию используется значениеHF_ENDPOINT. - local_files_only (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, не загружать файлы, даже если их нет вcache_dirилиlocal_dir. - allow_patterns (
list[str]илиstr, необязательный) — Если указано, загружаются только файлы, соответствующие хотя бы одному шаблону. - ignore_patterns (
list[str]илиstr, необязательный) — Если указано, файлы, соответствующие любому из шаблонов, не загружаются. - max_workers (
int, необязательный) — Количество параллельных потоков для загрузки файлов (1 поток = 1 файл). По умолчанию: 8. - tqdm_class (
tqdm, необязательный) — Если указан, переопределяет поведение полосы прогресса по умолчанию. Передаваемый аргумент должен наследоваться отtqdm.auto.tqdmили как минимум имитировать его поведение. Обратите внимание, чтоtqdm_classне передается для каждой отдельной загрузки. По умолчанию используется собственная полоса прогресса HF, которую можно отключить, установив переменную окруженияHF_HUB_DISABLE_PROGRESS_BARS. - dry_run (
bool, необязательный, по умолчаниюFalse) — ЕслиTrue, выполняется тестовый прогон без фактической загрузки файлов. Возвращает список объектов DryRunFileInfo с информацией о том, какие файлы были бы загружены.
Возвращает
str или список DryRunFileInfo
- Если
dry_run=False: локальный путь к снимку. - Если
dry_run=True: список объектов DryRunFileInfo с информацией о загрузке.
Исключения
RepositoryNotFoundError или RevisionNotFoundError или IncompleteSnapshotError или EnvironmentError или OSError или ValueError
- RepositoryNotFoundError —
Если репозиторий, из которого выполняется загрузка, не найден. Это может быть связано с тем, что он не существует
или с тем, что он установлен как
private, и у вас нет к нему доступа. - RevisionNotFoundError — Если не удалось найти ревизию для загрузки.
- IncompleteSnapshotError —
Если Hub недоступен (офлайн, проблема с подключением или
local_files_only=True), а в кэшированном снимке отсутствуют некоторые из запрошенных файлов. EnvironmentError— еслиtoken=Trueи токен не найден.OSError— если ETag не может быть определён.ValueError— Если значение какого-либо параметра недействительно.
Скачайте файлы репозитория.
Скачайте весь снимок файлов репозитория с указанной ревизией. Это полезно, когда вам нужны все файлы из репозитория, потому что вы не знаете заранее, какие именно из них понадобятся a priori. Все файлы размещаются во вложенной папке, чтобы сохранить их путь и имя файла относительно этой папки. Вы также можете отфильтровать файлы для скачивания с помощью allow_patterns и ignore_patterns.
Если указан local_dir, структура файлов из репозитория будет воспроизведена в этом месте. При использовании этого параметра cache_dir не используется, а в корне local_dir создаётся папка .cache/huggingface/ для хранения метаданных, связанных с загруженными файлами. Хотя этот механизм менее надёжен, чем основная система кэширования, он оптимизирован для регулярного получения последней версии репозитория.
Альтернативный вариант — клонировать репозиторий, но для этого необходимо установить и правильно настроить git и git-lfs. Кроме того, при клонировании репозитория с помощью git невозможно отфильтровать, какие именно файлы нужно скачать.
Чтение кэшированного дерева репозитория
huggingface_hub.get_cached_repo_tree
< source >( repo_id: strrepo_type: str | None = Nonerevision: str | None = Nonecache_dir: str | pathlib.Path | None = Nonelocal_dir: str | pathlib.Path | None = None ) → list[RepoFile]
Параметры
- repo_id (
str) — Имя пользователя или организации и имя репозитория, разделённые символом/. - repo_type (
str, необязательный) — Установите"dataset","space"или"kernel", если вы перечисляете элементы из репозитория датасета, пространства или ядра,Noneили"model", если вы перечисляете элементы из репозитория модели. По умолчанию —None. - revision (
str, необязательный) — Необязательный идентификатор ревизии Git, который может быть именем ветки, тегом или хэшем коммита. По умолчанию используется ветка по умолчанию. Имена веток/тегов разрешаются в хэш коммита с использованием локального кэша (refs/). - cache_dir (
str,Path, необязательный) — Путь к папке, в которой хранятся кэшированные файлы. По умолчанию используется значениеHF_HUB_CACHE. - local_dir (
strилиPath, необязательный) — Если указано, читать список дерева, закэшированный при загрузке вlocal_dir(изlocal_dir/.cache/huggingface/), вместо основного кэша. Ревизии веток/тегов по-прежнему решаются в хэш коммита с использованием основного кэша (cache_dir).
Возвращает
list[RepoFile]
Список объектов RepoFile, закэшированных для этой ревизии.
Исключения
- CachedRepoTreeNotFoundError — Если для запрошенной ревизии не кэширован список дерева (например, репозиторий никогда не скачивался в этой ревизии).
Возвращает кэшированный список файлов репозитория для указанной ревизии без обращения к сети.
Список дерева представляет собой набор файлов (с метаданными для загрузки) репозитория на определённом коммите. Он формируется на диске как побочный эффект вызова snapshot_download() (см. файлы кэша trees/<commit_hash>.json) и используется для пропуска сетевых запросов при последующих загрузках. Данная функция предоставляет прямой доступ к этому кэшу.
Если вам нужен текущий список файлов в репозитории на Hub, используйте list_repo_tree().
Разрешить ревизию
Разрешите имя ветки/тега в хеш коммита один раз, затем передавайте результат, чтобы зафиксировать все загрузки на одном и том же коммите. См. HfApi.resolve_revision() и руководство по системе кэширования.
ResolvedRevision
класс huggingface_hub.ResolvedRevision
< source >( resolved: strinitial: str | None = Nonerepo_id: str | None = Nonerepo_type: str | None = None )
Ревизия git, которая уже была разрешена в хеш коммита.
ResolvedRevision является подклассом str, поэтому его можно передавать в любой метод huggingface_hub, принимающий аргумент revision. Его строковое значение — это исходно запрошенная пользователем ревизия (например, "main", "refs/pr/4"), что делает URL и сообщения об ошибках читаемыми, тогда как .resolved содержит хеш коммита, на который она указывает.
Экземпляры создаются с помощью HfApi.resolve_revision(), который также кэширует сопоставление revision -> commit hash
в локальном кэше (папка refs/).
Хеш коммита имеет значение только для того репозитория, относительно которого он был разрешён, поэтому экземпляр также запоминает этот репозиторий. Повторное разрешение для другого репозитория не является ошибкой: снова разрешается изначально запрошенная ревизия (см. HfApi.resolve_revision()).
Пример:
>>> from huggingface_hub import resolve_revision
>>> revision = resolve_revision("openai-community/gpt2")
>>> revision
ResolvedRevision(initial=None, resolved='607a30d783dfa663caf39e06633721c8d4cfcd7e')
>>> revision == "main" # it's a string
True
>>> revision.resolved
'607a30d783dfa663caf39e06633721c8d4cfcd7e'Получить метаданные файла
get_hf_file_metadata
huggingface_hub.get_hf_file_metadata
< source >( url: strtoken: bool | str | None = Nonetimeout: float | None = 10library_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = Noneheaders: dict[str, str] | None = Noneendpoint: str | None = Noneretry_on_errors: bool = False )
Параметры
- url (
str) — URL файла, например, возвращаемый hf_hub_url(). - token (
strилиbool, необязательный) — Токен, используемый для загрузки. Если True, токен читается из папки конфигурации HuggingFace. Если False или None, токен не предоставляется. Если строка, она используется как токен аутентификации.- Если
True, токен читается из папки конфигурации HuggingFace. - Если
FalseилиNone, то токен не предоставляется. - Если передана строка, она используется в качестве токена аутентификации.
- Если
- timeout (
float, необязательный, по умолчанию 10) — Сколько секунд ждать отправки метаданных сервером, прежде чем прервать ожидание. - library_name (
str, необязательный) — Название библиотеки, которой соответствует объект. - library_version (
str, необязательный) — Версия библиотеки. - user_agent (
dict,str, необязательный) — Информация о user-agent в виде словаря или строки. - headers (
dict, необязательный) — Дополнительные заголовки, которые будут отправлены вместе с запросом. - endpoint (
str, необязательный) — Endpoint Hub. По умолчанию https://huggingface.co. - retry_on_errors (
bool, необязательный, по умолчаниюFalse) — Повторять ли попытки при ошибках (429, 5xx, таймаут, сетевые ошибки). Если False, повторные попытки не выполняются для быстрого перехода к локальному кэшу.
Получить метаданные файла, версионируемого на Hub, для заданного URL.
HfFileMetadata
класс huggingface_hub.HfFileMetadata
< source >( commit_hash: str | Noneetag: str | Nonelocation: strsize: int | Nonexet_file_data: huggingface_hub.utils._xet.XetFileData | None )
Параметры
- commit_hash (
str, необязательный) — commit_hash, связанный с файлом. - etag (
str, необязательный) — Etag файла на сервере. - location (
str) — Место для загрузки файла. Может быть URL Hub или нет (CDN). - size (
size) — Размер файла. Для файла LFS содержит размер фактического файла LFS, а не указателя. - xet_file_data (
XetFileData, необязательный) — Информация Xet для файла. Задается только в том случае, если файл хранится в хранилище Xet.
Структура данных, содержащая информацию о версии файла, размещенного на Hub.
Возвращается get_hf_file_metadata() на основе URL.
Кэширование
Методы, показанные выше, предназначены для работы с системой кэширования, которая предотвращает повторную загрузку файлов. Система кэширования была обновлена в v0.8.0 и стала центральной системой кэширования, общей для всех библиотек, зависящих от Hub.
Ознакомьтесь с руководством по системе кэширования, чтобы получить подробное описание кэширования на HF.
Update on GitHub