tag 标签: 神经网络

相关帖子
相关博文
  • 热度 5
    2023-2-18 11:57
    652 次阅读|
    0 个评论
    本篇测评由电子发烧友的优秀测评者“ALSET”提供。 电子发烧友网发布了一款试用产品:米尔 MYD-Y6ULX-V2 开发板,基于 NXP i.MX6UL/i.MX6UL L处理器,该开发板被米尔称之为经典王牌产品。本次测试目标是在此开发板上进行神经网络框架ncnn的移植与测试开发,测试ncnn在此开发板上的性能与应用测试。 01 . 什么是ncnn ncnn 是腾讯优图推出的在手机端极致优化的高性能神经网络前向计算框架。也能够在移动设备上的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑移动端的部署和使用。无第三方依赖,跨平台,其中手机端 cpu的速度快于目前所有已知的开源框架。 基于ncnn,能够将深度学习算法轻松移植到手机端和移动设备上高效执行,开发人工智能应用。以腾讯内部应用为例,ncnn目前已在QQ,Qzone,微信,天天P图等上得到应用。 ncnn支持大部分常用的CNN 网络: Classical CNN: VGG AlexNetGoogleNet Inception … Practical CNN: ResNetDenseNet SENet FPN … Light-weight CNN:SqueezeNet MobileNetV1/V2/V3 ShuffleNetV1/V2 MNasNet … Detection: MTCNNfacedetection … Detection: VGG-SSDMobileNet-SSD SqueezeNet-SSD MobileNetV2-SSDLite … Detection: Faster-RCNNR-FCN … Detection: YOLOV2 YOLOV3MobileNet-YOLOV3 … Segmentation: FCN PSPNetUNet … 腾讯优图实验室是主要研究计算机视觉技术,ncnn的许多应用方向也都在图像方面,如人像自动美颜,照片风格化,超分辨率,物体识别。 腾讯优图ncnn提供的资料显示:对比目前已知的同类框架,ncnn是cpu框架中最快的,安装包体积最小,跨平台兼容性中也是最好的。以苹果主推的CoreML为例,CoreML是苹果主推的 iOS gpu计算框架,速度非常快,但仅支持 iOS11以上的 iphone手机受众太狭窄。非开源也导致开发者无法自主扩展功能。 02 . ncnn功能简介 ncnn支持卷积神经网络,支持多输入和多分支结构,可计算部分分支无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架纯 C++ 实现,跨平台,支持 android ios 等ARM NEON 汇编级良心优化,计算速度极快精细的内存管理和数据结构设计,内存占用极低支持多核并行计算加速,ARM big.LITTLE cpu 调度优化。 支持基于全新低消耗的 vulkan api GPU 加速整体库体积小于 700K,并可轻松精简到小于 300K可扩展的模型设计,支持 8bit 量化和半精度浮点存储,可导入 caffe/pytorch/mxnet/onnx 模型支持直接内存零拷贝引用加载网络模型可注册自定义层实现并扩展。 ncnn 与同类框架对比 03 . 在i.MX6ull上移植编译ncnn 工程地址: githubhttps://github.com/Tencent/ncnn 从工程的readme文件看,该工程已经支持很多嵌入式CPU的架构,其中就有arm 32位版本。 既然支持arm32位,那么ixm6ull处理器也应该支持,即着手编译MYD-Y6ULX-V2开发板上的版本。 1.从github 上拉取ncnn源码 在主机上执行命令: Sudo git clonehttps://github.com/Tencent/ncnn.git 可见是一个 cmake工程,那么尝试cmake 编译。 2.初次使用camke编译 先进入ixml6ull的SDK下,切换到交叉编译环境,然后创建 build 目录,进入build目录下,执行cmake命令 cmake ../ 从输出信息上看 cmake失败,查看cmake 日志,发现错误原因是cmake在生成开发板的makefile文件时,需要指定使用的编译工具链。 3.添加imx6ull开发板的编译配置 根据脚本的过程,在toolchains目录下,有很多其它开发板的编译配置文件,参照其它开发板的配置文件,添加一个该开发板的配置文件。 文件名:arm-poky-linux-gnueabi.cmake 内容如下: set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER "arm-poky-linux-gnueabi-gcc") set(CMAKE_CXX_COMPILER "arm-poky-linux-gnueabi-g++") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon --sysroot=/home/lutherluo/workspace/fsl-imx-fb/5.10-gatesgarth/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi") set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon --sysroot=/home/lutherluo/workspace/fsl-imx-fb/5.10-gatesgarth/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi") # cache flags set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") 4.再使用cmake生成编译文件 添加完该开发板的编译工具链后,就可以使用cmake来生成编译所需的makefile文件了。在cmake时,可以指定除了编译ncnn库外,还可以编译ncnn例子程序。命令如下: cmake-DCMAKE_BUILD_TYPE=Release -DNCNN_SIMPLEOCV=ON-DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-poky-linux-gnueabi.cmake-DNCNN_BUILD_EXAMPLES=ON .. 查看目录下,已经顺利地生成了 Makefile文件。 5.使用make编译文件 然后可以正式编译ncnn库和测试样例程序了。 直接执行 make –j4 就开始愉快地编译了。 编译libncnn库文件成功,会继续自动编译 examples 下的例子文件。 大约10多分钟,顺利地全部编译完成。 在编译测试用例时,会出现库格式错误的提示,此时需要设置一下交叉编译环境下的库归档工具,系统默认使用的是arm-poky-linux-gnueabi-ar 工具,这个工具产生的 .a文件有问题,经过测试使用 arm-poky-linux-gnueabi-gcc-ar 即可。 只需要在执行切换交叉环境脚本后,再单独执行一下以下命令即可修改该问题: export ar=arm-poky-linux-gnueabi-gcc-ar 再进行编译即可。 6.查看编译结果 编译完成后,在build目录下,可以看到 benchmark 目录,该目录下就是ncnn的基准测试工具,可以看到目标板执行文件已经编译出来。 再进入到 build/example 下,可以看到所有例程也编译出来了。 04 . 板上运行测试ncnn 编译完成把可执行文件与模型文件复制到开发板里进行测试。 把 build/benchmark 下的benchmark 复制到开发板/home/root/ncnn 目录下,同时把工程根目录下的benchmark 目录下所有文件也复制到开发板 /home/root/ncnn目录下, 然后就可以执行 benchmark 执行文件来测试开发板的人工神经网络的计算能力。 先把开发环境下目标文件系统arm目录下/usr/lib下的libgomp.so.1文件复制到开发板的/usr/lib下,这个文件是并行计算库,ncnn编译时用到了这个库,这个库在多核处理器上能够支持执行并行计算。然后再在本开发板执行benchmark,执行输出结果如下图: 可见大部分的模型能够跑通了,有部分模型运行出现异常。 从抛出的分值可以评估该开发板的神经网络推理计算能力了。 这个分值是一个模型推理一次的耗时,所以数值越小意味着算力越强。考虑到这个开发板是一个arm v7入门级的开发板,这样的性能已经超乎预料了。 05 . 测试基于ncnn的应用 这里在MYD-Y6ULX-V2开发板上测试ncnn的应用例子,这里就用ncnn下的例程来做测试,在上面编译完example后,在build目录下会产生example的目标板的可执行文件。编译出来的例子程序如下,把他们全部传到开发板上。 需要注意的是,除了ncnn的应用执行文件,在这些例子执行的时候,还需要模型和测试的资源文件,而这些文件体积都比较大,因此不能传送到开发板的系统目录上,需要单独存在扩展的存储空间上。 经过观察板上的文件系统,发现有3.1G的空间没有使用,此时可以使用fdisk 来格式化该空间,格式化成 ext4 格式,重启板子后,就可以看到这部分空间了,然后把ncnn的所有测试执行文件和资源文件传到该目录下,这样就够用了。 在板上执行各个测试例子,会提示缺少相关模型文件和参数文件,这些模型和参数文件在这个github上面,下载相应的文件到当前目录下就可以。 https://github.com/nihui/ncnn-assets/tree/master/models 1. 测试图片分类器 准备被测试图片,test,jpg ,传到上ncnn当前目录下 并且下载好 squeezenet_v1.1.param和 squeezenet_v1.1.bin 文件到 ncnn当前目录下,然后执行一下命令: ./squeezenet./test.jpg 很快就输出识别结果,输出结果如下图 输出结果前面的编号和分类号,具体可以参考: mageNet20121000分类名称和编号 https://zhuanlan.zhihu.com/p/315368462 但不知本测试模型所用分类的版本是否和这个一致。 2测试图片内容多目标识别 测试图片内容识别,先用上面的图,再使用 squeezenetssd 来执行。执行前先下载 squeezenet_ssd_voc.bin和 squeezenet_ssd_voc.param 到板上ncnn当前目录下,然后执行: ./squeezenetssd./test.jpg 大约3秒左右输出结果如图: 输出的分类编号,可见代码的定义: 同时输出了识别结果图: 再测试另外一张图: 执行结果如下: 输出识别结果图: 上面的识别,因为输出的第二个目标被第三个目标遮盖,第二个识别为“Dog”,所以识别准确度还是比较高的。 再测试了一张图: 输出: 识别效果也比较理想。 06 . ncnn移植测试总结 经过在MYD-Y6ULX-V2开发板上,进行这次的ncnn移植测试,总体非常顺利,在移植中只需要针对开发板的编译器,修改添加相应的编译脚本即可顺利的编译ncnn库和所有例程。并不需要对代码做任何改动或者调整,因此过程很快,短暂的时间就可以完成ncnn这样一个神经网络框架在本开发板上运行起来。 对ncnn的benchmark的性能测试来看,因为本开发板仅为arm v7单核处理器,处于入门级的一款开发板,能跑出这样的成绩已经出乎意料。 在对实际图像分类和图像内容识别测试中,其中图像分类仅百十毫秒就出结果,对多目标识别单张图在2秒左右,这对一些静态的环境下已经能够达到业务使用的需求了,再综合其硬件性能,可见效能比是非常高的。同时工程里还带有一些各种其它框架模型转化ncnn的工具,方便将其它模型转化到ncnn上来使用,非常方便。 同时也测试出ncnn的良好的可移植性和对不同嵌入式硬件的支持较好,其它任何一个神经网络框架恐怕无法在这样一个系统上运行,因此也为这样一个有效的国产开源神经网络项目点赞。
  • 热度 6
    2022-9-6 10:00
    551 次阅读|
    0 个评论
    如何加快生产型人工智能的性能?
    一、简介 虽然人工智能(AI)多年来一直在推动研究和开发(R&D)方面的创新,但该技术现在已经准备好为一些行业投入生产。事实上,根据Gartner的说法,“四年前,人工智能的实施是罕见的,只有10%的调查对象表示他们的企业已经部署了人工智能或将在短期内这样做。对于2019年,这个数字已经跃升至37%—四年内增长了270%”。现在整个行业都在围绕人工智能展开,尤其是被归类为深度学习(DL)的AI技术。比如说: *许多垂面行业的企业使用自然语言处理来实现客户服务机器人的实时翻译。 *零售售商利用人工智能进行个性化促销,提高增量销售。 *消费品公司利用人工智能,通过人工智能生成的潜在产品的排列组合来推动产品创新。 *制造商使用人工智能来改善预测、预测性维护和质量保证,从而降低成本,提高生产产量和收入。 *金融服务机构利用人工智能来防止欺诈,并更好地向消费者推销其服务。 *医疗保健团体使用人工智能扫描医疗图像,以比人类更快、更准确地检测疾病。 *汽车制造商将人工智能用于驾驶辅助功能,作为实现自动驾驶汽车的一部分。 随着人工智能从研发进入生产培训和推理环境,数据集可以增长到几十或几百PB,预计人工智能计算资源将向上扩展和扩展。随着人工智能模型越来越大,越来越复杂,人工智能服务器不仅将在服务器内使用更多的GPU,而且与高性能计算(HPC)一样,分布式处理在集群扩展的服务器环境中发生。 使用本地存储将不再是一个选项,因为数据量将超过本地存储能力。也许有可能在集群周围复制和更新数据,但这将是非常难以管理和非常复杂的维护。与HPC一样,必须使用共享文件系统来避免数据争夺;并行文件系统允许多个服务器同时访问同一个文件,因此一个服务器不必等待另一个服务器释放文件来访问它。生产型人工智能所涉及的DL训练过程捋需要一个高性能、可扩展的共享存储解决方案,以处理生产规模的数据集并最大化计算资源。 人工智能开发很复杂,需要正确的技术和方法才能成功。HPE为这两者提供了一个单一来源。通过与世界级的合作伙伴紧密合作,HPE在提供技术的同时,还提供诸如HPE深度学习手册和咨询服务等资源指导。我们的合作伙伴NVIDIA在GPU方面的进步引领了整个行业,使数据科学家能够利用PB级范围内的训练数据集建立日益复杂的模型,使人们更加关注创建平衡解决方案所需的底层基础设施。同样,Mellanox提供高效、高性能的网络,不仅连接计算集群内的服务器,还连接集群与存储。WekalO Matrix为DL训练和推理提供了高性能的存储吞吐量,也为集群计算提供了必要的共享文件系统。 本文探讨了存储I/O对DL工作流程中的训练和推理的影响。本文分享的结果显示,WekalO如何让目前流行的神经网络模型充分利用GPU资源,而不使存储资源饱和。一般来说,在模型验证和推理过程中,需要提高存储性能以避免O瓶颈,从而减少模型开发的整体时间。 二、深度学习数据流 早前的一份联合白皮书《加快价值实现时间和AI洞察力》涵盖了DL数据流的复杂性。 数据必须被摄取、清理和预处理,以作为数据集的一部分来训练DL模型。为了确保训练后的模型符合性能、准确性和质量标准,它必须在模型验证阶段用推理法进行验证。这可能需要多次迭代以满足生产要求。这个数据流模型基本上提供了一个单一的服务器视角的数据流,简化后提供了一个基本的理解过程,如下图1b所示。 在分布式的集群计算环境中,数据流模型仍然是准确的,但数据的实际流动变得更加复杂。不同的服务器可能需要在同一时间访问同一个数据集,而实际的数据流可能在多个服务器之间混合。我们的基准拓扑结构采取了下一个步骤,将一个数据源显示给四个服务器,如图1c所示。 三、性能测试 利用四个HPE Apollo 6500系统上的外部存储系统,完成了一套基准测试。测试的目的是检查Matrx文件系统在训练场景中对各种配置的GPU和Apllo 6500系统的可扩展性,以及更新以前的工作,以评估单个Apollo 6500系统的推理性能。测试是针对深度学习工作负载的训练部分以及推理验证进行的。基准测试在1个、2个、4个和8个NVIDIA V100 GPU上进行,以了解随着工作负载的扩展,存储性能会受到怎样的影响。 合成基准也被运行以衡量系统的最佳性能。由于合成数据是随机生成的,以消除非GPU瓶颈,它经常被DL社区用作性能的上限,因为它不依赖于数据预处理或获取。下面的结果显示,随着GPU数量的增加,性能有了很好的线性扩展。线性扩展表明,可预测的性能和最大效率从GPU投资中获得。 在现实世界中,由于各种因素,包括CPU和GPU之间的数据移动,各种模型和框架的限制,以及数据预处理,性能通常不会线性扩展。尤其是数据预处理,可能非常繁重,往往成为多个支持GPU的服务器上的训练瓶颈。WekalO Matix为GPU服务器提供了一个共享的POSIX文件系统,以减少在多个节点之间复制数据的性能开销,提供利用所有GPU资源的性能,而不会使IO能力紧张。 HPE选择了以标准TFRecord格式存储的流行的ImageNet数据集,以实现可重复的结果。我们用不同的批处理量进行了大量的测试,但在表1中列出的结果中,只有在五个测试模型中产生最高性能的批处理量才被包括在内。使用混合精度取得了以下结果。 用于扩展测试的方法利用Horovod和数据并行性,将训练分布在一个GPU集群中。每个GPU都保持着一份完整的代码和神经网络模型的参数,数据被分割成不同的部分,并在每一步中分包给每个GPU。然后每个GPU计算该步骤的局部损失和梯度。这些信息在集群中的所有GPU之间交换,产生总损失和梯度,然后用于计算模型参数的更新。 1.训练分析 训练数据清楚地表明,HPE Apollo 6500系统配备了不同数量的NVIDIA SXM2 16 GB Tesla V100 GPU,通过增加系统和在单个系统中使用更多的GPU,可以实现良好的扩展。测试结果显示,使用一台配备8个GPU的服务器所提供的性能与使用两台各配备4个GPU的服务器或四台各配备2个GPU的服务器相当。 尽管从每个客户的角度来看,存储带宽的要求仍然相对较低,但有证据表明,特别是对于计算密集度较低的模型,带宽要求是线性扩展的。这意味着,如果没有像WekaIO Matrix这样的高性能文件系统,甚至比我们的四节点配置更大的部署也会变得性能受限。 值得注意的是,利用WekaIO Matrix的配置很容易使用。由于取消了对数据定位的依赖,使用这种共享文件系统架构在测试环境中添加新的Apollo 6500系统非常容易。不需要额外的数据复制来准备额外的客户端,这有助于为这样一个快速增长的使用案例创建一个敏捷和灵活的架构。随着计算需求的增加, WekaIO矩阵和Mellanox网络提供了出色的性能和易扩展性。 2.推论 推理是一个通常在训练好的模型被部署到生产中后在边缘发生的过程。因此,它不需要与用于训练神经网络的存储基础设施进行通信。然而,推理也被用来验证训练期间的模型,使神经网络的调整更加明智,以提高性能或准确性。在后一种用例中,存储和计算设备对DL应用的整体性能有较大影响。出于这个原因,验证用例使用HPE深度学习说明书进行了测试,以了解IO对整个模型训练时间的影响。一个修改过的ImageNet数据集被用于推理测试,其中图像以未压缩的30O0x300的24位RGB格式存储在每个包含20,000张图像的文件中,并且使用大批量大小来最大化吞吐量。 这里产生的推理测试是HPE以前执行的测试的后续,目的是验证WekaIO Matrix新版本的性能。 3.推理结果 HPE针对更新的Matrix软件测试了五种不同的DL模型。使用了10个预热批次,然后是400个批次,其结果被平均为图5中的数据。测试框架能够指定从存储中预取数据的线程数量,以及测试框架努力维护的推理队列深度。这些测试指定了13个预取线程和32个混合精度的推理队列深度。 HPE正在利用WekaIO Matrix的更新,支持为Matrix客户端软件指定更多的资源使用,这使得特定的客户端能够向Matrix文件系统驱动更多的IO性能。这使整个基础设施在相同的硬件范围内实现了更高的资源利用率。 由于推理是由数据处理和移动驱动的,因此在这一轮测试中没有使用合成基准,因为预计真实数据基准更能说明真实世界的结果。值得注意的是,这些推理测试是面向大规模模型验证的吞吐量,因此利用了大批量的测试来最大化吞吐量。随着不断的测试和调整,这里显示的基准应该在未来继续显示出改进。 4.推理分析 推理基准显示,WekaIO Matrix继续提高其能力,最大限度地提高底层基础设施的可用性能。这直接转化为用户从其数据中获得洞察力的能力,方法是加速模型验证,允许在以前使用的相同时间段内验证更多的数据,或者在使用Apollo 6500作为生产模型的部署目标时提高响应时间。 我们的WekaIO矩阵与HPE ProLiant DL360 Gen10服务器的配置现在可以接近最大化单个InfiniBand网络连接,从单个客户端提供超过8GB/s的带宽。作为参考,一个HPE 100 Gb EDR InfiniBand网络适配器可以提供超过12GB/s的带宽。 5.结论:对生产型人工智能的现实意义 我们的基准测试显示,在扩大规模的情况下--每台服务器增加更多的GPU,以及扩大规模的情况下--增加服务器以提供额外的GPU,训练和推理的性能都接近于线性扩展。在这两个方向上的扩展能力为选择如何分配服务器以解决工作负载提供了灵活性。拥有较少GPU的服务器可以根据需要进行集群,以便在所需的时间内处理较大的工作,或达到所需的性能水平。服务器容量可以为预期的工作负载量身定做,这有助于提高投资回报率,优化资源利用,并减少洞察力的时间。 这个测试架构的扩展能力证明了并行文件系统的这一要求。并行文件系统允许数据同时被多个服务器共享,因此一个服务器永远不必等待另一个服务器释放数据,从而消除了服务器之间对数据的争夺。此外,WekaIO Matrix还针对闪存和Al中的混合文件类型和大小进行了优化,为GPU集群提供了吞吐性能。 6.考虑因素 本文分享的分布式训练结果显示了各种配置,其中HPE Apollo 6500 Gen10系统集群可以在集群内各种GPU数量和分布中实现预期的性能扩展.在许多情况下,对于一个给定的GPU数量(集群内GPU分布之间的差异),性能相当一致。这表明,无论整体的分布方法如何,对于GPU数量的缩放都是非常一致的。 对于推理,本文展示了来自WekaIO Matrix文件系统的进一步增强,以加速工作负载并提高洞察力的时间。在HPE Apollo 6500 Gen10系统内,WekaIO Matrix、Mellanox 100 Gbps InfiniBand互连和NVIDIA GPU的组合为生产型Al工作负载提供了一个强大的平台。 随着GPU数量的增加,WekaIO Matrix提供的性能水平达到甚至超过了本地文件系统。当训练数据集的容量增加,集群的规模超过单个GPU客户端时,这提供了一个优势。考虑到每一个训练周期都需要有一个验证周期,WekaIO的优势被放大了许多倍,并且可以大大减少创建一个生产就绪的DL模型的总体时间。 一个不应该被忽视的方面是对高速网络结构的要求。我们的结果显示,一个10Gb的以太网网络可能会被16个GPU所饱和。一个低速网络将不允许有效地使用一个大型服务器集群。根据我们的结果,高速网络是一项面向未来的投资,届时可能会有数百台GPU服务器。 四、行业使用案例 考虑一下本文讨论的基准测试结果如何转化为可能的生产用例是很有用的。测试中使用的所有模型都是卷积神经网络(CNN),它主要用于图像内的特征检测。WekaIO的可扩展存储可以处理PB级的存储数量,同时保持本文所介绍的高性能特征,而不需要在任何客户服务器上进行本地数据复制。HPE Apollo 6500 Gen10系统在增加用于模型训练的客户机和在现有客户机上增加GPU时都能实现扩展。 1.自动驾驶车辆 CNN(如ResNet50)可用于汽车行业,进行语义分割或物体检测,以使自动驾驶车辆能够安全行驶。在CNN训练阶段,大量的图像可用于微调整体语义分割或物体检测模型,该模型可能由多个阶段的神经网络组成。为了改善这些神经网络的训练,将需要更多的数据量--无论是来自更高的分辨率还是更高的数量--以及对基础模型进行更多的排列组合。我们的性能结果表明,HPE Apollo 6500 Gen10系统可以线性扩展,对不同的神经网络模型进行更多的并行运行,或者更快地运行相同数量的模型,减少洞察力的时间。 2.医学成像 另一个将受益于灵活的服务器集群能力的工作负载是医学成像工作流程。通常情况下,较小的数据集被用来实现预定义的指标,然后较大的数据集被用来进行生产就绪的模型训练。鉴于本文的结果,在小数据集的情况下,集群可以被配置为在开发阶段快速测试许多不同的模型,然后被配置为聚集计算资源,以尽量减少较大的生产数据集的吞吐时间。
  • 热度 7
    2022-9-2 11:59
    880 次阅读|
    0 个评论
    如何让GPU加速20倍?AI数据平台是关键!
    导语:在过去的十年里,人工智能的大部分重点都放在了GPU的处理上,这是理所当然的,因为所有的进步都在GPU。但GPU变得如此之快,以至于输入到其中的数据已成为整体AI训练性能的主要瓶颈。因此, 快速、高效的数据管道已经成为用GPU加速深度神经网络(DNN)训练的关键 。 一、GPU数据匮乏 Google、Microsoft以及世界各地其他组织最近的研究表明,GPU花费了高达70%的AI训练时间来等待数据。看看他们的数据管道,这应该不足为奇。下图显示了典型的深度学习数据管道,NVIDIA称这是他们及其客户常用的。 如上图所示,在每个训练Epoch开始时,保存在大容量对象存储上的训练数据通常被移动到Lustre存储系统层,然后再次移动到GPU本地存储,用作GPU计算的暂存空间。每个“跃点”都会引入数据复制时间延迟和管理干预,从而大大减慢每个训练时期。 宝贵的GPU处理资源在等待数据时一直处于空闲状态,并且不必要地延长了重要的训练时间 。 二、HK-WEKA有更好的解决方法:AI数据平台 深度学习模型训练的主要设计目标,也是HK-WEKA人工智能数据平台的设计目标,即是通 过在存储学习数据的HK-WEKA文件系统中以最低的延迟提供最高的吞吐量,使进行训练处理的GPU持续饱和 。深度学习模型能够学习的数据越多,它就能越快地收敛于一个解决方案,其准确性也就越高。 HK-WEKA将典型的GPU匮乏的“multi-hop”AI数据管道折叠成一个单一的、零拷贝的高性能AI数据平台 —其中大容量对象存储与高速HK-WEKA存储“融合”在一起,共享同一命名空间,并由GPU通过NVIDIA GPUDirect Storage协议直接访问,消除了所有瓶颈,如下图所示。将用于人工智能的HK-WEKA数据平台纳入深度学习数据管道, 可使数据传输率达到饱和,并消除存储仓之间浪费的数据复制和传输时间,使每天可分析的训练数据集数量呈几何级数增加 。 通过HK-WEKA零拷贝架构,数据只需写入一次,就可以被深度学习数据流中的所有资源透明地访问。如上图所示,HK-WEKA人工智能数据平台支持英伟达的GPUDirect存储协议,该协议绕过了GPU服务器的CPU和内存,使GPU能够直接与HK-WEKA存储进行通信,将吞吐量加速到尽可能快的性能。 1.专为最低延迟深度学习数据管道设计的架构 深度学习人工智能工作流程包括跨训练数据集的密集随机读取,低延迟可以加速训练和推理性能。 *HK-WEKA的设计是为了尽可能实现 最低的延迟和最高的性能 。 *HK-WEKA的小型4K块大小与NVMe SSD介质块大小相匹配,以 实现最佳性能和效率 。 *HK-WEKA将 元数据处理和直接数据访问均匀地分布在所有存储服务器上(没有后端网络 ),进一步降低了延迟,提高了性能。 *更重要的是,HK-WEKA设计了 低延迟的性能优化的网络 。 *HK-WEKA不使用标准的TCP/IP服务,而是 使用UDP上的数据平面开发工具包(DPDK)来加速数据包处理工作负载 ,没有任何上下文切换和零拷贝访问,这是一个特制的基础设施。 *HK-WEKA绕过了标准的网络内核栈, 消除了网络操作对内核资源的消耗 。 2.无缝低延迟命名空间扩展到对象存储 HK-WEKA数据平台的集成对象存储提供经济、大容量和快速访问,以便在深度学习训练过程中存储和保护大量训练集。 *用于AI的HK-WEKA数据平台包括 无缝扩展其命名空间到对象存储和从对象存储扩展的能力 . *所有数据都位于一个HK-WEKA命名空间中 ,所有元数据都位于闪存层上,以便快速、轻松地访问和管理 。 *为了减少延迟, 大文件被分割成小对象,小文件被打包成更大的对象, 以最大限度地提高并行性能访问和空间效率。 3.通过切换到HK-WEKA的AI数据平台,Epoch Time可减少20倍 为了说明如何显著减少训练周期时间, 计算机视觉深度神经网络最大、知识最渊博的用户之一最近从传统的多副本数据管道转换到HK-WEKA的零拷贝数据管道 ,在传统的多副本数据管道中,每个训练周期需要80小时。而现在, 他们将Epoch Time缩短了20倍至4小时,如下图所示。这使他们能够在12天内完成旧基础设施需要一年才能完成的工作,从而大大加快了最终产品的上市速度 。 关于虹科云科技 虹科云科技,主要分享云计算、数据库、商业智能、数据可视化、高性能计算等相关知识、产品信息、应用案例及行业信息,为学习者传输前沿知识、为技术工程师解答专业问题、为企业找到最适合的云解决方案!
  • 热度 6
    2022-8-29 12:02
    815 次阅读|
    0 个评论
    什么是 AI 管道?AI 管道是一种自动化机器学习工作流程的方法。AI 管道 一般包括四个主要阶段: *预处理 *学习 *评估 *预言 一、什么是机器学习操作? 术语“Ops”是“操作”的简写,被附加到许多不同的术语中,以表示对适合单个学科的多个相互关联的流程进行精简。例如,这种框架设备更常见的用途之一是“DevOps”,或将多个流程(如测试、错误跟踪、监控和迭代敏捷开发)集成到单个管道中。 集成操作发挥巨大作用的另一个地方是机器学习。机器学习是一个包含多个关键组件的复杂过程,而最佳地执行这些组件可以证明是可靠机器学习平台的成败。 MLOps 是 AI 平台的关键部分,部分原因在于机器学习和 AI 之间的关系: * 人工智能平台为智能机器提供动力 :更大的机器,包括分析平台和制造系统,由可以持决策和优化的人工智能提供支持。人工智能通常包含几个组件,其中之一是机器学习。 *神经网络大脑为人工智能提供动力 :神经网络是根据我们在人脑中观察到的情况建模的——也就是说,思维过程由神经元等较小的组件组​​成,将输入处理成越来越复杂的过程。创造性思维是相对简单的任务完成的涌现结果。 *机器学习算法教授神经网络 :机器学习算法在机器学习管道的推动下,获取数据并通机器学习模型运行,以了解特定系统及其工作方式。机器学习算法使用的模型可能会改变它们的学习方式,但基线操作是算法优化战略思维,可以作为人工智能平台的基础。 因此,人工智能管道包括背景机器学习算法,这些算法向系统教授环境策略,形成一个更大的人工智能,可以驱动它所连接的任何系统或机器。人工智能管道本质上是一个机器学习管道。 二、什么是 AI 管道? 人工智能或机器学习管道是相互连接且流线型的操作集合。从数据收集到训练模型,这些信息会进入并通过机器学习系统。 AI 管道由“工作流”或交互路径组成,数据通过这些路径在机器学习平台中移动。一般来说,这些工作流程由以下阶段组成: *数据摄取 :人工智能训练需要大量信息才能实际训练运行它的算法。在现代数据平台出现之前,收集这么多数据几乎是不可能的。现在,人工智能平台从数据库、用户输入和混合云系统等多个来源提取数据。 *数据清理 :通过这些方法收集的大多数数据都是非结构化的。它不是遵循相同的清除、识别和分类过程的数据。第一步是筛选出损坏或重复的数据,或简单的“虚拟数据”,这对机器学习没有帮助。 *预处理 :顾名思义,非结构化数据没有以适当处理所需的结构化方式进行分类、格式化或存储。预处理是在处理之前自动分类和存储以供使用。 *建模 :机器学习系统然后根据给定的应用领域创建或改进模型——本质上,系统是使用摄取的数据进行训练的。机器学习系统将创建和利用模型来推动智能决策并为未来的模型提供信息。 *部署 :人工智能可以被部署以供最终用户、业务用户或数据科学家使用。 工作流(以及管道)将信息从收集转移到最终部署,并代表一个迭代过程,该过程不断将新信息(来自数据收集阶段和用户交互)提供给机器学习和人工智能系统,以用于学习和处理目的。 三、ML工作流程如何塑造 AI 管道? 虽然我们了解 AI 管道的作用,但了解 AI 进程如何在这些管道中发挥作用也很重要。 人工智能有几个阶段,作为其“学习”过程的一部分。这些阶段包括: (1)预处理 虽然我们已经介绍了这一部分,但重要的是要了解 ML 工作流的几个阶段用作 AI 应用程序的预处理。这包括清理数据、构建数据并为 AI 学习模型做好准备。 (2)学习 机器学习本身就是一门完整的学科,也是人工智能的一个子集。作为人工智能系统的一部分,机器学习算法将使用不同的模型来处理数据。 支持 AI 管道的一些最常见的机器学习形式包括: *监督学习 :监督学习是数据科学家如何根据样本输入为机器学习算法提供所需输出的示例。然后,机器学习算法使用这种相关性来学习如何根据输入和输出之间的关系来最好地构建它们的行为。这就像一个代数方程,机器学习在其中学习如何最好地求解给定样本数的“X”。这种学习形式支持数据分类和分析等应用类型。 *无监督学习 :顾名思义,这种学习形式省略了任何结构化输出供机器学习学习。相反机器学习算法使用数据集来了解该数据中的固有模式以及如何最好地将其用于特定任务。这种机器学习支持数据挖掘和数据组织等高级战略行动。 *强化学习 :强化学习主要与数字或物理系统中的代理相关,并使用行动和奖励教学来帮助这些代理学习如何在这些环境中对战略行动进行建模。这种学习最常用于多人游戏中。 *深度学习 :深度学习是一种教学形式,它使用神经网络层来促进复杂任务的机器学习, 例如物理系统的模式识别,例如图像和面部识别。这种学习形式并非排他性的,因为它由神经网络驱动,以促进更广泛的学习技术。因此,例如,您可以将深度学习技术与列出的任何方法一起使用。深度强化学习是非常先进的系统机器学习的一种常见形式。 (3)评估 人工智能系统由使用机器学习技术和技术创建的“训练有素”的大脑驱动,评估来自用户输入的传入数据。此阶段要求提供给 AI 的信息与其预期接收的信息相匹配,并且它已经接受过培训。 请注意,在构建用于 AI 平台的非结构化数据的过程中,必须以标准化的方式对其进行组织。无论您使用有监督还是无监督的数据,它都将以标准化的方式进行结构化。 (4)预测 基于通过学习过程学到的策略,人工智能将根据信息做出预测,从而为决策提供信息。这可以包括机器为用户提供的洞察力、它如何驾驶其他机器(如自动驾驶汽车或制造设备)或对风险管理表执行复杂的分析。 四、使用 WEKA 云基础架构为 AI 管道供电 AI 管道需要大量资源:计算能力、随时可用的存储、灾难恢复和备份、机器学习应用程序的专用硬件等。典型的云环境通常不具备这种能力。相反,数据科学家转向专门的混合云环境来运行他们复杂的 AI 管道。 WEKA 提供了这样一个环境,包括以下功能: *流线型和快速的云文件系统,将多个源组合到一个高性能计算系统中 *业界最佳的 GPUDirect 性能(单个 DGX-2 为 113 Gbps,单个 DGX A100 为 162 Gbps) *针对治理、风险和合规性要求的动态和静态加密 *边缘、核心和云开发的敏捷访问和管理 *可扩展至数十亿文件的 EB 级存储
  • 热度 12
    2021-11-20 10:07
    965 次阅读|
    0 个评论
    哥伦比亚大学瓦格洛斯医学院的研究人员开发了一种算法,可以自动搜索病人的电子医疗记录中的血液和尿液测试结果,并使用既定的方程式和机器学习的混合方法处理数据,可以提醒医生处于慢性肾脏病最早期阶段的病人。 慢性肾病的诊断往往未被发现,直到它造成不可逆转的损害。新算法旨在确保在最早阶段检测到慢性肾病。 早期检测是关键 研究人员说,慢性肾脏病(CKD)代表了一种缓慢进展的疾病,通常在晚期之前是无声无息的,但早期干预可以大大延迟其进展。 "早期识别肾脏疾病是最重要的,因为我们有治疗方法,可以在损害变得不可逆转之前减缓疾病的发展。 慢性肾脏病可能导致多种严重问题,包括心脏病、贫血或骨病,并可能导致早期死亡,但其早期阶段经常没有得到充分认识和治疗,"研究负责人、哥伦比亚大学瓦格洛斯内外科医学院副教授Krzysztof Kiryluk博士说。 这项研究的题目是 "基于医疗记录的慢性肾脏病表型的临床护理和'大数据'观察遗传研究",于2021年4月发布。 该算法如何工作 该算法自动拖曳电子医疗记录。它像一个有经验的肾病医生一样工作。当使用451名患者的电子医疗记录进行测试时,该算法在两名有经验的肾脏病专家确定的95%的肾脏病患者中正确诊断了肾脏病,在97%的健康对照组中正确排除了肾脏病。 该算法可用于不同类型的电子健康记录系统,包括数以百万计的患者,并可轻松纳入临床决策支持系统,通过建议适当的特定阶段的药物来协助医生。如果将来诊断肾脏疾病的标准发生变化,该算法可以很容易更新,并免费提供给其他机构使用。 然而,研究人员说,该算法的一个缺点是,它取决于医疗记录中是否有相关的血液和尿液测试。血液检验是相当常规的,但尿液检验在临床实践中没有得到充分利用。 Kiryluk说,尽管有这些限制,但算法诊断可以提高人们对肾脏疾病的认识,通过早期治疗,可减少失去肾功能的人数。 研究结果所附的一份声明解释说,诊断不足的原因很复杂。这是因为处于慢性肾脏病早期的人通常没有症状,而初级保健医生可能会优先考虑病人诉求。此外,需要两种测试,一种是测量血液中的肾脏过滤代谢物,另一种是测量尿液中的蛋白质渗漏,以检测无症状的肾脏疾病。 "这些测试的解释并不总是简单明了的。 许多病人的特征,包括年龄、性别、体重或营养状况,都需要考虑 ,而这一点经常未被初级保健医生所重视,"Kiryluk说。 问题的普遍性 据估计,每八个美国成年人中约有一人被认为患有慢性肾脏疾病。然而,在该疾病的早期阶段,只有10%的人知道自己的病情。在那些已经有严重的肾功能减退的人中,只有40%的人知道他们的诊断。 中国成人总体患病率约为10.8%。在中国,CKD1-2期患者占据总CKD患者的大多数,为76.59%。终末期肾脏病患者的占比最小,为1.4%。CKD患者的住院死亡率为2.63%,远高于非CKD患者(0.81%)。 高血压和糖尿病是造成CKD的主要原因。几乎一半的CKD患者同时患有糖尿病或心血管疾病(CVD)。此外,有超过661,000名美国人患有肾衰竭。 美 国家糖尿病和消化道疾病研究所说,其中46.8万人正在接受透析治疗,大约有19.3万人接受了有效的肾脏移植。 根据中国肾脏病网络调研结果显示,在CKD住院患者中,糖尿病肾病占26.96%、高血压肾病占20.78%,其次为梗阻性肾病(15.59%)和肾小球肾炎(15.07%)。同时CKD会诱发多种合并症,CKD引发的心血管并发症死亡率是普通人群的5倍。冠心病是慢性肾脏病住院患者最常见的合并心血管疾病类型(18.82%),其次为心力衰竭(16.02%)和中风(12.88%)。
相关资源