Короче: я создаю систему машинного обучения (с использованием Python, но выбор языка в данном случае не очень критичен), модель машинного обучения которой находится в конце конвейера происходящих действий:
- Загрузка данных
- Анализ данных
- Разработка функций
- Разработка функций (в логической скобке, отличной от предыдущего шага)
- Проектирование функций (в другой логической группе по сравнению с предыдущими шагами)
... p>
- Данные передаются в модель машинного обучения
Сейчас дело в том, что мне нужно построить собственный конвейер, который позволит очень легко добавлять новые шаги в смесь (как большие, так и маленькие), не нарушая существующие.
На данный момент у меня есть концептуальное представление о том, как это может выглядеть с точки зрения архитектуры, как показано ниже:

Глядя на этой архитектуре, я сразу думаю о цепочке Шаблон проектирования ответственности, который управляет БОЛЬШИМИ ШАГАМИ (1, 2, ..., n), и каждый из этих БОЛЬШИХ ШАГОВ имеет свою собственную небольшую версию цепочки ответственности, происходящую внутри их внутренностей, которые происходят независимо для шагов NO_REQ, а затем для шагов REQ (с циклическим повторением шагов REQ до тех пор, пока они все не будут выполнены). Имея общий интерфейс для выполнения логики внутри больших и малых шагов, он, вероятно, будет работать довольно аккуратно.
Тем не менее, мне интересно, есть ли лучший способ сделать это? Более того, что мне не нравится в цепочке ответственности, так это то, что для этого потребуется, чтобы человек добавлял новый БОЛЬШОЙ/МАЛЕНЬКИЙ шаг, всегда редактировал «внутренности» логики, настраивая пакеты шагов, чтобы вручную включать вновь добавленный шаг. Мне бы хотелось создать что-нибудь, что вместо этого просто сканировало бы папку, специфичную для шагов каждого БОЛЬШОГО ШАГА, и создавало бы список шагов NO_REQ и REQ самостоятельно (чтобы поддерживать принцип Open/Closed SOLID).Буду благодарен за любые идеи.
Подробнее здесь: https://stackoverflow.com/questions/637 ... g-pipeline
Мобильная версия