presentation-search / docs /workflow /data_version_control.md
Ilia Tambovtsev
Merge branch 'RMI-22_Dataset-for-POC' into RMI-39_weird-slides-gpt4v
ff3ad18
# Как работать с dvc в этом проекте?
```shell
# Выбираем ветку
git branch -a # выдаст все ветки
# если нужная ветка только в remote
git branch --track branch-name origin/branch-name # скачали ветку
git checkout branch-name
# Загружаем данные. Ключи не нужны, хранилище открытое.
dvc pull
```
## Выбираем только нужные презентации из датасета
Допустим я собираю датасет для POC. Он должен состоять примерно из 20ти отобранных презентаций. Но сейчас у меня уже ~80. С помощью dvc можно создать версию датасета, в которой будут только нужные презентации. При этом на диске не будет дубликатов.
Вот структура директории. `./data/raw` уже отслеживается dvc:
```
./data
├── raw
│   ├── business # 7 items
│   │   ├── business_incognita
│   │   └── insider_infor
│   ├── data-science # 73 items
│   │   ├── aiconf
│   │   └── yappi-days
│   └── weird-slides
└── raw.dvc
```
Презентации по бизнесу я собираю сейчас - все они подходят для POC. А по data-science надо выбрать подходящие. Используем для этого `.dvcignore` - как `.gitignore`, только для dvc. Вот полезные паттерны для `.ignore` файлов:
[Паттерны .gitignore:](https://git-scm.com/docs/gitignore)
- `*` - мэтчит любую последовательность символов
- `/**/` - мэтчит любую последовательность вложенных папок
- `!<pattern>` - отрицание на паттерн - игнорируй все, что не `<pattern>`
- `!*<part of filename>*` игнорируй все, что не содержит `<part of filename>`
Теперь к задаче:
- Выберем нужные презентации из `data-science`. Хватит названия файла, можно не записывать полный путь.
- Попросим dvc игнорировать все файлы из `data-science`, кроме избранных.
Воспользуемся отрицательными паттернами.
В итоге получим вот такой `.dvcignore`
```shell
# ignore папку с data-science презентациями
raw/data-science/**/*.pdf
# выбираю нужные презентации.
!*1.За рамками сценария_Эмели Драль_вер.3*
!*2.Kolmogorov Arnold Networks_Павел Плюснин_вер.2*
!*4.Обзор уязвимостей и техник защиты для LLM_Евгений Кокуйкин_вер.3*
!*6.Увеличиваем число обнаружений в задачах_Дмитрий Колесников_вер.4*
```
Проверим, что все прошло по плану:
```shell
dvc diff # Выдаст список Deleted:
dvc list -R data --dvc-only # список файлов, отслеживаемых dvc
```
Убедились, что мы удалили все файлы, кроме выбранных. Коммитим.
```shell
dvc commit
# сохраним в гит
git add .dvcignore data/raw.dvc
git commit -m "Select presentations for POC
```
Чтобы скачать презентации только для POC:
```shell
git checkout POC
dvc pull
```