📫 使用问题反馈:contact.viesc@gmail.com / 服务器级设备专业咨询:tensor.station@gmail.com
English | 简体中文
如要在您的工作中引用YMIR,请使用下面的Bibtex:
@inproceedings{huang2021ymir,
title={YMIR: A Rapid Data-centric Development Platform for Vision Applications},
author={Phoenix X. Huang and Wenze Hu and William Brendel and Manmohan Chandraker and Li-Jia Li and Xiaoyu Wang},
booktitle={Proceedings of the Data-Centric AI Workshop at NeurIPS},
year={2021},
}
2.0.0版本更新时间为11/08/2022
YMIR平台
Docker
查看更多内容 ymir-executor-fork
在公共镜像内
更多代码更新请查看 ymir-dev。
YYMIR支持将训练好的模型直接部署到认证设备,需要查看更多硬件参数,请查看详情。
目录
YMIR(You Mine In Recursion)是一个简化的模型开发产品,专注于AI SUITE开源系列中的数据集版本和模型迭代。
目前人工智能商业化在算力、算法和技术方面达到阶段性成熟。AI应用在产品落地过程中经常会遇到无法大规模扩展的瓶颈,例如人才紧缺、开发成本高、迭代周期长等问题。
在此基础上,为了降低企业利用AI技术的成本,加速推进AI赋能企业,YMIR系统为算法人员提供端到端的算法研发工具,围绕AI开发过程中所需要的数据处理、模型训练等业务需求提供一站式服务,推动算法技术应用。
YMIR主要以数据为中心,提供高效模型开发迭代能力,集成了主动学习方法、数据和模型版本控制,同时集成工作空间等概念,实现多个任务特定数据集的并行快速迭代。平台设计开放API来集成第三方工具,支持企业将有限的人力投入到应用的开发中,以更低成本实现AI到行业的落地。
在AI开发过程中,基本流程通常可以归纳为几个步骤:确定目的、准备数据、训练模型、评估模型、部署模型。
YMIR平台主要满足用户规模化生产模型的需求,为用户提供良好、易用的展示界面,便于数据和模型的管理与查看。平台包含项目管理、标签管理、系统配置等主要功能模块,支持实现以下主要功能:
功能模块 | 一级功能 | 二级功能 | 功能说明 |
---|---|---|---|
项目管理 | 项目管理 | 项目编辑 | 支持添加、删除、编辑项目及项目信息 |
项目管理 | 迭代管理 | 迭代准备 | 支持设置迭代所需要的数据集和模型信息 |
项目管理 | 迭代管理 | 迭代步骤 | 支持将上一轮的数据填充到下一步对应的任务参数中 |
项目管理 | 迭代管理 | 迭代图表 | 支持将迭代过程中产生的数据集和模型按图表比对的方式展示在界面中 |
项目管理 | 数据集管理 | 导入数据集 | 支持用户通过复制公共数据集、url地址、路径导入以及本地导入等方式导入准备好的数据集 |
项目管理 | 数据集管理 | 查看数据集 | 支持图片数据及标注的可视化查看、以及历史信息的查看 |
项目管理 | 数据集管理 | 编辑数据集 | 支持数据集的编辑、删除 |
项目管理 | 数据集管理 | 数据集版本 | 支持在源数据集上创建新的数据集版本,版本号按时间递增 |
项目管理 | 数据集管理 | 数据预处理 | 支持图片数据的融合、筛选、采样操作 |
项目管理 | 数据集管理 | 数据挖掘 | 支持在海量数据集中找到对模型优化最有利的数据 |
项目管理 | 数据集管理 | 数据标注 | 支持为图片数据添加标注 |
项目管理 | 数据集管理 | 数据推理 | 支持通过指定模型为数据集添加标注 |
项目管理 | 模型管理 | 模型导入 | 支持本地导入模型文件到平台 |
项目管理 | 模型管理 | 训练模型 | 支持自选数据集、标签,并根据需求调整训练参数来训练模型,完成后可查看对应的模型效果 |
项目管理 | 模型管理 | 模型验证 | 支持上传单张图片,通过可视化的方式查看模型在真实图片中的表现,以校验模型的精确度 |
标签管理 | 标签管理 | 新增标签 | 支持训练标签的主名和别名的添加 |
模型部署 | 算法管理 | 公共算法 | 支持算法定制化、查看公共算法并试用,支持添加到我的算法中 |
模型部署 | 算法管理 | 公共算法 | 支持发布我的算法到公共算法 |
模型部署 | 算法管理 | 我的算法 | 支持查看和编辑我发布的算法和已添加的算法 |
模型部署 | 算法管理 | 部署算法 | 支持部署我的算法到设备上、查看部署历史 |
模型部署 | 设备管理 | 查看设备 | 支持设备信息和部署历史的查看 |
模型部署 | 设备管理 | 编辑设备 | 支持设备的添加、部署、删除 |
模型部署 | 设备管理 | 支持设备 | 支持对支持设备的查看和购买 |
系统配置 | 镜像管理 | 我的镜像 | 支持添加自定义镜像到系统中(仅管理员可用) |
系统配置 | 镜像管理 | 公共镜像 | 支持查看其他人上传的公共镜像并复制到自己的系统中 |
系统配置 | 权限配置 | 权限管理 | 支持对用户的权限进行配置(仅管理员可用) |
我们提供一个在线的体验版本,方便您试用,如有需要,请填写YMIR在线系统申请试用表,我们会将试用信息发送至您的邮箱。
用户如何选择安装GUI or CMD:
1.普通用户推荐安装GUI,支持模型的训练、优化完整流程;
2.如需要修改系统默认的配置,推荐安装CMD;
3.如已经部署ymir的已有版本,请参考升级说明。
本章节为YMIR-GUI的安装说明,如需使用CMD,请参考Ymir-CMD line使用指南。
GPU版本需要GPU,并安装nvidia驱动: https://www.nvidia.cn/geforce/drivers/
需要安装 docker 及 docker compose:
NVIDIA Docker
安装: nvidia-docker install-guide
## 通过nvidia-smi查看主机显卡驱动支持的最高cuda版本
nvidia-smi
## 对支持CUDA11以上版本的主机, 检查nvidia-docker是否安装成功
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
## 对支持CUDA10的主机, 检测nvidia-docker是否安装成功
sudo docker run --rm --gpus all nvidia/cuda:10.2-base-ubuntu18.04 nvidia-smi
## 上述命令在终端应输出类似以下的结果 (最高支持cuda 11.6)
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.60.02 Driver Version: 510.60.02 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla P4 Off | 00000000:0B:00.0 Off | 0 |
| N/A 62C P0 55W / 75W | 4351MiB / 7680MiB | 94% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 8132 C 4349MiB |
+-----------------------------------------------------------------------------+
需要保证环境依赖中所有条件已满足才能部署,否则容易出现各种不可控问题。
YMIR-GUI项目包在DockerHub上,安装部署YMIR步骤如下:
将部署项目YMIR下拉到本地服务器,克隆仓库地址命令:
git clone https://github.com/IndustryEssentials/ymir.git
# nvidia for gpu, runc for cpu.
SERVER_RUNTIME=runc
bash ymir.sh start
,建议不要使用sudo
命令,否则可能会造成权限不足。DEPLOY_MODULE_HOST_PORT=18801
DEPLOY_MODULE_URL=${DEPLOY_MODULE_HOST_PORT}
DEPLOY_MODULE_MYSQL_ROOT_PASSWORD=deploy_db_passwd
修改完成后再执行启动命令:bash ymir.sh start
。
服务启动成功后,默认配置端口为12001,可以直接访问 http://localhost:12001/ 显示登录界面即安装成功。如果需要停止服务,运行命令为:bash ymir.sh stop
默认初始用户权限为超级管理员,可以通过项目路径下.env文件查看账号密码,部署前可自行设置修改。建议在服务部署完成后,通过用户管理界面修改密码。
6.进入.env 文件配置,设置发信邮箱信息,配置完成后才可以发送邮件通知。
# Email Notification
EMAILS_ENABLED=True
FRONTEND_ENTRYPOINT=<YMIR FRONTEND URL>
SMTP_TLS=
SMTP_PORT=
SMTP_HOST=
SMTP_USER=
SMTP_PASSWORD=
EMAILS_FROM_EMAIL= <SENDER EMAIL ADDRESS>
EMAILS_FROM_NAME=ymir-project
EMAIL_RESET_TOKEN_EXPIRE_HOURS=1
EMAIL_TEMPLATES_DIR=/app/email-templates/build
label studio同时也是YMIR所支持的外接标注系统,可以作为备选标注工具安装。
LABEL_TOOL=label_studio
docker-compose -f docker-compose.label_studio.yml up -d
docker-compose -f docker-compose.label_studio.yml ps`
可以登录默认地址 http://localhost:8763/ 显示登录界面即安装成功。
docker-compose -f docker-compose.label_studio.yml down
数据和标签是深度学习模型训练的必要条件,模型的训练需要大量带标签的数据。然而在实际情况下,现实中存在的是大量没有标签的数据,如果全部由标注人员手工打上标签,人力和时间成本过高。
因此,YMIR平台通过主动学习的方法,首先通过本地导入或者少量数据来训练出一个初始模型,使用该初始模型,从海量数据中挖掘出对模型能力提高最有利的数据。挖掘完成后,仅针对这部分数据进行标注,对原本的训练数据集进行高效扩充。
使用更新后的数据集再次训练模型,以此来提高模型能力。相比于对全部数据标注后再训练,YMIR平台提供的方法更高效,减少了对低质量数据的标注成本。通过挖掘,标注,训练的循环,扩充高质量数据,提升模型能力。
本次使用一次模型迭代的完整流程来说明YMIR平台的操作过程。具体的操作流程请查看操作说明。
本章节为YMIR-CMD line的使用说明,如需安装和使用GUI,请参考GUI安装说明。
# Requires >= Python3.8.10
$ pip install ymir-cmd
$ mir --vesion
$ git clone --recursive https://github.com/IndustryEssentials/ymir.git
$ cd ymir/ymir/command
$ python setup.py clean --all install
$ mir --version
上图所示的是模型训练的一个典型流程:用户准备好外部数据,导入本系统,对数据进行适当筛选,开始训练得到一个(可能是粗精度的)模型,并依据这个模型,在一个待挖掘数据集中挑选适合进一步训练的图片,将这些图片进行标注,标注完成的结果与原训练集合并,用合并以后的结果再次执行训练过程,得到效果更好的模型。 在这一节里,我们需要使用命令行实现上图所示的流程,其他流程也可以类似实现。具体操作请查看命令行使用说明。
YMIR repo中的任何代码都应遵循编码标准,并将在CI测试中进行检查。
功能性代码需要进行单元测试。
在提交前使用 flake8 或 black 来格式化代码。 这两者均遵循 PEP8 和 Google Python Style 风格指南。
mypy - Python必须经过静态类型检查。
也可以查看 MSFT编码风格 来获取更多的建议。
查看这篇文档获取更多有关训练,推理与挖掘镜像的细节。
查看这篇文档 获取更多关于模型包数据结构的细节。
我们使用Git中代码版本控制的概念来管理我们的数据和模型。我们使用分支的概念创建新项目,以便同一组映像上的不同任务可以并行运行。数据集的增加、检索、更新和删除以及基本操作都创建提交到分支。从逻辑上讲,每次提交都存储数据集或新模型的更新版本,以及导致此更改的操作的元数据。最后,只有数据更改被合并到主分支,这在概念上,聚合了该平台上许多项目注释的所有数据。具体设计理念请查看 Life of a dataset。
无论是否有标签,必须创建images文件夹和annotations文件夹。图像放入images文件夹下,格式限为jpg、jpeg、png。标注文件放入annotations文件夹下,格式为pascal(无标注文件,annotations文件夹为空)。将images,annotations放入同一文件夹下,并压缩为.zip压缩包(非.rar压缩格式)。
默认配置文件模板需要在镜像中提取。
训练镜像 industryessentials/executor-det-yolov4-training:release-0.1.2
的配置文件模板位于:/img-man/training-template.yaml
挖掘与推理镜像 industryessentials/executor-det-yolov4-mining:release-0.1.2
的配置文件模板位于:/img-man/mining-template.yaml
(挖掘) 以及 /img-man/infer-template.yaml
(推理)
成功完成训练后,系统会输出模型的 id,用户可以根据这个 id 到 --model-location
位置找到对应的文件,它事实上是一个 tar 文件,可以直接使用 tar 命令解压,得到 params 和 json 格式的 mxnet 模型文件。
尚未在Windows服务器完备测试,暂时无法提供服务支持。
参考此文档。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。