file-type

华为MindSpore数据框架:架构、特性和优化解决方案

PDF文件

下载需积分: 50 | 1.34MB | 更新于2024-07-16 | 58 浏览量 | 51 下载量 举报 1 收藏
download 立即下载
MindSpore数据框架是华为2012实验室推出的重要解决方案,针对AI开发者在实际工作中所面临的诸多数据问题和挑战。首先,AI开发过程中,数据是关键因素,但往往存在数据多样性不足、训练数据量大导致的迭代时间长等问题。据统计,训练数据准备阶段的时间占比高达70%,且由于数据标注成本高昂,这在自动驾驶等场景中尤为突出,如一个2D车辆/行人检测模型,需要百万级数据,人工标注可能耗时数百人天。 为解决这些问题,MindSpore设计了一套端边云协同的统一训练和推理框架,其中包括了Graph Engine、Mind Expression计算框架以及数据框架。这个数据框架旨在提供高效的数据处理和管理能力,例如: 1. 数据高效处理:通过统一的高效AI数据格式,实现数据的自描述性和可检索性,显著提高数据准备的效率,缩短训练周期。 2. 半自动化标注:引入人机协同的半自动标注框架,显著降低人工标注的工作量,提高标注准确率至99%以上,同时标注效率提升了4倍,显著降低数据准备的成本。 3. 数据多样性增强:针对训练数据读取性能和多样性不足的问题,MindSpore支持高效的数据检索,使得开发者能够轻松获取特定的训练数据,如在自动驾驶场景中补充特定天气或环境条件下的图片。 4. 数据统计与可视化:提供数据集的可视化功能,帮助用户直观了解数据分布和统计信息,便于快速分析和优化。此外,还支持索引信息,方便进行高效的数据检索。 5. 模型调优支持:MindSpore不仅关注模型精度调优,如错例可视化解释和模型溯源,还关注模型性能调优,如数据集可视化、学习率曲线和鞍点分析,以提升模型的优化效率。 通过这些关键技术架构和特性,MindSpore数据框架帮助AI开发者在训练过程中降低成本、提高效率,从而更好地应对复杂多变的数据挑战。无论是大规模的训练数据管理,还是模型调优过程中的灵活性,MindSpore都展现了华为在AI数据处理领域的深厚积累和创新实践。

相关推荐

filetype
MindSpore是一种适用于端边云场景的新型开源深度学习训练/推理框架。 MindSpore提供了友好的设计和高效的执行,旨在提升数据科学家和算法工程师的开发体验,并为Ascend AI处理器提供原生支持,以及软硬件协同优化。 同时,MindSpore作为全球AI开源社区,致力于进一步开发和丰富AI软硬件应用生态。 MindSpore特点: 自动微分 当前主流深度学习框架中有三种自动微分技术: 基于静态计算图的转换:编译时将网络转换为静态数据流图,将链式法则应用于数据流图,实现自动微分。 基于动态计算图的转换:记录算子过载正向执行时网络的运行轨迹,对动态生成的数据流图应用链式法则,实现自动微分。 基于源码的转换:该技术是从功能编程框架演进而来,以即时编译(Just-in-time Compilation,JIT)的形式对中间表达式(程序在编译过程中的表达式)进行自动差分转换,支持复杂的控制流场景、高阶函数和闭包。 TensorFlow早期采用的是静态计算图,PyTorch采用的是动态计算图。静态映射可以利用静态编译技术来优化网络性能,但是构建网络或调试网络非常复杂。动态图的使用非常方便,但很难实现性能的极限优化。 MindSpore找到了另一种方法,即基于源代码转换的自动微分。一方面,它支持自动控制流的自动微分,因此像PyTorch这样的模型构建非常方便。另一方面,MindSpore可以对神经网络进行静态编译优化,以获得更好的性能。 MindSpore自动微分的实现可以理解为程序本身的符号微分。MindSpore IR是一个函数中间表达式,它与基础代数中的复合函数具有直观的对应关系。复合函数的公式由任意可推导的基础函数组成。MindSpore IR中的每个原语操作都可以对应基础代数中的基本功能,从而可以建立更复杂的流控制。 自动并行 MindSpore自动并行的目的是构建数据并行、模型并行和混合并行相结合的训练方法。该方法能够自动选择开销最小的模型切分策略,实现自动分布并行训练。 目前MindSpore采用的是算子切分的细粒度并行策略,即图中的每个算子被切分为一个集群,完成并行操作。在此期间的切分策略可能非常复杂,但是作为一名Python开发者,您无需关注底层实现,只要顶层API计算是有效的即可。
filetype
今年的华为开发者大会 HDC 2020 上,除了**昇腾、鲲鹏等自研芯片硬件平台**之外,最令人期待的就是**深度学习框架 MindSpore 的开源**了。今天上午,华为 MindSpore **首席科学家陈雷**在活动中宣布这款产品正式开源,我们终于可以在开放平台上一睹它的真面目。 本文是根据机器之心报道的MindSpore 的开源介绍而整理的.md笔记 作为一款支持**端、边、云独立/协同的统一训练和推理框架,华为希望通过这款完整的软件堆栈,实现**一次性算子开发、一致的开发和调试体验**,以此帮助开发者实现**一次开发,应用在所有设备上平滑迁移**的能力。 三大创新能力:新编程范式,执行模式和协作方式 由**自动微分、自动并行、数据处理**等功能构成 开发算法即代码、运行高效、部署态灵活**的**特点**, 三层核心:从下往上分别是**后端运行时、计算图引擎及前端表示层**。 最大特点:采用了业界最新的 **Source-to-Source 自动微分**,它能**利用编译器及编程语言的底层技术**,进一步**优化以支持更好的微分表达**。主流深度学习框架中主要有**三种自动微分技术,才用的不是静态计算图、动态计算图,而是基于**源码**转换:该技术源以**函数式编程框架**为基础,以**即时编译(JIT)**的方式**在中间表达(编译过程中程序的表达形式)上做自动微分变换**,支持**复杂控制流场景、高阶函数和闭包**。 MindSpore 主要概念就是张量、算子、单元和模型 其代码有两个比较突出的亮点:计算图的调整,动态图与静态图可以一行代码切换;自动并行特性,我们写的串行代码,只需要多加一行就能完成自动并行。
filetype
有朋友开始投诉了,说我已经好长一段时间没有写技术类文章了。汗颜,积极改进。刚好今天在群里有同行遇到一个关于 LR 参数化的问题,其实这个问题以前也遇到过,所以就顺便把我的想法整理一下发上来。 当时我们要做的是使用性能测试工具模拟大量用户在线点播 Movie 的业务,这个点播 Movie 的业务在第一次点播成功后,如果同一用户再次点播同一 Movie,系统的处理流程与第一次点播是不同的。另外,我们在执行测试时,通常都会连续执行几个小时以获得尽可能多的样本数据。 那么问题就在于,一方面我们不能在一次测试中重复的读取同样的数据,另一方面准备几十万甚至上百万的数据工作量也太大,而且还涉及到相关的基础数据的准备。那么,我们该如何在使用 LoadRunner 连续长时间执行测试,保证参数化的数据充足而又不会重复呢? 其实方法很简单。无论上 LR 还是JMeter,都提供了将多个参数的取值存放在同一个文件中,或者每个参数单独指定一个文件的功能,针对上面这个例子,我们只是简单的创建了两个文件和三个参数,第一个参数和第二个参数(用户账号和密码)存放在第一个文件中,有1000条记录;第三个参数(Movie 的 ID)存放在第二个文件中,有999条记录。然后在测试工具中设置参数取值的读取为顺序读取并且循环读取。通过这种简单的方法组合出了大量的数据。 问题被解决了。