tl;dr ArtiVC работает молниеносно.

Недавно мы выпустили ArtiVC, наше централизованное решение для управления версиями файлов, специально разработанное для больших файлов. После публикации релиза на Reddit и в других местах постоянно возникал один вопрос: Как ArtiVC работает в тестах по сравнению с другими решениями?.

Чтобы ответить на этот вопрос, мы сравнили скорость ArtiVC с тремя другими популярными инструментами для передачи и хранения данных — AWS CLI, Rclone и DVC. Полный сравнительный отчет можно найти на новом веб-сайте ArtiVC, но здесь мы выбрали некоторые из наиболее интересных моментов из результатов и поговорим о том, почему ArtiVC работает так хорошо.

Запрос, запрос, совсем наоборот

Чтобы понять скорость ArtiVC, вам также необходимо понять, как ArtiVC работает внутри. Но сначала давайте посмотрим, как работает другой популярный инструмент управления версиями — DVC.

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

DVC перечислил два метода для определения этого:

  1. Запрос для каждого отдельного файла
  2. Запрос полного удаленного списка

Какой из этих методов даст наилучшую производительность, зависит от количества файлов, присутствующих на локальном или удаленном диске. Это связано с тем, что запросы к удаленному хранилищу влекут за собой накладные расходы на вызов API, что занимает время. Зная это, можно найти порог, за которым оптимально получить полный удаленный листинг.

Третий метод

Чем отличается ArtiVC?

Централизованный характер ArtiVC означает, что существует единственный источник достоверной информации о том, какие файлы существуют на удаленном компьютере, и это объект фиксации. Объект фиксации загружается только после того, как все файлы будут отправлены на удаленный сервер, поэтому это гарантированно будет точным списком файлов, которые были добавлены в репозиторий.

Преимущество этого заключается в том, что для запроса удаленного объекта фиксации требуется только один запрос API. Затем локальные файлы можно сравнить и передать на удаленный. Нет необходимости запрашивать каждый файл или даже запрашивать полный удаленный список, который может быть разделен на несколько вызовов API.

Покажи мне цифры

Метод ArtiVC оказывает огромное влияние на производительность в реальном мире. Приведенный ниже эталонный тест показывает время, необходимое для определения файлов, которые необходимо передать, с использованием функции пробного запуска каждого инструмента в трех сценариях.

  • 50000 локальных файлов и никаких удаленных файлов
  • 500 локальных файлов и 50000 удаленных файлов
  • 1 локальный файл и 50000 удаленных файлов

Для каждого сценария ArtiVC работает молниеносно — около 1 секунды.

Ознакомьтесь с отчетом ArtiVC тест для получения полных результатов, включая тесты передачи больших файлов и большого количества файлов (спойлер: это также очень быстро в каждом из этих сценариев); а обзор структуры репозитория — на странице Как это работает.

Попробуйте сами

ArtiVC также является автономным интерфейсом командной строки, для его использования не требуется сервер или дополнительные инструменты.

Установите его с помощью Homebrew или загрузите последний бинарный файл с GitHub.

brew tap infuseai/artivc
brew install artivc

Затем перейдите на страницу Начало работы, чтобы настроить. Если вам нравится то, что вы видите, рассмотрите возможность поставить нам звезду на GitHub.

InfuseAI ❤ Открытый исходный код

Открытый исходный код течет по нашим венам. Посмотрите другие наши проекты:

  • PrimeHub: полный жизненный цикл MLOps на одной платформе
  • PipeRider: наблюдаемость данных по всем вашим пайплайнам
  • ArtiV: современный подход к управлению версиями для больших файлов
  • colab-xterm: Как насчет полноценного терминала TTY на бесплатном уровне Google Colab? Да, пожалуйста.

Не забудьте присоединиться к нашему сообществу машинного обучения, следите за нами в Интернете здесь:

  • Присоединяйтесь к InfuseAI Discord, чтобы общаться на темы науки о данных и MLOps.
  • Подпишитесь на нас в Твиттере
  • Посмотреть все наши проекты GitHub