为了在创建用于机器学习模型的新功能时提高生产率和可扩展性,AirBnb 建立了 Chronon,这是一个创建将原始数据转化为训练和推理特征所需的基础架构的解决方案。
AirBnb 工程师兼 Chronon 创建者 Nikhil Simha 解释说,从原始数据到用于训练 ML 模型的特征是一项复杂而耗时的任务,需要工程师从 AirBnb 数据库中提取数据,并编写复杂的 ETL 逻辑将其转换为特征。另外一个难题是需要确保逻辑推理产生的特征分布与训练产生的特征分布相同。
Simha说,Chronon试图通过允许机器学习工程师定义特征并在训练和推理中以可复制的方式集中数据计算来解决这些问题。
“作为用户,你只需声明一次你的计算,Chronon 就会生成将原始数据持续转化为训练和服务所需的特征的所有基础结构。AirBnb 的人工智能从业人员不再需要花费数月时间来手动实施复杂的管道和特征索引。他们通常只需不到一周的时间就能为模型生成新的特征集。”
Chronon 的第一个组件可以从各种来源摄取数据,包括事件数据源、实体数据源和累积事件源,其中每个来源收集不同类型的数据。
数据摄取后,可使用类似 SQL 的操作和聚合对数据进行转换,从而产生用于在线服务模型的低延迟端点,以及用于离线培训的Hive表。在底层,Chronon 利用 Kafka、Spark/Spark Streaming、Hive 和 Airflow 构建管道。类似SQL的操作包括GroupBy、Join和StagingQuery,它们是每天脱机计算一次的Spark SQL查询。聚合包括窗口、桶和基于时间的聚合。
最后,还提供了 Python API,它提供了类似 SQL 的原语,并且能够理解基于时间的聚合和窗口作为一级概念。例如,使用 Python API,你可以过滤和转换用户在过去 5 个小时内查看某个项目的次数。
Chronon 中的一个重要概念是准确性,即特征值的更新频率,可以是实时更新,也可以是固定间隔更新。精确度取决于具体的使用情况,因此 Chronon 允许用户轻松地将计算精确度指定为时间精确度或快照精确度。