Comments 9
Сами пользуетесь? Можете поделиться опытом?
Просто не понятно, если pipeline начинается допустим с чтения данных из базы, тогда что, надо добавить отдельный шаг, который все это сохраняет в файлы и дальше версионировать эти файлы?
Так что да, если хотите использовать базу данных, нужно добавить шаг с сохранением.
Not Found
You just hit a route that doesn't exist… the sadness.
Работа с DVC + Git выглядит примерно так:
https://dvc.org/static/img/model-versioning-diagram.png
Кажется, у иллюстрации reproducibility crisis.
P.s. Комментарий выше, когда я писал свой, не был виден, хотя было написано, что комментариев 2 (был виден только один, первый). Уже несколько дней с комментариями на Хабре какие-то глюки
Для многих баз данных есть крутая встроенная похожая штука — temporal tables, они же таблицы с системной версионностью. Работал с ними на MS SQL Server — муторно, но оно того стоит. Можно реально изолировать состояние данных на более менее любую дату. Но весь код обновления и использования данных становится объемным и надо с умом проектировать хранилище, чтобы при каждой заливке свежей порции данных не обновлялась вся таблица. Но действительно появляется возможность прогнать свежий код на старых данных "как тогда" и посмотреть, насколько лучше новая модель.
каждая таблица имеет кластерный индекс типа date на день когда данные были залиты (Report date), и можно сгенерить отчеты на самую последнюю дату, либо же сделать time-travel на предыдущий месяц.
Чем оно лучше условного nexus'а, который хранит рандомные блобы без особых раздумий об их сути? В целом, можно представить себе даже условный ceph/swift, которые ровно так же хранят блобы, а в git'е на них ссылки.
Т.е. то, что эта штука приносит полиси, это понятно. А что она хорошего даёт в замен?
DVC vs GIT. Почему GIT'а недостаточно в проектах машинного обучения