目录
简介
依赖环境
安装Ianvs
案例演示
1. 准备测试环境
2. 准备测试算法
3. 准备基准测试工作
4. 运行基准测试工作
5. 查看测试结果
附录
简介 分布式协同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仓库。
mkdir /ianvs
cd /ianvs #One might use another path preferredmkdir project
cd project
git clone https://github.com/kubeedge/ianvs.git
step2: 安装第三方依赖。
sudo apt-get update
sudo apt-get install libgl1-mesa-glx -y
python -m pip install --upgrade pipcd ianvs
python -m pip install ./examples/resources/third_party/*
python -m pip install -r requirements.txt
step3: 安装 ianvs。
python setup.py install
案例演示 以ianvs仓库中的singletask_learning_bench为例子。
1. 准备测试环境
step1: 准备测试环境的配置文件,请下载testenv.yaml。
testenv:
dataset:
# 训练数据集的索引文件地址,当前只支持txt格式;
train_url: "/ianvs/dataset/train_data/index.txt"
# 测试数据集的索引文件地址,当前只支持txt格式;
test_url: "/ianvs/dataset/test_data/index.txt"metrics:
# 用来测试算法的指标,名字和下面介绍的指标函数的别名保持一致;
- name: "f1_score"
# 指标函数
url: "./examples/pcb-aoi/singletask_learning_bench/testenv/f1_score.py"
step2: 准备指标函数,请下载f1_score.py。
from FPN_TensorFlow.libs.label_name_dict.label_dict import NAME_LABEL_MAP
from FPN_TensorFlow.data.io.read_tfrecord import convert_labels
from FPN_TensorFlow.help_utils.tools import get_single_label_dict, single_label_eval
from sedna.common.class_factory import ClassType, ClassFactory# 标明导入该python文件时可访问到的模块;
# 该例子是说明ianvs系统自动导入该python文件时,只访问f1_score模块;
# 若一个python文件具有较多模块,可用此方法做模块导入限制;
__all__ = ["f1_score"]# 采用工厂模式注入f1_score模块;
# alias=“f1_score” 是给该模块取一个别名;
@ClassFactory.register(ClassType.GENERAL, alias="f1_score")
def f1_score(y_true, y_pred):
# y_true是真实标签列表, y_pred是预测值;
# 本例子中y_true和y_pred都是字典类型,其中预测标签是读一系列包含标签信息的xml文件
...
return f1_score_avg
step3: 准备数据
数据集是工业缺陷检测场景的PCB-AoI数据集,包含了训练数据集和测试数据集。
cd /ianvs #One might use another path preferred
mkdir dataset
cd dataset
wget https://kubeedge.obs.cn-north-1.myhuaweicloud.com:443/ianvs/pcb-aoi/dataset.zip
unzip dataset.zip
2. 准备测试算法
step1: 准备测试算法的配置文件,请下载fpn_algorithm.yaml。
algorithm:
# AI范式类型,当前例子采用的是singletasklearning
# 单任务学习:模型训练结束后,就做模型推理,最后做指标计算;
paradigm_type: "singletasklearning"
# 初始模型地址
initial_model_url: "/ianvs/initial_model/model.zip"# AI范式包含的算法模块
modules:
# basemodel模块,包含了范式中的常用接口,比如train,predict等。
- type: "basemodel"
# 模块的别名叫FPN,详细见下面的basemodel.py
name: "FPN"
# 模块的python文件
url: "./examples/pcb-aoi/singletask_learning_bench/testalgorithms/fpn/basemodel.py"# 模块的超参配置,支持同一个超参同时测多个值;
hyperparameters:
- momentum:
values:
- 0.95
- 0.5
- learning_rate:
values:
- 0.1
注意:点击见如何配置超参数。
step2:准备basemodel模块文件,请下载basemodel.py。
import os
import tempfile
import time
import zipfile
import cv2
import loggingimport numpy as np
import tensorflow as tf
import tensorflow.contrib.slim as slim
from sedna.common.config import Context
from sedna.common.class_factory import ClassType, ClassFactory
from FPN_TensorFlow.help_utils.help_utils import draw_box_cv
from FPN_TensorFlow.libs.label_name_dict.label_dict import NAME_LABEL_MAP
from FPN_TensorFlow.data.io.read_tfrecord import next_batch_for_tasks, convert_labels
from FPN_TensorFlow.data.io import image_preprocess
from FPN_TensorFlow.help_utils.tools import mkdir, view_bar, get_single_label_dict, single_label_eval
from FPN_TensorFlow.libs.configs import cfgs
from FPN_TensorFlow.libs.box_utils.show_box_in_tensor import draw_box_with_color, draw_boxes_with_categories
from FPN_TensorFlow.libs.fast_rcnn import build_fast_rcnn
from FPN_TensorFlow.libs.networks.network_factory import get_flags_byname, get_network_byname
from FPN_TensorFlow.libs.rpn import build_rpn# 标明导入该python文件时可访问到的模块;
# 该例子是说明ianvs系统自动导入该python文件时,只访问BaseModel模块;
# 若一个python文件具有较多模块,可用此方法做模块导入限制;
__all__ = ["BaseModel"]# 采用工厂模式注入BaseModel模块;
# alias=“FPN” 是给该模块取一个别名;
@ClassFactory.register(ClassType.GENERAL, alias="FPN")
class BaseModel:def __init__(self, **kwargs):
...def train(self, train_data, valid_data=https://www.it610.com/article/None, **kwargs):
...
# 训练模型的算法函数def predict(self, data, input_shape=None, **kwargs):
...
# 模型预测的算法函数
step3: 安装basemodel模块用到的第三方算法包FPN_TensorFlow。
cd /ianvs/project/ianvs/
python -m pip install examples/resources/algorithms/FPN_TensorFlow-0.1-py3-none-any.whl
注意:安装该算法包的前提是设备系统安装python3.6。
step4: 准备初始模型
cd /ianvs #One might use another path preferred
mkdir initial_model
cd initial_model
wget https://kubeedge.obs.cn-north-1.myhuaweicloud.com:443/ianvs/pcb-aoi/model.zip
3. 准备基准测试工作
step1: 准备基准测试工作的配置文件,请下载benchmarkingjob.yaml。
benchmarkingjob:
# 基准测试工作名
name: "benchmarkingjob"
# 基准测试工作空间
workspace: "/ianvs/singletask_learning_bench/workspace"# 测试环境的配置文件
testenv: "./examples/pcb-aoi/singletask_learning_bench/testenv/testenv.yaml"# 测试对象配置
test_object:
# 测试类型是测试算法(algorithms)
type: "algorithms"
algorithms:
# 算法名
- name: "fpn_singletask_learning"
# 算法配置文件
url: "./examples/pcb-aoi/singletask_learning_bench/testalgorithms/fpn/fpn_algorithm.yaml"# 测试用例排行榜
rank:
# 用指标f1_score降序排测试用例
sort_by: [ { "f1_score": "descend" } ]# 可视化配置
visualization:
# 只可视化选择的数据(选择的数据配置见下面selected_dataitem配置)
mode: "selected_only"
# 可视化方式采用 打印表单
method: "print_table"# 选择数据配置
selected_dataitem:
# 选择所有的算法范式
paradigms: [ "all" ]# 选择所有的算法模块
modules: [ "all" ]# 选择所有的超参数
hyperparameters: [ "all" ]# 选择 f1_score 指标
metrics: [ "f1_score" ]# 保存模式配置,保存选择的数据和所有的输出数据
# 保存地址工作空间中,相对地址:./rank
save_mode: "selected_and_all"
4. 运行基准测试工作
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 |
cd /ianvs/singletask_learning_bench/workspace
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
【ianvs|分布式协同AI基准测试KubeEdge-Ianvs快速入门教程】
推荐阅读
- python|RuntimeError: result type Float can‘t be cast to the desired output type __int64 yolov5 V6.x
- 数据挖掘|基于双层主题模型的技术演化分析框架及其应用
- 广告|5种经典的数据分析思维和方法
- 大数据|数据分析中的“产品思维”经验讲解
- 大数据|《数据分析思维》(分析方法与业务知识)
- 人工智能|10 个开源 Python OpenCV 小项目,YouTube热门
- 2022开放原子全球开源峰会|开源汇智创未来 | 2022开放原子全球开源峰会OpenAtom openEuler分论坛圆满召开
- 人工智能|麒麟软件副总裁李震宁(中国开源社区是操作系统破局的土壤)
- 人工智能|汽车自动驾驶是人工智能吗,自动驾驶是人工智能