0


分布式协同AI基准测试KubeEdge-Ianvs快速入门教程

简介

分布式协同AI基准测试KubeEdge-Ianvs是KubeEdge SIG AI孵化的一个全新的社区子项目,主要来解决工业界如下核心痛点:

  1. 业务数据集及其配套算法难以获取;

  2. 全场景多范式测试成本高;

  3. 封闭测试环境难以跟上各类新业务孵化;

  4. 个性场景的测试用例准备繁琐;

KubeEdge-Ianvs具备的如下特点:

  1. 丰富的AI生态,开箱即用:数据集与配套算法,覆盖开发5+流程,零改造开箱即用;

  2. 全场景灵活切换:用例管理统一不同架构与接口,同一套工具兼容5+场景范式;

  3. 可扩展开放工具链:环境管理自定义数据集与指标,告别封闭守旧的测试环境;

  4. 用例管理辅助生成测试用例,简单的配置即可降低繁琐重复编程;

本文后面将详细介绍KubeEdge-Ianvs如何快速入门。

依赖环境

你需要准备符合如下要求的工作设备:

  1. 一台计算机,比如虚拟机、台式机或者笔记本;

  2. 可用内存至少有4GB;

  3. 可用硬盘空间至少10GB;

  4. 已安装python 3.6+;

  5. 可访问GitHub和pip等;

在本次案例演示中,设备是带有python3.6的Linux系统。若你的设备是Windows系统,下文介绍的步骤仍然适用,但相关命令可能会有所不同。

安装Ianvs

step1: 下载ianvs仓库。

  1. mkdir /ianvs
  2. cd /ianvs #One might use another path preferred
  3. mkdir project
  4. cd project
  5. git clone https://github.com/kubeedge/ianvs.git

step2: 安装第三方依赖。

  1. sudo apt-get update
  2. sudo apt-get install libgl1-mesa-glx -y
  3. python -m pip install --upgrade pip
  4. cd ianvs
  5. python -m pip install ./examples/resources/third_party/*
  6. python -m pip install -r requirements.txt

step3: 安装 ianvs。

  1. python setup.py install

案例演示

以ianvs仓库中的singletask_learning_bench为例子。

1. 准备测试环境

step1: 准备测试环境的配置文件,请下载testenv.yaml。

  1. testenv:
  2. dataset:
  3. # 训练数据集的索引文件地址,当前只支持txt格式;
  4. train_url: "/ianvs/dataset/train_data/index.txt"
  5. # 测试数据集的索引文件地址,当前只支持txt格式;
  6. test_url: "/ianvs/dataset/test_data/index.txt"
  7. metrics:
  8. # 用来测试算法的指标,名字和下面介绍的指标函数的别名保持一致;
  9. - name: "f1_score"
  10. # 指标函数
  11. url: "./examples/pcb-aoi/singletask_learning_bench/testenv/f1_score.py"

step2: 准备指标函数,请下载f1_score.py。

  1. from FPN_TensorFlow.libs.label_name_dict.label_dict import NAME_LABEL_MAP
  2. from FPN_TensorFlow.data.io.read_tfrecord import convert_labels
  3. from FPN_TensorFlow.help_utils.tools import get_single_label_dict, single_label_eval
  4. from sedna.common.class_factory import ClassType, ClassFactory
  5. # 标明导入该python文件时可访问到的模块;
  6. # 该例子是说明ianvs系统自动导入该python文件时,只访问f1_score模块;
  7. # 若一个python文件具有较多模块,可用此方法做模块导入限制;
  8. __all__ = ["f1_score"]
  9. # 采用工厂模式注入f1_score模块;
  10. # alias=“f1_score” 是给该模块取一个别名;
  11. @ClassFactory.register(ClassType.GENERAL, alias="f1_score")
  12. def f1_score(y_true, y_pred):
  13. # y_true是真实标签列表, y_pred是预测值;
  14. # 本例子中y_true和y_pred都是字典类型,其中预测标签是读一系列包含标签信息的xml文件
  15. ...
  16. return f1_score_avg

step3: 准备数据

数据集是工业缺陷检测场景的PCB-AoI数据集,包含了训练数据集和测试数据集。

  1. cd /ianvs #One might use another path preferred
  2. mkdir dataset
  3. cd dataset
  4. wget https://kubeedge.obs.cn-north-1.myhuaweicloud.com:443/ianvs/pcb-aoi/dataset.zip
  5. unzip dataset.zip

2. 准备测试算法

step1: 准备测试算法的配置文件,请下载fpn_algorithm.yaml。

  1. algorithm:
  2. # AI范式类型,当前例子采用的是singletasklearning
  3. # 单任务学习:模型训练结束后,就做模型推理,最后做指标计算;
  4. paradigm_type: "singletasklearning"
  5. # 初始模型地址
  6. initial_model_url: "/ianvs/initial_model/model.zip"
  7. # AI范式包含的算法模块
  8. modules:
  9. # basemodel模块,包含了范式中的常用接口,比如train,predict等。
  10. - type: "basemodel"
  11. # 模块的别名叫FPN,详细见下面的basemodel.py
  12. name: "FPN"
  13. # 模块的python文件
  14. url: "./examples/pcb-aoi/singletask_learning_bench/testalgorithms/fpn/basemodel.py"
  15. # 模块的超参配置,支持同一个超参同时测多个值;
  16. hyperparameters:
  17. - momentum:
  18. values:
  19. - 0.95
  20. - 0.5
  21. - learning_rate:
  22. values:
  23. - 0.1

注意:点击见如何配置超参数。

step2:准备basemodel模块文件,请下载basemodel.py。

  1. import os
  2. import tempfile
  3. import time
  4. import zipfile
  5. import cv2
  6. import logging
  7. import numpy as np
  8. import tensorflow as tf
  9. import tensorflow.contrib.slim as slim
  10. from sedna.common.config import Context
  11. from sedna.common.class_factory import ClassType, ClassFactory
  12. from FPN_TensorFlow.help_utils.help_utils import draw_box_cv
  13. from FPN_TensorFlow.libs.label_name_dict.label_dict import NAME_LABEL_MAP
  14. from FPN_TensorFlow.data.io.read_tfrecord import next_batch_for_tasks, convert_labels
  15. from FPN_TensorFlow.data.io import image_preprocess
  16. from FPN_TensorFlow.help_utils.tools import mkdir, view_bar, get_single_label_dict, single_label_eval
  17. from FPN_TensorFlow.libs.configs import cfgs
  18. from FPN_TensorFlow.libs.box_utils.show_box_in_tensor import draw_box_with_color, draw_boxes_with_categories
  19. from FPN_TensorFlow.libs.fast_rcnn import build_fast_rcnn
  20. from FPN_TensorFlow.libs.networks.network_factory import get_flags_byname, get_network_byname
  21. from FPN_TensorFlow.libs.rpn import build_rpn
  22. # 标明导入该python文件时可访问到的模块;
  23. # 该例子是说明ianvs系统自动导入该python文件时,只访问BaseModel模块;
  24. # 若一个python文件具有较多模块,可用此方法做模块导入限制;
  25. __all__ = ["BaseModel"]
  26. # 采用工厂模式注入BaseModel模块;
  27. # alias=“FPN” 是给该模块取一个别名;
  28. @ClassFactory.register(ClassType.GENERAL, alias="FPN")
  29. class BaseModel:
  30. def __init__(self, **kwargs):
  31. ...
  32. def train(self, train_data, valid_data=None, **kwargs):
  33. ...
  34. # 训练模型的算法函数
  35. def predict(self, data, input_shape=None, **kwargs):
  36. ...
  37. # 模型预测的算法函数

step3: 安装basemodel模块用到的第三方算法包FPN_TensorFlow。

  1. cd /ianvs/project/ianvs/
  2. python -m pip install examples/resources/algorithms/FPN_TensorFlow-0.1-py3-none-any.whl

注意:安装该算法包的前提是设备系统安装python3.6。

step4: 准备初始模型

  1. cd /ianvs #One might use another path preferred
  2. mkdir initial_model
  3. cd initial_model
  4. wget https://kubeedge.obs.cn-north-1.myhuaweicloud.com:443/ianvs/pcb-aoi/model.zip

3. 准备基准测试工作

step1: 准备基准测试工作的配置文件,请下载benchmarkingjob.yaml。

  1. benchmarkingjob:
  2. # 基准测试工作名
  3. name: "benchmarkingjob"
  4. # 基准测试工作空间
  5. workspace: "/ianvs/singletask_learning_bench/workspace"
  6. # 测试环境的配置文件
  7. testenv: "./examples/pcb-aoi/singletask_learning_bench/testenv/testenv.yaml"
  8. # 测试对象配置
  9. test_object:
  10. # 测试类型是测试算法(algorithms)
  11. type: "algorithms"
  12. algorithms:
  13. # 算法名
  14. - name: "fpn_singletask_learning"
  15. # 算法配置文件
  16. url: "./examples/pcb-aoi/singletask_learning_bench/testalgorithms/fpn/fpn_algorithm.yaml"
  17. # 测试用例排行榜
  18. rank:
  19. # 用指标f1_score降序排测试用例
  20. sort_by: [ { "f1_score": "descend" } ]
  21. # 可视化配置
  22. visualization:
  23. # 只可视化选择的数据(选择的数据配置见下面selected_dataitem配置)
  24. mode: "selected_only"
  25. # 可视化方式采用 打印表单
  26. method: "print_table"
  27. # 选择数据配置
  28. selected_dataitem:
  29. # 选择所有的算法范式
  30. paradigms: [ "all" ]
  31. # 选择所有的算法模块
  32. modules: [ "all" ]
  33. # 选择所有的超参数
  34. hyperparameters: [ "all" ]
  35. # 选择 f1_score 指标
  36. metrics: [ "f1_score" ]
  37. # 保存模式配置,保存选择的数据和所有的输出数据
  38. # 保存地址工作空间中,相对地址:./rank
  39. save_mode: "selected_and_all"

4. 运行基准测试工作

  1. ianvs -f ./examples/pcb-aoi/singletask_learning_bench/benchmarkingjob.yaml

5. 查看测试结果

在控制台,你可以看到选择数据后的可视化结果:

rank

algorithm

f1_score

paradigm

basemodel

learning_rate

momentum

time

url

1

fpn_singletask_learning

0.8396

singletasklearning

FPN

0.1

0.5

2022-07-07 20:33:53

/ianvs/pcb-aoi/singletask_learning_bench/workspace/benchmarkingjob/fpn_singletask_learning/49eb5ffd-fdf0-11ec-8d5d-fa163eaa99d5

2

fpn_singletask_learning

0.8353

singletasklearning

FPN

0.1

0.95

2022-07-07 20:31:08

/ianvs/pcb-aoi/singletask_learning_bench/workspace/benchmarkingjob/fpn_singletask_learning/49eb5ffc-fdf0-11ec-8d5d-fa163eaa99d5

在基准测试工作空间,你可以看到所有的输出产物。

  1. cd /ianvs/singletask_learning_bench/workspace
  2. tree

附录

KubeEdge-Ianvs项目地址: https://github.com/kubeedge/ianvs

KubeEdge-Ianvs项目文档地址:https://ianvs.readthedocs.io/en/latest/

KubEdge SIG AI地址:https://github.com/kubeedge/community/tree/master/sig-ai


本文转载自: https://blog.csdn.net/VectorYang/article/details/126025276
版权归原作者 VectorYang 所有, 如有侵权,请联系我们删除。

“分布式协同AI基准测试KubeEdge-Ianvs快速入门教程”的评论:

还没有评论