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

这篇具有很好参考价值的文章主要介绍了分布式协同AI基准测试KubeEdge-Ianvs快速入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

简介

依赖环境

安装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 preferred

mkdir 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 pip

cd 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 logging

import 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=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文章来源地址https://www.toymoban.com/news/detail-492507.html

到了这里,关于分布式协同AI基准测试KubeEdge-Ianvs快速入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 分布式存储测试模型

    分布式存储测试模型 (1) Cosbench 可以通过对象接口,模拟对象数据访问时数据高并发以及大带宽写入数据时海量小文件数据写入的 OPS( 每秒可以读取或者写入的文件数量 ) 以及大容量数据写入时的带宽 ( 每秒写入和读取的数据量 ) 性能。 (2) Vdbench 可 基 于 文 件 系 统, 模 拟

    2024年02月11日
    浏览(11)
  • Jmeter分布式压力测试

    Jmeter分布式压力测试

    目录 1、场景 2、原理 3、注意事项 4、slave配置 5、master配置 6、脚本执行 在做性能测试时,单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。 例如4C8G的window server机器,使用UI方式,最高压测

    2024年02月08日
    浏览(8)
  • 【Locust分布式压力测试】

    【Locust分布式压力测试】

    Locust分布式压力测试 https://docs.locust.io/en/stable/running-distributed.html Distributed load generation A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousand requests per second, possibly over ten thousand if you use FastHttpUser. But if your test plan i

    2024年04月22日
    浏览(10)
  • 性能测试-JMeter分布式测试及其详细步骤

    性能测试-JMeter分布式测试及其详细步骤

    性能测试是软件测试中的一种,它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈,确保能满足业务需求。很多系统都需要做性能测试,如Web应用、数据库和操作系统等。 性能测试种类非常多,有些概念也很相近: Load Testing Baseline Testing S

    2024年02月07日
    浏览(9)
  • 【性能测试】JMeter分布式测试及其详细步骤

    【性能测试】JMeter分布式测试及其详细步骤

    性能测试是软件测试中的一种,它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈,确保能满足业务需求。很多系统都需要做性能测试,如Web应用、数据库和操作系统等。 性能测试种类非常多,有些概念也很相近: Load Testing Baseline Testing S

    2024年02月02日
    浏览(7)
  • Jmeter性能测试:高并发分布式性能测试

    Jmeter性能测试:高并发分布式性能测试

    当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求。 基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的性能测试要求。 ​要进行分布式性能测试,我们首先要一台机器作为主控机(Controller),其

    2024年02月08日
    浏览(13)
  • Jmeter分布式压力测试详解

    Jmeter分布式压力测试详解

    在做性能测试时,单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。 例如4C8G的window server机器,使用UI方式,最高压测在1800并发(RT 20ms以内)左右。如果对于XML文件进行解析,更容易吃CPU,并发

    2024年02月05日
    浏览(9)
  • 分布式性能测试避坑指南

    当进行分布式性能测试时,以下是一些避坑的指南: 1.定义明确的测试目标 在开始测试之前,确保清楚地定义测试的目标和需求。确定要测试的关键指标和阈值,以便能够准确评估系统的性能。 2.设计合适的测试场景 根据实际使用情况和预期负载,设计具有代表性的测试场

    2024年02月12日
    浏览(8)
  • Jmeter进阶使用指南-分布式测试

    当你需要模拟大量并发用户并测试应用程序的性能时,JMeter的分布式测试功能非常有用。分布式测试允许你使用多个JMeter实例来模拟并发用户,从而提供更高的负载。 下面是一个详细的介绍和讲解分布式测试的步骤: 准备主机和从机: 首先,你需要准备一台主机和多台从机

    2024年02月09日
    浏览(11)
  • locust性能测试和分布式压测

    locust性能测试和分布式压测

    Locust是一个开源的Python性能测试工具,用于模拟大量并发用户访问网站、API等,以测试系统的性能和稳定性。它的主要特点包括: 1.简单易用:Locust基于Python编写,使用方便,学习曲线较低。 2.分布式支持:Locust支持分布式部署,可以在多台机器上运行,以模拟更大的并发用

    2024年02月16日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包