AI开发平台MODELARTS-编排Workflow:编写工作流代码示例
时间:2024-12-24 15:39:17
编写工作流代码示例
以图像分类为例,阐述机器学习端到端场景的完整开发过程,主要包括数据标注、模型训练、服务部署等过程。您需要准备如下算法和数据集。
- 准备一个图像分类算法(或者可以直接从AI Gallery搜索订阅一个“图像分类-ResNet_v1_50”算法)。
- 准备一个图片类型的数据集,请参考准备数据集。可从AI Gallery直接下载(例如:8类常见生活垃圾图片数据集)。
from modelarts import workflow as wf # 定义统一存储对象管理输出目录 output_storage = wf.data.OutputStorage(name="output_storage", description="输出目录统一配置") # 创建标注任务 data = wf.data.DatasetPlaceholder(name="input_data") label_step = wf.steps.LabelingStep( name="labeling", title="数据标注", properties=wf.steps.LabelTaskProperties( task_type=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION, task_name=wf.Placeholder(name="task_name", placeholder_type=wf.PlaceholderType.STR, description="请输入一个只包含大小写字母、数字、下划线、中划线或者中文字符的名称。填写已有标注任务名称,则直接使用该标注任务;填写新标注任务名称,则自动创建新的标注任务") ), inputs=wf.steps.LabelingInput(name="labeling_input", data=data), outputs=wf.steps.LabelingOutput(name="labeling_output"), ) # 对标注任务进行发布 release_step = wf.steps.ReleaseDatasetStep( name="release", title="数据集版本发布", inputs=wf.steps.ReleaseDatasetInput(name="input_data", data=label_step.outputs["labeling_output"].as_input()), outputs=wf.steps.ReleaseDatasetOutput(name="labeling_output", dataset_version_config=wf.data.DatasetVersionConfig(train_evaluate_sample_ratio="0.8")), depend_steps=[label_step] ) # 创建训练作业 job_step = wf.steps.JobStep( name="training_job", title="图像分类训练", algorithm=wf.AIGalleryAlgorithm( subscription_id="***", # 订阅算法的ID,自行补充 item_version_id="10.0.0", # 订阅算法的版本ID parameters=[ wf.AlgorithmParameters(name="task_type", value="image_classification_v2"), wf.AlgorithmParameters(name="model_name", value="resnet_v1_50"), wf.AlgorithmParameters(name="do_train", value="True"), wf.AlgorithmParameters(name="do_eval_along_train", value="True"), wf.AlgorithmParameters(name="variable_update", value="horovod"), wf.AlgorithmParameters(name="learning_rate_strategy", value=wf.Placeholder(name="learning_rate_strategy", placeholder_type=wf.PlaceholderType.STR, default="0.002", description="训练的学习率策略(10:0.001,20:0.0001代表0-10个epoch学习率0.001,10-20epoch学习率0.0001),如果不指定epoch, 会根据验证精度情况自动调整学习率,并当精度没有明显提升时,训练停止")), wf.AlgorithmParameters(name="batch_size", value=wf.Placeholder(name="batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步训练的图片数量(单卡)")), wf.AlgorithmParameters(name="eval_batch_size", value=wf.Placeholder(name="eval_batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步验证的图片数量(单卡)")), wf.AlgorithmParameters(name="evaluate_every_n_epochs", value=wf.Placeholder(name="evaluate_every_n_epochs", placeholder_type=wf.PlaceholderType.FLOAT, default=1.0, description="每训练n个epoch做一次验证")), wf.AlgorithmParameters(name="save_model_secs", value=wf.Placeholder(name="save_model_secs", placeholder_type=wf.PlaceholderType.INT, default=60, description="保存模型的频率(单位:s)")), wf.AlgorithmParameters(name="save_summary_steps", value=wf.Placeholder(name="save_summary_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="保存summary的频率(单位:步)")), wf.AlgorithmParameters(name="log_every_n_steps", value=wf.Placeholder(name="log_every_n_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="打印日志的频率(单位:步)")), wf.AlgorithmParameters(name="do_data_cleaning", value=wf.Placeholder(name="do_data_cleaning", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否进行数据清洗, 数据格式异常会导致训练失败,建议开启,保证训练稳定性。数据量过大时,数据清洗可能耗时较久,可自行线下清洗(支持BMP.JPEG,PNG格式, RGB三通道)。建议用JPEG格式数据")), wf.AlgorithmParameters(name="use_fp16", value=wf.Placeholder(name="use_fp16", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用混合精度, 混合精度可以加速训练,但是可能会造成一点精度损失,如果对精度无极严格的要求,建议开启")), wf.AlgorithmParameters(name="xla_compile", value=wf.Placeholder(name="xla_compile", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否开启xla编译,加速训练,默认启用")), wf.AlgorithmParameters(name="data_format", value=wf.Placeholder(name="data_format", placeholder_type=wf.PlaceholderType.ENUM, default="NCHW", enum_list=["NCHW", "NHWC"], description="输入数据类型,NHWC表示channel在最后,NCHW表channel在最前,默认值NCHW(速度有提升)")), wf.AlgorithmParameters(name="best_model", value=wf.Placeholder(name="best_model", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否在训练过程中保存并使用精度最高的模型,而不是最新的模型。默认值True,保存最优模型。在一定误差范围内,最优模型会保存最新的高精度模型")), wf.AlgorithmParameters(name="jpeg_preprocess", value=wf.Placeholder(name="jpeg_preprocess", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用jpeg预处理加速算子(仅支持jpeg格式数据),可加速数据读取,提升性能,默认启用。如果数据格式不是jpeg格式,开启数据清洗功能即可使用")) ] ), inputs=[wf.steps.JobInput(name="data_url", data=release_step.outputs["labeling_output"].as_input())], outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=output_storage.join("/train_output/")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="training_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格" ) ) ), depend_steps=[release_step] ) model_name = wf.Placeholder(name="model_name", placeholder_type=wf.PlaceholderType.STR, description="请输入一个1至64位且只包含大小写字母、中文、数字、中划线或者下划线的名称。工作流第一次运行建议填写新的模型名称,后续运行会自动在该模型上新增版本") # 模型注册 model_step = wf.steps.ModelStep( name="model_step", title="模型注册", inputs=[wf.steps.ModelInput(name="model_input", data=job_step.outputs["train_url"].as_input())], outputs=[wf.steps.ModelOutput(name="model_output", model_config=wf.steps.ModelConfig(model_name=model_name, model_type="TensorFlow"))], depend_steps=[job_step] ) # 服务部署 service_step = wf.steps.ServiceStep( name="service_step", title="服务部署", inputs=[wf.steps.ServiceInput(name="service_input", data=wf.data.ServiceInputPlaceholder(name="service_model", model_name=model_name))], outputs=[wf.steps.ServiceOutput(name="service_output")], depend_steps=[model_step] ) # 构建工作流对象 workflow = wf.Workflow(name="image-classification-ResNeSt", desc="this is a image classification workflow", steps=[label_step, release_step, job_step, model_step, service_step], storages=[output_storage] )
在工作流编写完成后可自行进行发布等操作。
support.huaweicloud.com/usermanual-standard-modelarts/modelarts_workflow_0400.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章
- ModelArts Workflow_什么是Workflow_工作流
- ModelArts推理部署_模型_AI应用来源-华为云
- 函数工作流FunctionGraph支持毫秒级响应文件处理_函数工作流_华为云FunctionGraph-华为云
- 函数流管理_编排无服务器_函数工作流 FunctionGraph-华为云
- 什么是函数工作流_函数托管计算服务_函数工作流 FunctionGraph-华为云
- ModelArts AI Gallery_市场_资产集市
- ModelArts自动学习是什么_自动学习简介_零代码完成AI开发
- 低代码工作流_业务流程管理系统_低代码平台-华为云
- ModelArts开发环境_开发环境简介_开发环境怎么使用
- ModelArts是什么_AI开发平台_ModelArts功能