选择合适的物联网网关?
Gradscalar 需要对梯度更新计算(检查是否溢出)和优化器(将丢弃的batches转换为 no-op)进行控制,以实现其操作。这就是为什么 loss.backwards()被 scaler.scale(loss).backwards()取代, 以及 optimizer.step()被 scaler.step(optimizer)替换的原因。 值得注意的是,GradScalar 可以检测并停止overflows(因为 inf 总是坏的) ,但是它无法检测和停止underflows(因为0通常是一个合法值)。如果你选择的初始值太低,增长间隔太长,你的网络可能会在 GradScalar 介入之前underflow并发散。由于这个原因,选择一个非常大的初始值可能是一个好主意。 最后,注意 GradScalar 是一个有状态对象。使用此功能保存模型checkpoint需要和模型权重一起写入和读取磁盘。用 state _ dict 和 load _ state _ dict 对象方法(在 PyTorch 文档中有介绍)可以很容易地做到这一点。
自动混合精度训练拼图的另一半是 torch.cuda.amp.autocast 上下文管理器。Autocast实现了 fp32-> fp16转换。回想一下“混合精度是如何工作的“中的内容,由于不同的操作以不同的速率累积误差,并非所有的操作都可以在 fp16中安全运行。下面的截图来自 amp 模块文档,介绍了autocast如何处理 PyTorch 中可用的各种操作: 作”一节中提到,在训练期间,为了防止梯度变小到0,某种形式的缩放是必要的。最佳的损失乘数得足够高以保留非常小的梯度,同时不能太高以至于导致非常大的梯度四舍五入到 inf产生相反的问题。 PyTorch使用指数退避(exponential backoff)来解决这个问题。Gradscalar 以一个小的损失乘数开始,这个乘数每次会翻倍。这种逐渐加倍的行为一直持续到 GradScalar 遇到包含 inf 值的梯度更新。Gradscalar 丢弃这批数据(例如跳过梯度更新) ,将损失乘数减半,并重置其倍增时间。
通过这种方式逐级上下移动损失乘数,PyTorch 可以随着时间的推移近似得到合适的损失乘数。熟悉 TCP 拥塞控制的读者应该会发现这里的核心思想非常熟悉!该算法使用的准确数字是可配置的,你可以直接从docstring中看到默认值: 系统会自动从未标注数据集中筛选出最具有代表性、也是最需要优先标注的样本数据。用户需要人工标注这些推荐的样本数据,为了提高标注效率,系统也会提供预标注供用户修改确认。在图像智能标注中,用户勾选右上角的“显示预标注”开启该辅助功能(图3),点击“满意预标注结果”即可对预标注结果进行确认;在文本智能标注中,系统会自动显示预标注标签,点击每一条文本右侧的“确认”或右上角的“本页全部确认”对预标注进行确认(图4)。
确认所有推荐数据的预标注后,用户可以自主选择是否进行下一轮数据筛选。图像智能标注中,若用户不中止智能标注,则系统会自动进行下一轮;文本智能标注中,由于文本数据集规模一般较大,确认数据预标注的人力成本较高,为了提升用户体验,系统不默认进入下一轮迭代,用户可点击右上角的“优化智能标注结果”进行下一轮筛选(图5)。通过多轮筛选,数据预标注准确性也会不断提升。为了保证数据标注智能,建议用户至少进行一轮的数据筛选或“优化智能标注”。 主动学习(Active Learning, AL)是一种挑选具有高信息度数据的有效方式,它将数据标注过程呈现为学习算法和用户之间的交互。其中,算法负责挑选对训练AI模型价值更高的样本,而用户则标注那些挑选出来的样本。如“Human-in-the-loop”交互式数据标注框架,通过用户已标注的一部分数据来训练AI模型,通过此模型来标注剩余数据,再从中筛选出AI模型标注较为困难的数据进行人工标注,再将这些数据用于模型的优化。几轮过后,用于数据标注的AI模型将会具备较高的精度,更好地进行数据标注。以图像分类问题举例,首先,人工挑选并标注一部分图像数据,训练初始模型,然后利用训练的模型预测其余未标注的数据,再通过“主动学习”中的“查询方法”挑选出模型比较难分辨类别的数据,再人为修正这些“难”数据的标签并加入训练集中再次微调(Fine-tuning)训练模型。“查询方法”是主动学习的核心之一,最常见的“查询方法”有基于不确定性的样本查询策略和基于多样性的样本查询策略。 基于不确定性的样本查询策略可查询出深度学习模型预测时,靠近决策边界的样本。以二分类问题举例,当一个未标注样本被预测为任一标签的概率都是50%时,则该样本对于预测模型而言是“不确定”的,极有可能被错误分类。要注意的是,主动学习是一个迭代过程,每次迭代,模型都会接收认为修正后的标注数据微调模型,通过这个过程直接改变模型决策的边界,提高分类的正确率。 基于多样性的查询策略,可实现对当前深度学习模型下状态未知样本的查询。将通过多样性查询挑选出的数据加入训练集,可丰富训练集的特征组合,提升模型的泛化能力。模型学习过的数据特征越丰富,泛化能力越强,预测模型适用的场景也越广。 为解决大数据量标注的痛点,基于主动学习且融合多样查询策略的智能标注AI解决方案应运而生。通过EasyDL平台使用智能标注后,开发者们只需标注数据集中30%左右的数据,即可启动智能标注在EasyDL后台自动标注剩余数据,再返回少量后台难以确定的数据再次进行人工标注,同时提升自动标注的准确性,经过几轮之后,在实际项目测试中,智能标注功能可以帮助用户节省70%的数据标注量,极大地减少数据标注中的人力成本和时间成本。 EasyDL零门槛AI开发平台,面向企业开发者提供智能标注、模型训练、服务部署等全流程功能,针对AI模型开发过程中繁杂的工作,提供便捷高效的平台化解决方案。EasyDL面向不同人群提供了经典版、专业版、行业版三种产品形态,其中EasyDL专业版支持深度开发高精度业务模型,内置了丰富的大规模预训练模型,仅需少量数据即可达到优异的模型效果。目前,EasyDL的智能标注功能已支持计算机视觉CV方向的物体检测模型、自然语言处理NLP方向的文本分类模型两大方向的数据标注。选择EasyDL专业版模型定制,点击“智能标注“即可进入。使用方法也很简单,共为三步:
在“数据管理/标注”上传完训练数据集后,即可激活“创建智能标注任务”按钮(图2),点击该按钮后,进入数据集选择。需要注意的是,系统将自动对选择的数据集进行校验。校验规则如下: 图像数据集:确保每个标签的标注框数都超过10个。 文本数据集:数据集中已标注数据量超过600条;每个标注标签的数据量超过50条;未标注数据的数据量超过600条。 以上图像和文本数据集之所以采取不同的校验规则,是因为在实际场景下,文本与图像的数据集获取方式及数据规模区别较大,且智能标注后端AI模型训练的启动样本数量不一。
点击“启动智能标注”,进入数据校验阶段,若校验不通过,会出现“智能标注启动失败”的提示;若校验通过,则进入筛选数据阶段,用户需稍作等待。 (编辑:保山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |