169 похожих чатов

Ребят, всем привет. Я тут изучаю для собственного проекта рекоммендационные

системы и возник вопрос. Я от коммерческого DS далек достаточно, поизучал материал, состряпал CF модель, но не понимаю как принято строить пайплайн. Прогонять ETL в airflow и дальше запускать pipe с R скриптом или как ? Если поделить ссылкой или собственным рассуждением о best practices, то буду рад

9 ответов

17 просмотров

не думаю, что на этот вопрос есть универсальный ответ, дело в том, что вы по сути говорите об MLOps и там по хорошему следует определить архитектуру исходя из того какая предметная область и идея использования модели рекомендации ... там вопросов масса... НО, если хочется по-простому т.е. без армии архитекторов и MLOps и также хочется остаться внутри R то рекомендую посмотреть R targets вместо Airflow https://books.ropensci.org/targets/

Evgeny-Afanasev Автор вопроса
Dm Kb
не думаю, что на этот вопрос есть универсальный от...

Меня смущает отсутствие драйвера для многих olap решений и выглядит как написать самому, поэтому я думал на одном стеке сделать весь ETL, а ML уже на другом

Evgeny Afanasev
Меня смущает отсутствие драйвера для многих olap р...

ну вам видимо известно какие OLAP решения нужно поддерживать и в каком виде , а следовательно можно это проверить т.е. сделать небольшой дизайн, но честно не очень понимаю зачем в рекомендациях вообще OLAP: модель генерит инференс и вы это отправляете целевой аудитории

Evgeny-Afanasev Автор вопроса
Dm Kb
ну вам видимо известно какие OLAP решения нужно по...

Olap как лейк для событий на базе которых и будет cf строится. Дизайн: Абстракция: Нужно построить рекомендационку для заведений на базе user based collaborative filtering. 1. ETL пайплайном строю CSV в котором пользовательским рейтингом будет служить метрика кол-ва посещений, соответственно группирую и перекладываю в CSV в S3 2. С помощью tidyverse либ строю матрицу user item, заполняю нули и ранжирую по кол-вам посещений похожих пользователей и складываю в какое нибудь KV или document хранилище

простой cron очень часто работает на ура.

Evgeny Afanasev
Olap как лейк для событий на базе которых и будет ...

Похоже у вас модель работает батчем т.е. реал тайма у вас нет и следовательно уже можно смотреть варианты решения задачи попроще, если нет сложной логики подготовки данных , то и targets будет перебор. Опять же судя по использованию CSV и tidyverse объемы не очень значительные, но все таки лучше присмотреться к Arrow/parquet. Возможно, стоит сделать два докер контейнера: на подготовку данных и собственно модель для гибкости(в теории можно по разному готовить разные данные). Можно автоматизировать сборку и деплой на том же GitHub actions. Возможно, стоит инвестировать свое время в валидацию данных на входе и логирование. Также подумать о логике инкрементной загрузки данных из источников потому как полный батч в каждый раз - это не очень кошерно )))

Evgeny-Afanasev Автор вопроса
Dm Kb
Похоже у вас модель работает батчем т.е. реал тайм...

Да. Насчет инкремента тоже думал и есть планы по реализации. Спасибо за помощь. Поизучаю arrow тогда еще и видимо действительно на кроне построю пайплайн для 2 докер контейнеров. 1 подготовит статистику просмотров, другой построит рекомендации )

Dm Kb
Похоже у вас модель работает батчем т.е. реал тайм...

Для небольших объемов fst быстрее порядка на два если данные все брать

Сам каркас "ETL" вообще может быть крошечным. Вот пример достаточно простой и надежной конструкции: https://t.me/r_in_action/186

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта