# Парадигма Git и HTTP

Библиотека `huggingface_hub` предназначена для взаимодействия с Hugging Face Hub — коллекцией репозиториев на базе git (моделей, наборов данных или Spaces). Существует два основных способа доступа к Hub с помощью `huggingface_hub`.

Первый подход, так называемый «git-based», основан на использовании стандартных команд `git` непосредственно в терминале. Этот метод позволяет клонировать репозитории, создавать коммиты и вручную отправлять изменения. Второй вариант, называемый «HTTP-based», предполагает отправку HTTP-запросов с помощью клиента [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi). Рассмотрим преимущества и недостатки каждого из подходов.

## Git: исторический подход на основе CLI

Сначала большинство пользователей взаимодействовали с Hugging Face Hub с помощью обычных команд `git`, таких как `git clone`, `git add`, `git commit`, `git push`, `git tag` или `git checkout`.

Этот подход позволяет работать с полной локальной копией репозитория на вашем компьютере, как в традиционной разработке ПО. Это может быть преимуществом, если вам нужен доступ в автономном режиме или вы хотите работать с полной историей репозитория. Однако у этого подхода есть и недостатки: вы сами отвечаете за актуальность локальной копии репозитория, управление учётными данными и работу с большими файлами (через `git-lfs`), что может стать неудобным при работе с большими моделями машинного обучения или наборами данных.

Во многих рабочих процессах машинного обучения может потребоваться скачать лишь несколько файлов для инференса или конвертировать веса, не клонируя весь репозиторий. В таких случаях использование `git` может быть избыточным и вносить ненужную сложность.

## HfApi: гибкий и удобный HTTP-клиент

Класс [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi) был разработан как альтернатива использованию локальных git-репозиториев, которые могут быть неудобны в обслуживании, особенно при работе с крупными моделями или наборами данных. Класс [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi) предоставляет тот же функционал, что и git-ориентированные рабочие процессы, — такие как загрузка и отправка файлов, а также создание веток и тегов, — но без необходимости поддерживать локальную папку в синхронизированном состоянии.

Помимо функциональности, уже предоставляемой `git`, класс [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi) предлагает дополнительные возможности, такие как управление репозиториями, загрузка файлов с использованием кэширования для эффективного повторного использования, поиск репозиториев и метаданных на Hub, доступ к функциям сообщества, таким как обсуждения, PR и комментарии, а также настройка аппаратного обеспечения и секретов Spaces.

## Что использовать? И когда?

В целом, **HTTP-подход является рекомендуемым способом использования** `huggingface_hub` во всех случаях. [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi) позволяет получать и отправлять изменения, работать с PR, тегами и ветками, взаимодействовать с обсуждениями и многое другое.

Однако не все команды git доступны через [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi). Некоторые из них, возможно, никогда не будут реализованы, но мы постоянно стремимся к улучшению и сокращению разрыва. Если вы не видите, что ваш сценарий использования поддерживается, пожалуйста, создайте [issue на GitHub](https://github.com/huggingface/huggingface_hub)! Мы приветствуем обратную связь, чтобы вместе с нашими пользователями и для них развивать экосистему HF.

Предпочтение HTTP-интерфейса [HfApi](/docs/huggingface_hub/v2.4.0/ru/package_reference/hf_api#huggingface_hub.HfApi) перед прямыми командами `git` не означает, что версионирование через git скоро исчезнет из Hugging Face Hub. Использование `git` локально в рабочих процессах, где это уместно, всегда будет возможно.

