Вы можете использовать удаленные хранилища DVC для совместного использования экспериментов и их данных через машины.
Обзор
???? Совместное использование экспериментов для сравнения моделей машинного обучения важно, когда вы работаете в команде.Настройка удаленных хранилищ DVC в дополнение к Git позволяет вам делиться всеми данными, кодом и гиперпараметрами. Когда вы используете DVC, вы можете объединять свои данные и изменения кода для каждого эксперимента и передавать их в удаленное хранилище
Автор: Milecia McGregor
Оригинал: Running Collaborative Experiments
Перевод статьи подготовлен совместно с Моргуновой Анной, за что ей огромное спасибо ???? Другие материалы ML REPA и ссылки на видео митапов и конференций можно найти в открытой странице в Notion.
Интро
Совместное использование экспериментов для сравнения моделей машинного обучения важно, когда вы работаете с командой инженеров. Вам может понадобиться получить другое мнение о результатах экспериментов. Возможно, вам потребуется поделиться модифицированным набором данных или даже предоставить точную копию определенного эксперимента.
Настройка удаленных хранилищ DVC в дополнение к Git позволяет вам делиться всеми данными, кодом и гиперпараметрами, связанными с каждым экспериментом, чтобы любой мог продолжить процесс обучения с того места, на котором вы остановились. Мы рассмотрим пример совместного эксперимента с удаленными хранилищами DVC.
Сделайте форк проекта
Чтобы продолжить, сделайте форк этого репозитория через свой аккаунт в GitHub. Таким образом, вы получите pull
доступ, когда мы начнем работать с DVC. В этом репозитории есть разные теги, которые показывают развитие проекта, и вы можете следовать им!
Чтобы получить ветку, которую мы будем использовать в этом посте, вы можете запустить эту команду, чтобы клонировать ваш форк репозитория. Обязательно замените <your_github> на имя своего пользователя в GitHub.
$ git clone git@github.com:<your_github>/example-dvc-experiments.git -b get-started
В этом проекте уже есть DVC, настроенный для проведения экспериментов, но если вы хотите продолжить работу с проектом, над которым сейчас работаете, обязательно ознакомьтесь с инструкциями по инициализации DVC пайплайнов в документе the Getting Started
Настройка удаленных хранилищ DVC
Когда вы хотите поделиться результатом обучения своей модели, это обычно означает, что вам нужно найти способ “связать” код, данные и гиперпараметры. Это может быть сложным процессом, если вы работаете с данными объемом в Гигабайты или у вас большое количество гиперпараметров.
Это одно из применений DVC, и именно поэтому мы будем работать с удаленными хранилищами. Принцип работы DVC заключается в сохранении Git ссылок (refs) в вашем репозитории с метаданными, определяющими эксперимент. Вы можете узнать больше о том, как DVC использует пользовательские ссылки Git, в этом посте.
Затем вам нужно настроить удалённое хранилище. Это может быть бакет (bucket) в AWS S3, Google Drive или один из других поддерживаемых типов хранилища.
Важно отметить, что в проекте, с которым мы работаем, удалённое хранилище уже настроено для стягивания (pull
) данных. Вы можете увидеть это в .dvc/config
. Вам нужно будет настроить отдельное удаленное хранилище для сохранения (push
) изменений, так как текущее удаленное хранилище не позволяет pull-доступ.
В этом примере мы будем использовать папку Google Drive в качестве удаленного хранилища. Теперь, когда вы все это знаете, давайте запустим команду, чтобы настроить удаленный хранилище DVC (remote storage
) .
$ dvc remote add cloud_remote gdrive://1k6aUYWphOulJlXgq4XbfKExWGyymTpEl
Эта команда добавляет удаленное хранилище с именем cloud_remote
в DVC, и мы сможем сохранять и получать точную копию кода и данных для воспроизведения любого эксперимента. Настроив Git и DVC, вы можете начать загружать данные и эксперименты из облака на свой локальный компьютер.
Список экспериментов
Когда вы работаете с командой над существующим проектом, вы можете захотеть увидеть эксперименты, которые уже находятся в remote. Чтобы взглянуть на эксперименты, которые мы провели в форке репозитория, вам нужно будет настроить upstream
для Git репозитория :
$ git remote add upstream https://github.com/iterative/example-dvc-experiment
Теперь вы можете просмотреть все эксперименты, связанные с этим репозиторием, с помощью следующей команды.
$ dvc exp list upstream --all
Вы получите список всех экспериментов в разных ветках Git, которые были отправлены с помощью DVC в исходном репозитории. Вывод будет выглядеть примерно так.
21784fa:
exp-c8dcf
main:
exp-b3667
exp-d382a
Теперь вы сможете выбрать эксперимент, который хотите воспроизвести, и начать работать с ним.
Стянуть (pull) эксперименты
Если вы стягиваете существующий проект, скорее всего, вы начнете с определенного эксперимента. Чтобы перенести эксперимент на локальный компьютер, вам понадобится идентификатор эксперимента для следующей команды.
$ dvc exp pull upstream exp-b3667
exp-b3667
мы получаем из команды dvc exp list, которую запускали ранее, и теперь у вас есть все данные и код, связанные с этим экспериментом, на вашем компьютере.
Теперь вы можете начать проводить новые эксперименты с различными моделями, гиперпараметрами или даже наборами данных.
Залить (push)эксперименты
Когда вы закончите свои новые эксперименты, вы можете отправить их на удаленный Google Drive, который мы настроили ранее. С помощью этой команды DVC обеспечивает push
как в GitHub, так и отправку данных в remote хранилище.
$ dvc exp push origin exp-p4202
Эта команда отправит Git-references в ваш форк репозитория, а любые артефакты, такие как данные или модели, будут отправлены в удаленное хранилище DVC. Если вы используете чекпоинты, он также “зальет” чекпоинты эксперимента. Теперь вы можете легко поделиться своей работой с другими инженерами, чтобы быстрее получать отзывы и быстрее завершать проекты.
Вывод
Намного проще получить помощь от кого-то, когда вы можете поделиться всем необходимым с ним. Когда вы используете DVC, вы можете объединять свои данные и изменения кода для каждого эксперимента и передавать их в удаленное хранилище , чтобы кто-то еще мог их получить.