Автор оригинала: 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»