Рубрики
Uncategorized

Данные и модели версий для проектов машинного обучения с DVC

Этот учебник для тех, кто хочет начать использовать DVC и GIT для версий данных, моделей. Прохождение основных особенностей DVC.

Автор оригинала: Oussama LOUATI.

Данные для обучения машины обычно настолько велики, что мы не можем загружать его на репозиторий GitHUB или отслеживать его с помощью Git, но это происходит, что вы все еще хотите использовать Git, и вы хотите, возможно, ваши данные отслеживаются или представлены с Git, но вы Не хочу хранить его с кодом, а скорее обрабатывать его отдельно, DVC является решением этого типа проблемы.

DVC (Управление версиями данных: https://dvc.org/doc) — это инструмент управления данными и машинами, который можно использовать для:

  • Отслеживайте и распространяйте большие файлы, такие как наборы данных и модели как часть хранилища GIT с различными хранилищами.
  • Сохранить и сравнить метрики и результаты эксперимента.
  • Проследить, как были построены и трансформированы наборы данных, модели или другие артефакты.

В этом посте мы покажем пример, который демонстрирует использование DVC в проекте машинного обучения. В частности, как он используется для выполнения следующих действий: — Передача данных на удаленные серверы для запуска Model Training — Сохранить сериализованные модели после тренировки

1- Наша настройка

Установите DVC: https://dvc.org/doc/install/linux Тогда давайте предположим, что у нас есть эта структура репозитория Git:

|-- Dockerfile
|-- README.md
|-- data /
|-- models / 
|-- requirements.txt
|-- train.py
`-- preprocessing.py

У нас в основном две пустые папки, которые будут размещать наши данные и модели соответственно. Учебный скрипт ( Train.py ), который будет использоваться для обучения определенной нейронной сети или любого алгоритма машинного обучения, а также другие сценарии вспомогательных сценариев, таких как сценарии, которые могут быть использованы для очистки и преобразования данных ( предварительно обработка. |). Наконец Dockerfile упаковать весь проект.

Следующий шаг сейчас — это загрузить или переместить данные внутри данные/ Папка для обучения используется для обучения:

|-- data
|   |-- raw-data/
|       |-- data.csv

2- Инициализируйте, аутентифицируйте и нажмите данные в DVC:

С нашими данными готовятся сейчас, мы инициализируем DVC:

dvc init 

Это создаст .dvc. Каталог:

|-- .dvc
|   |-- .gitignore
|   |-- config
|   `-- plots/
|-- .dvcignore
|-- Dockerfile
|-- README.md
|-- data
|-- models
|-- requirements.txt
|-- train.py
`-- transform.py

DVC совместим с большинством решений для хранения данных, таких как ковши S3, ведра GCS, NFS, Google Drive. В этой статье мы будем использовать Google Drive в качестве примера на основе официальных DVC Docs https://dvc.org/doc/user-guide/setup-google-drive-remote.

1 — сначала создайте папку в своем приводе. URL в вашем браузере должно быть похоже на это:

https://drive.google.com/drive/u/2/folders/1zqBBkZ4GxoaS5xDwfzwjYlmMlyAAAA0_

Последняя часть URL — это идентификатор папки. Мы используем его для создания дистанционного управления Google DVC:

dvc remote add -d storage gdrive://1zqBBkZ4GxoaS5xDwfzwjYlmMlyAAAA0_

Это на самом деле изменит .dvc/config Файл, и у вас будет что-то похожее на это:

[core]
    remote = storage
['remote "storage"']
    url = gdrive://1zqBBkZ4GxoaS5xDwfzwjYlmMlyAAAA0_

Тогда давайте совершим наши изменения:

git add .dvc/config
git commit -m "updated DVC config"

2- Теперь мы стараемся отслеживать данные в репозитории Git с DVC, затем нажимайте их на пульт дистанционного управления в подготовке к обучению:

dvc add data/raw-data

DVC Добавить Команда похожа на Git Добавить , в этом это делает DVC Осознавая целевые данные, чтобы начать версию Это. Это создает .dvc. Файл для отслеживания добавленных данных:

|-- data
|   |-- .gitignore
|   `-- raw-data.dvc

Эта команда может быть использована для отслеживания больших файлов, моделей, каталогов набора данных и т. Д. Это слишком большие для Git, чтобы обращаться напрямую. Это позволяет ориентировать их косвенно с Git. Вы можете прочитать больше о DVC Добавить здесь Отказ

Если мы распечатаем содержимое .dvc. Файл у нас будет что-то подобное:

outs:
- md5: 67463197ab31aacbbea49967d3e153ca.dir
  size: 671986169
  nfiles: 1
  path: raw-data

MD5: 67463197AB31AACBBEA49967D3E153CA.DIR Изменится каждый раз, когда мы запускаем DVC Добавить , вы действительно можете увидеть это как Совершать SHA для git. .dvc. Теперь не более, чем легкий мета-файл, который значимым образом связан с нашими данными, поэтому нам нужно версию это .dvc. Файл с Git, а затем наши данные версии с DVC.

git add data/tfrecords.dvc data/.gitignore
git commit -m "added DVC metadata"
git push

Git push Подтолкнут наш Git Tracked код в наш хранилище GIT, кроме фактического RAW-Data/ который грит — игнорируется. 3- Теперь мы хотим подтолкнуть наши файлы для отслеживания DVC (наши фактические RAW-DATA/ ) на наш репозиторий DVC, для этого мы просто запущены:

dvc push  

3- Загрузить данные с использованием обучения DVC и запуска:

В этом разделе мы будем использовать контейнер Docker, чтобы создать изолированную и отдельную среду для получения наших данных и запуска, чтобы действительно показать, как мы используем DVC для отслеживания наших данных и моделей. Пример DockerFile был бы чем-то вроде этого:

FROM python:3.8

RUN apt-get update && apt-get install -y git

RUN pip install pip==21.0.1

WORKDIR /app

ADD requirements.txt .

RUN pip install -r requirements-docker.txt

ADD . .

RUN git config user.email "code@gmail.com"
RUN git config user.name "OussemaLouati"

Затем мы строим изображение и попадаем в изображение:

docker build -t dvc-example . 
docker run -it -v $HOME/.ssh:/root/.ssh dvc-example 

Добавили:

RUN git config user.email "code@gmail.com"
RUN git config user.name "OussemaLouati"

И установил наши SSH-ключи внутри контейнера:

-v $HOME/.ssh:/root/.ssh

Чтобы включить аутентификацию с GitHub изнутри контейнера.

Теперь мы находимся внутри контейнера Docker, полной изолированной среды, давайте принесем наши данные и запускаем нашу подготовку. Получение и загрузка данных так же просто, как:

dvc pull 

Это автоматически загружает данные и сохраняет его под Данные/RAW-Data который следует использовать тренировочный скрипт:

python train.py  # model is generated and is saved to models/checkpoints/ which is git-ignored also

Наконец, мы сохраняем обученную модель контрольно-пропускной способности и добавить ее в DVC, чтобы начать отслеживать наши модели:

dvc add models/checkpoints
git add models/checkpoints.dvc models/.gitignore
git commit -m "added DVC metadata for model checkpoint"
dvc push
git push

4- Убедитесь, что результаты:

После запуска тренировки результаты должны быть доступны для нас, чтобы вытащить:

git pull
dvc pull

Наконец, если мы снова запускаем тренировку, это означает, что наши модели контрольно-пропускных пунктов будут измениться, и нам нужно отслеживать их всегда с Git и DVC, поэтому возобновить все мы каждый раз:

  • Скачать данные/модели
dvc pull
  • Добавить новые данные/модели
dvc add data
git add data.dvc
git commit -m "Commit message"
git push
dvc push

Оригинал: «https://www.codementor.io/@oussamalouati4/versioning-data-and-models-for-machine-learning-projects-with-dvc-1k3glsgqyf»