发布于: Aug 23, 2022
基于大数据的机器学习不可避免的会遇到海量数据,如何存储、发现并共享这些数据呢?最新推出的 Amazon SageMaker Feature Store 功能可帮你解决这一问题。
在完成分组之后,即可各个组重复以下操作步骤:
1. 创建特征定义,并在记录中保存每项特征的名称与类型 (Fractional, Integral 或者 String )。 2. 使用 create_feature_group() API创建各个特征组: 3. sm_feature_store.create_feature_group( 4. # 特征组的名称 5. FeatureGroupName=my_feature_group_name, 6. # 用作记录标识符的列名称 7. RecordIdentifierName=record_identifier_name, 8. # 作为特征时间戳的列行为名称 9. EventTimeFeatureName = event_time_feature_name, 10. # 特征名称与类型清单 11. FeatureDefinitions=my_feature_definitions, 12. # 离线特征存储库的S3位置 13. OfflineStoreConfig=offline_store_config, 14. # 可选项,启用在线特征存储库 15. OnlineStoreConfig=online_store_config, 16. # 一个IAM角色 17. RoleArn=role )
18. 在各个特征组内,使用 put_record() API存储包含特征名称/特征值对的集合记录: 19. sm_feature_store.put_record( 20. FeatureGroupName=feature_group_name, 21. Record=record, 22. EventTime=event_time )
为了加快数据摄取速度,您可以创建多个线程以实现操作并行化。
到这里,Amazon SageMaker Feature Store 即可提供各项特征。以离线存储库为基础,您可以使用 Amazon Athena, Amazon Web Services Glue 或者 Amazon EMR 等服务构建供训练使用的数据集:在 S3 中获取相应的 JSON 对象、选择必要的特征,而后以机器学习算法需要的格式将其保存在 S3 当中。之后的工作即可全部交给 SageMaker,就这么简单!
除此之外,您也可以使用 get_record() API 访问在线存储库内存储的各具体记录,并传递组名称与待访问记录的唯一标识符,如下所示:
record = sm_feature_store.get_record( FeatureGroupName=my_feature_group_name, RecordIdentifierValue={"IntegralValue": 5962})
Amazon SageMaker Feature Store 专为实时推理场景下的高效访问需求与设计,对于 15 KB 的载荷,可以 95% 的概率将预测中的延迟控制在 10 毫秒以内。凭借这种能力,大家可以在预测过程中查询工程特征,并将上游应用程序发送的原始特征替换为模型训练时曾经使用的具体特征。通过这种方式,我们可以消除特征不一致问题,帮助大家将精力集中在最佳模型的构建当中。
最后,SageMaker Feature Store 当中包含特征创建时间戳,因此大家可以根据特定时间点检索特征状态。
如果将 Amazon SageMaker Feature Store 与 SageMaker Studio 相集成,我们可以看到两个特征组。
右键点击“Open feature group detail”,即可打开身份特征 identity feature group。
这里可以看到特征定义。
最后,我们可以为离线存储库生成查询,并将其添加至 Amazon SageMaker Data Wrangler 工作流,借此在训练之前加载特征。
如大家所见,SageMaker Feature Store 极大降低了在各训练与预测工作流之间存储、检索及共享特征的门槛。
现在,您已经可以在提供 Amazon SageMaker 服务的各个 Amazon Web Services 区域中使用这项服务,具体成本取决于特征读取/写入量以及所存储的数据总量。
相关文章