01 将嵌入的应用视为工程问题
通常情况下,机器学习工作流程(machine learning workflows)会给整个应用工程系统增加巨大的复杂度和开销,原因有很多[1]。首先,这个工作流程会将数据混合,而这些数据需要在下游进行监测,以防产生漂移。其次,它们的输出是不确定的,这意味着需要非常小心地跟踪这个工作流,因为我们通常不会对数据进行版本控制。第三,它们会导致处理管道(processing pipeline)出现混乱。
处理管道(processing pipeline)的混乱是胶水代码(glue code)的一种特殊情况,通常出现在数据准备流程中。随着新的信号被识别和新的信息源被添加,这些管道可以有机地演变。如果不加注意,为了以机器学习友好的格式准备数据所构建的系统,这个系统通常由多个数据处理步骤组成,包括数据抓取、数据清洗、数据转换、数据合并等,而且这些步骤之间可能存在多个依赖关系和中间文件输出。如果不加注意,这个系统可能会变得非常复杂和难以维护
从PinnerSage和Wide and Deep等模型的系统架构图中可看出,生产环境中使用嵌入的推荐系统[2],都有许多可活动组件。