进行模型评估)
大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载模型评估是 ML 生命周期中不可或缺的一环它让你在未见过的数据集上基准测试模型的性能提取选定指标、生成可视化、记录元数据并横向对比不同模型的优劣。本文基于 Apache Beam 官方文档website/www/site/content/en/documentation/ml/model-evaluation.md与配套端到端示例 examples/notebooks/beam-ml/tfma_beam.ipynb系统讲解如何通过 Beam 的ExtractEvaluateAndWriteResultsPTransform把基于 TensorFlow Model AnalysisTFMA的模型评估直接跑进 Beam 管道里掌握配置评估参数、执行分布式评估、可视化指标以及一次管道对比多个模型的方法。为什么要在 Beam 管道内做模型评估在你的 MLOps 生态中模型评估步骤对监控模型或一组模型的演进至关重要当数据集随时间增长或发生变化、当你重新训练模型时都需要持续评估来确认模型性能没有退化。模型评估的核心价值包括基准测试Benchmark将模型性能与一个未见过的数据集进行对比量化泛化能力指标提取与可视化抽取你关心的指标如均方误差、平均绝对误差并生成可交互的图表元数据记录将评估配置、指标、图plots等结果落盘保存形成可追溯的评估记录多模型对比在相同数据切片上比较不同模型的性能为上线选型提供依据。Apache Beam 提供的能力是直接在管道内部对 TensorFlow 模型运行评估。核心是名为ExtractEvaluateAndWriteResults的 PTransform——它属于 TensorFlow Model AnalysisTFMA这是一个用于在不同数据切片slices of data上执行模型评估的库。TFMA 借助 Beam 对海量数据进行分布式计算评估结果可以在 Jupyter 或 Colab 笔记本中按数据切片对比并可视化。在 Beam ML 的整体工作流中这一步对应官方 About Beam ML 文档所描述的Model validation模型验证阶段——在部署前验证模型的性能与准确性。也就是说模型评估与数据验证、数据预处理、模型训练、模型部署共同构成完整的 AI/ML 流水线。认识核心 PTransformExtractEvaluateAndWriteResultsExtractEvaluateAndWriteResults是 TFMA 提供的一个复合 PTransform它把三个环节合并为一步Extract提取从输入数据中提取模型推理所需的特征与标签Evaluate评估按eval_config中声明的指标和切片规则执行分布式评估WriteResults写结果将评估输出配置文件、指标、plots 等写入你指定的output_path。由于它本身就是一个标准的 Beam PTransform你可以像使用任何其他变换一样把它接在数据源之后、放进beam.Pipeline上下文里运行并自由切换 Direct Runner、Dataflow 等不同执行引擎从而实现大规模数据上的分布式模型评估。实操一定义 TFMA 评估配置评估的第一步是定义EvalConfig评估配置它声明三部分信息模型信息model_specs、指标规格metrics_specs以及可选的数据切片规格slicing_specs。官方文档给出了一个针对线性回归模型的完整配置示例from google.protobuf import text_format # Define the TFMA evaluation configuration eval_config text_format.Parse( ## Model information model_specs { # For keras and serving models, you need to add a label_key. label_key: output } ## This post-training metric information is merged with any built-in ## metrics from training metrics_specs { metrics { class_name: ExampleCount } metrics { class_name: MeanAbsoluteError } metrics { class_name: MeanSquaredError } metrics { class_name: MeanPrediction } } slicing_specs {} , tfma.EvalConfig())对配置中各字段的理解结合 notebook 中的实践model_specs声明待评估的模型。对 Keras 模型与 serving 模型必须添加label_key它指定输入记录中携带真实标签ground truth的字段名。上面的示例中label_key: output意味着 TFRecords 中名为output的浮点特征就是标签这一点在 notebook 写 TFRecords 时被严格执行每条记录写入inputs与output两个 feature。metrics_specs声明评估指标。示例选择了回归任务最常用的四类指标ExampleCount样本计数用于了解每个切片上参与评估的样本规模MeanAbsoluteError平均绝对误差MeanSquaredError均方误差MeanPrediction预测均值用于观察模型输出的整体分布。这些 post-training 指标信息会与训练时内置built-in的指标合并计算。slicing_specs {}声明数据切片规则。留空表示不做切片即对全量数据计算整体指标。若需按特征切片例如按钻石的cut、color分组评估可在其中添加切片特征TFMA 会为每个切片单独产出指标便于发现模型在特定子群体上的短板。注意eval_config通过text_format.Parse从 Protocol Buffers 文本格式解析为tfma.EvalConfig()对象这是 TFMA 配置的标准写法请确保google.protobuf可用。实操二构建评估管道定义好配置后创建管道运行评估。官方文档给出的管道骨架如下from tfx_bsl.public import tfxio eval_shared_model tfma.default_eval_shared_model( eval_saved_model_pathmodel_path, eval_configeval_config) tfx_io tfxio.TFExampleRecord( file_patterntfrecords_path, raw_record_column_nametfma.ARROW_INPUT_COLUMN) # Run evaluation with beam.Pipeline() as pipeline: _ ( pipeline | ReadData tfx_io.BeamSource() | EvalModel tfma.ExtractEvaluateAndWriteResults( eval_shared_modeleval_shared_model, eval_configeval_config, output_pathoutput_path))逐段拆解这段代码tfma.default_eval_shared_model根据已保存的模型路径eval_saved_model_path与eval_config构造评估共享模型对象。它负责在分布式 worker 上加载模型并执行推理tfxio.TFExampleRecord来自tfx_bsl.public.tfxio的 TFXIO 数据读取器。它声明输入数据为 TFRecord 格式file_patterntfrecords_path并通过raw_record_column_nametfma.ARROW_INPUT_COLUMN指定把原始tf.Example记录作为 Arrow 输入列保留下来供 TFMA 的模型输入与标签提取使用tfx_io.BeamSource()将 TFXIO 读取器封装为 Beam 的 PCollection 数据源作为管道的输入tfma.ExtractEvaluateAndWriteResults(...)传入三个关键参数eval_shared_model评估用的共享模型eval_config评估配置output_path结果输出目录。管道运行结束后该路径下会保存包括**配置文件config file、指标metrics、图plots**在内的全部评估结果。实操三加载结果并可视化评估管道把结果写入output_path后即可在笔记本中加载并渲染可视化# Visualize the results. result tfma.load_eval_result(output_pathoutput_path) tfma.view.render_slicing_metrics(result)tfma.load_eval_result(output_path...)从输出路径加载评估结果tfma.view.render_slicing_metrics(result)渲染按切片分布的指标可视化适合在 Jupyter / Colab 中交互式查看不同数据切片上的指标表现。端到端示例钻石价格预测模型的评估仓库自带的 tfma_beam.ipynb 提供了一个完整、可复现的端到端示例覆盖数据准备 → 训练模型 → Beam 评估 → 可视化 → 多模型对比全流程。下面按照 notebook 的实际步骤展开。环境准备本地 Jupyter 运行前需先启用 TFMA 所需的 Jupyter 扩展jupyter nbextension enable --py widgetsnbextension --sys-prefix jupyter nbextension install --py --symlink tensorflow_model_analysis --sys-prefix jupyter nbextension enable --py tensorflow_model_analysis --sys-prefix然后安装依赖安装 TFMA 会自动拉取其全部依赖pip install -U pip pip install tensorflow-model-analysis安装后需重启运行时。notebook 中注明该配置在 Colab 下使用 TensorFlow 2.11、TFMA 0.43、Apache Beam 2.44 验证通过并兼容当前发布版本同时要求 Python 3。建议安装后先打印tf.__version__、beam.__version__、tfma.__version__确认各组件版本无误再继续。数据准备与 TFRecords 生成示例使用 TFDSTensorFlow Datasets自带的diamonds 钻石数据集包含 53,940 颗钻石的物理属性如重量 carat、切工 cut、颜色 color、净度 clarity以及价格 price训练一个预测钻石价格的线性回归模型并用均方误差、平均绝对误差等指标评估。数据侧的关键步骤划分数据为模拟模型性能随数据增长而提升的场景用数据集前 40% 训练 v1 模型再用前 80% 训练 v2 模型另切出独立的测试集train[80%:90%]与验证集train[90%:](ds_train_v1, ds_test, ds_val), info tfds.load( diamonds, split[train[:40%], train[80%:90%], train[90%:]], as_supervisedTrue, with_infoTrue)特征工程数值特征carat、depth、table、x、y、z共 6 维类别特征color、cut、clarity用tf.one_hot编码最终拼成完整特征向量模型输出为单个标量价格即output。写出 TFRecordsTFMA 与 Beam 需要从文件读取评估数据因此把验证集序列化为tf.train.Example写入data/val_data.tfrecord其中每个 example 包含inputs特征 float_list与output标签 float_list两个 feature——这正是eval_config里label_key: output能正确取到标签的前提。训练与保存模型示例通过construct_model(model_name, train_data)构建一个含归一化层与单隐层8 个神经元ReLU 激活的 Keras 模型用 Adam学习率 0.1mean_absolute_error损失训练 5 个 epoch然后把模型保存到磁盘model_path_v1 saved_model_v1 model_v1.save(model_path_v1)保存后的 SavedModel 路径将作为eval_saved_model_path传给 TFMA。在 Beam 管道中执行评估评估部分与实操一/二完全一致先定义eval_config采用ExampleCount、MeanAbsoluteError、MeanSquaredError、MeanPrediction四个指标再构建管道from tfx_bsl.public import tfxio output_path evaluation_results eval_shared_model tfma.default_eval_shared_model( eval_saved_model_pathmodel_path_v1, eval_configeval_config) tfx_io tfxio.TFExampleRecord( file_patterntfrecord_file, raw_record_column_nametfma.ARROW_INPUT_COLUMN) # Run Evaluation. with beam.Pipeline() as pipeline: _ ( pipeline | ReadData tfx_io.BeamSource() | EvalModel tfma.ExtractEvaluateAndWriteResults( eval_shared_modeleval_shared_model, eval_configeval_config, output_pathoutput_path))随后加载结果并渲染切片指标result tfma.load_eval_result(output_pathoutput_path) tfma.view.render_slicing_metrics(result)进阶在单次 Beam 管道中对比多个模型生产环境选型时往往需要横向比较多个候选模型。Beam TFMA 的另一个亮点是可以在一次管道运行中同时评估并对比多个模型。notebook 展示了训练第二个模型v2使用前 80% 数据训练模拟数据增多后模型性能提升后的对比流程。对比版评估配置对比场景的eval_config_compare与单模型版本的关键差异在于model_specs部分——声明两个模型并为基准模型设置is_baseline: trueeval_config_compare text_format.Parse( ## Model information model_specs { name: model_v1 # For keras (and serving models), add a label_key. label_key: output is_baseline: true } model_specs { name: model_v2 # For keras (and serving models), add a label_key. label_key: output } ## This post-training metric information is merged with any built-in ## metrics from training. metrics_specs { metrics { class_name: ExampleCount } metrics { class_name: MeanAbsoluteError } metrics { class_name: MeanSquaredError } metrics { class_name: MeanPrediction } } slicing_specs {} , tfma.EvalConfig())要点每个model_specs通过name标识模型is_baseline: true指定 v1 为基准模型TFMA 会以它为参照展示其他模型的相对差异两个模型仍使用同一份验证数据同一个tfrecord_file保证对比口径一致。多模型评估管道相应地eval_shared_model参数变为模型列表每个模型通过model_name与配置中的名字对应eval_shared_models [ tfma.default_eval_shared_model( model_namemodel_v1, eval_saved_model_pathmodel_path_v1, eval_configeval_config_compare), tfma.default_eval_shared_model( model_namemodel_v2, eval_saved_model_pathmodel_path_v2, eval_configeval_config_compare), ] tfx_io tfxio.TFExampleRecord( file_patterntfrecord_file, raw_record_column_nametfma.ARROW_INPUT_COLUMN) # Run the evaluation. with beam.Pipeline() as pipeline: _ ( pipeline | ReadData tfx_io.BeamSource() | EvalModel tfma.ExtractEvaluateAndWriteResults( eval_shared_modeleval_shared_models, eval_configeval_config_compare, output_pathoutput_path_compare))对比结果可视化加载对比结果使用load_eval_results复数形式传入输出路径列表并调用render_time_series渲染时间序列视图——默认展示验证集规模随时间的变化你还可以通过add metric series勾选 loss 与 mean absolute error 等指标直观观察模型性能随数据量增长的趋势results tfma.load_eval_results(output_pathsoutput_path_compare) tfma.view.render_time_series(results)这种同一管道、同一份数据、多模型并行评估的能力使 Beam TFMA 特别适合模型迭代监控、A/B 候选评估与生产前选型验证。小结与延伸阅读总结一下在 Apache Beam 中完成 TensorFlow 模型评估的标准路径是定义EvalConfig声明model_specs含label_key、metrics_specs指标类名与slicing_specs切片规则构造评估输入用tfma.default_eval_shared_model包装已保存的模型用tfxio.TFExampleRecordBeamSource()读取 TFRecords 评估数据运行管道将ExtractEvaluateAndWriteResults作为 PTransform 接入beam.Pipeline指定output_path落盘结果可视化与对比load_eval_resultrender_slicing_metrics查看单模型切片指标多模型场景使用is_baseline、eval_shared_models列表以及load_eval_resultsrender_time_series。由于ExtractEvaluateAndWriteResults是标准 Beam PTransform整套评估逻辑可以无缝迁移到不同 Runner如 Dataflow上在海量数据上获得分布式评估能力。想深入实践可以直接运行仓库中的 tfma_beam.ipynb包含从 TFDS 创建 tfrecords、训练模型到 Beam 评估的完整可执行代码了解 Beam ML 的整体定位与模型验证在整个 AI/ML 工作流中的位置可阅读 About Beam ML 的 Model validation 一节关于 TFMA 支持的更多指标与可视化参数可查阅 TFMA 官方指标与 plots 文档。赞分享大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载相关推荐如何使用TensorFlow Model Analysis从模型评估到性能优化的完整指南如何使用TensorFlow Model Analysis从模型评估到性能优化的完整指南 TensorFlow Model AnalysisTFMA是Te人工智能机器学习深度学习分布式训练预训练TensorFlow Model Analysis深度学习模型的全面评估工具TensorFlow Model Analysis深度学习模型的全面评估工具 项目介绍 TensorFlow Model Analysis 简称TFMA是【亲测免费】 TensorFlow Model Analysis深度学习模型的全面评估工具TensorFlow Model Analysis深度学习模型的全面评估工具 项目介绍 TensorFlow Model Analysis 简称TFMA是上一篇gorush推送数据备份自动化使用cron定时执行备份下一篇10大应急响应神器SOC团队必备的Awesome Incident Response工具全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考