📦 Feature Store Designer — 特征存储设计师
v1.0.0为ML系统设计和审计特征存储配置。审查实体定义、特征视图、物化管道、在线/离线服务...
运行时依赖
安装命令
点击复制技能文档
特征存储设计师 设计和审计生产机器学习系统的特征存储配置。审查实体定义、特征视图、数据源、物化管道、在线/离线服务、新鲜度策略和训练-服务偏差风险。使用Feast、Tecton或自定义架构。作为高级机器学习平台工程师,设计特征基础设施。
基本用法:为推荐系统设计特征存储 专注用法:检查实体定义的一致性 | 分析物化效率 | 审查在线服务延迟 | 检测训练-服务偏差
工作原理 步骤1:发现特征存储配置 找到项目中的特征存储配置文件(feature_store.yaml)和相关Python文件 解析实体、特征视图、特征服务、数据源、按需视图、物化配置、在线/离线存储设置和注册设置。
步骤2:审计实体定义 5个实体定义 通过:user_id(INT64)- 跨8个特征视图的一致类型 失败:merchant_id - 混合类型(特征中为STRING,风险评分中为INT) 风险:类型不匹配会导致服务时查找失败 修复:标准化为STRING,删除merchant_risk.py中的强制转换 失败:transaction_id - 500M+ 记录作为实体 在线存储必须服务500M+ 键 - 内存/成本爆炸 修复:预聚合到user_id级别进行在线服务 失败:实体命名不一致:“user_id” vs “merchantId” 修复:标准化为下划线命名法(snake_case)所有实体 基数总结:user_id:10M(可管理)| merchant_id:500K(低) transaction_id:500M(CRITICAL)| session_id:50M/day(HIGH,需要TTL)
步骤3:审查特征视图 12个特征视图 + 3个按需视图 + 1个流 user_transaction_features(8个特征,user_id,BigQuery源,TTL=24h) 通过:合理的数量,TTL设置,标签分配 警告:“is_high_value_user”是派生业务逻辑 修复:移到按需特征视图(阈值更改无需重新物化) user_profile_features(15个特征,user_id,PostgreSQL源) 失败:太多特征 - 物化是全部或无 修复:拆分为user_demographics(5),user_preferences(5),user_account(5) 失败:“raw_address”是自由文本 - 特征存储中的反模式 修复:提取address_country,address_state,address_zip_prefix merchant_risk_scores(4个特征,merchant_id) 失败:没有配置数据源 - 不能物化
步骤4:分析特征服务 fraud_detection_v2:21个特征来自4个视图(批处理 + 按需) 通过:合理的数量,良好的特征类型混合 recommendation_engine:24个特征,包括512维嵌入向量 失败:512个浮点数每次查找在10K QPS = ~20 MB/s带宽 修复:预计算点积或使用ANN索引 失败:4个特征视图不在任何服务中 - 浪费物化 orphan_view_1,legacy_features,test_features... 修复:删除或记录目的
步骤5:审查数据源和新鲜度 失败:PostgreSQL源指向生产数据库 物化查询将降低用户面向应用的性能 修复:使用只读副本或数据仓库副本 警告:Kafka源没有死信队列 格式错误的事件将崩溃流处理器 新鲜度分析:特征视图 | TTL | 物化 | 有效延迟 user_transaction_features | 24h | 每日2 AM | 最多26小时 user_profile_features | 72h | 每周 | 最多7+ 天 merchant_risk_scores | 12h | 每6小时 | 最多18小时 失败:user_profile_features - 7天有效延迟 用户更新个人资料,模型看到旧数据一周 修复:每日物化或CDC流 警告:物化在2 AM,但上游加载在3 AM 特征总是落后一天。 修复:安排在上游之后(4 AM)
步骤6:审计在线/离线存储 离线:BigQuery(通过 - 良好的PIT连接支持) 在线:Redis(单实例) 失败:没有复制 - 所有机器学习模型的单点故障 修复:Redis Sentinel或Redis Cluster用于HA 失败:没有配置maxmemory 10M用户 * 21个特征 = ~1.7 GB最小,增长无界 修复:设置maxmemory 8gb,策略allkeys-lru 警告:没有读取缓存 - 添加5分钟应用缓存以减少负载80% 注册表:SQL(PostgreSQL)- 通过 警告:没有访问控制 - 任何团队都可以修改任何定义 警告:没有分阶段环境用于测试新特征视图
步骤7:检测训练-服务偏差 失败:特征计算在训练和服务之间不同 训练:笔记本中的SQL,具有不同的时间戳处理 服务:Feast物化作业,具有不同的SQL 修复:使用Feast get_historical_features()获取训练数据 失败:按需“time_since_last_transaction” 训练:计算为天(浮点数)。