【华为云技术分享】软件工程师的AI模型训练起步

前言

4月热播的韩剧《王国》,不知道大家有没有看?我一集不落地看完了。王子元子出生时,正逢宫内僵尸作乱,元子也被咬了一口,但是由于大脑神经元尚未形成,寄生虫无法控制神经元,所以医女在做了简单处理后,判断不会影响大脑。这里提到了人脑神经元,它也是AI神经网络的研究起源,具体展开讲讲。

人脑中总共有860亿个神经元,其中大脑皮层有160亿个神经元。大脑皮层的神经元数量决定了动物的智力水平,人的大脑皮层中神经元数量远高于其他物种,所以人类比其他物种更聪明。大象的脑子总共有2570亿个神经元,但是其中98%的神经元都存在于大象的小脑中,而大象的大脑皮层只有56亿个神经元,无法与人类相比。大脑皮层中的神经元数量越大,能耗也越大。人脑每天消耗的能量占人体全部耗能的25%,这也就是为什么我们每天都要吃多餐,很容易饿的原因。人之所以能够很快超越其他物种,主要是因为人类掌握了烹饪技术,能够在短时间内摄入大量卡路里以支持大脑运转,其他物种则将摄入的卡路里用于维护身体运转,不得不牺牲大脑皮层的神经元数量。

之所以先谈大脑神经元原理,也是为了引出本文的重点--现代AI技术。在正式进入AI技术前,我先讲讲软件工程师这份工作,因为现在有很多软件工程师准备转入AI行业。

软件工程师

我是软件工程师出身,2004年刚毕业时我写的是JSP代码(一种将Java语言嵌入在HTML代码中的编写方式),工作几年后转入分布式软件技术,再后来进入大数据技术领域,最近的4年时间我一直在从事AI平台研发工作。

软件工程师的要求,我总体分为基础编码和系统架构两方面,因此我对于软件工程师的考察,特别是校招学生时,为了进一步考察他们的综合能力,我每次都会自己准备面试题,这些题目包括了编程基本概念、算法编程题、操作系统、数据库编程、开源代码阅读、垃圾回收机制、系统架构描述等。

编码的话题展开来可以讲很久,发展历史很悠久,我15岁学编程时用的是Basic语言,读大学时学的是C语言,大学毕业参加工作后第一门用的语言是Java,其中的各种故事和理解可以写几篇文章,这里不展开谈。

我觉得谈到软件工程师工作,避不开软件架构设计。大众谈软件架构,很多人会认为软件架构就是一堆框架的组合,其实不对,软件架构本身是对于软件实体的组织形式的阐述,使用框架的意义是快速完成软件架构设计,而不是取代软件架构设计,两者本质上不是一类事物,更像是设计图纸和所使用的原材料。软件架构就是通过对软件生命周期的拆分,在符合业务架构的前提下,以达到软件本身访问增长目的的方式。这个增长需要软件开发的增长,也需要软件运行的增长,由此达到所支撑业务的增长。

市面上也确实有很多例如“分布式系统架构”、“微服务架构”等等跟随着潮流的书籍,但是看完后只停留在会采用一些开源框架进行整体框架搭建,我说的是搭建,而不是设计。确实是搭建,你所拥有的能力就好像小孩子搭积木,只会采用固定讨论,或者学得差点,连固定套路都没学会,这样对你的个人能力发展其实没有多大好处,这也是为什么很多程序员在完成了程序员-架构师的转型后,没过多久就转为纯管理,或者彻底离开了技术界,因为从来没有大彻大悟理解系统架构。

之所以谈了这么多系统架构相关的工作理解,是因为我认为系统架构师系统化的思维,我们搞AI系统也是系统化的思维,从有较强编程能力的系统架构师转AI技术,相对容易一些。

AI工程师

为什么要从软件工程师转行到AI产品研发?因为AI产品研发有更大的吸引力,因为它更难,难到我们并不确定什么时候才能真正做出来,做出来真正能够可复制的AI产品。表面上看它也是一个门槛—一个“可用”且“可复制”的AI技术,但因为难度足够大,所以有挑战性,必须不断地改善技术,做全球范围内还没有做出来的技术。搞软件开发时处理的一些问题可能是其他公司已经解决的,并非“人类”都还没有解决的问题。

AI的研究最早可以被追溯到亚里士多德的三段论,然后莱布尼茨创立了处理逻辑,布尔在布尔代数上的贡献,弗雷德在近代逻辑上的贡献,罗素在逻辑主义方面的贡献,这些工作都是在数据逻辑上的。一般认为,现代AI技术讨论,起源于1956年在达特茅斯学院召开的夏季研讨会,而这门学科的源头可能是Alan Turing(阿兰.图灵) 1948年在英国国家物理实验室(NPL)写过的一份内部报告,这份报告中提到了肉体智能和无肉体智能,从某种意义上预示了后来符号派和统计派之争,或是Turing在1950年在哲学杂志《心》(Mind)上发表的文章“计算机与智能”,反正都是Turing。

可以这么认为,现代AI是一系列通用目的技术的总称。现代AI技术,主要指基于机器学习(Machine Learning,简称ML)/深度学习(Deep Learning,简称DL)的一系列方法和应用,这只是AI领域的一个分支,也是目前发展最快、应用最广的分支。

机器学习/深度学习的原理可以这样理解:建立一个模型,给一个输入,通过模型的运算,得到一个输出。可以用于解决一个简单问题,例如识别图片是不是狗,也可以用来解决复杂问题,例如下棋、开车、医疗诊断、交通治理等等,也可以理解为,模型就是一个函数f(x),上述过程,可以表达为:f(一张图片)=狗/不是狗。

一个AI应用开发,大概分为三个阶段:

  1. 第一阶段,识别问题、构建模型、选择模型。AI的开发和培养一个小孩子类似,不同的孩子有不同的爱好和特长,同样地,AI也有很多模型/算法,不同的模型/算法适合解决不同的问题。所以,首先要识别你要解决的是个什么问题,然后选择一个合适的模型/算法;
  2. 第二阶段,训练模型。和培养小孩子一样,即使你发现小孩子有音乐天分,他也不可能天生就是钢琴家,他需要专业的训练。AI开发也一样,选定模型/算法后,即使算法再好,也不能马上有效工作,你需要用大量的数据训练这个模型,训练过程中不断优化参数,让模型能够更为有效地工作。这个阶段AI模型的工作状态,叫做“训练”;
  3. 第三阶段,模型部署。模型训练结束后就可以部署了。比如一个人脸识别的模型,你可以把它部署在手机上,用于开机鉴权,也可以把它部署在园区闸机上,用于出入管理,还可以把它部署在银行的客户端上,用于业务鉴权,等等。如同一个孩子成长为钢琴家后,既可以在音乐会上演奏,也可以在家庭聚会上表演。AI模型部署之后的工作状态,专业的说法,叫做“推理”。

通过上述AI开发过程的简述,可以发现,算法、数据和算力,是驱动AI发展的三大动力,三者缺一不可。

  1. 算法相当于是基因。基因不好,再努力也白搭。如何识别问题,并根据问题选择算法,甚至开发新的算法,是高端AI专家的核心竞争力;
  2. 数据相当于是学习材料。光基因好,没有好的教材,也教不出大师。AI的训练,需要海量的、高质量的数据作为输入。AlhpaGo通过自己和自己下棋,下了几千万盘,人类一辈子最多也就下几千盘。没有这样的训练量,AlhpaGo根本不可战胜人类。自动驾驶,Google已经搞了10年,训练了几十万小时,远远超过一个专业赛车手的训练量,但离真正的无人驾驶还差很远。另外,数据的质量也很重要,如果你给AI输入的数据是错的,那么训练出来的AI,也会做出错误的结果。简单的说,如果你把猫的图片当做狗的图片去训练AI,那么训练出来的AI,就一定会把猫当做狗。数据的重要性直接导致了中国涌现了大批以数据标注为生存手段的公司和个人;
  3. 一个小孩,光有天分和好的学习材料,自己如果不努力,不投入时间和精力好好学习,绝对不可能成为大师。同样的道理,一个AI模型,算法再好、数据再多,如果没有足够的算力,支撑它持续不断的训练,这个模型永远也不能成为一个真正好用的模型。这就是为什么英伟达崛起的原因,这家公司的GPU芯片提供了最为适配于人脑神经网络的计算算力,现在国内工业界也有了类似的公司产品-华为的达芬奇芯片。

训练AI应用模型

动手实践前

接下来,我们通过对一个AI应用模型的训练和推理过程介绍,开始动手实践。

训练模型需要算力,对于算力的获取,训练和推理可以根据自己的业务需求,选择使用公有云或自己购买带算力芯片的服务器,本文案我选择的是某花厂的AI开发平台,因为近期他们刚推出一个免费算力的推广活动,可以省下一笔训练费用。为了便于调试,我首先在自己的CPU个人电脑上编写代码、训练模型,这样做的缺点是模型收敛的时间长了一些。

疫情期间,对于民众来说,佩戴口罩是最有效防止被传染新冠病毒的方式,保护自己的同时也保护他人。所以本文的案例是佩戴口罩的识别模型训练。

识别算法离不开目标检测。目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小。由于各类物体有不同的形状、大小和数量,加上物体间还会相互遮挡, 因此目标检测一直都是机器视觉领域中最具挑战性的难题之一。

基于深度学习的人脸检测算法,多数都是基于深度学习目标检测算法进行的改进,或者说是把通用的目标检测模型,为适应人脸检测任务而进行的特定配置。而众多的目标检测模型(Faster RCNN、SSD、YOLO)中,人脸检测算法最常用的是SSD算法(Single Shot MultiBox Detector,“Single Shot”指的是单目标检测,“MultiBox”中的“Box”就像是我们平时拍摄时用到的取景框,只关注框内的画面,屏蔽框外的内容。创建“Multi”个"Box",将每个"Box"的单目标检测结果汇总起来就是多目标检测。换句话说,SSD将图像切分为N片,并对每片进行独立的单目标检测,最后汇总每片的检测结果。),其他如SSH模型、S3FD模型、RetinaFace算法,都是受SSD算法的启发,或者基于SSD进行的任务定制化改进, 例如将定位层提到更靠前的位置,Anchor大小调整、Anchor标签分配规则的调整,在SSD基础上加入FPN等。本文训练口罩识别模型采用了YOLO。

目标检测过程都可以分解为两个独立的操作:

  1. 定位(location): 用一个矩形(bounding box)来框定物体,bounding box一般由4个整数组成,分别表示矩形左上角和右下角的x和y坐标,或矩形的左上角坐标以及矩形的长和高。
  2. 分类(classification): 识别bounding box中的(最大的)物体。

我选择采用keras-yolo3-Mobilenet方案,开源项目地址:

https://github.com/Adamdad/keras-YOLOv3-mobilenet。

MobileNet的创新亮点是Depthwise Separable Convolution(深度可分离卷积),与VGG16相比,在很小的精度损失情况下,将运算量减小了30倍。YOLOv3的创新亮点是DarkNet-53、Prediction Across Scales、多标签多分类的逻辑回归层。

基于开源数据集的实验结果:

动手训练模型

训练模型自然需要训练数据集和测试数据集,大家可以在这里下载:https://modelarts-labs-bj4.obs.cn-north-4.myhuaweicloud.com/casezoo/maskdetect/datasets/maskdetectdatasets.zip

Yolo v3-MobileNet目标检测工程的目录结构如下:

|--model_data
 |--voc_classes.txt
 |--yolo_anchors.txt
|--yolo3
 |--model.py
 |--model_Mobilenet.py
 |--utiles.py
|--convert.py
|--kmeans.py
|--train.py
|--train_Mobilenet.py
|--train_bottleneck.py
|--voc_annotation.py
|--yolo.py
|--yolo_Mobilenet.py
|--yolo_video.py

开源项目的好处是已经帮你封装了流程,例如涉及的Yolo代码不用修改,本次训练过程需要修改的代码主要是以下三个:

  1. train_Mobilenet.py:模型训练代码;
  2. yolo/model_Mobilenet.py:基于mobilenet的yolo的模型代码,如果相对模型代码仔细研究的人,可以研究这个代码;
  3. yolo_Mobilenet.py:模型推理代码。

接下来具体介绍我们需要修改的代码,按照功能分为数据类、模型类、可视化类、迁移上云准备类。

  • 数据类:

仿照 modeldata/vocclasses.txt 写一个是否有戴口罩的类别的txt,内容只有yes_mask、no_mask两个字符。

如果你下载我给出的数据集,你会发现,口罩数据集中给出的xml标注格式是VOC的标准的,仿照convert.py和voc_annotation.py写一个数据转换文件,代码如下所示:

 	import xml.etree.ElementTree as ET 
import os 
 
def convert_annotation(classes, label_path): 
    in_file = open(label_path) 
    tree=ET.parse(in_file) 
    root = tree.getroot() 
    output_list = [] 
    for obj in root.iter('object'): 
        difficult = obj.find('difficult').text 
        cls = obj.find('name').text 
        if cls not in classes or int(difficult)==1: 
            continue 
        cls_id = classes.index(cls) 
        xmlbox = obj.find('bndbox') 
        b = (int(xmlbox.find('xmin').text), int(xmlbox.find('ymin').text), int(xmlbox.find('xmax').text), int(xmlbox.find('ymax').text)) 
        output_list.append(" " + ",".join([str(a) for a in b]) + ',' + str(cls_id)) 
    return (' '.join(output_list)) 
 
 
def mask_convert(data_path, classes): 
    img_list = [] 
    for i in list(os.listdir(data_path)): 
        if i.split('.')[1] == 'jpg': 
            img_list.append(i.split('.')[0]) 
 
    output_list = [] 
    for image_id in img_list: 
        img_path = (data_path + '/%s.jpg' % (image_id)) 
        label_path = (data_path + '/%s.xml' % (image_id)) 
        annotation = convert_annotation(classes, label_path) 
        output_list.append(img_path + annotation) 
 
    return output_list 
  • 模型类:

训练过程中会有一个tensor对不上的错误,需要修改model_data/model.py这个代码中的140-141行,如下所示:

 	box_xy = (K.sigmoid(feats[..., :2]) + grid) / K.cast(grid_shape[..., ::-1], K.dtype(feats)) 
box_wh = K.exp(feats[..., 2:4]) * anchors_tensor / K.cast(input_shape[..., ::-1], K.dtype(feats))
  • 可视化类:

为了直观判断模型效果,增加了一个在图片上直接标注的可视化代码,也就是在图片上打印输出结果(yes_mask或no_mask),代码如下所示:

 	#!/usr/bin/env python 
# coding: utf- 
 
img_path = "D:/Code/mask_detection/data/test" 
save_path = "D:/Code/mask_detection/data/test_result/" 
 
 
import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
import matplotlib.image as mpimg 
import random 
import json 
 
# 推理输出路径 
with open('D:/Code/mask_detection/keras-YOLOv3-mobilenet-master/annotation_YOLOv3.json') as json_file: 
    data = json.load(json_file) 
 
imgs = list(data.keys()) 
 
def parse_json(json): 
    bbox = [] 
    for item in json['annotations']: 
        name = item['label'] 
        xmin = item['x'] 
        ymin = item['y'] 
        xmax = item['x']+item['width'] 
        ymax = item['y']+item['height'] 
        bbox_i = [name, xmin, ymin, xmax, ymax] 
        bbox.append(bbox_i) 
    return bbox 
 
 
def visualize_bbox(image, bbox, name): 
    fig, ax = plt.subplots() 
    plt.imshow(image) 
    colors = dict()#指定标注某个对象的边框的颜色 
    for bbox_i in bbox: 
        cls_name = bbox_i[0] #得到object的name 
        if cls_name not in colors: 
            colors[cls_name] = (random.random(), random.random(), random.random()) #随机生成标注name为cls_name的object的边框颜色 
        xmin = bbox_i[1] 
        ymin = bbox_i[2] 
        xmax = bbox_i[3] 
        ymax = bbox_i[4] 
        #指明对应位置和大小的边框 
        rect = patches.Rectangle(xy=(xmin, ymin), width=xmax-xmin, height=ymax-ymin, edgecolor=colors[cls_name],facecolor='None',linewidth=3.5) 
        plt.text(xmin, ymin-2, '{:s}'.format(cls_name), bbox=dict(facecolor=colors[cls_name], alpha=0.5)) 
        ax.add_patch(rect) 
    plt.axis('off') 
    plt.savefig(save_path+'{}_gt.png'.format(name)) #将该图片保存下来 
    plt.close() 
 
 
for item in imgs: 
    img = mpimg.imread(img_path+item) 
    bbox = parse_json(data[item]) 
    visualize_bbox(img, bbox, item.split('.')[0])
  • 上云准备类:

开源代码写的比较随意,直接就是在训练代码trian_Mobilenet.py代码中一开头指定所有的参数。华为云中训练作业是需要指定OBS的输入路径和输出路径的,最好使用argparse的形式将路径参数传进去。其他参数可以按照自己需求做增加,修改样例如下:

 	import argparse 
 
parser = argparse.ArgumentParser(description="training a maskmodel in modelarts") 
# 训练输出路径 
parser.add_argument("--train_url", default='logs/maskMobilenet/003_Mobilenet_finetune/', type=str) 
# 数据输入路径 
parser.add_argument("--data_url", default="D:/code/mask_detection/data/MASK_MERGE/", type=str) 
# GPU数量 
parser.add_argument("--num_gpus", default=0, type=int) 
args = parser.parse_args()

开源代码中,数据处理的部分是将xml转换成yolo读的txt文档,这样导致数据输入需要有一个写入到txt文件,然后训练工程读取这个txt文件和图片的过程。上云后,这种流程不太方便,需要将数据处理,数据转换和训练代码打通。这里我使用缓存将数据直接传到训练代码中,这样改起来比较方便,但是当数据量较大的时候并不科学,有兴趣的人可以自己修改。

迁移公有云

我使用某厂商公有云的AI训练平台,用的是OBS桶上传已经调试好的代码(建议大家体验Notebook方式,在线编程、编译),如下图所示:

接着启动Notebook,不过我没有用jupyter方式写代码,而是采用同步OBS桶的资源,通过Notebook启动一个GPU镜像:

创建一个Notebook环境:

确认计算资源规格:

创建Notebook环境成功:

从OBS桶同步相关文件:

接下来进入该Notebook的终端环境,运行以下代码,启动训练任务:

训练过程输出片段如下所示:

2020-04-07 18:58:14.497319: I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library libcublas.so.10.0 locally
7/7 [==============================] - 17s 2s/step - loss: 4226.4421 - val_loss: 22123.3750
Epoch 2/50
7/7 [==============================] - 6s 855ms/step - loss: 1083.1558 - val_loss: 1734.1427
Epoch 3/50
7/7 [==============================] - 6s 864ms/step - loss: 521.8567 - val_loss: 455.0971
Epoch 4/50
7/7 [==============================] - 6s 851ms/step - loss: 322.8907 - val_loss: 193.3107
Epoch 5/50
7/7 [==============================] - 6s 841ms/step - loss: 227.7257 - val_loss: 150.8902
Epoch 6/50
7/7 [==============================] - 6s 851ms/step - loss: 179.0605 - val_loss: 154.9351
Epoch 7/50
7/7 [==============================] - 6s 868ms/step - loss: 150.4297 - val_loss: 147.3101
Epoch 8/50
7/7 [==============================] - 8s 1s/step - loss: 129.5681 - val_loss: 144.8283

模型生成后,创建一个python脚本,代码如下,实现了模型文件拷贝到OBS桶:

from modelarts.session import Session
session = Session()
session.upload_data(bucket_path="/mask-detection-modelarts-test/run/log/", path="/home/ma-user/work/log/trained_weights_final.h5")

运行推理脚本,我把推测结果打印在了测试图片上,如下图所示,识别出了口罩:

后记

AI技术的兴起,已经带动了科技行业的革命,而每一次业界的革命,都会让一些公司落寞而让另一些公司崛起,程序员也一样,每一次技术换代也都会让一些程序员没落而让另一些程序员崛起。抓住目前正在流行的AI技术趋势,使用云端的免费计算资源,上手学习并实践AI技术,会是相当一部分软件工程师、数据科学家的选择。此外,由于在图像识别、文本识别、语音识别等技术领域,算法的精度已经给有大幅度的提升,在很多场景下已经达到可商用级别,也进一步让自动机器学习技术(模型的自动设计和训练)的发展成为可能。因此,在上述几个技术领域的很多应用场景下,公有云已经可以做到根据用户自定义数据进行AI模型的自动训练。

 

作者:周明耀,九三学社社员,2004年毕业于浙江大学,工学硕士。现任华为云AI产品研发总监,著有《大话Java性能优化》、《深入理解JVM&G1 GC》、《技术领导力-如何带领一支软件研发团队》、《程序员炼成记》等。职业生涯从软件工程师起步,后转为分布式技术工程师、大数据技术工程师,2016年开始接触AI技术。微信号michael_tec。

相关推荐

鸿蒙案例上新啦 | 购物、听歌、健身:15个模板带你一键激活社交娱乐

页面层级如何组织、跨页共享状态如何同步、列表与详情及个人中心如何形成稳定闭环。鸿蒙开发实践中心将这些高频消费与互动场景沉淀为可参考的标准模板,提供从业务架构到界面实现的快捷实践入口。更多实战案例欢迎前往鸿蒙开发实践中心案例中心查看并开启云端体验。

华为云官方博客 338

鸿蒙案例上新啦 | 出门打车、到家上课:25个模板带你一屏打通日常生活

如何合理拆分页面组件、如何建立单一可信的状态源、如何让用户在每一步操作中都获得明确反馈。鸿蒙开发实践中心以标准化的应用与元服务模板为入口,将清晰的业务架构与可复用的代码结构直观呈现。不妨立即挑选一个感兴趣的方向进入云端环境,从页面布局、组件封装、状态管理到路由组织,亲手跑通你的鸿蒙实战项目。

华为云官方博客 325

LakeAgent:DWS数据仓库的第二大脑,告别 “翻译式运维”,迈入智能自治时代

和普通 SQL 改写工具不同,LakeAgent 自动做多方案代价对比,主动规避负优化陷阱:补充分区键过滤实现剪枝,扫描分区由 37 收敛至 1,执行代价从 758.28 降至 113.74;未来的数据仓库,将不止能算、能存,更能看懂自己、诊断自己、理解自己。长久以来,数仓的智能都依附于人:信号需要人解读,瓶颈需要人研判,经验困在个体里,无法随底座永续生长。CPU 高、CPU 告警、CPU 诊断、CPU 使用率过高、CPU 满。语法、错误码、计费、性能调优、最佳实践、故障处置等全场景内容。

华为云官方博客 555

如何使用RDS Supabase后端BaaS能力:文件存储(File Storage)

• product-images(公开桶,允许公共读取):策略名称"Public read for product-images",允许SELECT,目标角色anon,策略定义bucket_id = 'product-images'。上传/删除需另配INSERT/DELETE策略,详见SQL。• product-specs(私有桶,仅认证用户访问自己的文件夹):建议拆为上传、读取、删除三条策略,策略定义均为 bucket_id = 'product-specs' 且仅限本人文件夹(详见下文 SQL)。

华为云官方博客 476

如何使用RDS Supabase后端BaaS能力:实时订阅与推送(Realtime)

Realtime 把数据库的每次变更同步到客户端:表里增、删、改一行,订阅者无需刷新页面或主动请求即可秒级收到。三大能力各司其职:• Postgres Changes — 监听表的 INSERT/UPDATE/DELETE,变化即通知• Broadcast — 客户端之间直接互发,适合瞬时通知、协同编辑• Presence — 跟踪频道里“谁在线”典型场景有实时数据展示(订单、库存、监控指标即时刷新)、即时通讯(消息收发、在线名单、“对方正在输入”)、协同编辑与实时通知。

华为云官方博客 465

AI Agent如何通过MCP连接到华为云RDS Supabase应用平台

Schema元数据列出所有可访问的表(按schema分组)。Schema元数据列出表的列及元数据(类型/默认值/约束)。Schema元数据列出所有约束(PK/FK/UNIQUE/CHECK/EXCLUDE)。可按schema/表/类型过滤。Schema元数据列出所有外键关系。可按schema/表过滤。Schema元数据列出所有索引及定义和大小。可按schema/表过滤。Schema元数据列出已应用的数据库迁移记录。Schema元数据列出已安装的PostgreSQL扩展。

华为云官方博客 473

华为大数据Flink让每一 CU 算力,跑出开源 5.74 倍的性能

1. 开源Apache Flink 已成为业界流计算事实标准,但在极端重负载场景下存在性能瓶颈。2. 华为大数据Flink通过多项自研深度优化,在执行计划、算子执行、状态存储三个层面构建协同的优化体系。3. Nexmark Benchmark 测试结果:整体性能提升 5.74 倍,极端重负载场景性能领先最高 18.3 倍。4. 100% 兼容 Apache Flink 1.20,业务代码零改造,无缝迁移。

华为云官方博客 380

LakeAgent实战 | 业务分析篇从一句提问到业务分析

本文以“订单金额变化”分析为例,展示LakeAgent如何通过自然语言提问,结合DataArtsStudio的数据资产与专业技能,帮助业务人员快速定位数据、生成SQL、追踪血缘、生成报告。从问题出发,逐步实现数据发现、变化洞察、原因追溯与团队协作,最终形成可复用的分析流程与企业规则,显著提升数据分析效率与一致性。

华为云官方博客 390

华为云RDS Supabase AI应用已开放公测 :30分钟搭建AI应用后端

认证、存储、实时推送、数据库API——4个后端模块,传统开发需要数周。今天,你只需要30分钟。AI创业公司的全栈开发工程师。上周老板说"下周要上线的AI对话应用,后端你来搞"——认证鉴权、数据库接口、文件存储、实时推送,每一个模块都需要数周搭建,而市场不会等你。小张打开华为云RDS Supabase,30分钟搭好认证、数据库API、对象存储,剩下的时间全用来打磨AI交互体验。基于开源Supabase+华为云RDS PostgreSQL全托管能力,为开发者提供。

华为云官方博客 396

如何使用RDS Supabase后端BaaS能力:数据库函数(Database Function)

上一篇介绍了 Database Data API——建表即自动生成增删改查接口,解决单表读写,但聚合统计、跨表事务、字段自动维护等逻辑已超出其能力边界。本篇推进到数据库函数(Database Function):把业务逻辑封装进数据库,前端通过 .rpc() 调用,由触发器自动响应数据变更。上一篇中,小张基于 Data API 完成了产品目录的建表与基础读写。但新需求随之而来:按分类统计产品数与价格区间、上架新品同时写产品表与定价表、产品修改后自动刷新更新时间。

华为云官方博客 464

如何使用RDS Supabase后端BaaS能力:创表即生成API(Database Data API)

认证、存储、实时推送、数据库API——4个后端模块,传统开发要数周。本系列逐个拆解,首篇聚焦数据库API(Database Data API):建表即得 API,无需手写后端。小张,AI创业公司的全栈工程师。老板让他做个产品目录页,展示产品与价格、支持上下架。传统做法要搭后端、写接口、配权限,工期少说1-2周;而在华为云RDS Supabase,建两张表、应用 SDK 直连,几分钟增删改查全跑通。

华为云官方博客 478

从一句话到一个能出去的链接,AI开发者空间做了什么

自行搭建的 Agent、正在使用的开源项目、团队既有的工具,都可以接入,可以通过AI创建或者手动搭建环境;华为云 AI开发者空间——面向开发者的云端一站式开发平台,做的就是把这段路接上:环境免安装,浏览器打开即为完整的 Linux 运行环境,预置的 AI 智能体开箱即用。第一个任务建议选能出结果的:做一个游戏、生成一个页面、创建一台实例,从需求走到可访问的链接,一次就能看清这个环境在做什么。沙箱是一个完整的 Linux 环境,依赖、服务、端口都是真实的,不是模拟。环境释放后,权限随之失效。

华为云官方博客 426

华为云码道配置自定义大模型,四种方式完整实操

案例介绍。

华为云官方博客 624

图数据库:实现穿透式监管的数据基座

穿透式监管标志着国企监管从“管企业”向“管资本”转型过程中的关键一跃。而图数据库正是这一跃的技术支点。从股权穿透到资金链穿透,从供应链穿透到数据穿透,华为GES图数据库正在将“穿透式监管”从理念变为可落地、可操作的实践。无论是天眼查式的全量链路查询,还是某集团财经的税务规则判断,抑或是芯片供应链式的部件风险分析,乃至通过Palantir构建决策知识图谱,其底层逻辑都是一致的——用图的力量,穿透一切形式的“隔离层”,直抵风险本质与责任核心。

华为云官方博客 664

《公共云三十问》正式收官,奔赴企业AI百场景新征程

今年6月底,公共云产业联盟重点推出《公共云三十问》专栏,以每周三问的节奏,连载十周,解读《先进公共云》白皮书,分享国计民生系列案例,旨在凝聚共识、推动落地实践。同时,专栏分析公共云在产业升级、民生福祉、科技创新、全球发展等方面的作用,梳理中国特色公共云发展路径:以普惠云拓展用云广度,以智算云提升用云深度,以自主云夯实用云厚度,以全球云打开用云跨度。这十问从专属云、行业云切入,深入政务、金融、交通、电力、钢铁、化工、油气、制造等国计民生场景,回答公共云“怎么用”。

华为云官方博客 473

开发者小技巧|IAM配置,让码道代码智能体连续30天免登录

案例介绍。

华为云官方博客 645

码道深度对接CodeArts,让需求自动落地为代码

案例介绍。

华为云官方博客 720

【公共云三十问 之三十】拥抱AI,企业如何建设面向智能体的专属云?

企业可分阶段建设覆盖开发、运行、运营及安全的一体化智能体平台——从构建一站式、高低码协同的智能体开发平台,到打造高性能、极致弹性的运行时环境,再到搭建AgentOps驱动的持续运营与运维体系,同时构建端到端、多层次的全链路安全防护体系。在数据湖建设方面,遵循“存量复用、平滑演进、AI导向、分步迭代”原则,分三阶段推进——打造AI多模数据湖核心能力、完成存算分离与统一元数据管理、实现闭环赋能全面支撑智能体规模化落地,在保护既有投资的前提下将传统数据平台转型为AI数据专属供给平台。

华为云官方博客 823

【公共云三十问 之二十九】国计民生之制造:制造云如何重塑数智时代的新质生产力?

平台打通软件交付的完整路径,覆盖需求管理、代码托管、代码检查、编译构建、制品仓库、部署、测试等关键环节,支持大模型能力融入研发全流程,实现从需求到交付的端到端管理。通过构建“研发一朵云”,方案打破地域与组织壁垒,实现跨团队协同开发,有效缩短软件交付周期,助力工业制造企业从“传统研发”走向“敏捷研发”,加速数智化转型进程。当制造云真正成为数据流通的平台、AI创新的底座,公共云的社会价值将从基础设施层向生产场景层持续延伸,为新型工业化建设和制造强国战略注入源源不断的动力,重塑数智时代的中国制造新质生产力。

华为云官方博客 789

告别重复手工迁仓,码道MCP+Skill实现仓库批量迁移

案例介绍。

华为云官方博客 790

【公共云三十问 之二十八】国计民生之油气:智算云如何叩响数智时代的“地心蓝金”?

西南油气田以“向地球深部要资源”为战略方向,联合以华为云Stack为代表的公共云服务商共同打造统一算力底座,建设西南区域数据湖与通用技术平台,构建“勘探开发工程技术、天然气生产过程管控、天然气产运储销”等三个一体化协同应用场景,支撑油气勘探、开发生产、管输储运等全业务链的数智化转型。当智算云真正成为数据流通的平台、AI创新的底座,油气田得以将算力效能、数据价值与智能技术深度融入勘探开发全链条,将“看不见的算力”转化为“摸得着的储量”,以智能化手段持续降低勘探风险、缩短发现周期、提高采收效率,确保生产安全。

华为云官方博客 613

【公共云三十问 之二十七】国计民生之化工:数智云如何重塑传统化工新范式?

在架构方面,方案构建云边协同的统一体系,涵盖AI协同、数据协同与运营协同三大维度——总部集中训练大模型,边缘节点负责推理执行,云边持续迭代,实现“边用边学”的智能闭环,模型平均精度提升20%以上。此外,方案提供一站式企业级工业物联网平台、数据湖与数据治理平台,覆盖工业数据分析“采、存、算、管、用”全流程,打通生产现场与管理系统间的数据壁垒,有效消除数据孤岛。层面,方案充分发挥软硬协同优势,实现计算、存储、网络与云平台的深度协同,训练线性度超95%,为大模型训练推理提供强劲算力支撑。▲化工“数智”新模式。

华为云官方博客 663

【公共云三十问 之二十六】国计民生之钢铁:数智云如何淬炼中国钢铁新力量?

同时,构建云边端协同的统一架构,支撑集团总部与各生产基地两级协同发展——总部集中训练大模型,边缘节点负责推理执行,云边持续迭代,实现训推一体化的资源调度与高效协同,为钢铁行业的数智化转型构建了坚实的算力底座。层面,方案构建覆盖“工业数采→边缘IT/OT融合→统一数据湖→数据治理平台→数据应用”全链路的一站式数据治理与流通平台,打通生产现场与管理系统间的数据壁垒,让数据“采得到、流得动、用得好”,加速数据价值从生产现场向经营决策层流动释放。湘潭钢铁集团的钢铁数智云,是钢铁工业智能云建设的标杆案例。

华为云官方博客 526

LakeWatch——MRS 智能运维Agent

从资源池、队列、作业等多个维度,对集群CPU与内存资源进行精细化分析与对比,直观呈现不同时间段的空闲、满载等使用状态,识别资源浪费,指导治理优化,为扩缩容决策提供数据支撑。对HDFS存储进行多维度深度分析(目录、用户、用户组等),涵盖使用量、增量、文件大小分布及数据热度等指标,帮助快速识别增长较快的目录、长期未访问的文件,统计目录文件数量与小文件占比,评估HDFS总存储量与扩缩容需求,为存储治理与资源规划提供全面数据支撑。Agent主动巡检,识别异常趋势并提前预警,让运维从"事后处理"转向"事前预防"。

华为云官方博客 515

华为云专题文档发布:丰富的AI案例、选型指导和概念解读

发布 “云服务选型”、“云计算概念”专题,提供云服务选型指导,助您选择匹配业务的云服务,解读云计算相关概念,开启云上学习之路。开发者工具和文档专区上线,提供从学习、实践到反馈的全链路支持。帮助中心新增100余篇AI案例。

华为云官方博客 286

一个人,也能用AI做点“星东西”

华为云星耀创想者大赛-2026华为云OPC创意大赛等你来~

华为云官方博客 290

从需求到可执行工作项:MCP+Skill 让智能体规划真正落地

回顾整个体验,以前让智能体帮我拆需求,它是洋洋洒洒给我列了一大篇 Markdown,看着挺像那么回事,但最后还是得我一条条往 CodeArts Req 里搬,搬完再手动挂父子关系、排日期,拆需求五分钟,搬运两小时。现在好了,MCP 给智能体接上了"手",Skill 给它装上了"项目经理的脑子",一句话下去,34 个工作项连带排期、层级关系全给我建好了,甘特图一拉,齐刷刷都在两周内,节省了多少工作量啊,美滋滋。本次实操在码道代码智能体基础上,构建了一套"需求→可执行工作项"的自动化规划方案。

华为云官方博客 576

华为云码道「码力续航计划」更新!

✅上新GLM‑5.3‑Flash,高速响应,代码生成、工程解析、Agent调试高效输出。新增GLM‑5.3‑Flash福利模型,每日解锁1000万免费Tokens。● 本次活动共发放总量价值100万元Tokens,发完即止!把耗算力的编码重活,交给华为云码道代码智能体🚀🚀。● 每日额度准时刷新,当日清零、次日满血重置。✅复杂算法、大项目解析、批量代码生成随便跑。✅不用抠额度、不用算消耗,放开调试大胆迭代。✅无需额外操作,登录即送,直接切换模型使用。● 把算力交给码道,让撸码不再内耗👏🏻。

华为云官方博客 687

【公共云三十问 之二十四】国计民生之交通:交通云如何铺就数智通衢新坦途?

交通行业作为支撑实体经济的关键基础设施,涵盖公路、铁路、机场、港口、地铁等众多子领域,其中,公路网络作为综合交通运输体系的基础骨架,承担着全国超过70%的客货运量,其数字化、智能化转型的需求尤为迫切。方面,提供Agent开发框架、知识库管理、RAG工程、意图识别、静态应用编排及模型评测等能力,支持客户将行业知识、业务流程与AI能力深度融合,快速构建面向收费稽核、路网调度、应急处置等场景的智能应用。开发并实现落地应用,全面覆盖建设、管理、养护、运营、服务、安全、办公七大业务领域。

华为云官方博客 461

【公共云三十问 之二十五】国计民生之电力:电力云如何点亮数智电力新引擎?

方案构建了覆盖数据获取、质量评估到标准化处理的全链路能力。基于公共云服务商智算底座及气象大模型,通过时空图神经网络重新建模产流机制,中国华电建成超50TB多源融合数据集,突破时空建模与机理融合等五大关键技术,短期径流预测精度较传统机理模型提升5个百分点以上,实现15天中期径流预测精度超85%,推理效率达秒级。基于气象大模型的基础架构与预训练能力,客户可直接在大模型之上开展增量训练与微调,充分利用场站所在区域的高精度历史数据(如3公里、1公里分辨率),针对不同场站和区域的地形地貌与气候特征进行模型调优。

华为云官方博客 381
上一篇: 20年开源老司机手把手教你玩开源——openEuler入门指南
下一篇: 【华为云技术分享】如何将代码自动迁移到鲲鹏平台
华为云开发者联盟
华为云开发者联盟 企业官方账号 企业官方账号
博客等级 码龄10年 72万+粉丝 5985原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值