这几年经常有人跑过来问我:想准备华为ICT大赛云赛道、或者想拿华为云的AI认证,但连ModelArts是什么都还没搞明白,模型训练和部署更是只听过没用过,该怎么破?说实话,ModelArts这套东西,官方文档讲得挺全,但对零基础的人来说反而容易被密密麻麻的概念劝退。其实它本质上就是一朵"AI开发云",把数据标注、训练、部署的活儿全都包到云端去,你不用操心GPU机器、不用装环境,浏览器里就能跑完整个流程。这篇文章我就按"项目实战"的思路,把ModelArts从数据准备、模型训练到在线部署的完整链路拆开了讲,全程标注考试重点,把我实际用过的坑也一并交代清楚。
这套内容比较适合三类人看:一是准备华为ICT大赛云赛道、华为云AI认证的考生,需要高效地把考点串起来;二是刚接触AI开发、还在跟显卡驱动和Python环境搏斗的初学者;三是已经会跑本地训练,但一直没搞明白怎么上云部署的开发者。反正我的原则是:不整虚的,每一步都尽量给到你可以在控制台里直接照做的操作路径和参数建议。
1. 项目整体认知:ModelArts到底是什么,以及为什么考试和项目里都绕不开它
1.1 从核心痛点说起:它解决了什么问题
先聊一个场景。假如你要训练一个YOLOv8模型做工业零件检测,本地没有GPU,或者只有一张6GB显存的旧卡,数据量一大就会出现"CUDA out of memory"。再不然,环境装了两天,PyTorch版本冲突、CUDA驱动对不上,训练还没影呢,热情先耗掉一半。
ModelArts解决的就是这类烦心事。它是华为云上的一站式AI开发平台,把数据管理、算法选择、训练任务、模型评估、在线部署这些环节全部集成到一套Web控制台里。你用浏览器打开就能创建训练任务,云端会自动分配CPU、GPU、NPU资源,训练完自动把模型存到对象存储里,再点两下就能发布成在线服务,手机端、网页端都能调。
在考试角度,理解这一点也很关键:华为ICT大赛云赛道和华为云认证里,"ModelArts能覆盖AI开发全流程"这种基本定位是高频考点。它不是一个单一工具,而是一个平台,里面的子服务包括数据标注、自动学习、训练管理、模型管理、部署上线等模块。能把这几个模块的名字和职责记清楚,选择题基本不丢分。
1.2 平台架构和核心概念速览
在进入实操前,有几个概念建议先建立印象:OBS桶、数据集、训练任务、训练日志、模型、模型版本、推理服务。
OBS(对象存储服务)是数据的"仓库",你的训练数据集必须先上传到OBS,ModelArts训练时再从OBS读取。我见过很多人在这卡住,以为直接把图片上传到ModelArts就行了。不是的,ModelArts本身不存数据,它只负责读取并处理OBS里的数据。
数据集模块则负责把OBS里的原始数据整理成训练需要的格式,比如图像分类的文件夹结构或者标注文件的目录关联。训练任务就是一次具体的训练过程:选择算法、填写OBS数据路径、指定输出路径、选GPU规格,然后提交,系统会创建一个容器去执行训练脚本。训练日志可以实时查看,训练结束后在模型管理里会看到生成的模型,每次训练都会生成独立版本,方便回滚和对比。
这一串概念串起来就是:OBS准备数据,数据集做预处理,训练任务产出模型,模型管理管版本,推理服务做线上预测。这就是整个ModelArts的主体逻辑。零基础的人只要能默画出来这个流程,后面每一个操作都不会觉得无头无尾。
2. 零基础训练入口:从准备数据到提交训练任务
2.1 数据准备:从华为云获取数据、上传OBS的实操细节
训练第一步永远是数据。这里我给一个最稳的三步走方案。
第一步,进入华为云控制台,搜索"OBS",创建一个桶。创建时注意区域尽量和后续ModelArts的区域保持一致,比如都用"华北-北京四",这样内网传输速度快,而且不产生跨区域流量费用。存储类别选"标准存储",桶权限可以先选"私有",因为训练任务用的是账号内部鉴权,不需要公开读。
第二步,把你的数据准备好。如果是图像分类项目,建议目录结构按照"数据集根目录/分类名/图片文件.jpg"来组织,因为ModelArts的图像分类数据集支持这种按文件夹划分标签的方式,整理起来最省事。如果是物体检测,则需要标注文件,通常是XML或JSON格式,里面记录每个目标框的位置和类别。
第三步,上传。小数据集直接在OBS控制台拖拽上传;数据集大,比如几十GB,建议用OBS Browser+工具或者obsutil命令行工具,断点续传的能力比网页上传强太多。我实测过,5GB以上的压缩包用网页上传经常中途失败,换obsutil就没这个烦恼。
还有一个细节值得注意:ModelArts训练时读数据是直接从OBS拉取,如果你的数据集是几万张小文件,读起来会很慢。通常的解法是先把图片打包成zip或tar包,然后训练脚本里先解压到容器本地,再加载。虽然多了一步解压,但整体训练速度会比逐个拉文件快很多。这个经验在考试里不会考,但项目实战中几乎必用。
2.2 创建训练任务:预置算法和自定义训练脚本怎么选
数据进OBS之后,就可以进入ModelArts管理控制台,打开"训练管理>训练作业",点击创建训练作业。
这个环节对零基础最友好的地方在于:ModelArts提供了大量预置算法,例如ResNet系列、YOLO系列、 EfficientNet等。你不需要写一行训练代码,只要选一个算法,然后把训练数据的OBS路径填进去,指定输出路径,再配置几个超参数就能启动训练。对考试场景来说,预置算法是重点:题目会让你判断"在ModelArts中使用预置算法训练模型时,用户不需要编写代码"这类描述对不对,答案是肯定的。
但是注意,考试和实际项目之间是有差别的。实际项目里,数据格式往往跟预置算法的要求不完全匹配,或者你需要换一个损失函数、调整网络结构,这时候就必须写自定义训练脚本。ModelArts支持你上传自己的训练代码,脚本里面只要处理好OBS数据的读取、训练、模型保存就行。关键点在于,ModelArts会把训练数据目录挂载到环境变量里,训练输出目录也有固定的环境变量,你需要用os.environ来获取。
import os import moxing as mox # 将OBS中的数据集拷贝到本地缓存目录,加速读取 mox.file.copy_parallel(os.environ['DLS_DATA_URL'], '/tmp/data') # 训练代码... # 将输出的模型文件拷贝回OBS输出目录 mox.file.copy_parallel('/tmp/output/model.h5', os.environ['DLS_TRAIN_OUT_URL'])很多第一次用ModelArts写自定义脚本的人一直报"找不到文件",问题几乎都出在没理解这个OBS路径和容器本地路径的映射关系。训练作业里填的数据路径是OBS云上路径,但容器里直接访问这个路径是拿不到文件的,必须先用moxing拷贝到/tmp这类本地路径。判断数据有没有就位,可以训练脚本里先打印一下路径下的文件数量。
另外,训练规格的选择也挺有讲究。ModelArts提供CPU、GPU、NPU三类规格。零基础上手阶段,直接用免费或低价的CPU规格跑通全流程即可;真要训练较大模型,再选择GPU规格。GPU规格要重点关注显存尺寸,比如选16GB显存或更高。显存太小,batch size稍有调大就容易溢出,而ModelArts不会自动帮你减小batch size。
2.3 资源选择与训练参数配置策略
训练参数里最关键的就是学习率和batch size,这俩直接影响模型能不能收敛。
先给一个基本公式:batch size越大,梯度越平滑,收敛越稳定,但显存占用越高;学习率太大,loss会震荡甚至飞掉,学习率太小,收敛速度慢到怀疑人生。我的建议是Suppose数据量在几千张图片,batch size从16开始,如果是输入224x224的图片,16GB显存基本能扛住,再大就往32试。学习率的话,Adam优化器建议从3e-4或1e-4起步,SGD一般从0.01起步,然后看loss曲线动态调整。每训练几轮,loss不降了,就把学习率降低一个数量级,这是最朴素但也最有效的策略。
在参数配置界面,ModelArts允许你把超参数写成一组键值对,例如{"learning_rate": 0.001, "batch_size": 16, "epochs": 50}。这些值会作为环境变量传给你的训练脚本,脚本里解析即可。实际操作中,为了快速验证配置正确,你先用epochs=1跑一轮,确认没有报错,再正式加大epochs跑完整训练。这一条是我在实操中特别想嘱咐的:很多人第一次上云训练,满怀期待直接设50个epoch,结果跑到第5个epoch才发现OBS路径写错了,白白烧了几小时算力。
还有一个关于资源规格的细节:ModelArts的按需计费模式下,GPU规格是按使用时长计费的,你停掉训练作业才会停止计费。所以,训练结束后一定记得去"训练作业"列表里把作业停止。我见过不止一次,训练早就结束了,但因为作业状态没停止,费用一直挂着,月底账单让人心碎。
3. 核心考点拆解:预训练模型、经典算法与训练实战
3.1 视觉模型方向:ResNet与YOLO系列训练要点
ResNet基本上是深度学习入门和各类云认证考试里出现次数最多的卷积网络。它的核心创新是残差连接,意思是网络不再直接拟合原始映射,而是拟合残差,这样即使网络层数很深,梯度也不容易消失。考试里经常问ResNet的特点,答案基本围绕"残差结构解决深层网络退化问题"展开,理解这个词比背下来更重要。
而在ModelArts里用ResNet做图像分类,训练流程里比较容易忽略的是输入尺寸。ResNet系列预训练模型默认输入是224x224,如果你的数据集图片分辨率是1920x1080,直接丢进去训练会先被强行缩放,然后产生大量空白区域和形变,效果自然不好。正确做法是先把图片做中心裁剪或随机裁剪到224x224,再做归一化。ModelArts预置算法会自动处理缩放,自定义脚本就得自己写清楚resize和normalize的流程。
YOLO系列则是物体检测的主流选择,第八代(YOLOv8)目前是应用和考试里都绕不开的版本。零基础训练YOLOv8的常见坑有三个:一是标注工具的标签格式要和YOLO要求的txt格式对齐,每一行是"class_id x_center y_center width height",坐标都归一化到0~1;二是类别编号顺序必须和训练配置里的类别列表一致,否则会出现"模型能训练,但预测目标全错"的诡异情况;三是anchor不管怎么调都感觉不贴合数据,其实YOLOv8已经用anchor-free或者自适应anchor,手动调anchor的意义不大,不用再纠结这个。
我也注意到现在很多人在讨论把YOLOv8部署到RK3588这类边缘设备上的方案,比如转成RKNN格式。这个确实很实用,做一个嵌入式视觉项目比单纯云端演示更有竞争力。但考试考点主要还是在云端训练和部署,边缘部署可以作为扩展知识了解,不用作为重点深挖。
3.2 中文NLP模型方向:RoBERTa等预训练模型训练要点
视觉之外,中文NLP项目在ModelArts上跑得也相当多,比如文本分类、情感分析、实体识别等。这里面绕不开的一个概念就是预训练模型,典型代表是中文RoBERTa。所谓预训练模型,通俗理解就是模型已经在海量中文语料上做过"通识教育",学会了词语搭配、句法规律,你要做的是让它在你的特定任务上继续"微调",学一下你这个领域的特殊表达。
这个"通识教育+微调"的思路是近年NLP的核心模式,也是考试的高频概念:为什么预训练模型能减少标注数据需求?因为底层语言知识已经学好了,你只需要少量任务数据教它做分类或抽取,模型就能很快上手。理解了这个逻辑,你就明白为什么训练RoBERTa时epochs不用设置太大——通常3到5个epoch就够,因为微调只是在原有能力上做小幅适配,训练太久反而可能过拟合,导致在验证集上的表现反而下降。
实操时有一点要特别注意:中文预训练模型大多使用词表对输入做切分,而不同模型用的分词器(tokenizer)不一定一样。用RoBERTa就用RoBERTa配套的tokenizer,不要混用其他模型的。一旦混用,你看到的就是"预测结果全是乱码"这类问题,但找遍代码逻辑又发现没有任何bug,纯粹是词表对不上。
在ModelArts上跑NLP训练,GPU规格建议选显存大一些的,因为Transformer类的模型参数量大,中间的计算图和激活值也占显存。以中文RoBERTa-base为例,batch size设置为16左右,16GB显存比较合适。如果你确实只有小的规格,梯度累积技巧可以顶一顶:每几个小batch攒一次梯度更新,等效于增大了batch size,又不增加显存占用。
3.3 训练中的数值稳定性问题:Loss=NaN排查
训练过程中最让人头大的一个现象就是loss变成NaN。几乎所有跑过深度学习的人都遇到过,ModelArts作业日志里时不时就冒出一条"loss: nan"。
根据我的排查经验,第一个要看的是学习率。学习率设置过高时,梯度更新幅度过大,参数一下子被推到数值溢出区域,loss就变成NaN。解法简单直接:把学习率降低一个数量级试试,很多情况下立刻恢复正常。
第二个要检查的是数据。训练数据里有异常值,比如图片像素值没归一化、某张图片损坏是空白文件、文本序列过长被截断后填充值变成了NaN,这些都会让训练崩掉。我的习惯是在训练前加一段数据清洗代码:检查图片能否正确解码,统计文本长度分布,把过长或过短的数据过滤掉。这一步多花十分钟,可能帮你省下几小时的重训时间。
第三种情况是损失函数里有除零或者log(0)。常见于自定义损失函数,例如计算交叉熵时预测概率被裁剪到了0附近。应对方法是在log之前加一个极小值epsilon,比如1e-8,或者用框架自带的、内部已经做过数值稳定的损失函数。
做过排查以后,再补充一个小习惯:在训练脚本里写一个"早期停止"逻辑,一旦发现loss是NaN,就直接终止训练,避免后续epoch浪费时间。ModelArts提供了训练作业自动停止的开关,但也支持你自己在脚本里判断。别嫌多这一步,我看到过有人NaN了还跑到二十几个epoch,纯属烧钱。
4. 模型部署实战:在线服务、边缘部署和本地部署
4.1 ModelArts在线服务:从模型版本到在线推理的完整操作流
训练完之后,模型只是一个文件,要让别人能调用,就必须部署成服务。ModelArts部署有两种常见路径:在线服务(真正HTTP接口)和批量推理。
在线服务的流程是:进入"模型管理"页面,确认刚才训练得到的模型版本已经生成,然后点"部署>在线服务"。这里面会让你选推理资源配置,我建议一开始选CPU规格跑通即可,等确认接口通了、响应时间也能接受,再换GPU加速规格。部署时间一般几分钟到十几分钟,取决于模型大小和规格。
部署完成后,你会得到一个HTTPS推理地址,用Postman或curl都能请求。ModelArts在线服务默认接收和返回的数据格式是JSON。下面是一个简单的调用示例:
curl -X POST https://your-endpoint/v1/infers/xxxx \ -H "Content-Type: application/json" \ -H "X-Auth-Token: your-token" \ -d '{"data": {"image_base64": "..."}}'这里有两个零基础很容易踩的地方。第一个是鉴权,在线服务默认需要X-Auth-Token,这个Token要从华为云IAM接口获取,不是控制台登录密码。第二个是图片传参格式,在线服务一般不直接接收图片文件,而是接收图片的Base64编码字符串。所以前端调用时,要先在本地把图片转成Base64,再塞进JSON里。考试里如果出这种题目,提醒你注意的就是"图片以Base64编码传入"。
部署在线服务还涉及一个经常被忽视的问题:模型配置文件。ModelArts推理时需要一个config.json来描述模型类型、输入输出格式、推理脚本路径。如果你用预置算法训练出来的模型,平台会自动生成这个文件;如果是自定义脚本,就得自己维护一份。配置写错,部署时服务能启动,但一调用就报错。最常见的错误是"input_data_name"没有和推理脚本里接收数据的变量名对上。
对于企业级部署场景,在线服务的安全性和高可用性是加分项,ModelArts支持自定义域名、负载均衡、实例数水平扩展。考试中重点知道"在线服务支持自动弹性伸缩"即可,实际项目里新手阶段也不用一上来就搞太复杂。
4.2 本地部署与模型服务化对比:Docker、Ollama、Flask等
虽然ModelArts的在线服务最“正统”,但很多实际项目里会遇到这样一个问题:训练出的模型要放在本地或私有化环境里跑。这时候常见的方案就多了:Docker封装模型推理服务、Ollama跑大语言模型、自己用Flask写推理接口等。
Docker是目前最主流、也最推荐的模型封装方式。本质上是把Python环境、依赖库、模型文件、推理脚本全部打进一个镜像,哪个机器装了Docker就能跑。部署过程通常是:写一个Dockerfile,比如基于python:3.8-slim,安装依赖库,拷贝模型和推理代码,暴露端口,CMD启动Flask/Gunicorn服务。构建好后一条docker run命令就能启动服务。这个思路对Windows、Linux服务器都适用,也是考试里经常会提到的部署容器化趋势。
Ollama则是跑大语言模型的高效工具,尤其在本地部署Qwen、Llama这些模型时非常省事。它把权重管理、显存调用、API服务全部封装好了,Windows上直接装客户端,pull一个模型就能通过HTTP接口对话。它的优势在"轻量、快上手",适合个人开发和内网使用场景。如果你在16GB显存的机器上跑大模型,Ollama默认会做一部分层卸载到CPU或者做量化,体验比从源码部署好得多,这也是这个概念在热词里频繁出现的原因。
还有一个很实用的方向是在内网环境搭建n8n或Dify这类工作流平台,再接入本地大模型服务。它们的部署本身可以用Docker跑,模型服务可以接到Ollama或者ModelArts在线服务的端点。这套组合的价值在于,把模型能力编排成自动化流程,实际落地场景更灵活。
部署方案之间没有绝对优劣,关键看场景:需要公网稳定调用,选ModelArts在线服务;要私有化、数据不出内网,选Docker加自建推理服务;要快速体验大语言模型,Ollama是最短路径。
4.3 推理性能与显存优化
部署落地以后,性能和成本就成了主要矛盾。这里分享几个亲测有效的手段。
第一是量化。把模型从FP32量化成FP16甚至INT8,显存占用直接减半或者更多,推理速度大幅提升,精度损失通常在可接受范围内。ModelArts在线服务部署时可以指定推理精度类型,本地部署时用推理框架自带的量化工具也可以。很多本地16GB显存机器跑大模型,不开量化根本装不下,开了4-bit量化反而跑得流畅,就是这个道理。
第二是批处理。在线推理接口如果支持批量输入,尽量设计成一次请求处理多张图片或多条文本,这样GPU利用率会明显提高。代价是单次请求响应时间略长,但整体吞吐量翻倍。
第三是冷启动优化。ModelArts在线服务如果长时间没有请求,实例会被回收,下一次请求就会因为冷启动而变慢。建议在负载较低的时间段设置"最少实例数"为1,确保服务常驻。
所有这些优化手段,考试里不会考得太细,但面试或者做项目答辩时提到"我做了模型量化和批量推理优化",是实打实的加分项。
5. 完整实操复盘:图像分类模型从零训练到部署的全链路演练
5.1 一个完整的训练部署Demo:猫狗分类
光讲概念不过瘾,这里我给一份可以直接照做的实战步骤,就以猫狗分类为例子。
第一步,准备数据。假设你本地有一个images文件夹,里面cat目录和dog目录各1000张图。把整个images文件夹压缩为animals.zip,上传到OBS桶的train-data路径下。
第二步,创建训练作业。在ModelArts控制台点击"创建训练作业",算法来源选择"常用框架",框架选PyTorch,代码目录选择你上传的脚本文件夹,启动文件选择train.py。数据路径填OBS里animals.zip所在目录,训练输出路径填model_output目录。规格选择CPU,如果只是为了验证流程,训练时长控制在五分钟内。
第三步,启动训练,查看日志。在训练作业详情页可以看到实时日志,如果数据路径或脚本报错,日志里会明确抛出异常。第一次跑通以后,再把规格换成GPU,接着跑正式版本。记得保存好最后的模型输出。
第四步,创建模型。训练完成后,在"模型管理"里找到模型并点击"创建模型",框架选PyTorch,模型路径选刚才的输出目录。ModelArts如果自动生成了config.json,就不用自己写推理配置。
第五步,部署在线服务。点击"部署>在线服务",选择CPU或GPU规格,确认服务状态为"运行中"。然后用Python脚本调用接口,拿两张测试图片验证预测结果。
完整走完这五步,你对ModelArts的主流程就有了肌肉记忆。考试时即使换了场景,比如从图像分类换成物体检测或文本分类,操作骨架也是一样的:数据准备、训练作业、模型管理、部署上线。
5.2 考试高频考点与答题思路标注
结合华为ICT大赛云赛道和华为云AI认证的常见考查方式,我把几个必背考点拎出来。
ModelArts的功能边界:常考它包含哪些模块,以及它"全流程AI开发平台"的定位。答题时记住:数据管理、训练管理、模型管理、部署管理四个模块缺一不可。
常见算法适用场景:ResNet用于图像分类,YOLO用于目标检测,RoBERTa等Transformer模型用于NLP任务。多选题喜欢把几个模型混在一起问"以下哪些适合图像分类",把模型主义记牢就不会错。
部署方式对比:在线服务、批量推理、边缘部署的区别。在线服务是实时响应,批量推理是异步批处理,边缘部署是靠近数据源运行。题目如果问"对于实时性要求高的业务,适合使用哪种部署方式",答案就是在线服务。
自动学习功能:ModelArts的自动学习允许零代码构建模型,适用于快速验证场景。它用到了AutoML技术,考试里常问"自动学习的优点",答案围绕降低AI开发门槛展开。
这些考点理解到位,答题的时候你就能排除干扰项。比如选项里出现"ModelArts不支持分布式训练",这个描述是错的,因为ModelArts支持大规模分布式训练。
6. 常见问题与排查技巧速查表
最后把我在实操中反复踩过的坑整理成一张速查表,希望能让大家少走弯路。
| 现象 | 可能原因 | 排查与解决 |
|---|---|---|
| 训练启动后一直报"找不到文件" | OBS路径写错,或未用moxing把数据拷贝到本地 | 检查训练作业数据路径,脚本中先复制到/tmp再读取 |
| Loss显示NaN | 学习率过大、数据异常、损失函数数值不稳定 | 调低学习率、清洗数据、损失函数加epsilon |
| CUDA out of memory | batch size设置过大,或实例显存过小 | 减小batch size,开启梯度累积,换更大显存规格 |
| 模型部署后调用报404 | 推理路径不对,模型配置文件里URL写错 | 检查config.json的API路径配置 |
| 图片推理结果完全错误 | 类别顺序和训练时不匹配,图片未做同样的预处理 | 核对类别列表,推理预处理要和训练保持一致 |
| 训练作业一直显示"初始化中" | 规格资源不足或配额被占用 | 换一个规格,或检查账号配额是否用完 |
| 在线服务访问很慢 | 冷启动或并发太高 | 设置最小实例数,优化模型量化 |
其中"图片推理结果完全错误"这条我想多说两句。训练时你把猫狗分别标成0和1,推理时如果类别列表顺序反了,模型返回的置信度会被错位解释,于是狗的照片被识别成猫。这类问题不会报任何错误,但预言结果一塌糊涂。排查方法很简单:拿一张训练集图片去推理,看看结果是否符合预期;不符合,首先检查预处理和类别映射,而不是怀疑模型训练有问题。
还有"训练作业一直初始化中"也是零基础高频问题。很多人以为卡死了,反复删除重建,其实多半是账号没有激活对应的服务权限,或者GPU配额被其他作业占用。去"资源配额"页面看一自己团队剩余额度,再决定是排队等资源还是换地区。ModelArts控制台右上角也能切换区域,不同的区域资源池不一样,冷门时间段提交训练任务通常更容易抢到GPU资源。
7. 一些个人建议和扩展方向
如果你已经按照前面的流程跑通了一个模型,下一步我想建议你尝试让模型服务更"产品化"一点。比如把在线服务的推理地址接到一个微信小程序前端里,用户上传照片,小程序把照片转成Base64发到后端,后端调用ModelArts接口返回识别结果。这样一个端到端的AI应用就完成了,它比单独跑通训练更接近真实项目。华为ICT大赛的云赛道答辩环节,能展示一个"云端训练+端侧应用"完整Demo,评委印象分和在评审中的说服力会明显上一个台阶。
本地部署方面,我建议学习时从Docker入手,一两天就能把本地推理容器跑通。紧接着再试Ollama部署一个大语言模型,配合API接口做一些对话或知识库问答的测试。这两条路走通之后,你对"模型部署"这个概念的理解会从抽象的术语变成真正的能力。将来无论是做私有化交付、边缘设备部署,还是在企业内部做AI应用,你都知道该从哪里入手找方案。
最后再分享一个我自己的习惯:每跑完一个训练部署项目,都把关键页面截图、参数配置、日志报错存成一个文档。考试复习或面试准备时翻出来很有价值,因为很多知识是靠现场经验记住的,翻笔记比重新翻文档快得多。ModelArts这类云平台的功能也在持续更新,考试大纲和界面变化都很快,但核心的流程逻辑是稳定的。把这个流程练熟,以不变应万变,比背一百个细碎知识点更稳。