关于深度学习:地址标准化服务AI深度学习模型推理优化实践

导读深度学习已在面向自然语言解决等畛域的理论业务场景中宽泛落地,对它的推理性能优化成为了部署环节中重要的一环。推理性能的晋升:一方面,能够充分发挥部署硬件的能力,升高用户响应工夫,同时节省成本;另一方面,能够在放弃响应工夫不变的前提下,应用构造更为简单的深度学习模型,进而晋升业务精度指标。 本文针对地址标准化服务中的深度学习模型发展了推理性能优化工作。通过高性能算子、量化、编译优化等优化伎俩,在精度指标不升高的前提下,AI模型的模型端到端推理速度最高可取得了4.11倍的晋升。 1. 模型推理性能优化方法论模型推理性能优化是AI服务部署时的重要环节之一。一方面,它能够晋升模型推理的效率,充沛开释硬件的性能。另一方面,它能够在放弃推理提早不变的前提下,使得业务采纳复杂度更高的模型,进而晋升精度指标。然而,在理论场景中推理性能优化会遇到一些艰难。 1.1 自然语言解决场景优化难点典型的自然语言解决(Natural Language Processing, NLP)工作中,循环神经网络(Recurrent Neural Network, RNN)以及BERT[7](Bidirectional Encoder Representations from Transformers.)是两类使用率较高的模型构造。为了便于实现弹性扩缩容机制和在线服务部署的高性价比,自然语言解决工作通常部署于例如Intel® Xeon®处理器这样的x86 CPU平台。然而,随着业务场景的复杂化,服务的推理计算性能要求越来越高。以上述RNN和BERT模型为例,其在CPU平台上部署的性能挑战如下: RNN循环神经网络是一类以序列(sequence)数据为输出,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络。理论应用中常见的RNN有LSTM,GRU以及衍生的一些变种。在计算过程中,如下图所示,RNN构造中每一次的后级输入都依赖于相应的输出和前级输入。因而,RNN能够实现序列类型的工作,近些年在NLP甚至是计算机视觉畛域被宽泛应用。RNN相较于与BERT而言,计算量更少,模型参数共享,但其计算时序依赖性会导致无奈对序列进行并行计算。 BERTBERT[7]证实了可能以较深的网络结构在大型数据集上实现无监督预训练(Unsupervised Pre-training),进而供应特定工作进行微调(finetune)的模型。它不仅晋升了这些特定工作的精度性能,还简化了训练的流程。BERT的模型构造简略又易于扩大,通过简略地加深、加宽网络,即可取得相较于RNN构造更好的精度。而另一方面,精度晋升是以更大的计算开销为代价的,BERT模型中存在着大量的矩阵乘操作,这对于CPU而言是一种微小的挑战。 1.2 模型推理优化策略基于上述推理性能挑战的剖析,咱们认为从软件栈层面进行模型推理优化,次要有如下策略: 模型压缩:包含量化、稠密、剪枝等特定场景的高性能算子AI编译器优化量化模型量化是指将浮点激活值或权重(通常以32比特浮点数示意)近似为低比特的整数(16比特或8比特),进而在低比特的示意下实现计算的过程。通常而言,模型量化能够压缩模型参数,进而升高模型存储开销;并且通过升高访存和无效利用低比特计算指令(如Intel® Deep Learning Boost Vector Neural Network Instructions,VNNI),获得推理速度的晋升。给定浮点值,咱们能够通过如下公式将其映射为低比特值:其中和是通过量化算法所得。基于此,以Gemm操作为例,假如存在浮点计算流程:咱们能够在低比特域实现相应的计算流程:高性能算子在深度学习框架中,为了放弃通用性,同时兼顾各种流程(如训练),算子的推理开销存在着冗余。而当模型构造确定时,算子的推理流程仅是原始全量流程个一个子集。因而,当模型构造确定的前提下,咱们能够实现高性能推理算子,对原始模型中的通用算子进行替换,进而达到晋升推理速度的目标。在CPU上实现高性能算子的关键在于缩小内存拜访和应用更高效的指令集。在原始算子的计算流程中,一方面存在着大量的两头变量,而这些变量会对内存进行大量的读写操作,进而拖慢推理的速度。针对这种状况,咱们能够批改其计算逻辑,以升高两头变量的开销;另一方面,算子外部的一些计算步骤咱们能够间接调用向量化指令集,对其进行减速,如Intel® Xeon®处理器上的高效的AVX512指令集。AI编译器优化随着深度学习畛域的倒退,模型的构造、部署的硬件呈现出多样化演进的趋势。将模型部署至各硬件平台时,咱们通常会调用各硬件厂商推出的runtime。而在理论业务场景中,这可能会遇到一些挑战,如: 模型构造、算子类型的迭代的速度会高于厂家的runtime,使得一些模型无奈疾速基于厂商的runtime实现部署。此时须要依赖于厂商进行更新,或者利用plugin等机制实现缺失的算子。业务可能蕴含多个模型,这些模型可能由多个深度学习框架训得,此外模型可能须要部署至多个硬件平台。此时须要将这些格局不同的模型转化至各个硬件平台所需的格局,同时要思考各推理框架实现的不同导致的模型精度性能变动等问题,尤其是像量化这类对于数值差别敏感度较高的办法。AI编译器就是为了解决上述问题而提出的,它形象出了多个档次来解决上述的一些问题。首先,它承受各个前端框架的模型计算图作为输出,并通过各类Converter转化生成对立的两头示意。随后,诸如算子交融、循环展开等图优化pass会作用至两头示意,以晋升推理性能。最初,AI编译器会基于优化后的计算图进行面向特定硬件平台的codegen,生成可执行的代码,这过程中会引入诸如stitch、shape constraint等优化策略。AI编译器有很好鲁棒性、适应性、易用性,并且可能播种显著优化收益。 本文中,阿里云机器学习平台PAI团队联结英特尔数据中心软件团队、英特尔人工智能和剖析团队、达摩院NLP地址标准化团队,针对地址标准化服务的推理性能挑战,单干实现了高性能的推理优化计划。 2. 地址标准化介绍公安政务、电商物流、能源(水电燃)、运营商、新批发、金融、医疗等行业在业务发展的过程中往往波及大量地址数据,而这些数据往往没有造成规范构造标准,存在地址缺失、一地多名等问题。随着数字化的降级,城市地址不规范的问题更加凸显。 地址标准化[2](Address Purification)是阿里巴巴达摩院NLP团队依靠阿里云海量的地址语料库,以及超强的NLP算法实力所积淀出的高性能及高准确率的规范地址算法服务。地址标准化产品从标准地址数据、建设统一标准地址库的角度登程,提供高性能地址算法。 该地址算法服务能主动地标准化解决地址数据,可无效地解决一地多名,地址辨认,地址真伪分别等地址数据不标准、人工治理耗时耗力、地址库反复建设问题,为企业,政府机关以及开发者提供地址数据荡涤,地址标准化能力,使地址数据更好的为业务提供反对。地址标准化产品具备如下的几个特点: 准确率高:领有海量地址语料库以及超强的NLP算法技术,并继续优化迭代,地址算法准确率高超强性能:积攒了丰盛的我的项目建设教训,可能稳固承载海量数据服务全面:提供20多种地址服务,满足不同业务场景需要部署灵便:反对公共云、混合云、私有化部署。本次优化的模块属于地址标准化中的搜寻模块。地址搜寻是指用户输出地址文本相干信息,基于地址库和搜索引擎,对用户输出的地址文本进行搜寻和联想,并返回相干趣味点(Point of Interest,POI)信息。地址搜寻性能不仅可能晋升用户数据处理体验,同时也是多个地址上游服务的根底,如经纬度查问、门址标准化、地址归一等,因而在整套地址服务体系中起到了关键作用。 具体而言,本次优化的模型是基于多任务天文预训练语言模型底座产出的多任务向量召回模型和精排模型。 多任务天文预训练语言模型底座在掩码语言模型 (Masked Language Model, MLM) 工作的根底上联合了相干趣味点分类与地址元素辨认(省、市、区、POI 等),并通过元学习(Meta Learning)的形式,自适应地调整多个工作的采样概率,在语言模型中融入通用的地址常识。 多任务向量召回模型基于上述底座训练所得,蕴含双塔类似度、Geohash (地址编码) 预测、分词和 Term Weighting (词权重) 四个工作。 作为计算地址类似度匹配的外围模块,精排模型则是在上述底座的根底上,引入了海量点击数据和标注数据训练训练所得[3],并通过模型蒸馏技术,晋升了模型的效率[4]。最终用利用于召回模型召回的地址库文档从新排序。基于上述流程训练失去的4层单模型可能在CCKS2021中文NLP地址相关性工作[5]上取得较12层基线模型更好的成果(详见性能展现局部)。 3. 模型推理优化解决方案阿里云机器学习平台PAI团队推出的Blade产品反对以上提及的所有优化计划,提供了对立的用户接口,并领有多个软件后端,如高性能算子、Intel Custom Backend、BladeDISC等等。 ...

August 11, 2022 · 2 min · jiezi

关于深度学习:云渲染软件市场成功的重要贡献者

云渲染始终出现着微小的可能性,但直到最近才开始实现其真正的后劲。最后用于可视化简略的对象,如驰名的犹他州茶壶,云渲染很快发现它的目标在美国国防,美国宇航局,和其余机构和行业。云渲染的利用正在扩充,越来越多的行业发现自己急需可视化服务。房地产竞争强烈的房地产行业曾经发现云渲染软件的极好用处-帮助销售过程。在渲染软件的帮忙下,代理商能够扩大其受众,并提供他们领有的出租或发售的每个房产的简略虚构旅行。代理商能够开发一个真切虚构游览,使与会者可能看到每个角落和缝隙,并查看每个房间,而不是浪费时间和金钱安顿集体客户和带他们进行实物游览。云渲染也有助于分期家庭。空荡荡的房产不须要真正的家具、电器和装饰品来展现其真面目。3D 艺术家只须要几张空空间的照片,他们能够用任何必要的便当设施的真切的图像来舞台。修建云渲染可能只是修建可视化中最有用的。现在,开发任何住宅和修建的 云渲染已成为规范做法,在施工阶段开始之前,准确描述每一个细节。创立手绘草图或模型已成过来。通过 云渲染和先进的 3D 打印,每个型号都能够在录制工夫内实现。3D 设计是建筑师与其客户之间清晰沟通思想的完满解决方案。它们打消了任何潜在的语言障碍或误会,并让参加我的项目的每个人都理解状况。他们能够帮忙每个利益相关者在施工前将已实现的我的项目可视化。云渲染可能会转移对任何潜在问题、危险或设计问题的注意力,从而在为时已晚(或老本过高)之前轻松纠正错误。室内设计很少有其余行业像室内设计那样重大依赖 云渲染软件。两人明天齐头并进。与建筑师一样,室内设计师常常会遇到与客户沟通的问题,这些问题能够通过翻译设计师想法的真切渲染来轻松解决。通过 云渲染软件,设计师能够玩不同样式、色彩、纹理和照明,并向客户展现后果。云渲染软件提供杰出的精度和准确的测量,确保渲染中的每一件家具或装璜都像在现实生活中一样适宜。它能够展现不同的装璜如何影响房间的情绪,不同的窗帘或墙壁油漆如何扭转外部的整个外观,等等。医疗医疗保健行业是 云渲染软件市场胜利的重要贡献者。云渲染服务能够援救和进步寰球数百万人的生存品质。应用 3D 打印机,云渲染软件已被证实是贵重的医疗保健一次又一次。2020年初,意大利用于冠状病毒患者的3D打印呼吸机阀门,解救了数百人的生命。3D 打印机一直用于定制假肢,使佩戴者更舒服。云渲染软件通常用于开发定制医疗设施和设施,可用于简单的手术和医疗程序,用于修复受损器官的部件,等等。虚拟现实中的云渲染可用于培训医务人员,在不将患者置于危险之中的状况下练习操作技术,发明教育内容。医疗保健行业只会持续越来越依赖 云渲染服务。娱乐大多数人立刻将"3D"与计算机图形成像(或CGI)和动画分割起来,这是有充沛理由的。娱乐行业负责晚期采纳 3D 技术,而正是这个行业使 3D 出现宽泛提供给公众。《玩具总动员》、《阿凡达》和《史莱克》等电影激发了公众对云渲染软件及其性能的趣味。游戏行业重大依赖 云渲染和 CGI 使游戏更加身临其境。在电影行业,云渲染和 CGI 可用于从拍摄中去除不须要的元素(如中世纪电影中的飞机照片炸弹)到创立空想人、生物和中央的真切的图像(如《指环王》中的高卢)。制造业制作中的3D渲染具备丰盛的利用。它能够从零开始疾速构建新产品,预制,概念化,甚至反向工程。应用 3D 打印机,云渲染软件能够放慢制作过程,并最终优化寰球工厂的装配线。对渲染制作解决方案的需要一直减少,正在推动 云渲染软件市场,并将其推向新的高度。营销营销人员开始更加依赖 云渲染,因为它提供了新的机会和更好的广告策略。视觉效果在营销中始终至关重要,云渲染软件能够改良它们,使其对更宽泛的受众更具吸引力。在营销中,云渲染可用于清理产品、使色彩风行、显示产品的多功能性等。营销人员无需破费工夫和金钱在耗竭的照片拍摄上,而不会总是产生最佳成果,他们能够应用 云渲染解决方案,并创立所需的准确图像,无需付出太多致力即可推动参加。渲巨匠是一个比拟亲民的GPU算力平台,具备自建渲染农场,总 GPU 数量2000+,提供香港及中国边疆的渲染农场,反对渲染及深度学习应用场景,配套支流的软件,模板,集群性能,疾速晋升算力。渲巨匠GPU算力平台能够减速您的AI深度学习、高性能计算、渲染测绘、云游戏、元宇宙等利用。高性价比,高稳定性,疾速部署,弹性租用,7x24技术支持,满足您所需。减速您的AI深度。

August 10, 2022 · 1 min · jiezi

关于深度学习:听音识情绪-程序员手把手教你搭建神经网络更快get女朋友情绪求生欲max⛵

作者:韩信子@ShowMeAI深度学习实战系列:https://www.showmeai.tech/tutorials/42NLP实战系列: https://www.showmeai.tech/tutorials/45本文地址:https://www.showmeai.tech/article-detail/291 申明:版权所有,转载请分割平台与作者并注明出处 珍藏ShowMeAI查看更多精彩内容《礼记·乐记》中说:“凡音之起,由人心生也。人心之动,物使之然也。感于物而动,故形于声。声相应,故生变。” 这说的是人对于一种事物有感而生,必然体现在声音上。而晚清名臣曾国藩也提到,他在认人识人中有本人独到的办法,其中,特地喜爱通过声音来辨认人才。他认为,声音不仅能反映出一个人的贵贱和涵养,也能听出其心田情绪变动。联合这个办法他毕生提拔了大量人才。 既然声音对一个人的情绪性情体现这么显著,AI算法能不能依据声音辨认情绪和氛围呢?如果来电话的女朋友,一张口AI就晓得是什么情绪状态,钢铁直男小哥哥们可能求生欲技能能够plus max。 在本篇内容中,ShowMeAI就针对「语音情感辨认工作」,手把手带大家来构建一个解决和分类语音检测情绪的零碎。 背景概述要实现语音情绪辨认工作,咱们先来理解一点基础知识: 语音包含三类不同的特色: 词汇特色(应用的词汇)视觉特色(谈话者的表达方式)声学特色(音高、音调、抖动等声音属性) 咱们当然能够基于词汇(文本)或者视觉信息来做情绪分类,在本篇内容中咱们聚焦在声学特色进行分类,咱们构建一个深度学习的神经网络来实现这个工作。 当然应用深度学习网络进行情绪辨认也有其本身的挑战。大家都晓得,情绪是高度主观的,解释因人而异;而且很多时候,咱们很难将情绪归类为繁多类别,咱们在任何给定工夫都可能感触到一系列情绪。所以实在解决这个问题的时候,数据的采集和标注其实是一个有挑战的工作。 数据阐明在本篇中,ShowMeAI应用到的是公开数据集RAVDESS来训练该模型。RAVDESS 数据集蕴含1440个文件,笼罩两种不同类型的数据:演讲和歌曲。由24位业余演员(12位女性,12位男性)录制,语音情绪包含平静、高兴、悲伤、愤恨、恐怖、诧异和讨厌。每种情绪都蕴含2种不同的水平(失常,强烈)。 数据能够在 kaggle平台数据页下载,大家也能够在ShowMeAI的百度网盘中间接下载整顿好的版本。 实战数据集下载(百度网盘):公众号『ShowMeAI钻研核心』回复『实战』,或者点击 这里 获取本文 [[4] 搭建基于深度学习的语音情感识别系统](https://www.showmeai.tech/art...) 『RAVDESS Emotional speech audio 数据集』 ⭐ ShowMeAI官网GitHub:https://github.com/ShowMeAI-Hub 神经网络开发利用咱们应用神经网络来对音频数据进行了解和剖析预估,有不同的神经网络能够应用(多层感知器、 CNN 和 LSTM 等都能够解决音频时序数据),基于效率和成果思考,咱们上面会构建深度卷积神经网络来对音频文件中的情绪进行分类。 对于卷积神经网络的具体常识能够参考ShowMeAI下述教程: 深度学习教程 | 吴恩达专项课程 · 全套笔记解读中的文章 卷积神经网络解读深度学习与计算机视觉教程中的文章 卷积神经网络详解① 数据导入与简略剖析咱们首先导入数据,并做一点简略的可视化和剖析,这里的音频数据咱们会应用 LibROSA工具库来解决和绘图(波形和频谱图)。 针对语音相干的工作(语音辨认、声纹识别等),MFCC(Mel Frequency Cepstrum Coefficient,Mel频率倒谱系数)是十分无效的表征特色。Mel频率是基于人耳听觉个性提出来的,它与Hz频率成非线性对应关系。Mel频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算失去的Hz频谱特色,它宽泛地利用在语音各项任务中。应用 LibROSA 包能够轻松导入音频数据并提取 MFCC 格局信息。 # 在notebook中通过pip install装置librosa包!pip install librosa# 导入工具库import librosaimport librosa.displayimport numpy as npimport pandas as pdimport globimport os, sysimport matplotlib.pyplot as plt# 读取音频数据data, sampling_rate = librosa.load('Data/03-02-06-02-02-02-12.wav')# 绘制音频图像%matplotlib inlineplt.figure(figsize=(15, 5))librosa.display.waveshow(data, sr=sampling_rate)咱们失去了如下的音频波形图 ...

August 9, 2022 · 3 min · jiezi

关于深度学习:爆肝万字终于搞定这篇⛵神经网络搭建全全全流程学不会你来找我

作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 TensorFlow实战系列: https://www.showmeai.tech/tutorials/43 本文地址:https://www.showmeai.tech/article-detail/290 申明:版权所有,转载请分割平台与作者并注明出处 珍藏ShowMeAI查看更多精彩内容深度学习是机器学习的一类算法,它利用各种构造的神经网络解决问题(深度学习中的『深度』指的是咱们会通过深层次的神经网络构建弱小的学习器),模拟人类取得某些类型常识的形式,与传统机器学习模型相比,神经网络有更灵便的结构设计,更强的学习能力,能撑持更大量级的数据学习,因而宽泛援用于各种业务中。 神经网络是简化人脑的学习思考过程构建的构造,它是一个连贯单元(神经元)的连贯重叠构造,咱们设计这些单元,心愿它们能在肯定水平上模拟大脑中的突触,将信号传递给其余神经元,就像相互连接的脑细胞一样,能够在更多的工夫里学习和做出决定。如下是简略的神经网络拆解图。 深度学习与神经网络有很多不同的构造和利用,想要零碎学习这部分常识的同学,能够查看ShowMeAI制作的下列教程: 深度学习教程 | 吴恩达专项课程 · 全套笔记解读自然语言解决教程 | 斯坦福CS224n课程 · 课程带学与全套笔记解读深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读ShowMeAI 将在本文中,全面图解展现应用 Python 构建神经网络的过程,笼罩TensorFlow建模、可视化网络、模型预测后果归因与解释。 文中解说到的板块和对应的实现 Python 代码,能够很容易地迁徙利用于其余相似状况(复制、粘贴、运行),咱们对代码做了详尽的正文解说。 全文的总体内容构造包含: 环境设置与TensorFlow工具库简介神经网络合成、输出、输入、暗藏层、激活函数应用深度神经网络进行深度学习进行模型设计(基于TensorFlow)可视化神经网络模型训练和测试模型可解释性 环境设置目前支流的神经网络工具库有2个:TensorFlow https://www.tensorflow.org/(由 Google 开发)和 PyTorch https://pytorch.org/ (由 Facebook 开发) 。 他们有很多相似之处,性能也都很全面,但总体来说前者更适宜生产,而后者更适宜构建疾速原型。 这两个库都能够利用 GPU 的弱小矩阵运算性能去减速神经网络的训练和预估,这对于解决大型数据集(如文本语料库或图像库)十分有用,而其对应的开发社区也有着丰盛的资源,不论你解决何种问题,总能够找到相干的参考资料。 本篇内容应用到的是 TensorFlow 工具库。 对于本篇应用到的工具,ShowMeAI制作了快捷即查即用的工具速查表手册,大家能够在下述地位取得: TensorFlow速查手册Matplotlib速查手册咱们先在终端通过 pip install 命令装置 TensorFlow。 pip install tensorflow当初咱们能够在 Notebook 上导入 TensorFlow Keras 并开始编码: # 导入所需的工具库# tensorflow建模from tensorflow.keras import models, layers, utils, backend as K# 可视化import matplotlib.pyplot as plt# 特色重要度与模型归因剖析import shap 神经网络拆解神经网络的构造拆解的具体内容,举荐大家查看ShowMeAI的教程 深度学习教程 | 吴恩达专项课程 · 全套笔记解读下述文章: ...

August 9, 2022 · 6 min · jiezi

关于深度学习:股市预测销量预测病毒传播一个时间序列建模套路搞定全部⛵

作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 NLP 实战系列:https://www.showmeai.tech/tutorials/45 本文地址:https://www.showmeai.tech/article-detail/288 申明:版权所有,转载请分割平台与作者并注明出处 珍藏ShowMeAI查看更多精彩内容咱们在日常业务中遇到的很多问题,都能够归属到工夫序列领域内——股市涨跌变动、电商销量预测、传染病流传开掘等,其实都能够用『工夫序列』解决。 工夫序列建模工具库有很多,比拟出名的有 Uber 开源的 Orbit工具库、LinkedIn 开源的 Greykite 工具库,提供了局部解决办法。 最近 Salesforce 团队研发的 Merlion 工具库声名鹊起。Merlion 作为后起之秀,笼罩十分全面,提供了很多工夫序列的算法解决方案。本篇 ShowMeAI 就给大家介绍一下如何应用 Merlion 解决『工夫序列』问题。 Merlion 是一个用于工夫序列的智能Python 库,提供了一个端到端的机器学习框架,包含加载和转换数据,建设和训练模型,模型后果后处理,以及评估模型性能。Merlion 反对各种工夫序列学习工作,包含单变量和多变量工夫序列的预测、异样检测和变动点检测。这个库的目标是为工程师和钻研人员提供一站式解决方案,疾速开发特定的工夫序列需要模型,并在多个工夫序列数据集上进行基准测试。 环境配置Merlion最根本的装置只须要 运行命令 pip install salesforce-merlion。但这个根底版本并不蕴含所有模型,如果要装置全副模型,如 LightGBM 或 Facebook 的 Prophet,咱们切换成命令 pip install "salesforce-merlion[all]" 就能够。 工具库架构在深刻学习应用 Merlion 解决工夫序列问题之前,让咱们先看看它的架构。下图按工夫程序显示了它的不同模型以及它们如何协同工作。 在本文中,ShowMeAI 将聚焦于工夫序列,介绍除 后处理/post processing 模块之外的所有局部(因为这个局部仅用于异样检测,并不一定与工夫序列问题相干)。 数据加载Merlion 的数据结构是 TimeSeries,反对多变量和单变量工夫序列。其底层是对一系列 UnivariateTimeSeries 进行的封装。 为了将数据放入所需的数据结构中,咱们应用 TimeSeries 的函数 .from_pd()。这个函数承受带有 DatetimeIndex 的 DataFrame 作为输出,并且默认查看每个索引是否惟一以及是否设置了频率 freq(默认1h)。 ...

August 9, 2022 · 3 min · jiezi

关于深度学习:DALLE2是如何工作的以及部署自己的DALLE模型

DALL·E-2能够通过自然语言的形容创立事实的图像。 Openai公布了dall·e-2的Beta版。 在本文中,咱们将认真钻研DALL·E-2的原始钻研论文,并理解其确切的工作形式。因为并没有凋谢源代码, Boris Dayma等人依据论文创立了一个迷你然而开源的模型Dall·E Mini(命名为Craiyon),并且在craiyon.com上提供了一个DEMO。 在本文中,咱们还将应用Meadowrun(一个开源库,能够轻松地在云中运行Python代码)把DALL·E Mini生成的图像输出到其余图像处理模型(GLID-3-xl和SwinIR)中来进步生成图像的品质,通过这种形式来演示如何将开源的ML模型部署到咱们的云服务器上(AWS的EC2)。 DALL·E-2论文要点DALL·E-2基于以前提出的unCLIP模型,而unCLIP模型实质上是对GLIDE模型[4]的增强版,通过在文本到图像生成流程中增加基于预训练的CLIP模型的图像嵌入。 与GLIDE相比,unCLIP能够生成更多样化的图像,在照片真实感和题目相似性方面损失最小。unCLIP中的解码器也能够产生多种不同图像,并且能够同时进行文本到图像和图像到图像的生成。 unCLIP框架 为了对给定的文本生成图像,提出了两阶段的过程: 1)应用先验编码器将文本编码到图像嵌入空间 2)应用图像扩散解码器依据图像嵌入生成图像。 因为它是通过反转CLIP图像编码器来生成图像的,因而本文将该框架命名为unCLIP。 CLIP[3]能够独特学习文本和图像的示意模式,如上图(虚线上方)所示将一对(文本,图像)对雷同的嵌入空间进行编码。 训练过程 给定一个(图像x,文本y)对,首先获取图像和文本嵌入,称为z= clip(x),z= clip(y)。 先验:p(z| y,z)产生图像嵌入z条件y。 解码器:P(X |Z,Y),依据图像嵌入z(和可选的文本题目y)产生图像。 p(x | y)= p(x | y,z)= p(x |z,y)p(z| y,z) 训练细节 应用CLIP数据[3]和DALL-E[2]数据(共计650M图像)进行训练。 VIT-H/16图像编码器:输出为256×256图像,总计32层transformers,嵌入尺寸为1280。 GPT文本编码器:具备1024个嵌入和24层transformers解码器。 CLIP Model训练实现后,先验模型、解码器模型和上采样模型都只在DALL-E数据集(总共约250M幅)上训练。 解码器模型是一个3.5B的 Glide模型,蕴含两个模块:1.2B 24层transformers文本编码器和2.3B的ADM模型。 在训练期间,有50%的概率删除题目,有10%概率删除图像的嵌入。 为了生成高分辨率图像,作者训练了两个UPS采样器模型。 两者都应用ADMNET体系结构。 第一个将图像从64×64到256×256,第二个图像从256×256到1024×1024。 对GLIDE 模型的改良 与Glide相比,Unclip通过训练先验模型进一步生成了一些示例图像嵌入。 因而解码器(ADM模型)应用了所有输出,包含文本和“假”图像嵌入,生成最终图像。 下面咱们对DALLE有了一个大抵的介绍,上面咱们看看如何部署咱们本人的模型 部署dall·e mini(craiyon)本文的这部分将介绍不须要$ 1,700 GPU,就能够部署本人的dall·e mini模型,咱们将展现如何运行Saharmor/Dalle-Playground,并且将DALL·E Mini代码包装成一个HTTP API,而后通过一个简略的网页来调用该API生成图像。 Dalle-Playground提供了一个能够在Google Colab中运行的Jupyter Notebook。 然而如果你想长期应用,有时候就会遇到COLAB的动静应用限度。 这就须要你降级到Colab Pro($ 9.99/月)或COLAB PRO+($ 49.99/月),然而咱们能够通过间接应用AWS,花几分钱就能搞定这个事。 ...

August 9, 2022 · 3 min · jiezi

关于深度学习:未来装备探索数字孪生装备

源自:超星期刊    作者:陶飞 张辰源 张贺 程江峰 邹孝付 徐慧 王勇 谢兵兵  摘要 工程配备、制作配备、医疗配备等各类配备是放慢国家根底建设,晋升国家经济实力和保障医疗衰弱的重要根底。在新环境、新趋势、新背景下,如何充沛交融新一代信息技术,助力配备数智化降级,实现配备软硬零碎的自主可控,是实现配备高质量倒退,推动数字经济与实体经济交融倒退的要害。基于作者团队后期提出的数字孪生五维模型实践根底,探讨了数字孪生配备的概念和组成,剖析了数字孪生配备现实特色能力和关键技术,提出了数字孪生配备三阶段倒退门路,并在纺织车间物流配备和复材加工车间热压罐配备上对相干实践发展了实际。 1 将来配备倒退新趋势与新需要 纵观数千年的人类文明倒退历程,各式各样的工具、设施、配备帮忙人类大幅提高翻新和生产效率,与此同时,人类的翻新流动和新的利用需要又一直副作用于工具、设施、配备的翻新与改进,推动其性能一直降级更新。随着工具、设施、配备和相干技术的迭代降级,人类文明已先后逾越了石器时代、青铜时代、铁器时代、蒸汽时代和电气时代,进入了当下的信息时代。在信息时代中,由具备机械构造和电气个性的简单设施和工具以及相应软件系统组成的古代配备,深度参加制作工业、土木工程、医疗卫生、国防军工、农业生产、资源勘采、仓储物流、信息通信、交通运输、科学研究、空间摸索、生存娱乐等各大畛域的相干流动,对人类的生产和生存产生重要踊跃影响。然而,一直变动的国际竞争环境和国内经济发展趋势,以及不断涌现并逐步成熟的新一代信息技术,对配备的将来倒退提出了新的挑战和新的需要。 1.1新环境、新趋势、新挑战经济全球化迫使配备进一步高质量倒退。以后,经济全球化疏导着各种生产因素和资源在寰球范畴内优化组合和配置,在促成多方单干和寰球经济迅速倒退的同时,减速了各行业从增量倒退转变为存量竞争与多方博弈。为进步行业竞争力以面对新的挑战,要求将来配备进一步提高品质、减少效率、丰盛性能[1]。 疫情/后疫情时代凸显配备近程/自治运行重要性。2020年新冠疫情全面暴发,导致大量劳动力被迫在家隔离防护,各类配备/设施因短少操控人员而无奈失常运行,少量工厂和设施也因而被迫敞开,对寰球实体经济造成了重大不利影响。为进步经济倒退对于不确定性事件的韧性,要求将来配备具备近程运维管控、自治和自适应运行的能力。 碳达峰/碳中和要求配备绿色低碳环境友好。自20世纪90年代以来,疾速的工业化和城市化造成自然资源的重大透支和污染物的超标排放,引发温室效应、酸雨、雾霾等一系列环境问题,严重威胁人类的生存。为贯彻可继续倒退理念,并如期实现碳达峰、碳中和指标,要求将来配备在制作加工、运维管控、报废回收等环节升高能耗,缩小污染物排放。 冲破配备自主研制技术瓶颈是实现配备强国的必由之路。近年来,中外贸易摩擦一直,对我国依赖高端配备和外围软硬件引进的产业产生不利影响,不仅如此,国家重要产业相干配备的研制技术受制于人,外围软件依赖于人,还会产生微小的安全隐患。为冲破“被卡脖子”的窘境,要求将来配备要害零部件、外围软件以及研发、制作、组装、测试等相干技术全面自主化,并加强知识产权保护意识,以及进步配备产业链和供应链的自主可控能力。 数字经济亟需数字化配备大力支持,新一代信息技术赋能配备全面降级。自“十二五”国家战略性新兴产业倒退布局将信息技术确立为七大战略性新兴产业之一被重点推动以来,互联网、大数据、5G、人工智能、区块链等新一代信息技术倒退迅速,与传统产业交融日益深入,催生了一批有生机有韧性的新产业、新业态、新模式[2]。国家“十四五布局”再次强调放慢数字化倒退,鼎力推动数字产业化和产业数字化,推动数字经济和实体经济深度交融,打造具备国内竞争力的数字产业集群[3]。2021年10月,中央政治局第三十四次个体学习中又一次强调,倒退数字经济是把握新一轮科技反动和产业改革新机遇的策略抉择[4]。为进一步激发数字经济潜能,并促成实体经济衰弱可继续倒退,要求各行业现有配备应充沛交融新一代信息技术,创始配备实体、数据和新一代信息技术的闭环迭代与互补优化的良性循环模式[5]。 综上所述,我国亟需实现现有各类配备的数字化赋能、网络化互联、智能化降级,以及配备软硬零碎的自主可控,并贯彻绿色低碳可继续倒退理念,翻新配备全生命周期各阶段运作模式,铸造大国重器,建设配备强国。 1.2将来配备全生命周期新需要 配备全生命周期可划分为设计与验证、制作与测试、交付与培训、运维与管控、报废与回收五大阶段。为应答新环境、新趋势和新挑战,将来配备在全生命周期各阶段存在以下具体新需要。 2 数字孪生配备概念与外延 2.1从配备到数字孪生配备上述配备全生命周期各阶段的新需要,可归结为配备对数字化赋能和智能化降级的需要。数字孪生是学术界和业界公认的实现物理实体对象数字化和智能化降级的无效伎俩之一,近年来不少国内外学者开始发展基于数字孪生的配备设计、制作、运维等方面的钻研。作者团队于2018年提出了基于数字孪生的简单配备故障预测与衰弱治理办法[6]。 通过剖析无关钻研,发现基于数字孪生的配备与传统配备的本质区别在于其领有一个与物理世界齐全镜像的信息世界。在信息世界中,配备模型在配备实时数据的驱动下可能准确刻画配备的运行状态,实现配备状态监测(以虚映实)。与此同时,配备还可能在信息空间中进行仿真预测(以虚预实),并基于预测后果对现有决策计划进行优化(以虚优实),最终让配备执行最优的决策计划,实现“以虚控实”。由此可见,信息空间增量对于配备智能化降级具备重要意义,因而,本文基于作者团队后期提出的数字孪生五维模型实践根底[7],对数字孪生配备概念进行探讨。 数字孪生配备是一种由物理配备、数字配备、孪生数据、软件服务以及连贯交互五个局部[7]形成的将来智能配备;数字孪生配备通过交融利用新一代信息技术,促成配备全生命周期各阶段(设计与验证、制作与测试、交付与培训、运维与管控和报废与回收)数智化降级,使得配备具备自感知、自认知、自学习、自决策、自执行、自优化等智能特色和能力;基于配备数字孪生模型、孪生数据和软件服务等,并通过数模联动、虚实映射和一致性交互等机制,实现配备一体化多学科协同优化设计、智能制作与数字化交付、智能运维等,达到拓展配备性能、加强配备性能、晋升配备价值的目标。 2.2数字孪生配备组成 由上述定义可知,数字孪生配备由物理配备、数字配备、孪生数据、软件服务以及连贯交互五个局部组成[7],如图1所示。 2.2.1物理配备 配备物理实体物理配备是与物理空间的各因素间接产生作用关系的配备实体局部,由能源、传动、管制和执行等局部组成,负责执行控制指令,并提供理论性能,通过联合传感器零碎,物理配备还能够实现对环境的感知。 现有物理配备的相干技术已根本可能反对配备的数字控制、主动执行、网络互联等性能,随着新型材料和先进技术的不断涌现,将来物理配备钻研和倒退空间包含但不限于: 可采纳构造性能一体化复合材料,反对配备在极其环境下运行,整体优化配备的耐热性、耐腐蚀性、承载能力、分量等多方面指标;可联合人因工程,研制用户敌对、交互舒服便捷的配备,改善用户体验; 可利用3D打印和4D打印技术,进步配备设计自由度,反对同类配备的个性化定制生产;可利用超精细加工技术,缩小配备零部件制作公差,进一步提高配备硬件集成度,助力配备小型化和轻量化的实现; 可基于性能模块化思维和软硬一体化技术,研制软件定义配备,并实现配备硬件局部可重构,使配备集成更多的性能,以及适应更简单的工作和环境。 2.2.数字配备:配备数字孪生模型 因为物理配备受到工夫、空间、执行老本等多方面的束缚,仅凭借物理伎俩实现配备的可视化监测、历史状态回溯、运行过程预演、将来后果预测和智能运维等性能难度较大。因而,须要通过构建配备的数字孪生模型,在信息空间中赋予物理配备设计、制作及运维等过程看得见、运行机理看得清、行为能力看得全、运行法则看得透的新能力,如图2所示。  从实现和拓展配备各种性能和服务的角度来看,配备数字孪生模型由四类模型组成:  为实现物理配备设计、制作及运维管控等阶段的过程可视化、状态监测与回溯等性能,以及领导物理配备制作阶段的拆卸和回收阶段的装配等过程,须要构建配备的几何模型来形容物理配备及零部件的外观形态、尺寸大小、内部结构、空间地位与姿势、拆卸关系等;  为实现配备故障预测、衰弱治理、品质管控、运行优化等性能,须要构建配备的物理模型来形容物理配备及零部件的力学、电磁学、热力学等多学科属性,解析配备的运行机理;  为实现配备动静布局和自动化运行,并反对人机合作和多机合作,须要构建配备的行为模型来厘清配备的动静性能、响应机制和周期性静止模式,形象形容配备性能进化趋势运维环境的随机扰动;  为实现物理配备智能运维和决策优化,须要构建配备的规定模型来显性化示意配备大数据中的隐性信息,形式化示意并集成历史教训、专家常识、畛域规范和相干准则。  从配备数字孪生模型产生和表现形式的角度来看,上述四类模型呈现出随工夫增量积攒和模式多样性的特点。  几何模型次要在配备的设计阶段产生,属于绝对动态的模型,几何模型的表现形式包含但不限于三维模型、拆卸干预矩阵、曲面方程等;  物理模型次要在配备的设计与验证阶段产生,物理模型的表现形式次要是数学模型,例如形容磁场强度、热传导效应、流体力学等的实践计算公式,物理模型在具体利用时的出现形式比拟丰盛,比方有限元剖析时的网格模型,以及运动学剖析时的连杆模型;  行为模型次要在配备设计、测试和运维阶段产生,是对配备在外部环境烦扰、内部输出和外部运行机制独特作用下产生的响应和变动的形象形容,其表现形式包含无限状态机、图谱、神经网络、统计模型等;  规定模型产生于配备全生命周期各阶段,次要有两类表现形式:一类是通过开掘剖析配备全生命周期数据,揭示其中隐含规定和潜在法则的数据模型,其表现形式次要包含数学模型、神经网络、统计模型等,另一类是通过形式化表白人的教训和常识,使数字孪生配备可能了解并使用人的智慧的模型,其表现形式次要包含数学模型、图谱和结构化文本等。  数字配备是物理配备在信息空间中的镜像,由物理配备的几何模型、物理模型、行为模型和规定模型交融组装而成[7],负责刻画物理配备的时空几何关系,实时运行状态、行为和过程,形容物理配备的多维属性和运行机理,以及表征配备能力和相干法则规定,是实现配备数字化赋能和智能化降级的外围。  2.2.3 孪生数据:配备数字孪生数据 物理配备的设计、制作、测试和运维等过程离不开数据的深度参加,数字配备仿真运行并实现配备可视化监测、历史状态回溯、运行过程预演、故障诊断等性能同样须要数据驱动[8]。因而,须要将蕴含配备全生命周期、全流程、全业务无效信息的各类数据进行汇聚与交融,造成配备孪生数据。 孪生数据与数字配备交互联动,相辅相成,独特反对数字孪生配备的各种性能和服务,如图3所示。  配备的尺寸数据、构造数据、空间地位和姿势数据等联合配备的几何模型,可能无效反对配备的状态近程监测、过程参数可视化、历史状态回溯等性能; 配备的资料属性数据、静止数据、工艺数据等联合配备的物理模型,可能无效反对配备的故障预测、衰弱治理、品质管控等性能; 配备的能力数据、工作数据、运行环境数据等联合配备的行为模型,可能无效反对配备的动静布局和自治运行,以及肯定水平的人机合作和多机合作;  配备的运行特色数据、常识数据、教训数据等联合配备的规定模型,可能无效反对配备的自适应控制、调度优化、能量无效运行等智能决策服务。  孪生数据由物理配备的理论数据、数字配备的仿真数据,以及配备的全生命周期、全流程、全业务虚实交融数据组成,用于对物理配备及其运行过程和环境进行多层次、残缺、对立形容或解释,并可能联合配备数字孪生模型实现配备虚实共生[9],以及配备状态动静更新、历史状态追溯、常识开掘和智能决策等性能和服务。

August 9, 2022 · 1 min · jiezi

关于深度学习:面向推荐的汽车知识图谱构建

一、背景1、引言常识图谱的概念,最早由 Google 在2012 年提出, 旨在实现更智能的搜索引擎,并在2013年之后开始在学术界和工业级遍及。目前,随着人工智能技术的高速倒退,常识图谱已广泛应用于搜寻、举荐、广告、风控、智能调度、语音辨认、机器人等多个畛域。 2、倒退现状常识图谱作为人工智能的核心技术驱动力,能缓解深度学习依赖海量训练数据、大规模算力的问题,它可能宽泛适配不同的上游工作,且具备良好的解释性,因而,寰球大型互联网公司都在踊跃部署本企业的常识图谱。例如2013年Facebook公布Open Graph,利用于社交网络智能搜寻;2014年百度推出的常识图谱,次要利用于搜寻、助理、及toB商业场景;2015年阿里推出的商品常识图谱,在前端导购、平台治理和智能问答等业务上起到关键作用;腾讯于17年推出的腾讯云常识图谱,无效助力于金融搜寻、实体危险预测等场景;美团于2018年推出的美团大脑常识图谱,曾经在智能搜寻举荐、智能商户经营等多个业务中落地。 3、指标及收益目前畛域图谱次要集中在电商、医疗、金融等商业畛域,而对于汽车常识的语义网络及常识图谱构建短少系统性的领导办法。本文以汽车畛域常识为例,围绕车系、车型、经销商、厂商、品牌等实体及互相关系,提供一种从零搭建畛域图谱的思路,并对搭建常识图谱中的步骤及办法进行了具体阐明,以及介绍了基于本图谱的几个典型落地利用。其中,数据源采纳汽车之家网站,汽车之家是由导购、资讯、评测、口碑等多个板块组成的汽车服务类平台,在看、买、用等维度积攒了大量的汽车数据,通过构建常识图谱把以汽车为外围的内容进行组织和开掘,提供丰盛的常识信息,结构化精准刻画趣味,反对举荐用户冷启、召回、排序、展现等多个维度,给业务晋升带来成果。 二、图谱构建1、构建的挑战常识图谱是真实世界的语义示意,,其根本组成单位是【实体-关系-实体】,【实体-属性-属性值】的三元组(Triplet),实体之间通过关系互相联结,从而形成语义网络。图谱构建中会面临较大的挑战,但构建之后,可在数据分析、举荐计算、可解释性等多个场景展现出丰盛的利用价值。构建挑战: schema难定义:目前尚无对立成熟的本体构建流程,且特定畛域本体定义通常需专家参加;数据类型异构:通常状况下,一个常识图谱构建中面对的数据源不会是繁多类型,蕴含结构化、半结构化,及非结构化数据,面对构造各异的数据,常识转模及开掘的难度较高;依赖专业知识:畛域常识图谱通常依赖较强的专业知识,例如车型对应的培修办法,波及机械、电工、资料、力学等多个畛域常识,且此类关系对于准确度的要求较高,须要保障常识足够正确,因而也须要较好的专家和算法相结合的形式来进行高效的图谱构建;数据品质无保障:开掘或抽取信息须要常识交融或人工校验,能力作为常识助力上游利用。收益:常识图谱对立常识示意:通过整合多源异构数据,造成对立视图;语义信息丰盛:通过关系推理能够发现新关系边,取得更丰盛的语义信息;可解释性强:显式的推理门路比照深度学习后果具备更强的解释性;高质量且能一直积攒:依据业务场景设计正当的常识存储计划,实现常识更新和累积。 2、图谱架构设计技术架构次要分为构建层、存储层及应用层三大层,架构图如下: 构建层:包含schema定义,结构化数据转模,非结构化数据挖掘,以及常识交融;存储层:包含常识的存储和索引,常识更新,元数据管理,以及反对根本的常识查问;服务层:包含智能推理、结构化查问等业务相干的上游应用层。 3、具体构建步骤及流程根据架构图,具体构建流程可分为四步:本体设计、常识获取、常识入库,以及应用服务设计及应用。3.1 本体构建本体(Ontology)是公认的概念汇合,本体的构建是指根据本体的定义,构建出常识图谱的本体构造和常识框架。基于本体构建图谱的起因次要有以下几点: 明确专业术语、关系及其畛域公理,当一条数据必须满足Schema事后定义好的实体对象和类型后,才容许被更新到常识图谱中。将畛域常识与操作性常识拆散,通过Schema能够宏观理解图谱架构及相干定义,无须再从三元组中演绎整顿。实现肯定水平的畛域常识复用。在构建本体之前,能够先调研是否有相干本体曾经被构建进去了,这样能够基于已有本体进行改良和扩大,达到事倍功半的成果。基于本体的定义,能够防止图谱与利用脱节,或者批改图谱schema比从新构建老本还要高的状况。例如将“宝马x3”、“2022款宝马x3”都作为汽车类实体来贮存,在利用时都可能造成实例关系凌乱、可用性差的问题,这种状况能够在设本体计阶段,通过将“汽车类实体”进行“车系”、“车型”子类细分的办法来防止。依照常识的覆盖面来看,常识图谱能够划分为通用常识图谱和畛域常识图谱,目前通用常识图谱已有较多案例,例如Google的Knowledge Graph、微软的Satori和Probase等,畛域图谱则为金融、电商等具体行业图谱。通用图谱更重视广度,强调交融更多的实体数量,但对精确度的要求不高,很难借助本体库对公理、规定及约束条件进行推理和应用;而畛域图谱的常识覆盖范围较小,但常识深度更深,往往是在某一业余畛域上的构建。思考对准确率的要求,畛域本体构建多偏向于手工构建的形式,例如代表性的七步法、IDEF5办法等[1],该类办法的核心思想是,基于已有结构化数据,进行本体剖析,将合乎利用目标和范畴的本体进行演绎及构建,再对本体进行优化和验证,从而获取初版本体定义。若想获取更大领域的畛域本体,则能够从非结构化语料中补充,思考手工构建过程较大,本文以汽车畛域为例,提供一种半自动本体构建的形式,具体步骤如下:首先收集大量汽车非结构化语料(例如车系征询、新车导购文章等),作为初始个体概念集,利用统计办法或无监督模型(TF-IDF、BERT等)获取字特色和词特色;其次利用BIRCH聚类算法对概念间档次划分,初步构建起概念间层级关系,并对聚类后果进行人工概念校验和演绎,获取本体的等价、上下位概念;最初应用卷积神经网络联合近程监督的办法,抽取本体属性的实体关系,并辅以人工辨认本体中的类及属性的概念,构建起汽车畛域本体。上述办法可无效利用BERT等深度学习的技术,更好地捕获语料间的外部关系,应用聚类分档次对本体各模块进行构建,辅以人工干预,可能疾速、精确的实现初步本体构建。下图为半自动化本体构建示意图:利用Protégé本体构建工具[2],能够进行本体概念类、关系、属性和实例的构建,下图为本体构建可视化示例图:本文将汽车畛域的顶层本体概念划分为三类,实体、事件及标签体系:1)实体类代表特定意义的概念类实体,包含词汇实体和汽车类实体,其中汽车类实体又包含组织机构和汽车概念等子实体类型;2)标签体系代表各个维度的标签体系,包含内容分类、概念标签、趣味标签等以物料维度刻画的标签;3)事件类代表一个或多个角色的客观事实,不同类型事件间具备演变关系。Protégé能够导出不同类型的Schema配置文件,其中owl.xml构造配置文件如下图所示。该配置文件可间接在MYSQL、JanusGraph中加载应用,实现自动化的创立Schema。 3.2 常识获取常识图谱的数据起源通常包含三类数据结构,别离为结构化数据、半结构化数据、非结构化数据。 面向不同类型的数据源,常识抽取波及的关键技术和须要解决的技术难点有所不同。 3.2.1 结构化常识转模结构化数据是图谱最间接的常识起源,根本通过初步转换就能够应用,相较其余类型数据老本最低,所以个别图谱数据优先思考结构化数据。结构化数据可能波及多个数据库起源,通常须要应用ETL办法转模,ETL即Extract(抽取)、Transform(转换)、Load(装载),抽取是将数据从各种原始的业务零碎中读取进去,这是所有工作的前提;转换是依照事后设计好的规定将抽取的数据进行转换,使原本异构的数据格式能够对立起来;装载是将转换完的数据按计划增量或全副导入到数据仓库中。通过上述ETL流程可将不同源数据落到两头表,从而不便后续的常识入库。下图为车系实体属性、关系示意例图:车系与品牌关系表: 3.2.2 非结构化常识抽取-三元组抽取除了结构化数据,非结构化数据中也存在着海量的常识(三元组)信息。一般来说企业的非结构化数据量要远大于结构化数据,开掘非结构化常识可能极大拓展和丰盛常识图谱。三元组抽取算法的挑战问题1:单个畛域内,⽂档内容和格局多样,须要⼤量的标注数据,老本⾼问题2:畛域之间迁徙的成果不够好,跨畛域的可规模化拓展的代价⼤模型根本都是针对特定⾏业特定场景,换⼀个场景,成果会呈现显著降落。解决思路,Pre-train + Finetune的范式,预训练:重量级底座让模型“⻅多识⼴”充沛利⽤⼤规模多⾏业的⽆标⽂档,训练⼀个统⼀的预训练底座,加强模型对各类⽂档的示意和了解能⼒。微调:轻量级⽂档结构化算法。在预训练根底上,构建轻量级的⾯向⽂档结构化的算法,升高标注老本。针对⽂档的预训练⽅法现有对于⽂档的预训练模型,如果文本较短的类型,Bert能够齐全编码整篇⽂档;⽽咱们理论的⽂档通常⽐较⻓,须要抽取的属性值有很多是超过1024个字的,Bert进⾏编码会造成属性值截断。针对长文本预训练方法长处和有余Sparse Attention的⽅法通过优化Self-Attention,将O(n2)的计算优化⾄O(n),⼤⼤提⾼了输⼊⽂本⻓度。尽管一般模型的⽂本⻓度从512晋升到4096,然而仍旧不能齐全解决截断⽂本的碎⽚化问题。百度提出了ERNIE-DOC[3]应用了Recurrence Transformer办法,实践上能够建模⽆限⻓的⽂本。因为建模要输⼊所有的⽂本信息,耗时⾮常⾼。上述两种基于⻓⽂本的预训练⽅法,都没有思考⽂档个性,如空间(Spartial)、视觉(Visual)等信息。并且基于⽂本设计的PretrainTask,整体是针对纯⽂本进⾏的设计,⽽没有针对⽂档的逻辑结构设计。针对上述有余这里介绍一种⻓⽂档预训练模型DocBert[4],DocBert模型设计:使⽤⼤规模(百万级)⽆标注⽂档数据进⾏预训练,基于⽂档的⽂本语义(Text)、版⾯信息(Layout)、视觉特色(Visual)构建⾃监督学习工作,使模型更好地了解⽂档语义和构造信息。1.Layout-Aware MLM:在Mask语⾔模型中思考⽂本的地位、字体⼤⼩信息,实现⽂档布局感知的语义了解。2.Text-Image Alignment:交融⽂档视觉特色,重建图像中被Mask的⽂字,帮忙模型学习⽂本、版⾯、图像不同模态间的对⻬关系。3.Title Permutation:以⾃监督的⽅式构建题目重建工作,加强模型对⽂档逻辑构造的了解能⼒。4.Sparse Transformer Layers:⽤Sparse Attention的⽅法,加强模型对⻓⽂档的解决能⼒。 3.2.3 开掘概念,趣味词标签,关联到车系、实体除了结构化和非结构化文本中获取三元组,汽车之家还开掘物料所蕴含的分类、概念标签和趣味关键词标签,并建设物料和车实体之间的关联,为汽车常识图谱带来新的常识。上面从分类、概念标签、趣味词标签来介绍汽车之家所做的内容了解局部工作以及思考。分类体系作为内容刻画根底,对物料进行粗粒度的划分。建设的对立的内容体系更多的是基于人工定义的形式,通过AI模型进行划分。在分类办法上咱们咱们采纳了被动学习,对于比拟难分的数据进行标注,同时采纳数据加强,反抗训练,以及关键词交融形式进步分类的成果。概念标签粒度介于分类和趣味词标签之间,比分类粒度更细,同时比趣味词对于趣味点刻画更加残缺,咱们建设了车视线、人视线、内容视线三个维度,丰盛了标签维度,细化了标签粒度。丰盛且具体的物料标签,更加不便搜寻举荐基于标签的模型优化,且可用于标签外展起到吸引用户及二次引流等作用。概念标签的开掘,联合在query等重要数据上采纳机器开掘形式,并对概括性进行剖析,通过人工review,拿到概念标签汇合,采纳多标签模型分类。趣味词标签是最细粒度的标签,映射为用户趣味,依据不同用户趣味偏好进能够更好的进行行个性化举荐。关键词的开掘采纳多种趣味词开掘相结合的形式,包含Keybert提取要害子串,并联合TextRank、positionRank、singlerank、TopicRank、MultipartiteRank等+句法分析多种办法,产生趣味词候选。开掘进去的词,类似度比拟高,须要对同义词进行辨认,须要晋升人工的效率,因而咱们也通过聚类进行自动化语义类似辨认。用于聚类的特色有word2vec,bert embding等其余人工特色。而后应用聚类办法,最初通过人工改正咱们离线产生了一批高质量的关键词。对于不同粒度的标签还是在物料层面的,咱们须要把标签和车建设起关联,首先咱们别离计算出题目\文章的所属标签,而后辨认出题目\文章内的实体,失去若干标签-实体伪标签,最初依据大量的语料,共现概率高的标签就会标记为该实体的标签。通过以上三个工作,咱们在取得了丰盛且海量的标签。对车系、实体关联上这些标签,会极大丰富咱们的汽车图谱,建设了媒体和用户的关注车标签。 3.2.4人效晋升:随同着更大规模的训练样本,如何取得更好的模型品质,如何解决标注老本高,标注周期长成为亟待解决的问题。首先咱们能够应用半监督学习,利用海量未标注数据进行预训练。而后采纳被动学习形式,最大化标注数据的价值,迭代抉择高信息量样本进行标注。最初能够利用近程监督,施展已有常识的价值,察觉工作之间的相关性。例如在有了图谱和题目后,能够用近程监督的办法基于图谱结构NER训练数据。 3.3 常识入库常识图谱中的常识是通过RDF构造来进行示意的,其根本单元是事实。每个事实是一个三元组(S, P, O),在理论零碎中,依照存储形式的不同,常识图谱的存储能够分为基于RDF表构造的存储和基于属性图构造的存储。图库更多是采纳属性图构造的存储,常见的存储系统有Neo4j、JanusGraph、OritentDB、InfoGrid等。图数据库抉择通过 JanusGraph 与 Neo4J、ArangoDB、OrientDB 这几种支流图数据库的比照,咱们最终抉择JanusGraph 作为我的项目的图数据库,之所以抉择 JanusGraph,次要有以下起因: 基于 Apache 2 许可协定开放源码,开放性好。反对应用 Hadoop 框架进行全局图剖析和批量图解决。反对很大的并发事务处理和图操作解决。通过增加机器横向扩大 JanusGraph 的事务 解决能力,能够在毫秒级别相应大图的简单查问。原生反对 Apache TinkerPop 形容的以后风行的属性图数据模型。原生反对图遍历语言 Gremlin。下图是支流图数据库比照Janusgraph介绍JanusGraph[5]是一个图形数据库引擎。其自身专一于紧凑图序列化、丰盛图数据建模、高效的查问执行。图库schema 形成能够用上面一个公式来示意:janusgraph schema = vertex label + edge label + property keys这里值得注意的是property key通常用于graph index。为了更好的图查问性能janusgraph建设了索引,索引分为Graph Index,Vertex-centric Indexes。Graph Index蕴含组合索引(Composite Index)和混合索引(Mixed Index).组合索引仅限相等查找。(组合索引不须要配置内部索引后端,通过主存储后端反对(当然也能够配置hbase,Cassandra,Berkeley))举例:mgmt.buildIndex('byNameAndAgeComposite', Vertex.class).addKey(name).addKey(age).buildCompositeIndex() #构建一个组合索引“name-age”g.V().has('age', 30).has('name', '小明')#查找 名字为小明年龄30的节点混合索引须要ES作为后端索引以反对除相等以外的多条件查问(也反对相等查问,但相等查问,组合索引更快)。依据是否须要分词分为full-text search,和string searchJanusGraph数据存储模型理解Janusgraph存储数据的形式,有助于咱们更好的利用该图库。JanusGraph 以邻接列表格局存储图形,这意味着图形存储为顶点及其邻接列表的汇合。 顶点的邻接列表蕴含顶点的所有入射边(和属性)。JanusGraph 将每个邻接列表作为一行存储在底层存储后端中。 (64 位)顶点 ID(JanusGraph 惟一调配给每个顶点)是指向蕴含顶点邻接列表的行的键。 每个边和属性都存储为行中的一个独自的单元格,容许无效的插入和删除。 因而,特定存储后端中每行容许的最大单元数也是 JanusGraph 能够针对该后端反对的顶点的最大度数。如果存储后端反对 key-order,则邻接表将按顶点 id 排序,JanusGraph 能够调配顶点 id,以便对图进行无效分区。 调配 id 使得常常独特拜访的顶点具备相对差别小的 id。 ...

August 8, 2022 · 2 min · jiezi

关于深度学习:云渲染平台是互联网和云计算的发展产物

渲染平台是互联网和云计算倒退的产物,云渲染的呈现就是解决渲染速率问题,进步效果图渲染速度,让美妙的创意能在短时间内出现进去。云渲染是设计师通过网络把素材上传到某个渲染农场,近程的应用渲染农场进行计算。并且服务器会依据上传者的抉择,把文件调配到多个服务器上同时进行渲染。渲染农场又叫“分布式并行集群计算零碎”,能够了解为,渲染农场是由成千上万台服务器组成的超级计算机。 几年前,云渲染在人们心中还是一个十分超前的概念,大家统一认为,云渲染能够把CG制作的工作放到云服务器下来,这样能够大大提高效率。殊不知,但以前的云渲染模式就相当于渲染农场。只是提供算力,把渲染的步骤放到云上,缩小渲染的工夫,传输和下载都是非常麻烦的事件,并且上传后也会呈现许多未知的渲染问题。这几年,云渲染通过几年的倒退性能是越来越欠缺,各方面的优化也越来越好,像公司应用的公有云,更加平安。效果图、动画影视渲染所须要用到的云渲染农场也根本实现了主动匹配本地网络环境,可能做到软件、插件上与本地的齐全对立。渲染稳定性有的保障,让更多的CG制作公司可能更加释怀地应用云渲染,算力资源随时能够增减调配,对我的项目渲染速度调控也更加灵便;云服务商有专人进行对接,售后零碎也更加欠缺;云服务厂商提供的存储传输接口也大大晋升了上传下载的速度和稳固。在理解云渲染怎么免费前,咱们先来看看什么是云渲染。云渲染是云计算行业的一个小分支,次要是服务于视觉行业,例如影视动画、视效、修建可视化、游戏类工作室。你能够设想成付费租用了一台云电脑,将本地的3D文件上传到这台云端虚构电脑上让它帮你进行“渲染”合成图像这个步骤。云渲染的模式与惯例的云计算相似,行将3D程序放在近程的服务器中渲染,用户终端通过Web软件或者间接在本地的3D程序中点击一个“云渲染”按钮并借助高速互联网接入拜访资源,指令从用户终端中收回,服务器依据指令执行对应的渲染工作,而渲染后果画面则被传送回用户终端中加以显示。市面上有很多GPU租赁平台,褒贬不一,价格不一,那么多云平台,咱们应该怎么抉择?抉择一款好的租赁平台,有很多因素:1、价格 2、服务 3、配置在这里,举荐大家应用渲巨匠平台:渲巨匠是一个比拟亲民的GPU算力平台,具备自建渲染农场,总 GPU 数量2000+,提供香港及中国边疆的渲染农场,反对渲染及深度学习应用场景,配套支流的软件,模板,集群性能,疾速晋升算力。渲巨匠GPU算例平台能够减速您的AI深度学习、高性能计算、渲染测绘、云游戏、元宇宙等利用。高性价比,高稳定性,疾速部署,弹性租用,7x24技术支持,满足您所需。减速您的AI深度。

August 5, 2022 · 1 min · jiezi

关于深度学习:直播回放含-PPT-下载基于-Flink-DeepRec-构建-Online-Deep-Learning

关注阿里灵杰公众号,继续获取独家技术材料!微信后盾私信回复“0723”,即可取得阿里云“基于 Flink & DeepRec 构建 Online Deep Learning”专场 PPT。 流动背景后疫情时代的新社会模式及经济状态必将催生出新的商业模式,在线业务及相干利用场景的流量出现井喷式倒退,惯例的离线零碎及离线机器学习平台已无奈满足业务倒退要求。 在线机器学习与离线相比,在模型更新的时效性、模型的迭代周期、业务试验成果等方面有更好的体现。所以将机器学习从离线迁徙到在线曾经成为晋升业务指标的一个无效的伎俩。 以下是基于 Flink & DeepRec 构建 Online Deep Learning 的相干分享,欢送感兴趣的小伙伴关注阿里灵杰,获取专场 PPT。 议题介绍 议题:Flink ML:基于 DataStream 的迭代引擎及机器学习算法库 视频: 点击观看直播回放 讲师:高    赟  阿里云 技术专家赵伟波  阿里云 算法专家 演讲提纲:1.基于 DataStream 的迭代引擎    为什么要开发迭代引擎   迭代引擎原理介绍   迭代引擎应用 API 介绍   将来的倒退布局 2.Flink ML 机器学习算法库     机器学习算法库介绍     算法库性能及性能介绍     将来的倒退布局议题:Flink ML:实时机器学习场景解决方案的设计、建设与布局 视频:点击观看直播回放 讲师:周云峰  阿里云 开发工程师黄兴勃  阿里云 高级开发工程师 演讲提纲:1.什么是 Flink ML,为什么要建设 Flink ML 2.应用 Flink ML 搭建机器学习场景解决方案    Flink ML 的 API 设计   Flink ML 训练与部署模型进行推理流解决的流程   应用 Pipeline/Graph API 构建端到端解决方案3.Flink ML Python 介绍    ...

August 4, 2022 · 1 min · jiezi

关于深度学习:在表格数据集上训练变分自编码器-VAE示例

变分自编码器 (VAE) 是在图像数据利用中被提出,但VAE不仅能够利用在图像中。在这篇文章中,咱们将简略介绍什么是VAE,以及解释“为什么”变分自编码器是能够利用在数值类型的数据上,最初应用Numerai数据集展现“如何”训练它。 Numerai数据集数据集蕴含全球股市数十年的历史数据,在Numerai的锦标赛中,应用这个数据集来进行股票的投资收益预测和加密币NMR的收益预测。 为什么抉择VAE?一般来说 VAE 能够进行异样检测、去噪和生成合成数据。 异样检测 异样检测能够对于辨认偏离大多数数据和不合乎明确定义的失常行为概念的样本。在 Numerai 数据集中这些异样可能是存在财务异样期间,检测到这些期间会为咱们的预测提供额定的信息。 去噪 去噪是从信号中去除噪声的过程。咱们能够利用 VAE 对大多数偏离的特色进行降噪。去噪转换噪声特色,个别状况下咱们会将异样检测出的样本标记为噪声样本。 生成合成数据 应用 VAE,咱们能够从正态分布中采样并将其传递给解码器以取得新的样本。 为什么抉择变分自编码器呢? 什么是VAE?自编码器由两个次要局部组成: 1)将输出映射为潜在空间的编码器 2)应用潜在空间重构输出的解码器 潜在空间在原论文中也被称为示意变量或潜在变量。那么为什么称为变分呢?将潜在示意的散布强制转换到一个已知的散布(如高斯分布),因为典型的自编码器不能管制潜在空间的散布而(VAE)提供了一种概率的形式来形容潜在空间中的察看。因而咱们构建的编码器不是输入单个值来形容每个潜在空间的属性,而是用编码器来形容每个潜在属性的概率分布。在本文中咱们应用了最原始的VAE,咱们称之为vanilla VAE(以下称为原始VAE) VAE架构编码器由一个或多个全连贯的层组成,其中最初一层输入正态分布的均值和方差。均值和方差值用于从相应的正态分布中采样,采样将作为输出到解码器。解码器由也是由一个或多个齐全连贯的层组成,并输入编码器输出的重建版本。下图展现了VAE的架构: 与一般主动编码器不同,VAE编码器模型将输入埋伏空间中每个维度的散布特征参数,而不是潜在空间的值。编码器将输入两个向量,反映潜在状态散布的均值和方差,因为咱们假如先验具备正态分布。而后,解码器模型将通过从这些定义的散布中采样来构建一个潜在向量,之后它将为解码器的输出重建原始输出。 一般 VAE 的损失函数中有两个项:1)重建误差和 2)KL 散度: 一般 VAE 中应用的重建误差是均方误差 (MSE)。MSE 损失试图使重构的信号与输出信号相似性。KL 散度损失试图使代码的散布靠近正态分布。q(z|x) 是给定输出信号的代码散布,p(z) 是正态分布。PyTorch 代码如下所示: recons_loss = F.mse_loss(recons, input)kld_loss = torch.mean(-0.5 * torch.sum(1 + log_var - mu ** 2 - log_var.exp(), dim = 1), dim = 0)原始VAE 配置如下所示: model_params: name: 'NumeraiHistogram of KL divergence (left) and mean-squared reconstruction lossVAE' in_channels: 1191 latent_dim: 32data_params: data_path: "/train.parquet" train_batch_size: 4096 val_batch_size: 4096 num_workers: 8exp_params: LR: 0.005 weight_decay: 0.0 scheduler_gamma: 0.95 kld_weight: 0.00025 manual_seed: 1265trainer_params: gpus: [1] max_epochs: 300logging_params: save_dir: "logs/" name: "NumeraiVAE"配置中的要害参数有: ...

August 4, 2022 · 2 min · jiezi

关于深度学习:Transferring-Rich-Feature-Hierarchies-for-Robust-Visual-Tracking

原文链接 论文地址:https://arxiv.org/pdf/1501.04... 摘要妨碍CNN利用于视觉跟踪的次要阻碍是不足适当标记的训练数据。尽管开释CNN功率的现有应用程序通常须要大量数百万的训练数据,然而视觉跟踪应用程序通常在每个视频的第一帧中仅具备一个标记的示例。咱们通过离线预培训CNN,而后将学到的丰盛特色层次结构转移到在线跟踪来解决此钻研问题。 CNN还在在线跟踪期间进行微调,以适应第一视频帧中指定的跟踪目标的外观。为了适应对象跟踪的特色,咱们首先事后训练CNN以辨认什么是对象,而后生成概率图而不是生成简略的类标签。应用两个具备挑战性的开放式基准进行性能评估。 1 简介在最近的钻研趣味激增中,一些其余计算机视觉工作(例如视觉跟踪)依然绝对未开发。咱们认为,一个次要起因是不足足够的标记训练数据,这些数据通常在实现其余利用的突破性体现方面起着十分重要的作用,因为CNN训练通常以齐全监督的形式进行。 然而,在视觉跟踪的状况下,标记的训练数据通常十分无限,通常仅有一个标记的示例作为在每个视频的第一帧中指定的跟踪对象。这使得大规模CNN办法的间接利用变得不可行。在本文中,咱们提出了一种能够解决这一挑战的办法,因而能够将CNN框架引入视觉跟踪。应用这种办法来实现跟踪器,咱们实现了十分有前途的性能,其性能优于最先进的基线跟踪器超过10%(对于一些定性跟踪后果,参见图1)。 尽管视觉跟踪能够依据不同的利用在不同的设置中制订,但本文的重点是一次通过无模型的单指标跟踪设置。具体来说,它假设给出了第一帧中单个对象的边界框,但没有其余外观模型可用。给定这个独自的(标记的)实例,指标是以在线形式跟踪对象的挪动。因而,该设置波及基于跟踪器的可能有噪声的输入使跟踪器适应对象的外观变动。制订这个问题的另一种办法是作为一个自学成才的繁多学习问题,其中单个例子来自前一帧。因为从单个示例学习视觉模型是一个不适定的问题,因而胜利的办法将须要应用一些辅助数据来学习通用对象特色的不变示意。尽管最近的一些工作也有这种精力,但因为一方面不足足够的训练数据而另一方面所用模型的代表能力无限,所报告的体现不如现有技术水平。通过学习更弱小的性能,CNN能够在这里发挥作用。为了在在线跟踪期间应用无限的培训数据使其可行,咱们离线事后培训CNN,而后将学习的通用性能转移到在线跟踪工作。 文献中报道的第一个深度学习跟踪器(DLT)基于SDAE网络。尽管这种办法十分有前途,但与其余最先进的跟踪器相比,本文中报告的办法的确切实现有两个限度,妨碍了DLT的跟踪性能。首先,DLT的预训练可能不太适宜跟踪利用。用于预训练的数据来自80M Tiny Images数据集,每个图像通过间接从全尺寸图像下采样取得。只管能够通过学习重建输出图像来学习一些通用图像特色,然而在典型的跟踪工作中跟踪的指标是单个对象而不是整个图像。对跟踪无效的特色应该可能将对象与非对象(即背景)辨别开,而不仅仅是重建整个图像。其次,在每个帧中,DLT首先基于先前帧的预测生成指标的候选者或提议,而后将跟踪视为分类问题。它疏忽了边界框的结构化性质,因为边界框或宰割后果对应于图像的区域,而不仅仅是分类或回归问题中的简略标签或实数。之前的一些工作表明,在模型中明确地利用结构化性质能够显着进步性能。此外,提案的数量通常在几百个数量级,因而很难利用更大的深度学习模型。 咱们提出了一种新鲜的结构化输入CNN,它传输用于在线跟踪的通用对象特色。咱们的论文的奉献总结如下: 1.为了加重在线跟踪过程中的适度拟合和漂移问题,咱们事后训练CNN以辨别对象和非对象,而不是简略地重建输出或对具备对象级正文的大规模数据集进行分类分类。 2.CNN 的输入是逐像素的映射,以批示输出图像中的每个像素属于对象的边界框的概率。像素输入的次要长处是其诱导的构造损失和计算可扩展性。 3.咱们在凋谢基准以及具备挑战性的非刚性物体跟踪数据集上评估咱们提出的办法,并取得十分显着的后果。特地是,对于凋谢基准,咱们将重叠率曲线的 AUC 度量从0.529改善到0.602。 2 相干工作DLT具体介绍 SDAE具体介绍 AUC具体介绍 3 咱们的追踪器在本节中,咱们将介绍咱们的结构化输入深度学习跟踪器( structured output deep learning tracker SO-DLT)。咱们首先介绍了SO-DLT中的CNN架构和CNN的离线预训练过程。而后,咱们将介绍在线跟踪流程的详细信息。 3.1 概观跟踪器的训练可分为两个阶段: 1.离线预训练阶段 2.在线微调和跟踪阶段。 在训练前阶段,咱们训练CNN学习用于辨别对象与非对象的通用对象特色,即,从示例中学习对象的概念。咱们不是在在线跟踪期间修复CNN的学习参数,而是对它们进行微调,以便CNN可能适应被跟踪的指标。为了实现稳健性,咱们在在线跟踪期间同时运行两个CNN,以解决模型更新可能导致的谬误。两个CNN协同工作以确定每个视频帧的跟踪后果。 3.2 对象性预训练结构化输入CNN的构造如图2所示。它由七个卷积层和三个齐全连贯的层组成。在这两局部之间,引入了多尺度池化以保留与地点相干的更多特色,因为输入须要它们进行本地化。网络的参数设置如图2所示。与用于分类或回归的传统CNN相比,咱们的模型存在一个重要的差别:CNN的输入是50×50概率图而不是单个数。每个输入像素对应于原始输出中的2×2区域,其值示意对应的输出区域属于对象的概率。在咱们的实现中,输入层是2500维全连贯层,而后将其从新整形为50×50概率图。因为概率图的相邻像素之间存在强相关性,因而咱们仅应用前一层中的512个暗藏单元来帮忙避免过拟合。 要训练如此大的CNN,必须应用大型数据集来避免适度拟合。因为咱们对对象级性能感兴趣,因而咱们应用ImageNet 2014检测数据集,其中蕴含训练集中的478,807个边界框。对于每个带正文的边界框,咱们在其四周增加随机填充和缩放。当正样本的重叠率(Overlap Rate, OLR)低于某个阈值时,咱们还随机抽样一些负样本(negative samples)。请留神,它不会像在典型的分类或检测工作中那样学会辨别不同的对象类,因为咱们只想学习在此阶段辨别对象与非对象。因而,咱们在50×50输入图的每个地位应用逐元素逻辑回归模型,并相应地定义损失函数。对于训练指标,边界框内的像素设置为1,而内部为0。对于负样本整个概率图指标是0。该设置相当于惩办预测和地面实况之间的不匹配像素的数量,从而引起更好地适应问题的结构化损失函数。在数学上,让pij示意(i,j)地位的预测,tij是二进制变量示意(i,j)地位的根本事实,咱们办法的损失函数定义为: $$\min _{p_{i j}} \sum_{i=1}^{50} \sum_{j=1}^{50}-\left(1-t_{i j}\right) \log \left(1-p_{i j}\right)-t_{i j} \log \left(p_{i j}\right) \tag{1}$$ 4.1中形容了培训的具体参数。 图3显示了在ImageNet 2014检测工作提供的放弃验证集上测试预训练的CNN时的一些后果。 在大多数状况下,CNN能够胜利地确定输出图像是否蕴含对象,如果是,则能够精确地定位感兴趣的对象。 请留神,因为咱们的训练数据的标签只是边界框,因而50×50概率图的输入也是正方形。 尽管有办法[6]利用边界框信息来提供弱监督并取得像素宰割,但咱们认为模型中的概率图输入足以用于跟踪。 3.3 在线跟踪如上所述预训练学习通用对象特色的CNN不能间接用于在线跟踪,因为ImageNet数据的数据偏差不同于在线跟踪期间察看到的数据偏差。此外,如果咱们不对CNN进行微调,它将检测到视频帧中呈现的所有对象,而不仅仅是被跟踪的对象。因而,必须应用在线跟踪期间收集的每个视频的第一帧中的正文来微调预训练的CNN,以确保CNN特定于指标。微调或在线模型调整是咱们跟踪器中不可或缺的一部分,而不是仅为了进一步提高跟踪性能而引入的可选性能。 咱们保护两个应用不同模型更新策略的CNN。在应用第一帧中的正文进行微调之后,咱们基于前一帧的预计从每个新帧中裁剪一些图像块。通过简略地向前穿过CNN,咱们能够取得每个图像块的概率图。而后通过搜寻适当的边界框来确定最终预计。如有必要,将更新两个CNN。咱们在图4中阐明了跟踪算法的流程。 3.3.1 边界框确定当新框架到来时,咱们的跟踪器的第一步是确定指标的最佳地位和比例。咱们首先指定可能蕴含指标的可能区域,并将区域送到CNN。接下来,咱们依据概率图确定边界框的最可能地位。 ...

August 4, 2022 · 1 min · jiezi

关于深度学习:云渲染的优势与劣势

云渲染是云计算行业的一个小分支,次要是服务于视觉行业,例如影视动画、视效、修建可视化、游戏类工作室。你能够设想成付费租用了一台云电脑,将本地的3D文件上传到这台云端虚构电脑上让它帮你进行“渲染”合成图像这个步骤。云渲染的模式与惯例的云计算相似,行将3D程序放在近程的服务器中渲染,用户终端通过Web软件或者间接在本地的3D程序中点击一个“云渲染”按钮并借助高速互联网接入拜访资源,指令从用户终端中收回,服务器依据指令执行对应的渲染工作,而渲染后果画面则被传送回用户终端中加以显示。那么,云渲染的劣势和劣势是什么?云渲染的劣势:渲染速度快云渲染的分布式渲染,能够将多台服务器联机起来进行渲染,渲染速度失去大大晋升,这一点是本地渲染比不了的。2. 批量渲染云渲染能够同时渲染多张效果图,多任务进行渲染,能够节约大量工夫,这也是本地机器无奈做到的。3. 不占用 CPU如果用本人的电脑渲染,CPU 就会跑满,渲染时就不能应用电脑。云渲染就不会占用 CPU,在渲图的同时也能够持续作图,晋升工作效率。4. 随时可用只须要登录渲染平台,全自动一键打包提交,能够的多线程上传下载,还能实时预览渲染画面,把握渲染进度。5. 节约老本云渲染的费用绝对较低,能够大大节约老本。本人专门买设施来渲染,不仅老本更高,工作效率也会大打折扣。云渲染的劣势:安全隐患市面上大大小小的渲染平台有很多,泥沙俱下,有些不靠谱的平台无奈提供平安保障,容易呈现数据泄露的问题。2. 渲染时无奈调整在渲染时,看到图有谬误的中央没方法马上调整,只能等图片渲染完结当前,再从新批改上传。3. 软件、插件的反对范畴无限每个人的应用习惯不同,云渲染平台很难做到反对所有软件插件,然而大部分根底的、支流的还是反对的。最初,跟大家安利一下渲巨匠:渲巨匠是一个比拟亲民的GPU算力平台,具备自建渲染农场,总 GPU 数量2000+,提供香港及中国边疆的渲染农场,反对渲染及深度学习应用场景,配套支流的软件,模板,集群性能,疾速晋升算力。渲巨匠GPU算例平台能够减速您的AI深度学习、高性能计算、渲染测绘、云游戏、元宇宙等利用。高性价比,高稳定性,疾速部署,弹性租用,7x24技术支持,满足您所需。减速您的AI深度。

August 3, 2022 · 1 min · jiezi

关于深度学习:细胞图像数据的主动学习

通过细胞图像的标签对模型性能的影响,为数据设置优先级和权重。 许多机器学习工作的次要阻碍之一是不足标记数据。而标记数据可能会消耗很长的工夫,并且很低廉,因而很多时候尝试应用机器学习办法来解决问题是不合理的。 为了解决这个问题,机器学习畛域呈现了一个叫做被动学习的畛域。被动学习是机器学习中的一种办法,它提供了一个框架,依据模型曾经看到的标记数据对未标记的数据样本进行优先排序。如果想 细胞成像的宰割和分类等技术是一个疾速倒退的畛域钻研。就像在其余机器学习畛域一样,数据的标注是十分低廉的,并且对于数据标注的品质要求也十分的高。针对这一问题,本篇文章介绍一种对红细胞和白细胞图像分类工作的被动学习端到端工作流程。 咱们的指标是将生物学和被动学习的联合,并帮忙其他人应用被动学习办法解决生物学畛域中相似的和更简单的工作。 本篇文次要由三个局部组成: 细胞图像预处理——在这里将介绍如何预处理未宰割的血细胞图像。应用CellProfiler提取细胞特色——展现如何从生物细胞照片图像中提取形态学特色,以用作机器学习模型的特色。应用被动学习——展现一个模仿应用被动学习和不应用被动学习的比照试验。细胞图像预处理咱们将应用在MIT许可的血细胞图像数据集(GitHub和Kaggle)。每张图片都依据红细胞(RBC)和白细胞(WBC)分类进行标记。对于这4种白细胞(嗜酸性粒细胞、淋巴细胞、单核细胞和中性粒细胞)还有附加的标签,但在本文的钻研中没有应用这些标签。 上面是一个来自数据集的全尺寸原始图像的例子: 创立样本DF 原始数据集蕴含一个export.py脚本,它将XML正文解析为一个CSV表,其中蕴含每个细胞的文件名、细胞类型标签和边界框。 原始脚本没有蕴含cell_id列,但咱们要对单个细胞进行分类,所以咱们略微批改了代码,增加了该列并增加了一列包含image_id和cell_id的filename列: import os, sys, randomimport xml.etree.ElementTree as ETfrom glob import globimport pandas as pdfrom shutil import copyfileannotations = glob('BCCD_Dataset/BCCD/Annotations/*.xml')df = []for file in annotations: #filename = file.split('/')[-1].split('.')[0] + '.jpg' #filename = str(cnt) + '.jpg' filename = file.split('\\')[-1] filename =filename.split('.')[0] + '.jpg' row = [] parsedXML = ET.parse(file) cell_id = 0 for node in parsedXML.getroot().iter('object'): blood_cells = node.find('name').text xmin = int(node.find('bndbox/xmin').text) xmax = int(node.find('bndbox/xmax').text) ymin = int(node.find('bndbox/ymin').text) ymax = int(node.find('bndbox/ymax').text) row = [filename, cell_id, blood_cells, xmin, xmax, ymin, ymax] df.append(row) cell_id += 1data = pd.DataFrame(df, columns=['filename', 'cell_id', 'cell_type', 'xmin', 'xmax', 'ymin', 'ymax'])data['image_id'] = data['filename'].apply(lambda x: int(x[-7:-4]))data[['filename', 'image_id', 'cell_id', 'cell_type', 'xmin', 'xmax', 'ymin', 'ymax']].to_csv('bccd.csv', index=False)裁剪 ...

August 3, 2022 · 4 min · jiezi

关于深度学习:最全自动驾驶数据集分享系列四|光流数据集

目前对于主动驾驶数据集你想晓得的,应该都在这里了,这是「整数智能」主动驾驶数据集八大系列分享之系列四: 「本期划重点」 HD1K是一个新的Stereo与光流联合的数据集,它裁减了涵盖的场景并进步了准确率KITTI Flow系列是第一个具备实在的非合成图像和精确的高空假相的数据集MPI-Sintel是第一个实现宽泛应用的合成数据集Crowd-Flow是专一于人群行为剖析的光流数据集 「八大系列概览」主动驾驶数据集分享是整数智能推出的一个全新分享系列,在这个系列中,咱们将介绍目前为止各大科研机构和企业推出的所有公开主动驾驶数据集。数据集次要分为八个系列: 系列一:指标检测数据集系列二:语义宰割数据集系列三:车道线检测数据集系列四:光流数据集系列五:全景数据集系列六:定位与地图数据集系列七:驾驶行为数据集系列八:仿真数据集上面共包含6个数据集: 01「 HD1K 」公布方:海德堡单干核心下载地址:http://hci-benchmark.iwr.uni-...论文地址:https://sci-hub.se/10.1109/cv...公布工夫:2016年简介:一个专门为城市主动驾驶而设计的Stereo和光流数据集,以补充现有的基准,与过后的相似数据集相比准确性更高特色 涵盖了以前没有的、具备挑战性的状况,如光线有余或下雨,并带有像素级的不确定性含有高分辨率(HR)、高帧率(HFR)和高动静范畴(HDR)的残缺测量误差散布的第一个辐射测量挑战的平面和流动高空实在数据集一个新的Stereo与光流联合的数据集,研究者还提取了一个初始基准子集,包含28504个Stereo对,其中包含Stereo对和光流的高空状况,以及动态区域的不确定性 02「KITTI Flow 2015」公布方:卡尔斯鲁厄理工学院下载地址:http://www.cvlibs.net/dataset...论文地址:https://sci-hub.se/10.1109/cv...公布工夫:2015年简介:一个新的模型和数据集,用于3D场景流量预计的新型模型和数据集,并将利用于自主驾驶特色 该数据集具备场景流的真实性,通过正文400个动静场景取得第一个事实的、大规模的场景流数据集,该数据集对所有的动态和动静物体都进行了高空实在正文,为场景流或光流办法的评估提供动静物体和地面实况 03「KITTI Flow 2012」公布方:卡尔斯鲁厄理工学院下载地址:http://www.cvlibs.net/dataset...论文地址:https://sci-hub.se/10.1109/cv...公布工夫:2012年简介:第一个具备实在的非合成图像和精确的高空假相的数据集特色 包含389个Stereo光流图像对,以及在芜杂场景中捕捉的超过20万个三维物体正文(多达15辆汽车和30个行人)KITTI Flow 2012三维视觉测距/SLAM数据集包含22个立体声序列,总长度为39.2公里为汽车、货车、卡车、行人、自行车和有轨电车等物体类别提供了精确的三维边界盒 04「Middlebury」公布方:明德学院下载地址:https://vision.middlebury.edu...论文地址:https://link.springer.com/con...公布工夫:2007年简介:Middlebury 是一个新的光流数据集汇合,其中蕴含地面实况。它们分为用于明德学院官网评估的测试集和训练集,只为后者提供真值特色 蕴含8个短期训练和8个测试序列,预计来自不同大型静止或动态对象的多种静止不连续性,预计的静止相当小,平均速度约为4,最大速度为22像素 05「MPI-Sintel」公布方:Perceiving Systems下载地址:http://sintel.is.tue.mpg.de/论文地址:https://sci-hub.se/10.1007/97...公布工夫:2012年简介:MPI Sintel数据集是用于训练和评估光流算法的最宽泛应用的数据集之一。该数据集蕴含了一系列额定的挑战,如远距离静止、光照变动、镜面反射、静止含糊和大气效应。它是第一个实现宽泛应用的合成数据集,因为它很好地代表了天然场景和静止特色 数据集蕴含流场、静止边界、不匹配区域和图像序列图像序列以不同的难度级别进行渲染,还提供高空实在深度、Stereo和动静机位训练集由1040个高空实在光流组成,测试集蕴含12个序列的564张图片,平均速度和最大速度别离为5和445 06「Crowd-Flow」公布方:柏林理工大学下载地址:https://github.com/tsenst/Cro...论文地址:http://elvera.nue.tu-berlin.d...公布工夫:2018年简介:Crowd-Flow数据集旨在提供一个光流基准,重点是人群行为剖析的序列特色 序列蕴含371到1451个独立静止的个体数据集由10个长度范畴的序列组成,在300至450帧之间,所有序列均以25hz 的帧速率和高清分辨率出现与此前光流数据集相比,该数据集除了进步了分辨率和帧的数量之外,还以间断序列而不是单帧对进行组织,容许评估工夫一致性,例如以轨迹的模式

August 2, 2022 · 1 min · jiezi

关于深度学习:使用内存映射加快PyTorch数据集的读取

本文将介绍如何应用内存映射文件放慢PyTorch数据集的加载速度 在应用Pytorch训练神经网络时,最常见的与速度相干的瓶颈是数据加载的模块。如果咱们将数据通过网络传输,除了预取和缓存之外,没有任何其余的简略优化形式。 然而如果数据本地存储,咱们能够通过将整个数据集组合成一个文件,而后映射到内存中来优化读取操作,这样咱们每次文件读取数据时就不须要拜访磁盘,而是从内存中间接读取能够放慢运行速度。 什么是内存映射文件内存映射文件(memory-mapped file)是将残缺或者局部文件加载到内存中,这样就能够通过内存地址相干的load或者store指令来操纵文件。为了反对这个性能,古代的操作系统会提供一个叫做mmap的零碎调用。这个零碎调用会接管一个虚拟内存地址(VA),长度(len),protection,一些标记位,一个关上文件的文件描述符,和偏移量(offset)。 因为虚拟内存代表的附加形象层,咱们能够映射比机器的物理内存容量大得多的文件。正在运行的过程所需的内存段(称为页)从内部存储中获取,并由虚拟内存管理器主动复制到主内存中。 应用内存映射文件能够进步I/O性能,因为通过零碎调用进行的一般读/写操作比在本地内存中进行更改要慢得多,对于操作系统来说,文件以一种“惰性”的形式加载,通常一次只加载一个页,因而即便对于较大的文件,理论RAM利用率也是最低的,然而应用内存映射文件能够改善这个流程。 什么是PyTorch数据集Pytorch提供了用于在训练模型时解决数据管道的两个次要模块:Dataset和DataLoader。 DataLoader次要用作Dataset的加载,它提供了许多可配置选项,如批处理、采样、预读取、变换等,并形象了许多办法。 Dataset是咱们进行数据集解决的理论局部,在这里咱们编写训练时读取数据的过程,包含将样本加载到内存和进行必要的转换。 对于Dataset,必须实现: __init_, __len__和 __getitem__三个办法 实现自定义数据集接下来,咱们将看到下面提到的三个办法的实现。 最重要的局部是在 __init__中,咱们将应用 numpy 库中的 np.memmap()函数来创立一个ndarray将内存缓冲区映射到本地的文件。 在数据集初始化时,将ndarray应用可迭代对象进行填充,代码如下: class MMAPDataset(Dataset): def __init__( self, input_iter: Iterable[np.ndarray], labels_iter: Iterable[np.ndarray], mmap_path: str = None, size: int = None, transform_fn: Callable[..., Any] = None, ) -> None: super().__init__() self.mmap_inputs: np.ndarray = None self.mmap_labels: np.ndarray = None self.transform_fn = transform_fn if mmap_path is None: mmap_path = os.path.abspath(os.getcwd()) self._mkdir(mmap_path) self.mmap_input_path = os.path.join(mmap_path, DEFAULT_INPUT_FILE_NAME) self.mmap_labels_path = os.path.join(mmap_path, DEFAULT_LABELS_FILE_NAME) self.length = size for idx, (input, label) in enumerate(zip(input_iter, labels_iter)): if self.mmap_inputs is None: self.mmap_inputs = self._init_mmap( self.mmap_input_path, input.dtype, (self.length, *input.shape) ) self.mmap_labels = self._init_mmap( self.mmap_labels_path, label.dtype, (self.length, *label.shape) ) self.mmap_inputs[idx][:] = input[:] self.mmap_labels[idx][:] = label[:] def __getitem__(self, idx: int) -> Tuple[Union[np.ndarray, torch.Tensor]]: if self.transform_fn: return self.transform_fn(self.mmap_inputs[idx]), torch.tensor(self.mmap_labels[idx]) return self.mmap_inputs[idx], self.mmap_labels[idx] def __len__(self) -> int: return self.length咱们在下面提供的代码中还应用了两个辅助函数。 ...

July 31, 2022 · 1 min · jiezi

关于深度学习:传统渲染农场和云渲染农场选择哪个好

渲染能够说是CG的最初一道工序,也是最终使你图像合乎你的3D场景的阶段。 通常是建筑设计、动画制作等利用3DS MAX、MAYA等软件制作好模型、动画帧之后,将所设计内容利用软件自身或者辅助软件(lightscape、vray等)制作成最终效果图或者动画。 这个过程因为渲染的特殊性和对机器的硬件的要求,很多人自备的电脑是无奈承载大文件的渲染。这个时候渲染农场的呈现解决了这个问题,同时随着科技的倒退,计算机网络的跃进,云渲染农场也应运而生了,它解决了更多令制作者头疼的因素。 那对于传统渲染农场和云渲染农场来讲,它们有什么区别?又如何抉择呢? 【渲染农场】: 其实是一种艰深的叫法,实际上咱们应该叫他“分布式并行集群计算零碎”,这是一种利用现成的CPU、以太网和操作系统构建的超级计算机,它应用支流的商业计算机硬件设施达到或靠近超级计算机的计算能力。 【云渲染农场】: 它的模式与惯例的云计算相似,行将3D程序放在近程的服务器中渲染,用户终端通过Web软件并借助高速互联网接入拜访资源,指令从用户终端中收回,服务器依据指令执行对应的渲染工作,而渲染后果画面则被传送回用户终端中加以显示。 绝对“传统渲染农场”,为什么抉择“云渲染”? 传统渲染农场和云渲染它们独特领有宏大的集群,独特领有强硬的硬件设施。 看似一样然而对于使用者来说,它们却又是不一样的。因为传统渲染只反对线下,而云渲染反对的是线上。 云渲染更适应当初的人类潮流倒退,更能不便制作者的应用,满足制作者的事实需要。那对于咱们制作者来说,云渲染有什么劣势是让咱们值得去抉择呢? 以渲巨匠的云渲染农场为例,说说有什么劣势:渲巨匠提供多种配置规格,满足不同利用场景的GPU服务器供您抉择,反对按小时购买,随用随买,租期弹性灵便。 1、随时随地进行大规模渲染制作者渲染文件能够不再受工夫、地点的限度,只需通过渲巨匠官网自主在线渲染,因为渲巨匠有着宏大的高性能渲染集群进行渲染,节俭了期待渲染的工夫,晋升工作效率。 2、对渲染设施的精益求精渲巨匠是业内性价比较高的平台之一,渲巨匠是一家公司 GPU 根底算力服务提供商,多年来深耕于渲染及人工智能算力畛域,凭借超过2000+ 的 GPU 算力设施,为寰球建筑设计、VR/AR、互动游戏、影视动漫、工业设计、商业广告,人工智能,深度学习等行业助力,致力于为寰球客户提供高性价比、高可用、高算力的根底设施租赁及解决方案服务。 3、云端实时把握渲染进度应用云渲染时,您更不便理解渲染进度,掌控渲染实现状况,充沛正当地安顿您的工作工夫,这是传统渲染可望不可即的。 现在,随着科技的倒退,云渲染的大潮正在席卷各个行业,因为,云渲染适应着时代的号召和倒退的需要,深受大家的喜爱,绝对比传统农场而言,雷同的状况下,云渲染往往会更加便捷,更加人性化。如果大家想要理解更多对于云渲染的相干常识,能够留言,或者去渲巨匠官网。

July 29, 2022 · 1 min · jiezi

关于深度学习:18张图直观理解神经网络流形和拓扑

迄今,人们对神经网络的一大疑虑是,它是难以解释的黑盒。本文则次要从实践上了解为什么神经网络对模式识别、分类成果这么好,其本质是通过一层层仿射变换和非线性变换把原始输出做扭曲和变形,直至能够非常容易被辨别不同的类别。实际上,反向流传算法(BP) 其实就是依据训练数据一直地微调这个扭曲的成果。本文用多张动图十分形象地解释了神经网络的工作原理,相干内容也可参考知乎网友的探讨:https://www.zhihu.com/questio...作者 | Christopher Olah起源 | Datawhale翻译 | 刘洋校对 | 胡燕君(OneFlow) 大概十年前开始,深度神经网络在计算机视觉等畛域获得了突破性成绩,引起了极大的趣味和关注。 然而,仍有一些人对此示意忧愁。起因之一是,神经网络是一个黑匣子:如果神经网络训练得很好,能够取得高质量的后果,但很难了解它的工作原理。如果神经网络呈现故障,也很难找出问题所在。 尽管要整体了解深层神经网络很难,但能够从低维深层神经网络动手,也就是每层只有几个神经元的网络,它们了解起来要容易得多。咱们能够通过可视化办法来了解低维深层神经网络的行为和训练。可视化办法能让咱们更直观地理解神经网络的行为,并察看到神经网络和拓扑学之间的分割。 接下来我谈判及许多乏味的事件,包含可能对特定数据集进行分类的神经网络的复杂性上限。 1 一个简略的例子让咱们从一个非常简单的数据集开始。下图中,立体上的两条曲线由有数的点组成。神经网络将试着辨别这些点别离属于哪一条线。 要察看神经网络(或任何分类算法)的行为,最间接的办法就是看看它是如何对每个数据点进行分类的。 咱们从最简略的神经网络开始察看,它只有一个输出层和一个输入层。这样的神经网络只是用一条直线将两类数据点离开。 这样的神经网络太简略粗犷了。古代神经网络通常在输出层和输入层之间有多个层,称为暗藏层。再简略的古代神经网络起码有一个暗藏层。 一个简略的神经网络,图源维基百科 同样地,咱们察看神经网络对每个数据点所做的操作。可见,这个神经网络用一条曲线而不是直线来拆散数据点。显然,曲线比直线更简单。 神经网络的每一层都会用一个新的示意模式来示意数据。咱们能够察看数据如何转化成新的示意模式以及神经网络如何对它们进行分类。在最初一层的示意模式中,神经网络会在两类数据之间画一条线来辨别(如果在更高的维度中,就会画一个超平面)。 在后面的可视化图形中,咱们看到了数据的原始示意模式。你能够把它视为数据在「输出层」的样子。当初咱们看看数据被转化之后的样子,你能够把它视为数据在「暗藏层」中的样子。 数据的每一个维度都对应神经网络层中一个神经元的激活。 暗藏层用如上办法示意数据,使数据能够被一条直线拆散(即线性可分) 2 层的间断可视化在上一节的办法中,神经网络的每一层用不同示意模式来示意数据。这样一来,每层的示意模式之间是离散的,并不间断。 这就给咱们的了解造成艰难,从一种示意模式到另一种示意模式,两头是如何转换的呢?好在,神经网络层的个性让这方面的了解变得非常容易。 神经网络中有各种不同的层。上面咱们将以tanh层作为具体例子探讨。一个tanh层\( tanh(Wx+b) \),包含: 用“权重”矩阵 W 作线性变换用向量 b 作平移用 tanh 逐点示意咱们能够将其视为一个间断的转换,如下所示: 其余规范层的状况大致相同,由仿射变换和枯燥激活函数的逐点利用组成。 咱们能够用这种办法来了解更简单的神经网络。例如,上面的神经网络应用四个暗藏层对两条略有互缠的螺旋线进行分类。能够看到,为了对数据进行分类,数据的示意形式被一直转换。两条螺旋线最后是纠缠在一起的,但到最初它们能够被一条直线拆散(线性可分)。 另一方面,上面的神经网络,尽管也应用多个暗藏层,却无奈划分两条互缠水平更深的螺旋线。 须要明确指出的是,以上两个螺旋线分类工作有一些挑战,因为咱们当初应用的只是低维神经网络。如果咱们应用宽度更大的神经网络,所有都会很容易很多。 (Andrej Karpathy基于ConvnetJS制作了一个很好的demo,让人能够通过这种可视化的训练交互式地摸索神经网络。) 3 tanh层的拓扑神经网络的每一层都会拉伸和挤压空间,但它不会剪切、割裂或折叠空间。直观上看,神经网络不会毁坏数据的拓扑性质。例如,如果一组数据是间断的,那么它被转换示意模式之后也是间断的(反之亦然)。 像这样不影响拓扑性质的变换称为同胚(homeomorphisms)。模式上,它们是双向连续函数的双射。 定理:如果权重矩阵 W 是非奇怪的(non-singular),而神经网络的一层有N个输出和N个输入,那么这层的映射是同胚(对于特定的定义域和值域而言)。 证实:让咱们一步一步来: 假如 W 存在非零行列式。那么它是一个具备线性逆的双射线性函数。线性函数是间断的。那么“乘以 W ”这样的变换就是同胚;“平移”变换是同胚;tanh(还有sigmoid和softplus,但不包含ReLU)是具备间断逆(continuous inverses)的连续函数。(对于特定的定义域和值域而言),它们就是双射,对它们的逐点利用就是同胚。因而,如果 W 存在一个非零行列式,这一个神经网络层就是同胚。 如果咱们将这样的层随便组合在一起,这个后果依然成立。 4 ...

July 28, 2022 · 1 min · jiezi

关于深度学习:EasyNLP中文文图生成模型带你秒变艺术家

作者:汪诚愚、刘婷婷 导读 宣物莫大于言,存形莫长于画。--【晋】陆机 多模态数据(文本、图像、声音)是人类意识、了解和表白世间万物的重要载体。近年来,多模态数据的爆炸性增长促成了内容互联网的凋敝,也带来了大量多模态内容了解和生成的需要。与常见的跨模态了解工作不同,文到图的生成工作是风行的跨模态生成工作,旨在生成与给定文本对应的图像。这一文图生成的工作,极大地开释了AI的想象力,也激发了人类的创意。典型的模型例如OpenAI开发的DALL-E和DALL-E2。近期,业界也训练出了更大、更新的文图生成模型,例如Google提出的Parti和Imagen。 然而,上述模型个别不能用于解决中文的需要,而且上述模型的参数量宏大,很难被开源社区的宽广用户间接用来Fine-tune和推理。本次,EasyNLP开源框架再次迎来大降级,集成了先进的文图生成架构Transformer+VQGAN,同时,向开源社区收费凋谢不同参数量的中文文图生成模型的Checkpoint,以及相应Fine-tune和推理接口。用户能够在咱们凋谢的Checkpoint根底上进行大量畛域相干的微调,在不耗费大量计算资源的状况下,就能一键进行各种艺术创作。 EasyNLP是阿里云机器学习PAI 团队基于 PyTorch 开发的易用且丰盛的中文NLP算法框架,并且提供了从训练到部署的一站式 NLP 开发体验。EasyNLP 提供了简洁的接口供用户开发 NLP 模型,包含NLP利用 AppZoo 、预训练模型 ModelZoo、数据仓库DataHub等个性。因为跨模态了解和生成需要的一直减少,EasyNLP也反对各种跨模态模型,特地是中文畛域的跨模态模型,推向开源社区。例如,在先前的工作中,EasyNLP曾经对中文图文检索CLIP模型进行了反对(看这里)。咱们心愿可能服务更多的 NLP 和多模态算法开发者和研究者,也心愿和社区一起推动 NLP /多模态技术的倒退和模型落地。本文简要介绍文图生成的技术,以及如何在EasyNLP框架中如何轻松实现文图生成,带你秒变艺术家。本文结尾的展现图片即为咱们模型创作的作品。 文图生成模型简述上面以几个经典的基于Transformer的工作为例,简略介绍文图生成模型的技术。DALL-E由OpenAI提出,采取两阶段的办法生成图像。在第一阶段,训练一个dVAE(discrete variational autoencoder)的模型将256×256的RGB图片转化为32×32的image token,这一步骤将图片进行信息压缩和离散化,不便进行文本到图像的生成。第二阶段,DALL-E训练一个自回归的Transformer模型,将文本输出转化为上述1024个image token。 由清华大学等单位提出的CogView模型对上述两阶段文图生成的过程进行了进一步的优化。在下图中,CogView采纳了sentence piece作为text tokenizer使得输出文本的空间表白更加丰盛,并且在模型的Fine-tune过程中采纳了多种技术,例如图像的超分、格调迁徙等。ERNIE-ViLG模型思考进一步思考了Transformer模型学习常识的可迁移性,同时学习了从文本生成图像和从图像生成文本这两种工作。其架构图如下所示:随着文图生成技术的一直倒退,新的模型和技术不断涌现。举例来说,OFA将多种跨模态的生成工作对立在同一个模型架构中。DALL-E 2同样由OpenAI提出,是DALL-E模型的升级版,思考了层次化的图像生成技术,模型利用CLIP encoder作为编码器,更好地融入了CLIP预训练的跨模态表征。Google进一步提出了Diffusion Model的架构,能无效生成高清大图,如下所示:在本文中,咱们不再对这些细节进行赘述。感兴趣的读者能够进一步查阅参考文献。 EasyNLP文图生成模型因为前述模型的规模往往在数十亿、百亿参数级别,宏大的模型尽管能生成品质较大的图片,而后对计算资源和预训练数据的要求使得这些模型很难在开源社区广泛应用,尤其在须要面向垂直畛域的状况下。在本节中,咱们具体介绍EasyNLP提供的中文文图生成模型,它在较小参数量的状况下,仍然具备良好的文图生成成果。 模型架构模型框架图如下图所示:思考到Transformer模型复杂度随序列长度呈二次方增长,文图生成模型的训练个别以图像矢量量化和自回归训练两阶段联合的形式进行。 图像矢量量化是指将图像进行离散化编码,如将256×256的RGB图像进行16倍降采样,失去16×16的离散化序列,序列中的每个image token对应于codebook中的示意。常见的图像矢量量化办法包含:VQVAE、VQVAE-2和VQGAN等。咱们采纳VQGAN在ImageNet上训练的f16_16384(16倍降采样,词表大小为16384)的模型权重来生成图像的离散化序列。 自回归训练是指将文本序列和图像序列作为输出,在图像局部,每个image token仅与文本序列的tokens和其之前的image tokens进行attention计算。咱们采纳GPT作为backbone,可能适应不同模型规模的生成工作。在模型预测阶段,输出文本序列,模型以自回归的形式逐渐生成定长的图像序列,再通过VQGAN decoder重构为图像。 开源模型参数设置模型配置pai-painter-base-zhpai-painter-large-zh参数量(Parameters)202M433M层数(Number of Layers)1224注意力头数(Attention Heads)1216隐向量维度(Hidden Size)7681024文本长度(Text Length)3232图像序列长度(Image Length)16 x 1616 x 16图像尺寸(Image Size)256 x 256256 x 256VQGAN词表大小(Codebook Size)1638416384模型实现在EasyNLP框架中,咱们在模型层构建基于minGPT的backbone构建模型,外围局部如下所示: self.first_stage_model = VQModel(ckpt_path=vqgan_ckpt_path).eval()self.transformer = GPT(self.config)VQModel的Encoding阶段过程为: # in easynlp/appzoo/text2image_generation/model.py@torch.no_grad()def encode_to_z(self, x): quant_z, _, info = self.first_stage_model.encode(x) indices = info[2].view(quant_z.shape[0], -1) return quant_z, indicesx = inputs['image']x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format)# one step to produce the logits_, z_indices = self.encode_to_z(x) # z_indice: torch.Size([batch_size, 256]) VQModel的Decoding阶段过程为: ...

July 28, 2022 · 5 min · jiezi

关于深度学习:建筑云渲染的应用正在扩大越来越多的行业急需可视化服务

云渲染也能够说是属于一种视觉行业,随着时代的倒退,云渲染平台越来越多,它所波及的行业也是越来越多,可能咱们比拟可见的是云渲染用于影视动画、修建动画、视效、修建可视化、游戏类工作室等等。能够设想成付费租用了一台云电脑,将本地的3D文件上传到这台云端虚构电脑上让它帮你进行渲染。云渲染始终出现着微小的可能性,但直到最近才开始实现其真正的后劲。最后用于可视化简略的对象,如驰名的犹他州茶壶,云渲染很快发现它的目标在美国国防,美国宇航局,和其余机构和行业。云渲染的利用正在扩充,越来越多的行业发现自己急需可视化服务。房地产竞争强烈的房地产行业曾经发现云渲染软件的极好用处-帮助销售过程。在渲染软件的帮忙下,代理商能够扩大其受众,并提供他们领有的出租或发售的每个房产的简略虚构旅行。代理商能够开发一个真切虚构游览,使与会者可能看到每个角落和缝隙,并查看每个房间,而不是浪费时间和金钱安顿集体客户和带他们进行实物游览。云渲染也有助于分期家庭。空荡荡的房产不须要真正的家具、电器和装饰品来展现其真面目。3D 艺术家只须要几张空间的照片,他们能够用任何必要的便当设施的真切的图像来舞台。修建云渲染可能只是修建可视化中最有用的。现在,开发任何住宅和修建的 云渲染已成为规范做法,在施工阶段开始之前,准确描述每一个细节。创立手绘草图或模型已成过来。通过 云渲染和先进的 3D 打印,每个型号都能够在录制工夫内实现。3D 设计是建筑师与客户之间清晰沟通思想的完满解决方案。它们打消了任何潜在的语言障碍或误会,并让参加我的项目的每个人都理解状况。他们能够帮忙每个利益相关者在施工前将已实现的我的项目可视化。云渲染可能会转移对任何潜在问题、危险或波及问题的注意力,从而在为时已晚(或老本过高)之前轻松纠正错误。室内设计很少有其余行业像室内设计那样重大依赖 云渲染软件。两人明天齐头并进。与建筑师一样,室内设计师常常会遇到与客户沟通的问题,这些问题能够通过翻译设计师想法的真切渲染来轻松解决。通过 云渲染软件,设计师能够实现不同样式、色彩、纹理和照明,并向客户展现后果。云渲染软件提供杰出的精度和准确的测量,确保渲染中的每一件家具或装璜都像在现实生活中一样适宜。它能够展现不同的装璜如何影响房间的情绪,不同的窗帘或墙壁油漆如何扭转外部的整个外观,等等。医疗医疗保健行业是 云渲染软件市场胜利的重要贡献者。云渲染服务能够援救和进步寰球数百万人的生存品质。应用 3D 打印机,云渲染软件已被证实是贵重的医疗保健设施一次又一次。2020年初,意大利用于冠状病毒患者的3D打印呼吸机阀门,解救了数百人的生命。3D 打印机一直用于定制假肢,使佩戴者更舒服。云渲染软件通常用于开发定制医疗设施和设施,可用于简单的手术和医疗程序,用于修复受损器官的部件,等等。虚拟现实中的云渲染可用于培训医务人员,在不将患者置于危险之中的状况下练习操作技术,发明新的教育内容。医疗保健行业只会持续越来越依赖 云渲染服务。娱乐大多数人立刻将"3D"与计算机图形成像(或CGI)和动画分割起来,这是有充沛理由的。娱乐行业负责晚期采纳 3D 技术,而正是这个行业使命 3D 出现宽泛提供给公众。《玩具总动员》、《阿凡达》和《史莱克》等电影激发了公众对云渲染软件及其性能的趣味。游戏行业重大依赖 云渲染和 CGI 使游戏更加身临其境。在电影行业,云渲染和 CGI 可用于从拍摄中去除不须要的元素(如中世纪电影中的飞机照片炸弹)到创立空想人、生物和中央的真切的图像(如《指环王》中的高卢)。制造业制作中的3D渲染具备丰盛的利用。它能够从零开始疾速构建新产品,预制,概念化,甚至反向工程。应用 3D 打印机,渲染软件能够放慢制作过程,并最终优化寰球工厂的装配线。对渲染制作解决方案的需要一直减少,正在推动 云渲染进入软件市场,并将其推向新的高度。营销营销人员开始更加依赖 云渲染,因为它提供了新的机会和更好的广告策略。视觉效果在营销中始终至关重要,云渲染软件能够改良它们,使其对更宽泛的受众更具吸引力。在营销中,云渲染可用于清理产品、使色彩风行、显示产品的多功能性等。营销人员无需破费工夫和金钱在耗竭的照片拍摄上,而不会总是产生最佳成果,他们能够应用 云渲染解决方案,并创立所需的准确图像,无需付出太多致力即可推动参加。渲巨匠是一个比拟亲民的GPU算力平台,具备自建渲染农场,总 GPU 数量2000+,提供香港及中国边疆的渲染农场,反对渲染及深度学习应用场景,配套支流的软件,模板,集群性能,疾速晋升算力。渲巨匠GPU算例平台能够减速您的AI深度学习、高性能计算、渲染测绘、云游戏、元宇宙等利用。高性价比,高稳定性,疾速部署,弹性租用,7x24技术支持,满足您所需。减速您的AI深度。

July 27, 2022 · 1 min · jiezi

关于深度学习:解读个推每日治数平台DIOS创新成果-附产品白皮书下载

7月22日-26日,第五届数字中国建设峰会及成绩展览会在福州举办,数据智能上市企业每日互动(个推)携数据智能翻新成绩亮相,并于成绩发布会现场公布了每日治数平台DIOS的最新产品停顿。 每日治数平台DIOS,助力行业数智化麻利降级每日治数平台DIOS是每日互动重磅打造的数据智能操作系统。平台以助力客户业务胜利为指标,帮忙行业客户和相干政府单位解决数字化转型中遇到的痛点难题,并将可复用的数据能力、业务能力、效率工具积淀下来,打造数据产品引擎与提效工具,减速客户业务翻新过程,助力行业数智化麻利降级。 ▲每日治数平台产品架构 为帮忙客户疾速买通数据的供应端和需要端,高效地把数据资产用起来,实现数据驱动的业务增长,每日互动对治数平台进行了产品设计、性能体验、操作应用等多方面的翻新迭代,实现了从数据生产到数据治理再到数据利用全流程的效率降级、价值降级和能力降级,心愿帮忙企业里的业务人员、工程师们更加便捷地剖析数据和利用数据,让更多的企业和用户可能享受到数智的红利,真正实现数智普惠。 效率降级:可视化操作和交互界面,帮忙客户高效治理和剖析数据为升高企业数字化降级的门槛,缩小企业在开发和应用数据过程中的人力、工夫等老本投入,每日治数平台DIOS实现了可视化灵便交互,帮忙客户更加高效地治理、应用和剖析数据。比方,每日治数平台的机器学习产品模块通过可视化的操作和交互界面,使AI模型构建的门槛大幅升高。业务人员无需写一行代码,即可疾速创立机器学习预测模型。 以某美妆品牌客户应用每日治数平台进行机器学习为例:以往,撑持业务的算法专家须要破费较长的工夫能力实现一个机器学习模型的搭建。现在,依靠每日治数平台的机器学习产品模块,该客户的业务经营人员也可能自主操作,进行算法建模,并在1-2两个小时的工夫里,就疾速实现了预测购买模型的训练,实现了对消费者购买后劲的智能预测。针对高购买后劲人群,该美妆品牌客户进行定向曝光和触达,最终使广告投放ROI晋升了近3倍。 通过赋能一线业务人员,每日治数平台帮忙客户真正实现了数字化过程中的效率降级。 价值降级:低代码构建数据利用,让数据价值中转业务一线每日治数平台采纳低代码的设计理念,使数据开发工程师、数据分析师、业务人员、管理者等多元角色都能在每日治数平台上自助式地利用数据,让数据价值中转业务一线。 每日治数平台还全新推出数据【我的项目核心】和【利用核心】模块。通过这两个模块,营销、HR、财务等不同部门的业务人员也够能灵便创立数据看板、数据门户等数据利用,更及时、迅速地响应业务场景中遇到的多样化数据需要。 ▲每日治数平台让数据价值中转业务一线 比方,企业的销售部门能够应用每日治数平台,对线索转化漏斗、线索评级散布进行剖析,并通过便捷的配置操作,疾速生成数据看板。通过清晰的可视化图表,管理人员和销售人员都可能更直观地理解业务拓展现状,更加高效地发展客户经营工作。 能力降级:对立数据智能底座,减速数据产品翻新落地为了使数据价值在更宽泛的业务场景中落地,每日互动将公司的数据智能服务能力积淀到了每日治数平台中,造成可灵便调用的能力组件、行业标签模板、算法模型库等,为客户的数智化翻新赋能提效。 ▲每日治数平台为垂直行业客户的数智化翻新赋能提效 每日治数平台可能为相干政府单位、行业企业、集成商等客户打造本身的数据智能底座,帮忙行业客户将数据能力和行业教训积淀下来,在数据智能底座的撑持下,更加轻量化地开发、扩大新的数据产品,防止大量重复性的开发工作,实现麻利高效的数智化翻新。 当下,各行各业的数字化降级热火朝天,高效利用数据资产的能力曾经成为企业将来倒退的外围竞争力。每日互动心愿通过每日治数平台DIOS及一系列业余的数据智能产品/服务,帮忙行业客户更高效地生产和治理数据,为多元角色用户应用数据提供便当,最终实现数智普惠,推动各行业的数智化降级。 正如第五届数字中国建设峰会的主题,“翻新驱动新改革,数字引领新格局”,每日互动作为国内业余的数据智能服务商,也将继续开拓创新,一直降级数据智能服务水平,为数字中国的建设提供更多助力。 [点击链接查看和下载《每日治数平台DIOS产品白皮书》https://cdn-getuigw.getui.com...](https://cdn-getuigw.getui.com...)

July 27, 2022 · 1 min · jiezi

关于深度学习:一种分布式深度学习编程新范式Global-Tensor

撰文|姚迟、许啸宇、左益豪、程国良 Global Tensor 是指多机多设施执行的 Tensor,它是实现全局视角(Global View)编程的接口。 以后的并行程序,大都采纳单程序多数据(SPMD)的形式来编程。并行执行同样的程序,然而解决的是不同数据,以此实现数据的并行处理。以 PyTorch DistributedDataParallel(DDP) 为例,每个过程执行同样的神经网络计算逻辑,然而每个过程加载数据集的不同分片。 单程序多数据(SPMD)编程的缺点是多数据的通信很繁琐。在深度学习场景下,SPMD 编程须要在原计算代码中插入通信操作,比方数据并行时对梯度汇总(AllReduce 操作),模型并行时须要 AllGather/ReduceScatter 操作。如果并行模式简单,或者须要试验新的并行模式,插入通信操作就变得难以开发和保护。 全局视角(Global View)编程提供了单程序单数据(SPSD)的编程视角。与 SPMD 编程不同的是,Global View的数据是同一个逻辑数据,从编程接口层面看是繁多数据,其实更简洁天然。 当咱们把一个单过程程序扩大到并行执行时,一个单过程数据被扩大成多过程数据,多个过程上的这些数据都对应原单过程程序中的同一个逻辑数据。这个逻辑数据在 OneFlow 中叫 Global Tensor。 编程时,Global Tensor 让用户能够用 SPSD 的接口来编程,即依照单机单设施的逻辑视角来写程序。而后 OneFlow 框架外部会主动地转换成物理的 SPMD/MPMD 形式来做并行/分布式执行。 应用 Global Tensor,就能够采纳比拟天然的 Global View 视角,把多机多设施看作一个设施来编程,实现 SPSD 编程。 1 Global Tensor概述在编程语言中,Global 的含意通常是过程内的全局可见,比方全局变量(Global Variable)。 但 Global Tensor 中 “Global” 的含意是过程间全局可见,所以 Global Tensor 更为精确的的说法是 Global (on all processes) Tensor,即所有过程可见的 Tensor。 Global Tensor 在每个过程上都存在,在所有过程上被某算子执行时,就主动实现了对该 Tensor 的多机多设施执行。 以后罕用的 Tensor,只在单个过程内可见,存在于一个设施上,OneFlow 中把这种 Tensor 叫做 Local Tensor。Local 是绝对 Global 而言的,所以 Local Tensor 能够认为是 Local (on one process) Tensor。 ...

July 26, 2022 · 6 min · jiezi

关于深度学习:如何在OneFlow中新增算子

撰文|姚迟、郑泽康 本文将以开发一个 leaky_relu(精确说是 leaky_relu_yzh op,因为 master 分支的 leaky_relu 组合了其它知识点)为例介绍如何在 OneFlow 中新增算子(https://github.com/Oneflow-In...)。 1 背景op 与 kernel op 与 kernel 是两个有关联的概念。op 是逻辑上的算子,蕴含 OneFlow Compiler 在构建计算图时所须要的必要信息,如输出、输入形态,哪些张量须要主动求导等信息。有了 op 中的信息,OneFlow Compiler 就能够构建计算图并根据计算图做资源申请、构建等操作(如依据张量的输入输出大小申请内存), 然而 op 中不蕴含具体的解决数据的逻辑。 在真正须要解决数据时,OneFlow Runtime 会启动 kernel 实现计算,所以 kernel 中蕴含了具体解决数据的逻辑。对于一个逻辑上的 op,OneFlow Runtime 会依据数据类型、硬件设施(比方是 CPU 还是 CUDA)的具体情况,抉择启动不同的 kernel。 OneFlow 中的零碎 op 与 user op 在 OneFlow 零碎中存在两类算子(op):零碎 op 和 user op。 零碎 op 定义在:oneflow/core/operator/ 目录, 对应的 kernel 实现在:oneflow/core/kernel 目录。零碎 op 是对构图、流水等零碎性能较为要害的一些 op。 ...

July 25, 2022 · 7 min · jiezi

关于深度学习:IJCAI-2022参数高效的大模型稀疏训练方法大幅减少稀疏训练所需资源

近日,阿里云机器学习PAI对于大模型稠密训练的论文《Parameter-Efficient Sparsity for Large Language Models Fine-Tuning》被人工智能顶会IJCAI 2022接管。 论文提出了一种参数高效的稠密训练算法PST,通过剖析权重的重要性指标,得出了其领有两个个性:低秩性和结构性。依据这一论断,PST算法引入了两组小矩阵来计算权重的重要性,相比于本来须要与权重一样大的矩阵来保留和更新重要性指标,稠密训练须要更新的参数量大大减少。比照罕用的稠密训练算法,PST算法能够在仅更新1.5%的参数的状况下,达到相近的稠密模型精度。 背景近几年各大公司和钻研机构提出了各式各样的大模型,这些大模型领有的参数从百亿级别到万亿级别不等,甚至于曾经呈现十万亿级别的超大模型。这些模型须要消耗大量的硬件资源进行训练和部署,从而导致它们面对着难以落地利用的窘境。因而,如何缩小大模型训练和部署所需的资源成为了一个急需解决的问题。 模型压缩技术能够无效的缩小模型部署所需的资源,其中稠密通过移除局部权重,使得模型中的计算能够从浓密计算转换为稠密计算,从而达到缩小内存占用,放慢计算速度的成果。同时,稠密相比于其余模型压缩办法(结构化剪枝/量化),能够在保障模型精度的状况下达到更高的压缩率,更加适合领有大量参数的大模型。 挑战现有的稠密训练伎俩能够分为两类,一类是基于权重的data-free稠密算法;一类是基于数据的data-driven稠密算法。基于权重的稠密算法如下图所示,如magnitude pruning[1],通过计算权重的L1范数来评估权重的重要性,并基于此生成对应稠密后果。基于权重的稠密算法计算高效,无需训练数据参加,然而计算出来的重要性指标不够精确,从而影响最终稠密模型的精度。基于数据的稠密算法如下图所示,如movement pruning[2],通过计算权重和对应梯度的乘积作为掂量权重重要性的指标。这类办法思考到了权重在具体数据集上的作用,因而可能更加精确的评估权重的重要性。然而因为须要计算并保留各个权重的重要性,因而这类办法往往须要额定的空间来存储重要性指标(图中S)。同时相较于基于权重的稠密办法,往往计算过程更加简单。这些毛病随着模型的规模变大,会变得更加显著。综上所述,之前的稠密算法要么高效然而不够精确(基于权重的算法),要么精确然而不够高效(基于数据的算法)。因而咱们冀望提出一种高效的稠密算法,可能精确且高效的对大模型进行稠密训练。 破局基于数据的稠密算法的问题是它们个别会引入额定的与权重雷同大小的参数来学习权重的重要性,这让咱们开始思考如何缩小引入的额定参数来计算权重的重要性。首先,为了可能最大化利用已有信息来计算权重的重要性,咱们将权重的重要性指标设计成如下公式:即咱们联合了data-free和data-driven的指标来独特决定最终模型权重的重要性。已知后面data-free的重要性指标无需额定的参数来保留且计算高效,因而咱们须要解决的就是如何压缩前面那项data-driven重要性指标所引入的额定训练参数。基于之前的稠密算法,data-driven重要性指标能够设计成,因而咱们开始剖析通过该公式计算出来的重要性指标的冗余性。首先,基于之前的工作已知,权重和对应的梯度均具备显著的低秩性[3,4],因而咱们能够推导出该重要性指标也具备低秩性,从而咱们能够引入两个低秩小矩阵来示意原始与权重一样大的重要性指标矩阵。 其次,咱们剖析了模型稠密后的后果,发现它们具备显著的结构性特色。如上图所示,每张图的左边是最终稠密权重的可视化后果,右边是统计每一行/列对应稠密率的直方图。能够看出,右边图有30%的行中的大部分权重都被移除了,反之,左边图有30%的列中的大部分权重都被移除了。基于这样的景象,咱们引入了两个小结构化矩阵来评估权重每一行/列的重要性。基于上述的剖析,咱们发现data-driven的重要性指标存在低秩性和结构性,因而咱们能够将其转换成如下示意模式:其中A和B示意低秩性,R和C示意结构性。通过这样的剖析,本来和权重一样大的重要性指标矩阵就被分解成了4个小矩阵,从而大大减少了参加稠密训练的训练参数。同时,为了进一步缩小训练参数,咱们基于之前的办法将权重的更新也分解成了两个小矩阵U和V,因而最初的重要性指标公式变成如下模式:对应算法框架图如下所示:最终PST算法试验后果如下,咱们在NLU(BERT、RoBERTa)和NLG(GPT-2)工作上与magnitude pruning和movement pruning进行比拟,在90%的稠密率下,PST能够在大部分数据集上达到与之前算法相当的模型精度,然而仅需1.5%的训练参数。 PST技术曾经集成在阿里云机器学习PAI的模型压缩库,以及Alicemind平台大模型稠密训练性能中。为阿里巴巴团体外部落地应用大模型带来了性能减速,在百亿大模型PLUG上,PST相比于本来的稠密训练能够在模型精度不降落的状况下,减速2.5倍,内存占用缩小10倍。目前,阿里云机器学习PAI曾经被广泛应用于各行各业,提供AI开发全链路服务,实现企业自主可控的AI计划,全面晋升机器学习工程效率。 论文名字:Parameter-Efficient Sparsity for Large Language Models Fine-Tuning 论文作者:Yuchao Li , Fuli Luo , Chuanqi Tan , Mengdi Wang , Songfang Huang , Shen Li , Junjie Bai 论文pdf链接:https://arxiv.org/pdf/2205.11... 参考文献[1] Song Han, Huizi Mao, and William J Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. [2] Victor Sanh, Thomas Wolf, and Alexander M Rush. Movement pruning: Adaptive sparsity by fine-tuning. [3] Edward J Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. Lora: Low-rank adaptation of large language models.[4] Samet Oymak, Zalan Fabian, Mingchen Li, and Mahdi Soltanolkotabi. Generalization guarantees for neural networks via harnessing the low-rank structure of the jacobian. ...

July 25, 2022 · 1 min · jiezi

关于深度学习:代码的表示学习CodeBERT及其他相关模型介绍

什么是CodeBertCodeBERT是微软在2020年开发的BERT模型的扩大。它是一个用于编程语言(PL)和自然语言(NL)的双峰预训练模型,能够执行上游的(NL-PL)工作,这个模型应用6种编程语言(Python, Java, JavaScript, PHP, Ruby, Go)进行NL-PL的匹配训练。 本文将对论文进行简要概述,并应用一个例子展现如何应用,无关模型背地的数学和具体架构的更多详细信息,请参阅原始论文。在最初除了CodeBert以外,还整顿了最近一些对于他的钻研之上的衍生模型。 在深入研究这篇论文之前,让咱们先介绍一下CodeBERT能够反对的上游工作用例和。这些用例中的一些曾经在MS工具中实现,例如visual studio- IntelliCode。 CodeBert 的用例代码转换或代码翻译:例如,当开发人员想要编写与现有python 代码雷同的的 java 代码时,代码到代码翻译能够帮忙翻译此代码块。 代码主动正文:能够帮忙开发人员进行代码摘要。当开发人员看到不相熟的代码时,模型能够将代码翻译成自然语言并为开发人员进行总结。 文本到代码:相似代码搜寻的性能,这种搜寻能够帮忙用户检索基于自然语言查问的相干代码。除此以外还能够依据正文生成相应的代码。 文本到文本:能够帮忙将代码域文本翻译成不同的语言。 BERT架构BERT ((Bidirectional Encoder Representations from Transformers) 是谷歌在 2018 年提出的自监督模型。 BERT 实质上是由多个自注意力“头”组成的 Transformer 编码器层堆栈(Vaswani 等人,2017 年)。对于序列中的每个输出标记,每个头计算键、值和查问向量,用于创立加权示意/嵌入。同一层中所有头的输入被组合并通过一个全连贯层。每层都用跳过连贯相连,而后进行层规范化(LN)。BERT 的传统工作流程包含两个阶段:预训练和微调。预训练应用两个自监督工作:掩蔽语言建模(MLM,预测随机掩蔽的输出标记)和下一句预测(NSP,预测两个输出句子是否彼此相邻)。微调实用于上游应用程序,通常在最终编码器层之上增加一个或多个全连贯层。 CodeBert 架构BERT 很容易扩大到多模态,即应用不同类型的数据集进行训练。CodeBert 是 Bert 的双模扩大。即 CodeBERT 同时应用自然语言和源代码作为其输出。(与次要关注自然语言的传统 BERT 和 RoBERTa 不同) 双峰 NL - PL 对:训练 CodeBERT 的典型输出是代码和明确定义的文本正文的组合。 CodeBERT 形容了两个预训练指标:掩码语言建模 (MLM) 和替换标记检测 (RTD)。 应用掩码语言建模训练 CodeBERT:为 NL 和 PL 抉择一组随机地位来屏蔽掉,而后用非凡的 [MASK] 标记替换所选地位。MLM 的指标是预测被覆盖的原始标记 ...

July 25, 2022 · 2 min · jiezi

关于深度学习:导入为什么深度学习是下一代技术革命的入口

为什么破费微小的代价转型深度学习?这须要足够压服人做出就义的理由,否则无论是本人,团队,还是更大的组织,都没有自由的驱动力去做这件事,不知导致不行。 理由:底层原理信息的作用是帮忙主体打消不确定性做一个决策须要多少信息?集体:1、一个人是学文,学理,学艺术,学体育?2、大学选什么业余?3、学做生意,读职校还是躺平?4、买彩票买什么球队?什么号码?比分几比几?5、毕业后,找工作,还是考研,还是考公务员,还是出国?皇帝:1、攘外or安内?2、用廉or用能?3、对外政策强硬or怀柔?4、皇后or贵妃?5、苟且or变法?公司:1、技术驱动or市场型驱动?2、相对掌控or需要融资?3、重现金or重规模?4、劳动力密集型or技术密集型? 论断:任何一个决定都不是靠运气有的人靠本人的直觉做抉择/走弯路胜利了,然而当这个赛道不再横蛮成长,你不能靠直觉。案例:二战期间前苏联的进攻决策华为高价延聘IBM进行策略征询左晖花了几年工夫,以及很多钱才弄明确的底层逻辑,帮忙链接和贝壳在房地产中介行业一枝独秀银行/证券之所以能赚钱,是因为他们把握了有数的金融数据以及数学模型征询行业你能够说出更多的案例 总结:在之前几千年外面,无效信息决定了主体抉择的正确性,决定了主体是否始终胜利。在每个人面临海量信息的明天,也是如此

July 24, 2022 · 1 min · jiezi

关于深度学习:下一次技术革命的思考

下一次技术反动的配角是:1、深度学习撑持的智能化,自动化服务2、区块链撑持的元宇宙,WEB3.0 互联网反动曾经为下一次技术反动夯实了松软的根底,积攒了海量的用户数据,行为数据,以及世界信息,物体,能量流动的数据,有了这些数据的积攒,剖析,训练,应用,让数据的使用者更容易看清世界的变化趋势,人的爱好趋势,这些在一直的革新,赋能数据使用者,让他们领有了超人的预测,疏导,甚至掌控人类,世界的能力。 全知即全能 反动成绩的落地形式(工夫程序从上到下):阶段1:应用深度学习的思路,加上海量的实时数据,一直收缩的算理网络,信息过载的时代,咱们能够为用户提供用户真正须要的,充沛自在定制的,排列好优先级的信息服务。甚至可能会放低门槛,凋谢定制模型的能力给所有用户,减速智能化技术的真正腾飞阶段2:在元宇宙中,咱们能够发明出在事实中没有的,然而能够具备真实世界估值的财产,实现元宇宙到事实世界的投射,疫情会减速这一方向落地的速度。阶段3:元宇宙+深度学习,通过两个技术的交融,咱们能够在元宇宙中通过基础设施平台,构建出元宇宙中的本人,具备本人的肯定水平的思维能力和在元宇宙中的口头能力,不知疲倦的创造财富

July 24, 2022 · 1 min · jiezi

关于深度学习:Gpusharecom-如何使用TensorBoardX可视化工具

TensorBoardX是基于TensorBoard,一款能够用于Pytorch数据可视化的工具,对TensorBoard比拟理解的用户,也可能轻松上手TensorBoardX~ 咱们一起来看看,在咱们平台,如何应用TensorBoardX呢? 装置TensorBoardX这里演示为Pytorch框架应用 TensorBoardX 可视化,创立一个 Pytorch 框架的实例,而后进行如下操作。 装置tensorboardX ~# pip install tensorboardX能够抉择装置crc32c以加快速度 ~# pip install crc32c从tensorboardX 2.1开始,须要为add_audio()函数装置soundfile ~# pip install soundfile#装置soundfile所须要的依赖~# apt-get update -y && apt-get install libsndfile1 -y上传代码这里通过tensorboardX的我的项目提供的代码来运行,大家在训练的过程中须要应用本人的代码并上传到实例中。 ~# git clone https://github.com/lanpa/tensorboardX.git#查看tensorboardX的我的项目提供代码的示例,次要查看如何调用TensorBoardX进行展现~# cat tensorboardX/examples/demo.pyimport torchimport torchvision.utils as vutilsimport numpy as npimport torchvision.models as modelsfrom torchvision import datasetsfrom tensorboardX import SummaryWriterimport datetimetry: import soundfile skip_audio = Falseexcept ImportError: skip_audio = Trueresnet18 = models.resnet18(False)writer = SummaryWriter()sample_rate = 44100freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440]true_positive_counts = [75, 64, 21, 5, 0]false_positive_counts = [150, 105, 18, 0, 0]true_negative_counts = [0, 45, 132, 150, 150]false_negative_counts = [0, 11, 54, 70, 75]precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0]recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0]for n_iter in range(100): s1 = torch.rand(1) # value to keep s2 = torch.rand(1) # data grouping by `slash` writer.add_scalar('data/scalar_systemtime', s1[0], n_iter, summary_description="# markdown is supported!") # data grouping by `slash` writer.add_scalar('data/scalar_customtime', s1[0], n_iter, walltime=n_iter, display_name="dudubird") writer.add_scalars('data/scalar_group', {"xsinx": n_iter * np.sin(n_iter), "xcosx": n_iter * np.cos(n_iter), "arctanx": np.arctan(n_iter)}, n_iter) x = torch.rand(32, 3, 64, 64) # output from network if n_iter % 10 == 0: x = vutils.make_grid(x, normalize=True, scale_each=True) writer.add_image('Image', x, n_iter) # Tensor writer.add_image_with_boxes('imagebox_label', torch.ones(3, 240, 240) * 0.5, torch.Tensor([[10, 10, 100, 100], [101, 101, 200, 200]]), n_iter, labels=['abcde' + str(n_iter), 'fgh' + str(n_iter)]) if not skip_audio: x = torch.zeros(sample_rate * 2) for i in range(x.size(0)): # sound amplitude should in [-1, 1] x[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate)) writer.add_audio('myAudio', x, n_iter) writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter) writer.add_text('markdown Text', '''a|b\n-|-\nc|d''', n_iter) for name, param in resnet18.named_parameters(): if 'bn' not in name: writer.add_histogram(name, param, n_iter) writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand( 100), n_iter) # needs tensorboard 0.4RC or later writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, n_iter)# export scalar data to JSON for external processingwriter.export_scalars_to_json("./all_scalars.json")dataset = datasets.MNIST('mnist', train=False, download=True)images = dataset.data[:100].float()label = dataset.targets[:100]features = images.view(100, 784)writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1))writer.add_embedding(features, global_step=1, tag='noMetadata')images_train = dataset.data[100:200].float()labels_train = dataset.targets[100:200]features_train = images_train.view(100, 784)all_features = torch.cat((features, features_train))all_labels = torch.cat((label, labels_train))all_images = torch.cat((images, images_train))dataset_label = ['test'] * 100 + ['train'] * 100all_labels = list(zip(all_labels, dataset_label))writer.add_embedding(all_features, metadata=all_labels, label_img=all_images.unsqueeze(1), metadata_header=['digit', 'dataset'], global_step=2)# VIDEOvid_images = dataset.data[:16 * 48]vid = vid_images.view(16, 48, 1, 28, 28) # BxTxCxHxWwriter.add_video('video', vid_tensor=vid)writer.add_video('video_1_fps', vid_tensor=vid, fps=1)writer.close()writer.add_scalar('implicit reopen writer', 100, 0)运行程序上面示例中通过 tmux 程序来托管程序运行。 ...

July 22, 2022 · 2 min · jiezi

关于深度学习:wandb深度学习记录训练数据工具初体验

quickstart:https://wandb.ai/quickstart/p...$pip install wandb$wandb login "API"import wandbimport osos.environ["WANDB_API_KEY"] = "API"os.environ["WANDB_MODE"] = "offline" #离线保留数据的办法:因网络问题无奈在线保留,可将数据先保留在本地,在同步到云端wandb.init(project="my-test-project")wandb.config = { "learning_rate": 0.001, "epochs": 100, "batch_size": 128}for epoch in range(epoches): #训练循环中打印 wandb.log({"loss": loss})# Optionalwandb.watch(model)训练完结后会在本地生成一个wandb的文件,终端会显示wandb sync wandb/dryrun-folder-name,应用该命令将数据上传到云端

July 22, 2022 · 1 min · jiezi

关于深度学习:瓜分30万奖金DeepRec-CTR模型性能优化天池挑战赛来啦

DeepRec CTR模型性能优化天池挑战赛已在阿里云天池平台正式上线! 点击率预估 (CTR estimation) 是在线信息系统的外围模块之一,是举荐零碎、付费广告、搜索引擎重要的组成部分,宽泛的利用于商品购物、短视频、本地生存等畛域中,与人们的生存非亲非故,具备重要的业务价值。而DeepRec是阿里巴巴对立的稠密模型训练/预测引擎,针对点击率预估模型的训练/预测进行了深度的优化(DeepRec github地址:https://github.com/alibaba/De...)。 此次DeepRec CTR模型性能优化挑战赛诚邀宽广开发者参赛!借助本次大赛,在DeepRec中积淀CTR模型新的优化思路和优化方向,共享教训成绩,领导和推动理论工业理论场景中点击率预估模型的训练效率的晋升! 赛题阐明本赛题须要参赛者应用DeepRec进行单机的CTR模型训练,次要工作为CTR模型(W&DL, DeepFM, DLRM, DIN, DIEN, MMOE)的训练任务:W&DL/DeepFM/DLRM模型的数据集为通过采样的饿了么数据集,DIN/DIEN模型的数据集为亚马逊图书数据集,MMoE应用淘宝数据集,在无限资源应用下优化6个模型的训练速度。 较量地址具体赛题及规定介绍请复制下方链接或点击浏览原文https://tianchi.aliyun.com/co... 赛事奖金池30万元奖金池冠军: 1支队伍,奖金8万人民币,颁发获奖证书亚军: 2支队伍,奖金3万人民币,颁发获奖证书季军: 3支队伍,奖金2万人民币,颁发获奖证书创新奖:复赛中第7-16名队伍,处分1万人民币,颁发获奖证书参加天池大赛的队伍还有机会参加《DeepRec CTR模型性能优化大赛有奖征稿》取得键盘、充电宝等精美礼品!大赛技术答疑交换群赛事组队或交换能够进群将在群内分享进行答疑和技术交换

July 20, 2022 · 1 min · jiezi

关于深度学习:基于-EasyCV-复现-DETR-和-DABDETRObject-Query-的正确打开方式

DETR 是最近几年最新的指标检测框架,第一个真正意义上的端到端检测算法,省去了繁琐的 RPN、anchor 和 NMS 等操作,间接输出图片输入检测框。DETR 的胜利次要归功于 Transformer 弱小的建模能力,还有匈牙利匹配算法解决了如何通过学习的形式 one-to-one 的匹配检测框和指标框。 尽管 DETR 能够达到跟 Mask R-CNN 相当的精度,然而训练 500 个 epoch、收敛速度慢,小指标精度低的问题都饱受诟病。后续一系列的工作都围绕着这几个问题开展,其中最精彩的要属 Deformable DETR,也是现在检测的刷榜必备,Deformable DETR 的奉献不单单只是将 Deformable Conv 推广到了 Transformer 上,更重要的是提供了很多训练好 DETR 检测框架的技巧,比方模拟 Mask R-CNN 框架的 two-stage 做法,如何将 query embed 拆分成 content 和 reference points 两局部组成,如何将 DETR 拓展到多尺度训练,还有通过 look forward once 进行 boxes 预测等技巧,在 Deformable DETR 之后,大家仿佛找到了如何关上 DETR 框架的正确形式。其中对 object query 代表什么含意,以及如何更好的利用 object query 做检测,产生了许多有价值的工作,比方 Anchor DETR、Conditional DETR 等等,其中 DAB-DETR 做的尤为彻底。DAB-DETR 将 object query 看成是 content 和 reference points 两个局部,其中 reference points 显示的示意成 xywh 四维向量,而后通过 decoder 预测 xywh 的残差对检测框迭代更新,另外还通过 xywh 向量引入地位注意力,帮忙 DETR 放慢收敛速度,本文将基于 EasyCV 复现的 DETR 和 DAB-DETR 算法具体介绍一下如何正确的应用 object query 来晋升 DETR 检测框架的性能。 ...

July 19, 2022 · 5 min · jiezi

关于深度学习:高斯过程相关研究的新进展的8篇论文推荐统计-人工智能

1、Low-Precision Arithmetic for Fast Gaussian ProcessesWesley J. Maddox, Andres Potapczynski, Andrew Gordon Wilson https://arxiv.org/abs/2207.06856 低精度算法对神经网络的训练产生了变革性的影响,升高了对计算量、内存和算力的需要。然而高斯过程(GPS)中却很少应用低精度的算法,这是因为GPS的简单线性代数在低精确度中是不稳固的。论文钻研了在半精度训练GPs时可能产生的不同的生效模式。为了防止这些生效模式,提出了一种多层面的办法,包含共轭梯度与从新正交化、混合精度和预处理。论文提出的这些办法在大范畴设置的低精度下显著进步了共轭梯度的数值稳定性和理论性能,使GPs可能在10小时外在单个GPU上训练180万个数据点,而无需任何稠密迫近。 2、Markovian Gaussian Process Variational AutoencodersHarrison Zhu, Carles Balsells Rodas, Yingzhen Li https://arxiv.org/abs/2207.05543 深度生成模型宽泛用于高维工夫序列的建模,如视频动画、音频和气象数据等。序列变分自编码器已被胜利地利用于许多利用中,许多变体模型依赖于离散工夫办法和递归神经网络(RNNs)。间断工夫办法最近取得了新的停顿,在不规则采样工夫序列的状况下,它们能够比离散工夫办法更好地解决数据。这里其中一类是高斯过程变分自编码器(GPVAEs),VAE先验设置为高斯过程(GPs),容许通过核函数和潜在空间的可解释性对演绎偏差进行显式编码。然而GPVAEs的一个次要限度是它继承了与GPs雷同的三次计算开销。在这篇论文中,利用马尔可夫GPs的等效离散状态空间示意,通过卡尔曼滤波和平滑实现线性工夫GP求解器。通过测试工作显示,论文的办法体现良好,特地是优于基于rnn的模型。 3、Adaptive Nonlinear Regulation via Gaussian ProcessLorenzo Gentilini, Michelangelo Bin, Lorenzo Marconi https://arxiv.org/abs/2206.12225 该论文通过提出基于学习的基于外部模型的设计策略来解决非线性零碎的输入调节问题。从最近在提出的自适应外部模型设计技术中失去了一些灵感,并通过高斯过程回归器扩大它。基于学习的适应性是通过遵循“事件触发”的逻辑来执行的,这样能够应用混合工具来剖析后果闭环零碎。与最近中提出的办法不同,在论文办法中友元应该属于一个特定的无限维模型集,并且只须要现实稳态管制动作的平滑性。论文还通过数值模仿证实了所提出的办法如何优于以往的办法 4、Additive Gaussian Processes RevisitedXiaoyu Lu, Alexis Boukouvalas, James Hensman https://arxiv.org/abs/2206.09861 高斯过程模型是一类具备丰盛表征能力并且灵便的非参数模型。通过应用加性构造的高斯过程,能够对简单的响应进行建模,并同时放弃可解释性。以前的工作表明,加性高斯过程模型须要高维相互作用项。论文提出了正交加性核(OAK),它对加性函数施加了一个正交束缚,这使可辨认的、低维的函数关系示意成为可能。将OAK核连贯到函数方差分析合成,并应用改良的收敛速度更快稠密计算方法。通过应用大量的可加性低维项,证实了OAK模型实现了与黑箱模型类似或更好的预测性能,同时保留了可解释性 5、Gradient-based explanations for Gaussian Process regression and classification modelsSarem Seitz https://arxiv.org/abs/2205.12797 高斯过程已被证实是一种牢靠和无效的概率机器学习办法。因为最近和以后的停顿,利用GPs对简单数据进行建模变得越来越可行。如果你想在神经和深度学习办法找到一个乏味代替计划,高斯过程能够说是目前最先进的机器学习办法。人们对所谓的可解释办法越来越感兴趣——实质上是旨在使机器学习模型的决策过程对人类通明。当不合逻辑或有偏见的推理可能导致对人类理论不利的结果时,特地须要这种可能进行解释的办法。现实状况下,可解释的机器学习应该有助于发现模型中的缺点,并帮忙后续的调试过程。机器学习可解释性的一个沉闷的钻研方向是基于梯度的办法,它已胜利地利用于简单神经网络。思考到GPs在差分条件下是关闭的,基于梯度的GPs可解释性是一个有前景的钻研畛域。本文次要通过梯度来解释GP分类器,与GP回归相同,导数GP并不可能间接取得。 6、Real-Time Trajectory Planning for Autonomous Driving with Gaussian Process and Incremental RefinementCheng Jie, Chen Yingbing, Zhang Qingwen, Gan Lu, Liu Ming ...

July 18, 2022 · 1 min · jiezi

关于深度学习:MindSpore自动安装CPU篇

》》主动装置-CPU1.查看零碎版本2.下载主动装置脚本wget https://gitee.com/mindspore/m...执行主动装置脚本bash ./ubuntu-cpu-conda.sh ->> 此处的主动装置波及日志较多,仅截图局部内容,如下是主动装置的重要内容,现做下手动查看,次要内容如下:1) .更改软件源配置为华为云源。2).装置MindSpore所需的依赖,如GCC,gmp。3).装置Conda并为MindSpore创立虚拟环境。4).通过Conda装置MindSpore CPU版本。至此,咱们的版本装置胜利了~

July 17, 2022 · 1 min · jiezi

关于深度学习:MindSpore踩坑昇腾上的Cosine误差

这两天遇到一个很经典的issue,为啥说经典呢,因为这是一个可能体现框架研发人员和算法工程师认知重大错位的典型案例。先放链接,有趣味的同学能够去看下全过程。 【AICC】CosineDecayLR余弦学习率实现形式强转float32类型计算(目前测试源码只能用fp32),导致呈现负值学习率影响模型最初收敛!!! 写模型的老师(maybe 学生?)用了三个感叹号来表白心田的不爽。我先来简略形容一下这个问题: P.Cos()(Tensor(math.pi, mstype.float32)) result: -1.000004用于计算余弦函数的Cos算子,后果会有误差,失常状况下cos(pi) = -1.0,然而用MindSpore计算失去的后果多了一个-4e-6。个别状况下,如果在网络里用到Cos算子,其实影响也不大,然而。。。。这个问题是产生在CosineDecayLR,也就是利用余弦函数动静调整学习率,这时候,就会呈现问题: P.Cos()(Tensor(math.pi, mstype.float32)) + 1.0 result: -4.053116e-06这个时候影响就十分大了,入门常识问题,学习率不能为正数,否则梯度更新会是反方向。此外,个别如BERT这样的模型,学习率的数量级在1e-5左右,能够看到这个误差就会重大影响梯度降落了。 算子精度误差达标=性能正确?既然问题很大,要怎么解决呢?我大略简述一下issue创建者和专家回复过程。 issue创建者:CosineDecayLR余弦学习率呈现负值学习率影响模型最初收敛!!!误差是-4.053116e-06。专家:百万分之4的误差,满足算子正当的计算误差范畴issue创建者:然而导致我学习率为负值之后,我模型梯度更新方向反了,loss从稳固逐步升高......这也是我说这是典型的起因,从硬件芯片到驱动使能再到算子库和框架,其实每一个层级的角度是不同的,所以对于昇腾(或者说CANN)而言,算子的精度误差在正当范畴内,这个算子是能够验收公布的。这时候,如果默认其正确,而后交由下层封装(即MindSpore)也是没有问题的。 然而!!!深度学习框架的研发和测试如果没有充沛的背景常识(其实是常识),就会呈现这样的问题。 显然,算子精度误差达标,绝不会等价于性能正确,像CosineDecayLR这样的API应该正当验证边界条件可能触发的问题。再次再次再次吐槽一遍,AI框架开发者要有深度学习根底! GPU和Ascend上的正/余弦函数误差解决回到问题自身,既然余弦函数有误差,正弦函数也得看看。而后我又在GPU上跑了一下,发现一个乏味的景象。 Ascend: P.Cos()(Tensor(math.pi, mstype.float32)) result: -1.000004P.Sin()(Tensor(math.pi, mstype.float32)) result: 0.0GPU: P.Cos()(Tensor(math.pi, mstype.float32)) result: -1.0P.Sin()(Tensor(math.pi, mstype.float32)) result: -8.7423e-08这个后果就很回味无穷了,Ascend上Sin是是没有精度误差的,GPU刚好相同。为了确认不是MindSpore的问题,我又用Pytorch跑了一下: torch.cos(torch.tensor(math.pi)) result: -1.torch.sin(torch.tensor(math.pi)) result: -8.7423e-08能够明确Pytorch同样存在误差,然而GPU上应该对Cos做了解决。思考到个别Cos的应用场景更多(构建网络、学习率甚至权重初始化),这个解决也就能够了解了。而Ascend上Sin是无误差的,与GPU刚好相同,不晓得是出于什么起因的思考。然而从MindSpore跨平台应用而言,同样的CosineDecayLR代码,在这个时候会造成微小差别是毫无疑问的。 CosineDecayLR的解决(躲避)计划计划1依据 @用什么名字没那么重要 的倡议,间接clip数值更适合,不会呈现误差问题。 代码如下: import mindspore.ops as Pimport mindspore.common.dtype as mstypefrom mindspore import contextfrom mindspore.nn.learning_rate_schedule import LearningRateSchedule class CosineDecayLR(LearningRateSchedule): def __init__(self, min_lr, max_lr, decay_steps): super(CosineDecayLR, self).__init__() if not isinstance(min_lr, float): raise TypeError("For 'CosineDecayLR', the argument 'min_lr' must be type of float, " "but got 'min_lr' type: {}.".format(type(min_lr))) if min_lr >= max_lr: raise ValueError("For 'CosineDecayLR', the 'max_lr' should be greater than the 'min_lr', " "but got 'max_lr' value: {}, 'min_lr' value: {}.".format(max_lr, min_lr)) self.min_lr = min_lr self.max_lr = max_lr self.decay_steps = decay_steps self.math_pi = math.pi self.delta = 0.5 * (max_lr - min_lr) self.cos = P.Cos() self.min = P.Minimum() self.max = P.Maximum() self.cast = P.Cast()def construct(self, global_step): p = self.cast(self.min(global_step, self.decay_steps), mstype.float32) return self.min_lr + self.delta * self.max((1.0 + self.cos(self.math_pi * (p / self.decay_steps))), 0.0)计划2有了后面的剖析,其实从前端角度解决或躲避就比较简单了,既然Sin算子不会呈现误差,那就间接应用Sin代替Cos即可: ...

July 17, 2022 · 2 min · jiezi

关于深度学习:毕设r16自定义算子CPU-SampleDistortedBoundingBox算子移植

1 我的项目概述本我的项目开题时的目标是将TensorFlow框架下的SampleDistortedBoundingBox算子移植到MindSpore框架下,开题时MindSpore版本是r1.5向r1.6的过渡期,正式开发时MindSpore发行版本为r1.6,因而,本文次要讲述MindSpore r1.6版本下的自定义算子(CPU)的设计思路以及对SampleDistortedBoundingBox算子性能的剖析。 如果心愿向MindSpore合入代码请参考网址:MindSpore算子众智2 SampleDistortedBoundingBox(后简称SDDB)算子2.1 SDDB算子性能简述在图像识别或指标定位中,除了标注外,通常还会提供边界框正文,训练这种零碎的一种罕用技术是在保留图像内容的同时随机扭曲图像,即数据加强。本文中的SampleDistortedboundingBox算子在给出图像大小、边界框等一些束缚后输入对象(边界框)的随机扭曲定位,后文将新生成的输入对象称为裁剪框。图2-1 SDDB算子演示成果 图2-1中,蓝色框(偏左侧框)为原始的输入框,红色框(偏右侧框)为新的在约束条件下新生成的束缚框,即裁剪框。2.2 TensorFlow框架下的SDDB算子剖析本文移植的SDDB算子参考的TensorFlow版本为(v2.6.0)。源代码gitee镜像,各个输出参数的性能及要求如下:“image_size”参数类型是TensorFlow外面的Tensor,“image_size”中的数据为int类型,一维且长度为3的张量,3个整型数据含意顺次为图片高度、图片宽度、图片通道数。“bounding_boxes”算子参数是3维张量,其中的数据类型为float32,三个维度顺次示意batch(循环次数),N(单次循环输出边框数),边框坐标。在源代码浏览中,batch并未参加算子的C++实现,N的意义在测试中及浏览源码中发现,其示意输出的边框能够为多个,对于后续的束缚,在输出的边框中边框与边框之间造成的不同束缚为或的关系,即新生成的裁剪框满足其中一个输出边框参加的束缚即可。“seed”参数为整型,其目标为提供一个随机种子,为输出中的几个束缚提供随机根据,在TensorFlow1中,seed参数有两个:seed1,seed2,在第二版本后仅应用一个参数seed,默认值为0。“min_object_covered”参数是float32类型浮点数,默认值为0.1,容许的输出值范畴为[0,1],其示意输入的裁剪框与输出的边框的交加面积占输出的边框面积的最小值,输出边框之间束缚关系为或。“aspect_ratio_range”参数为长度为2的列表,其中数据类型为float32类型浮点数,其示意裁剪框的宽纵比范畴。默认值为[0.75,1.33]。“area_range”参数为长度为2的列表,其中数据类型为float32类型浮点数,其示意裁剪框面积占图片面积的范畴,默认值为[0.05,1],取值范畴为[0,1]。“max_attempts”参数为int型,默认值为100,因为裁剪框是在约束条件下顺次随机生成,生成的裁剪框可能不满足最初一个束缚,故须要从新生成,该值为生成裁剪框的最大尝试次数,尝试次数超过该值将返回原图大小的边框作为裁剪框。“use_image_if_no_bounding_boxes”参数为bool型,默认值为false,如果为true,则参数“bounding_boxes”为空,将原图边框作为输入框参加算子运算。算子输入为元组,蕴含三个参数:“begin”,“size”,“bboxes”,其中“begin”、“size”能够作为tensorflow.slice()的输出,用于将裁剪框中的图像裁剪进去,bboxes参数能够作为tensorflow.image.draw_bounding_boxe()的输出,用于在原图中将裁剪框绘制进去。“begin”参数为一维张量,含三个值,别离代表裁剪框左顶点纵坐标,左顶点横坐标,以及维度(取值0)。“size”参数为一维张量,含有三个值,别离代表裁剪框高度,裁剪框宽度,裁剪通道数(取值-1时示意所有通道,在本算子中取值为定值-1)。“bboxes”参数为一维张量,含有四个值,顺次示意左上顶点纵坐标、左上顶点横坐标、右下顶点纵坐标,右下顶点横坐标,均归一化至[0,1]区间。算子的流程图大抵如图2-2图2-2 SDDB算子流程图以下给出以后找到的Tesnsorflow(v2.6.0)框架下波及SampleDistortedBoundingBox算子实现的相干文件(还有一些定义接口的文件没给出):“\TensorFlow\Python\ops\image_ops_impl.py”。该文件定义了SampleDistorted BoundingBox算子调用的间接接口,并存在于源代码目录中。“\TensorFlow\Python\ops\gen_image_ops.py”。该文件蕴含了文件(1)中算子接口调用的下一级函数,该函数对参数进行简略的判断,并录入默认值,该文件在编译时生成,不存在于源代码目录中。“\TensorFlow\core\kernels\image\sample_distorted_bounding_box_op.cc”。该文件定义了SampleDistortedBoundingBox算子的实现类以及相干工具类和工具函数,该文件存在于源代码中。“\TensorFlow\core\ops\image_ops.cc”该文件蕴含了SampleDistortedBounding Box算子的注册函数,该文件存在于源代码中。本设计中对于SampleDistortedBoundingBox算子的实现钻研次要在于文件3。3 MindSpore自定义算子本局部次要参考的网址为:自定义算子(CPU),更为具体的版本在irrational #。留神,这是自定义CPU算子的流程,用于本人应用,心愿代码合入的话绕道:MindSpore算子众智环境搭建能够与算子设计并行进行,算子设计倡议先搭建一个独立的C++算子运行环境。3.1 环境搭建本设计应用的是windows零碎的环境,运行build.bat脚本进行编译。环境配置参考:这里。各种须要的软件装置办法可别离在网络上寻找,局部软件装置步骤过期,但能够自行判断,以配置相应环境为目标即可。其中,Python环境能够应用anaconda或minconda装置的环境,但要使编译须要的Python环境以及pip3环境为默认环境(及在cmd中应用的python命令和pip命令来自指标环境,可通过配置零碎环境变量设置)编译时留神设置gitee镜像源,github拜访不稳固会导致编译失败(有时迷信上网也不能解决)。能够通过增加一个名为FROM_GITEE值为1的零碎环境变量设置gitee镜像源(这里我找不到论坛的原帖了)。 编译用的电脑性能越强越好,我18年¥4900而后加装到16G内存的游戏本第一次编译跑起来须要近三个小时,前面的编译就只会从新build批改的那些文件波及的文件,运行工夫会减到半个小时(链接过程不吃CPU,但耗时间)。 PS:内存肯定要够,我租的2核4G的服务器报内存不够。3.2 自定义算子设计自定义算子的流程以及波及的文件在官网中简洁明了,Python侧作为前端定义对外接口(注册算子原语),C++侧的头文件定义对内接口(注册算子信息)C++侧的.cc/.cpp文件则是算子实现,这一部分则次要重载两个函数InitKernel(初始化算子)和Launch(算子逻辑执行)。 正是基于MindSpore自定义算子前后端拆散的个性,咱们在设计算子时,能够围绕函数InitKernel和Launch搭建独立的C++工程来实现和调试算子以回避编译所须要的大量工夫。 在搭建我的项目时,用VScode就行了,因为编译命令在cmd下达就能够了。3.3 自定义算子实现自定义算子(CPU)在众智里是有API参考的(我在代码写完了后才发现。。。通过看其它源代码揣测我的我的项目须要应用哪些函数,再去看源代码揣测函数性能)。3.3.1 注册算子原语算子原语的基类有三个:Python中算子原语的基类Primitive;定义了查看算子输出参数的函数,然而应用了C++源码中注册的推理方法的Python中原语的基类PrimitiveWithCheck;在python中定义了跟踪推理的函数的原语基类PrimitiveWithInfer。因为SampleDistortedBoundingBox算子是多输出多输入的,所以抉择PrimitiveWithInfer作为SampleDistortedBoundingBox算子的基类。 算子属性由构造函数__init__()定义,属性参数通过该函数的参数列表传值,函数参数列表即可实现默认值的设置。该函数须要实现属性参数值的类型、形态以及数值的查看,同时须要将参数设置为算子的属性参数,并申明算子输入输出的参数名。 算子输入输出的参数名的申明函数为self.init_prim_io_names(inputs,outputs),其中inputs和outputs都是一维列表类型,存储相应的参数名。算子的输出、输入参数该当在函数__infer__()中实现,因为SampleDistorted BoundingBox算子有多个输入,所以由函数infer_shape()、infer_dtype()、infer_value()组合代替了函数__infer__(),前两个函数别离返回输入参数的形态和数据类型,而因为该框架的输入没有list和tuple类型,故输入参数均以Tensor的模式返回。 算子原语注册中应用的查看函数均来自类validator,我应用到的局部函数如下:check_value_type(arg_name, arg_value, valid_types, prim_name=None),该函数用于查看参数的类型。arg_name是字符串类型的参数,示意参数名,其用于查看到谬误时报错语句中,arg_value即须要查看的参数,valid_types是一个列表,示意arg_value容许的数据类型。prm_name用于指向算子原语对象。check(arg_name, arg_value, value_name, value, rel=Rel.EQ, prim_name=None, excp_cls=ValueError),该函数用于值与值的比拟,arg_name示意参数名,用于报错语句,arg_value示意须要查看的值,arg_value示意被比拟的值名,value示意被比拟的值,rel示意比拟状态,必须是类Rel里的值:EQ示意“==”,NE示意“!=”,LT示意“=”,IN示意“∈”。check_tensor_dtype_valid(arg_name, arg_type, valid_dtypes, prim_name),该函数用于查看Tensor的数据类型。与1用法雷同。须要留神的是,在本框架下,算子的输入参数没有Tuple和List,因而在多输入时,均用Tensor输入数据。3.3.2 算子实现自定义CPU算子须要在头文件里实现算子类的定义,继承类CPUKernel,除了减少C++独立实现的变量以及函数外,须要重写函数InitKernel()和函数Launch()。 函数InitKernel(const CNodePtr &kernel_node)性能次要是初始化算子,读取Python侧算子的属性Args参数,CNodePtr示意算子节点,是Python侧与C++侧实现数据交互的要害类。数据的交互依赖于类AnfRuntimeAlgorithm里的函数, GetCNodeName()用于获取算子名称,函数GetInputTensorNum()用于获取输出参数数量,函数GetOutput TensorNum()用于获取输入参数数目,函数GetPrevNodeOutputInferShape()用于依据索引值获取参数的形态。函数GetNodeAttr(),依据参数名获取参数值,这里须要特地留神T所示意的类型须要与参数理论类型保持一致,如果参数波及到维度,则用vector承载,此外,还该当留神Python侧传入C++侧后参数类型的变动。 函数Launch(const std::vector &inputs, const std::vector< kernel::AddressPtr> &,const std::vector &outputs),函数第三个参数本该当是workspace,这里因为没用到省略,因为输出参数是通过inputs读取,所以不同于C++独立实现局部,本函数承载了输出参数查看的工作。inputs->addr示意第i个输出的地址,这里则是通过指针传递参数,须要留神指针的维度。输入参数同理。 不同于TensorFlow框架下的算子只在C++侧对参数进行查看,MindSpore框架下自定义算子在Python侧和C++侧都对参数进行了查看,以保障程序的平安运行,也得益于MindSpore框架残缺的API接口,即便没有阐明文档,我在调试中未遇到较大问题。3.3.3 注册算子信息注册算子信息的代码写头文件中,算子的信息注册的实现通过宏定义MS_REG_CPU_KERNEL_(COUNT, OPNAME, ATTR, OPCLASS),COUNT能够省略,OPNAME是算子在Python侧的名称,OPCLASS是算子在C++侧的名称,ATTR示意输出参数和输入参数类型的注册信息。当算子参数的类型组合不同时,须要的注册代码也不同,因而一个算子会有多个注册语句。当组合较多时,能够编写代码借助for循环生成注册语句以进步代码编写效率,本设计的算子注册语句由代码生成,这个计划在参数类型存在调整时只用对源代码的局部中央进行大量的批改便能实现原注册代码的多行批改,大大提高了笔者的工作效率。 在实现算子信息注册后,为保障程序运行的平安,笔者对程序在不同局部所应用的数据类型进行了记录,见表3-1,表3-2,表3-3。 对于数据类型来说,保障程序运行平安的次要有两条:第一,用于承接参数的数据类型字节长度须要大于或等于接管的参数的数据类型或字节长度;第二,计算时,生成的数据不会产生数据溢出,因而,本算子波及的计算尽量避免了整型数据的乘法运算,波及乘法的两个数据之一会在0到1之间。表3-1 输出参数数据类型表3-2 两头参数数据类型表3-3 输入参数数据类型4 源代码本我的项目算子实现的代码在附件(超字数了),放进去为须要自定义CPU算子的同学参考,本我的项目没有反向算子,代码中的SDDB算子在流程上与原算子不同,数学论证公式稍多,本文就没打进去,从本人测试集的后果上看,绝对原流程,该流程在该测试集的胜利生成率进步了%2.6,在该测试集中通过断定出有效输出节俭的工夫老本为%16.7。

July 17, 2022 · 1 min · jiezi

关于深度学习:毕设CBAM应用于调制分类

在非单干通信中,辨认敌方的信号参数是及其重要的一个环节。其中,信号的调制类型就是重要的参数之一,因而能对调制形式进行分类是通信零碎检测、治理和管制的要害工作之一。近年来,注意力机制在图像处理畛域体现出微小的劣势,因而试验应用空间注意力机制与通道注意力机制,联合ResNet网络架构,从通道和空间域的各个维度中提取数据有用的特色。其中,实验所应用的数据集为RML2016.10a_dict。该数据集蕴含十一种调制类型数据,具体调制形式如下所示:OOK、4ASK、BPSK、QPSK、8PSK、16QAM、AM-SSB-SC、FM、GMSK以及OQPSK。其中,通道注意力机制构造如下图1所示:图1 空间注意力机制构造如下图2所示:图2试验将模型源码迁徙到MindSpore上,将该模型利用于通信中的调制辨认问题。在信噪比为2dB时,网络对测试数据集的准确率达到84%左右。其中,所应用的平台为华为云资源:Ascend卡。在解决验证无线电数据时,需注意lamda表达式的应用。其中,为更好的了解相干代码可参考以下链接。https://blog.csdn.net/qq_4440...对于mindspore模型迁徙、数据集解决、损失函数及算子映射等问题,可参考我之前的一篇博文:https://mp.csdn.net/mp_blog/c...

July 17, 2022 · 1 min · jiezi

关于深度学习:图神经网络的可解释性方法介绍和GNNExplainer解释预测的代码示例

深度学习模型的可解释性为其预测提供了人类能够了解的推理。如果不解释预测背地的起因,深度学习算法就像黑匣子,对于一些场景说是无奈被信赖的。不提供预测的起因也会阻止深度学习算法在波及跨域偏心、隐衷和平安的要害应用程序中应用。 深度学习模型的可解释性有助于减少对模型预测的信赖, 进步模型对与偏心、隐衷和其余平安挑战相干的要害决策应用程序的透明度,并且能够让咱们理解网络特色,以便在将模型部署到事实世界之前辨认和纠正模型所犯错误的零碎模式。 图在事实世界中无处不在,代表社交网络、援用网络、化学分子、金融数据等。图神经网络 (GNN) 是一个弱小的框架,用于对图相干数据进行机器学习,例如节点分类、图分类、和链接预测。 所以本文探讨以下5方面 GNN 须要可解释性解释 GNN 预测的挑战不同的 GNN 解释方GNNExplainer的直观解释应用 GNNExplainer 解释节点分类和图分类的实现图卷积神经网络 (GCN)、GraphSAGE 和图留神网络 (GAT) 等 GNN 通过沿输出图的边缘递归传递神经音讯,将节点特色信息与图构造相结合。 同时联合图构造和特色信息会导致简单的模型;因而,解释 GNN 的预测是具备挑战性的。 图数据不如图像和文本直观,这使得对图深度学习模型的人类能够了解的解释具备挑战性。图像和文本应用网格状数据;然而在拓扑图中,信息是应用特色矩阵和邻接矩阵来示意的,每个节点都有不同的街坊。因而图像和文本的可解释性办法不适宜取得对图的高质量解释。图节点和边对 GNN 的最终预测有显着奉献;因而GNN 的可解释性须要思考这些交互。节点分类工作通过执行来自其街坊的音讯遍从来预测节点的类别。音讯游走能够更好地理解 GNN 做出预测的起因,但这与图像和文本相比更具备挑战性。GNN 解释办法图可解释性须要答复以下问题: 哪些输出边更要害,对预测奉献最大?哪些输出节点更重要?哪些节点特色更重要?什么图模式将最大化某个类的预测?解释 GNN 的办法依据它们提供的解释类型分为两个分支。这些图解释办法侧重于图模型的不同方面,并提供不同的视图来了解 GNN 模型。 实例级办法:给定一个输出图,实例级办法通过辨认用于预测的重要输出特色来解释深度模型。 模型级办法提供了个别见解和高级了解来解释深度图模型。模型级办法专门钻研哪些输出图模式能够导致 GNN 进行某种预测。 上图为解释 GNN 的不同办法 实例级办法依据重要性分数的取得形式进行辨别,能够将它们分为四个不同的分支。 Gradients/Feature-based 办法应用梯度或暗藏特色图来示意不同输出特色的重要性,其中梯度或特征值越高示意重要性越高。基于梯度/特色的可解释性办法宽泛用于图像和文本工作。SA、Guided back propagation、CAM 和 Grad-CAM 是基于梯度/特色的可解释性办法的示例。基于扰动的办法监测不同输出扰动的输入变动变动。当保留重要的输出信息时,预测应该与原始预测类似。GNN 能够通过应用不同的掩码生成算法来取得不同类型的掩码来进行特色重要性的判断,如 GNNExplainer、PGExplainer、ZORRO、GraphMask、Causal Screening 和 SubgraphX。合成办法通过将原始模型预测合成为若干项来掂量输出特色的重要性,这些项被视为相应输出特色的重要性分数。代理办法采纳简略且可解释的代理模型来近似简单深度模型对输出示例的相邻区域的预测。代理办法包含 GraphLime、RelEx 和 PGM Explainer。GNNExplainerGNNExplainer 是一种与模型无关的基于扰动的办法,能够为任何基于图的机器学习工作上的任何基于 GNN 的模型的预测提供可解释的报告。 GNNExplainer 学习边和节点特色的软掩码,而后通过掩码的优化来解释预测。 GNNExplainer 会获取输出图并辨认紧凑的子图构造和在预测中起关键作用的一小部分节点特色。 ...

July 17, 2022 · 5 min · jiezi

关于深度学习:MindSpore报错GeneratorDatasets-numworkers8-this-value-is

1 报错形容1.1 零碎环境Hardware Environment(Ascend/GPU/CPU): CPUSoftware Environment:– MindSpore version (source or binary): 1.2.0– Python version (e.g., Python 3.7.5): 3.7.5– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1脚本此案例运行官网的线型函数拟合示例,此前已胜利装置mindspore。1.2.2报错报错信息:RuntimeError: Thread ID 140706176251712 Unexpected error. GeneratorDataset’s num_workers=8, this value is not within the required range of [1, cpu_thread_cnt=2].Line of code : 639File : /home/jenkins/agent-working-dir/workspace/Compile_CPU_X86_Ubuntu/mindspore/mindspore/ccsrc/minddata/dataset/engine/ir/datasetops/dataset_node.cc2 起因剖析用户在运行时CPU的核数少于dataset模块生成数据时默认应用的核数的数量,mindspore在1.2.0中没有为硬件中CPU的核数进行自适应配置,当pc的配置不高时须要手动对CPU核数进行配置。3 解决办法1.增加代码手动配置CPU核数:ds.config.set_num_parallel_workers(2)2.应用更高版本的mindspore,目前的mindspore–1.6.0会依据硬件中CPU的核数自适应配置,避免出现cpu核数过低导致报错。4 总结1.可依据报错信息的提醒进行问题定位,此案例为CPU核数问题,可在官网教程与开源的MindSpore文档中搜查设置CPU核数的办法。2.目前MindSpore提供了一种主动数据调优的工具——Dataset AutoTune,用于在训练过程中依据环境资源的状况主动调整数据处理管道的并行度,此过程中会自动检测硬件中CPU的核数进行自适应配置。3.MindSpore中config模块可能设置或获取数据处理的全局配置参数。5 参考文档https://www.mindspore.cn/docs...

July 16, 2022 · 1 min · jiezi

关于深度学习:MindSpore报错ValueErrorinvalid-literal-for-intwith-base10the

1 报错形容1.1 零碎环境Hardware Environment(Ascend/GPU/CPU): GPUSoftware Environment:– MindSpore version (source or binary): 1.2.0– Python version (e.g., Python 3.7.5): 3.7.5– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1源码https://gitee.com/mindspore/m...报错报错信息:ValueError:invalid literal for int()with base10’the’.2 起因剖析未依照教程解决数据集,README里阐明了须要对数据集增加一行,用来读取40万个单词,每个单词由300维度的词向量来示意。3 解决办法在glove.6B.300d.txt文件的第一行之前插入一行:400000 3004 总结运行官网教程中model时,尽量做到对照README中的步骤去执行,脱漏了数据处理的步骤可能导致报错。5 参考文档https://gitee.com/mindspore/m...

July 16, 2022 · 1 min · jiezi

关于深度学习:MindSpore报错RuntimeError-Unexpected-error-Inconsistent-batch

1 报错形容1.1 零碎环境ardware Environment(Ascend/GPU/CPU): CPUSoftware Environment:– MindSpore version (source or binary): 1.6.0– Python version (e.g., Python 3.7.5): 3.7.6– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1脚本此案例自定义数据集并进行batch操作。1.2.2报错RuntimeError: Unexpected error. Inconsistent batch shapes, batch operation expect same shape for each data row, but got inconsistent shape in column 0, expected shape for this column is:, got shape:2 起因剖析依据报错信息提醒,batch操作须要输出的数据集shape统一,但自定义数据集中的shape没有对立,导致报错。3 解决办法1.去掉batch操作。2.如果肯定要对shape不统一的数据进行batch操作,须要整顿数据集,通过pad补全等形式进行输出数据shape的对立。4 相似问题用户在做M2Det模型迁徙时,若将代码中的create_m2det_dataset函数中的batch_size=1会失去每个图像的shape和每个targets的shape已批改为大小形态雷同,程序能够顺利执行。然而,如果将batch_size改为10会报出如下谬误。此处定位到是因为target数量不统一导致shape不统一,须要依据算法需要进行设计:1.对target的数据进行调整,比方取target的最大值,示意这个网络里最多就这么多指标,而后用一些非凡分类来补齐,计算出来loss之后,再把这部分loss通过乘0过滤掉。2.参考ssd/yolo之类的的模型做法,间接将target编码后与feature_map计算loss。5 总结1.进行batch操作必须放弃输出数据的shape统一。2.对本来shape不统一的数据肯定要进行batch操作,须要思考先将shape调整为统一,后续再对因为进行了shape调整导致的数值偏差进行解决。6 参考文档https://www.mindspore.cn/tuto... ...

July 16, 2022 · 1 min · jiezi

关于深度学习:MindSpore报Dead-code-exist-please-remove-it

1 报错形容 MindSpore报Dead code exist, please remove it. 1.1 零碎环境*Hardware Environment(Ascend/GPU/CPU): Ascend/GPU/CPU Software Environment: – MindSpore version (source or binary): master or 1.6.0 – Python version (e.g., Python 3.7.5): 3.7.6 – OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic – GCC/Compiler version (if compiled from source): 1.2 根本信息1.2.1 脚本 例1: import numpy as npfrom mindspore import Tensor, nnfrom mindspore import dtype as ms class IfInWhileNet(nn.Cell): def __init__(self): super().__init__() self.nums = [1, 2, 3]def construct(self, x, y, i): out = x while i < 3: i = i + 1 out = out + 1 if x == 2: break # Dead code here out = out + y return outforward_net = IfInWhileNet()i = Tensor(np.array(0), dtype=ms.int32)x = Tensor(np.array(0), dtype=ms.int32)y = Tensor(np.array(1), dtype=ms.int32) ...

July 16, 2022 · 2 min · jiezi

关于深度学习:目标跟踪相关知识总结

原文链接 feather map在cnn的每个卷积层,数据都是以三维模式存在的。能够看成许多个二维图片叠在一起,其中每一个称为一个feature map。 1.在输出层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,个别就是3个feature map(红绿蓝)。 2.在其它层,层与层之间会有若干个卷积核(kernel),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,上层就会产生N个feather map。 卷积核(filter)每个卷积核具备长宽深三个维度;卷积核的深度与以后图像的深度(feather map的张数)雷同。卷积核的个数与下一层须要多少个feather map雷同。在CNN的一个卷积层中:卷积核的长、宽都是人为指定的,长X宽也被称为卷积核的尺寸,罕用的尺寸为3X3,5X5等;例如,在原始图像层 (输出层),如果图像是灰度图像,其feather map数量为1,则卷积核的深度也就是1;如果图像是grb图像,其feather map数量为3,则卷积核的深度也就是3。 训练数据batchsize:批大小。在深度学习中,个别采纳SGD训练,即每次训练在训练集中取batchsize个样本训练;iteration:1个iteration等于应用batchsize个样本训练一次;epoch:1个epoch等于应用训练集中的全副样本训练一次,艰深的讲epoch的值就是整个数据集被轮几次。例如300个样本训练一次,epoch=1,batchsize = 10 ,iteration=30。 BN(Batch Normalization)层BN层即batch-norm层,个别是深度学习中用于减速训练速度和一种办法,个别搁置在卷积层(conv层)或者全连贯层之后,将数据归一化并减速了训练拟合速度。 罕用地位:conv→bn→relu 如果网络应用sigmod激活函数,误差在向前传递的时候,通过sigmod单元,须要乘sigmod的梯度,而sigmod的梯度最大是0.25,因而越向前传递,误差就越小了,这就是梯度消散,然而梯度爆炸是什么?留神误差在通过全连贯或者卷积层时,也要乘以权重w,如果w都比拟大,大过sigmod造成的减小,这样越往前误差就越来越大,产生梯度爆炸。 BN层的计算图如上面所示,x是输出数据,到xhat均值方差归一化,前面xhat到y其实就是一般的一个线性变换,相似全连贯然而没有穿插。如果没有BN层,x间接输出前面的网络,训练过程中x散布的变换必然导致前面的网络去调整学习以来适应x的均值和方差,映入了BN层,xhat是一个归一化的数据,代价就是网络中多了一个线性层y,然而前者带来的性能更加大,因而减速了。 AUC(Area Under Curve)一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性。所以依据定义:咱们最直观的有两种计算AUC的办法: 1:绘制ROC曲线,ROC曲线上面的面积就是AUC的值 2:假如总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,而后除以(mn)就是AUC的值。 AUC作为数值能够直观的评估分类器的好坏,值越大越好。 均值均匀精度MAP(Mean Average Precision)咱们应用loU和阈值判断是否为指标。计算模型失去的每个检测框的loU值,用计算出的loU值与设定的loU阈值比拟,就能够计算出每个图像中每个类的正确检测次数(A)。对于每个图像,咱们都有ground truth的数据,因而也晓得了该图像中给定类别的理论指标(B)的数量。咱们也计算了正确预测的数量(A)(True possitive)。因而咱们能够应用这个公式来计算该类模型的精度(A/B) $$Precesion_{C}=\frac{N(TruePositives)_{C}}{N(TotalObjects)_{C}}$$ 即给定一张图像的类别C的Precision=图像正确预测的数量除以在图像张这一类的总的指标数量。 如果当初有一个给定的类,验证集中有100个图像,并且咱们晓得每个图像都有其中的所有类(基于ground truth)。所以咱们能够失去100个精度值,计算这100个精度值的平均值,失去的就是该类的均匀精度。 $$AveragePrecesion_{C}=\frac{\sum Precesion_{C}}{N(TotalImages)_{C}}$$ 即一个C类的均匀精度=在验证集上所有的图像对于类C的精度值的和/有类C这个指标的所有图像的数量。 当初退出咱们整个汇合中有20个类,对于每个类别,咱们都先计算loU,接下来计算精度,而后计算均匀精度。所有咱们当初有20个不同的均匀精度值。应用这些均匀精度值,咱们能够轻松的判断任何给定类别的模型的性能。 然而问题是应用20个不同的均匀精度使咱们难以度量整个模型,所以咱们能够选用一个繁多的数字来示意一个模型的体现(一个度量来对立它们),咱们能够取所有类的均匀精度值的平均值,即MAP(均值均匀精度)。 $$MeanAveragePrecesion=\frac{\sum AveragePrecesion_{C}}{N(Classes)}$$ MAP=所有类别的均匀精度求和除以所有类别。即数据集中所有类的均匀精度的平均值。 EAO 冀望均匀覆盖率EAO提出的目标也是心愿一个好的跟踪器同时领有好的精度A和鲁棒性R,如果间接用A和R的两个数加权和则有失公允,所以须要从新定义。 假如有$N_s$帧长的一个视频,那么一个跟 踪器在这段视频上的覆盖率精度(Overlay accuracy)op为每一帧op的均值,op就是bonding box与ground truth的交并比用示意,即: $$_{N_{s}}=\frac{1}{N_{s}}\sum {\atop i=1:N_{s}}_{i}$$ 那么一个现实的EAO就是把$N_s$从1到一个冀望的极大值对应的$N_s$求个均匀,就是冀望均匀覆盖率,恰如其名,等价于下图的曲线下面积: shortcut connectionResNet构造应用了一种连贯形式,即“绕近路”的意思。 Bottleneck(瓶颈层)其意思就是输入输出维度差距较大,就像一个瓶颈一样,上窄下宽亦或上宽下窄。1x1 filters 能够起到一个扭转输入维数(channels)的作用。能够看到,右图中 1x1 filters把维度(channels)升高了,输入输出维度差距较大。 ...

July 15, 2022 · 1 min · jiezi

关于深度学习:阿里云机器学习平台PAI论文高效大模型训练框架Whale入选USENIX-ATC22

近日,阿里云机器学习PAI对于深度学习模型高效的分布式训练框架的论文《 Whale: Efficient Giant Model Training over Heterogeneous GPUs 》被计算机系统畛域国内顶级学术会议USENIX ATC'22接管。 Whale是阿里云机器学习PAI平台自研的分布式训练框架,开源后的名称是EPL(Easy Parallel Library),Whale通过对不同并行化策略进行对立形象、封装,在一套分布式训练框架中反对多种并行策略,并进行显存、计算、通信等全方位的优化,来提供易用、高效的分布式训练框架。Whale提供简洁易用的接口,用户只需增加几行annotation即可组合各种混合并行策略。同时Whale提供了基于硬件感知的自动化分布式并行策略,感知不同硬件的算力、存储等资源,依据这些资源来正当的切分模型,平衡不同硬件上的计算量,最大化计算效率。借助Whale的硬件感知负载平衡算法,Bert-Large、Resnet50和GNMT模型 在异构GPU训练上提速1.2至1.4倍。同时,应用Whale框架, 万亿M6模型应用480 张 V100在3天内实现预训练。相比此前业界训练等同规模的模型,节俭算力资源超80%,且训练效率晋升近11倍。进一步应用512 GPU在10天内即训练出具备可用程度的10万亿模型。 背景和挑战随着近些年深度学习的火爆,模型的参数规模也增长迅速,OpenAI数据显示:● 2012年以前,模型计算耗时每2年增长一倍,和摩尔定律保持一致;● 2012年后,模型计算耗时每3.4个月翻一倍,远超硬件倒退速度; 特地最近两年模型参数规模飞速增长,谷歌、英伟达、阿里、智源研究院都公布了万亿参数模型,有大厂也公布了百亿、千亿参数模型。随着模型参数规模增大,模型成果也在逐步提高,但同时也为训练框架带来更大的挑战。以后曾经有一些分布式训练框架,例如:Horovod、Tensorflow Estimator、PyTorch DDP等反对数据并行,Gpipe、PipeDream、PipeMare等反对流水并行,Mesh Tensorflow、FlexFlow、OneFlow、MindSpore等反对算子拆分,但当咱们要训练一个超大规模的模型时会面临一些挑战: 以后的分布式训练框架只反对大量的并行策略,不足一个对立的形象来反对所有的并行策略及其混合策略。实现简单的并行策略须要大量的模型代码革新和对底层零碎的了解,大大增加了用户的应用难度。因为集群中异构GPU计算能力和显存的差别,动态的并行化策略无奈充分利用异构资源实现高效训练。破局为了应答以后分布式训练的挑战,咱们研发了高效、通用、硬件感知的分布式训练框架Whale。Whale形象并定义了两个分布式原语(replicate和split) 。用户能够通过在模型上增加几行原语标记,即来表白和转换各种并行化策略及其组合,极大升高了分布式框架的应用门槛。Whale runtime将用户的标记信息交融到计算图中,主动实现模型的并行化优化。同时Whale提供了基于硬件感知的自动化分布式并行策略,优化在异构GPU集群上分布式训练性能。Whale的设计很好地均衡了模型用户的干涉和系统优化机会,让每一个算法工程师都能轻松高效训练分布式大模型工作。 技术架构Whale框架如下图所示,次要分为以下几个模块:● 接口层:用户的模型编程接口基于TensorFlow,同时Whale提供了易用的并行化策略表白接口,让用户能够组合应用各种混合并行策略;● 两头表白层:将用户模型和并行策略转成化外部表白,通过TaskGraph、VirtualDevices和策略形象来表白各种并行策略;● 并行化引擎层:基于两头表白,Whale会对计算图做策略摸索,联合硬件资源进行显存/计算/通信优化,并主动生成分布式计算图。● Runtime执行引擎:将分布式执行图转成TFGraph,再调用TF 的Runtime来执行; 并行化策略表白Whale通过strategy annotation的形式来划分模型为多个TaskGraph,并在此基础上进行并行化。 Whale有两类strategy:replicate 和 split。通过这两种并行化接口,能够表白出各种不同的并行化策略,例如:● 数据并行: 上面这个例子是一个数据并行的例子,每个模型正本用一张卡来计算。如果用户申请了8张卡,就是一个并行度为8的数据并行任务。 ● 流水并行:在上面的例子里,模型被切分成2个 TaskGraph, "stage0"和"stage1",用户能够通过配置pipeline.num_micro_batch参数来设定pipeline的micro batch数量。 在这个例子里,"stage_0"和"stage_1"组成一个模型正本,共须要2张GPU卡。如果用户申请了8张卡,Whale会主动在pipeline外嵌套一层并行度为4的数据并行(4个pipeline正本并行执行)。 ● 算子拆分并行:在以下例子中,Whale会对split scope下的模型定义做拆分,并搁置在不同的GPU卡上做并行计算。 ● 同时Whale反对对上述并行策略进行组合和嵌套,来组成各种混合并行策略,更多示例能够参考开源代码的文档和示例。 Parallel PlannerParaller Planner是Whale runtime的重要一环,它的职责是生成一个高效的分布式执行plan。Parallel Planner的流程蕴含 (a) Paraller Planner的输出蕴含用户模型、用户标记(可选)、硬件计算资源和其余用户配置配置。 (b) 将物理计算资源映射成VirtualDevice, 用户无需放心如何将算子搁置在分布式物理设施上。(c) 模型被宰割成TaskGraph子图。因为Whale容许对不同的TaskGraph利用不同的分布式策略,所以在TaskGraph之间可能存在输出/输入shape不匹配。在这种状况下,Paraller Planner将主动在两个TaskGraphs之间插入相应的桥接层。 硬件感知的负载平衡算法当模型训练资源蕴含异构硬件(比方混合了V100和T4),硬件感知的负载平衡算法能够进步在异构资源下的训练效率。Whale设计了两种均衡策略:Intra-TaskGraph和Inter-TaskGraph的均衡。(1)对于Intra-TaskGraph的计算均衡,Whale会profile出模型的算力FLOP,并依照机器的计算能力按比例调配对应的计算负载,以此平衡每个step不同卡型上的模型计算工夫。对于数据并行,咱们能够通过调整不同正本上的batch大小来实现计算负载的平衡(放弃全局batch不变)。对于算子拆分,咱们能够通过不平均的维度拆分来实现不同卡上子模块的计算负载平衡。(2)当多个TaskGraph在多个异构GPU上执行流水并行,咱们须要Inter-TaskGraph的计算均衡来晋升整体的计算效率。因为流水并行的计算特点,后面的TaskGraph会比前面的TaskGraph多缓存一些前向计算的后果,因而对于Transformer类模型平衡layer切分的状况下,后面的TaskGraph会有更大的显存压力。因而在TaskGraph搁置的时候,Whale会优先将后面的TaskGraph搁置在显存容量更大的GPU卡上。与此同时,Whale会依照GPU卡的算力去切分模型,使得切分后的TaskGraph计算load和GPU算力成正比。 利用示例借助Whale框架,咱们4行代码实现M6模型数据并行+专家并行的混合并行训练。 如下图所示,MoElayer采纳专家并行,其余layer采纳数据并行: ...

July 12, 2022 · 2 min · jiezi

关于深度学习:SIGIR-2022面向长代码序列的Transformer模型优化方法提升长代码场景性能

阿里云机器学习平台PAI与华东师范大学高超传授团队单干在SIGIR2022上发表了构造感知的稠密注意力Transformer模型SASA,这是面向长代码序列的Transformer模型优化办法,致力于晋升长代码场景下的成果和性能。因为self-attention模块的复杂度随序列长度呈次方增长,少数编程预训练语言模型(Programming-based Pretrained Language Models, PPLM)采纳序列截断的形式解决代码序列。SASA办法将self-attention的计算稠密化,同时联合了代码的构造个性,从而晋升了长序列工作的性能,也升高了内存和计算复杂度。 论文:Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao, and Aoying Zhou. Understanding Long Programming Languages with Structure-Aware Sparse Attention. SIGIR 2022 模型框架下图展现了SASA的整体框架:其中,SASA次要蕴含两个阶段:预处理阶段和Sparse Transformer训练阶段。在预处理阶段失去两个token之间的交互矩阵,一个是top-k frequency矩阵,一个是AST pattern矩阵。Top-k frequency矩阵是利用代码预训练语言模型在CodeSearchNet语料上学习token之间的attention交互频率,AST pattern矩阵是解析代码的形象语法树(Abstract Syntax Tree,AST ),依据语法树的连贯关系失去token之间的交互信息。Sparse Transformer训练阶段以Transformer Encoder作为根底框架,将full self-attention替换为structure-aware sparse self-attention,在合乎特定模式的token pair之间进行attention计算,从而升高计算复杂度。 SASA稠密注意力一共包含如下四个模块: Sliding window attention:仅在滑动窗口内的token之间计算self-attention,保留部分上下文的特色,计算复杂度为0(n×w),n为序列长度,w是滑动窗口大小。Global attention:设置肯定的global token,这些token将与序列中所有token进行attention计算,从而获取序列的全局信息,计算复杂度为0(n×g),g为global token个数。Top-k sparse attention:Transformer模型中的attention交互是稠密且长尾的,对于每个token,仅与其attention交互最高的top-k个token计算attention,复杂度为0(n×k)。AST-aware structure attention:代码不同于自然语言序列,有更强的构造个性,通过将代码解析成形象语法树(AST),而后依据语法树中的连贯关系确定attention计算的范畴。为了适应古代硬件的并行计算个性,咱们将序列划分为若干block,而非以token为单位进行计算,每个query block与w个滑动窗口blocks和g个global blocks以及k个top-k和AST blocks计算attention,总体的计算复杂度为O(n(w+g+k)b),b为block size。每个sparse attention pattern 对应一个attention矩阵,以sliding window attention为例,其attention矩阵的计算为:ASA伪代码: 试验后果咱们采纳CodeXGLUE[1]提供的四个工作数据集进行评测,别离为code clone detection,defect detection,code search,code summarization。咱们提取其中的序列长度大于512的数据组成长序列数据集,试验后果如下:从试验后果能够看出,SASA在三个数据集上的性能显著超过所有Baseline。其中Roberta-base[2],CodeBERT[3],GraphCodeBERT[4]是采纳截断的形式解决长序列,这将损失一部分的上下文信息。Longformer[5]和BigBird[6]是在自然语言解决中用于解决长序列的办法,但未思考代码的构造个性,间接迁徙到代码工作上成果不佳。为了验证top-k sparse attention和AST-aware sparse attention模块的成果,咱们在BigCloneBench和Defect Detection数据集上做了融化试验,后果如下:sparse attention模块不仅对于长代码的工作性能有晋升,还能够大幅缩小显存应用,在同样的设施下,SASA能够设置更大的batch size,而full self-attention的模型则面临out of memory的问题,具体显存应用状况如下图:SASA作为一个sparse attention的模块,能够迁徙到基于Transformer的其余预训练模型上,用于解决长序列的自然语言解决工作,后续将集成到开源框架EasyNLP(https://github.com/alibaba/Ea...)中,奉献给开源社区。论文链接:https://arxiv.org/abs/2205.13730参考文献[1] Shuai Lu, Daya Guo, Shuo Ren, Junjie Huang, Alexey Svyatkovskiy, Ambrosio Blanco, Colin B. Clement, Dawn Drain, Daxin Jiang, Duyu Tang, Ge Li, Lidong Zhou, Linjun Shou, Long Zhou, Michele Tufano, Ming Gong, Ming Zhou, Nan Duan, Neel Sundaresan, Shao Kun Deng, Shengyu Fu, Shujie Liu. CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation. NeurIPS Datasets and Benchmarks 2021[2] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov. RoBERTa: A Robustly Optimized BERT Pretraining Approach. CoRR abs/1907.11692 (2019)[3] Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, Ming Zhou. CodeBERT: A Pre-Trained Model for Programming and Natural Languages. EMNLP 2020[4] Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tufano, Shao Kun Deng, Colin B. Clement, Dawn Drain, Neel Sundaresan, Jian Yin, Daxin Jiang, Ming Zhou. GraphCodeBERT: Pre-training Code Representations with Data Flow. ICLR 2021[5] Iz Beltagy, Matthew E. Peters, Arman Cohan. Longformer: The Long-Document Transformer. CoRR abs/2004.05150 (2020)[6] Manzil Zaheer, Guru Guruganesh, Kumar Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontañón, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed. Big Bird: Transformers for Longer Sequences. NeurIPS 2020 ...

July 11, 2022 · 2 min · jiezi

关于深度学习:使用-CLIP-对没有标记的图像进行零样本无监督分类

深度图像分类模型通常以监督形式在大型带正文数据集上进行训练。随着更多带正文的数据退出到训练中,模型的性能会进步,但用于监督学习的大规模数据集的标注老本时十分高的,须要专家正文者破费大量工夫。为了解决这个问题,人们开始寻找更便宜的标注的标签起源,是否有可能从曾经公开的数据中学习高质量的图像分类模型? OpenAI 提出的CLIP模型 [1] 的提议——最近因为在 DALLE-2 模型中的应用而从新风行——它以踊跃的形式答复了这个问题。特地是CLIP 提出了一个简略的预训练任务——抉择哪个题目与哪个图像搭配——它容许深度神经网络仅从自然语言(即图像题目)中学习高质量的图像示意。因为图像-文本对在网上很容易取得并且数据量十分的微小,因而能够轻松地为 CLIP 治理一个大型预训练数据集,从而最大限度地缩小标注老本和训练深度网络所需的工作量。 除了学习丰盛的图像示意之外,CLIP 不须要标签并且在 ImageNet 上实现 76.2% 的测试准确率,这个后果彻底改变了零样本图像分类 - 与之前状态的 11.5% 的测试准确率的状态[2]。通过将自然语言建设为图像感知工作的可行训练信号,CLIP 扭转了监督学习范式,使神经网络可能显着缩小对正文数据的依赖。在这篇文章中,将概述 CLIP 的信息,如何应用它来最大水平地缩小对传统的监督数据的依赖,以及它对深度学习从业者的影响。 CLIP之前的工作在理解 CLIP 的细节之前,理解模型倒退的历史会很有帮忙。在本节中将概述相干的先前工作,并提供无关 CLIP 的灵感和倒退的直觉。初步工作通过表明自然语言是图像感知监督的有用起源来作为概念证实。然而,因为这些办法绝对于代替办法体现不佳(例如,监督训练、弱监督等),因而在 CLIP 提出之前,通过自然语言进行的训练依然不常见。 应用 CNN 预测图像题目。之前的工作都是通过CNN 取得有用的图像示意来预测图像阐明的 [3]。这种分类是通过将每个图像的题目、形容和主题标签元数据转换为词袋向量来执行的,而后能够将其用作多标签分类工作的指标。乏味的是,以这种形式学习的特色被证实与通过 ImageNet 上的预训练取得的特色相匹配,从而证实图像阐明提供了对于每个图像的足够信息来学习判断示意。 起初的工作扩大了这种办法来预测与每个图像相干的短语 [2],从而实现零样本转移到其余分类数据集。只管这种办法取得了较差的零样本学习性能(即在 ImageNet 上的测试准确率仅为 11.5%),但它表明仅应用自然语言就能够产生远远超过随机性能的零样本图像分类后果,因而能够说它提出了弱监督零样本分类的概念。 来自带有transformers的文本的图像示意。同时,包含 VirTex [4]、ICLMM [5] 和 ConVIRT [6] 在内的几项工作摸索了应用transformers架构从文本数据中学习视觉特色。在高层次上,此类办法应用常见的transformers训练任务来从相干的图像的阐明中学习有用的图像示意。因为这些工作,掩蔽语言建模 (MLM)、语言建模和比照学习指标——通常用于在自然语言解决畛域训练转换器——被发现是学习高质量图像示意的有用代理工作。 下面的钻研为将来的发现铺平了路线,只管之前没有任何办法可能在大规模数据集上实现令人印象粗浅的零样本性能,但这些基础性工作提供了十分有用的经验教训。也就是说,之前的工作表明: i)自然语言是计算机视觉监督的无效起源 ii)通过自然语言监督进行零样本分类是可能的 因为这些发现,进一步的钻研工作投入到执行零样本分类。这些致力带来了突破性的办法,比方CLIP,它将自然语言监督从一种常见的办法转变为一种杰出的零样本图像分类办法。 深入研究CLIP简略地说CLIP模型旨在从相干的图像阐明中学习图像中的视觉概念。在本节中将概述CLIP架构、训练,以及如何将后果模型利用于零样本分类。 模型架构 CLIP由两个编码模块组成,别离用于对文本数据和图像数据进行编码。对于图像编码器,摸索了多种不同的模型架构,包含5种不同尺寸的ResNets[7],effecentnet格调[8]和3种ViT架构[9]。传统的CNN架构的两个选项如下所示,然而CLIP的ViT变体的训练计算效率要高出3倍,这使得它成为首选的图像编码器架构。 CLIP 中的文本编码器只是一个仅解码器的transformers,这意味着在每一层中都应用了掩码自注意力(与双向自注意力相同)。Masked self-attention 确保转换器对序列中每个标记的示意仅依赖于它之前的标记,从而避免任何标记“展望未来”以这样能够取得更好的示意。上面提供了文本编码器架构的根本形容。这种架构与大多数先前提出的语言建模架构(例如 GPT-2 或 OPT)十分类似。 只管在原始论文中没有将CLIP利用于任何语言建模应用程序,但作者利用了掩码自注意力,使CLIP在未来更容易扩大到这类应用程序。 通过自然语言进行监督训练 ...

July 9, 2022 · 3 min · jiezi

关于深度学习:科普-GPU渲染管线概述

1.顶点着色器顶点着色器是流水线的第一个阶段,它的输出来自于CPU。顶点着色器的解决单位是顶点,也就是说输出进来的每个顶点都会调用一次顶点着色器。 顶点着色器须要实现的工作次要有:坐标变换和逐顶点光照。当然,除了这两个次要工作外,顶点着色器还能够输入后续阶段所需的数据。 坐标变换,顾名思义,就是对顶点的坐标进行某种变换。例如咱们能够通过扭转顶点地位来模仿水面,布料等。 一个最根本的顶点着色器必须实现的一个工作是:把顶点坐标从模型空间转换到齐次剪裁空间。相似上面的代码: o.pos=mul(UNITY_MVP,v.position);2.裁剪因为咱们的场景可能会很大,而摄像机的视线范畴很有可能不会笼罩所有的场景物体,一个很天然的想法就是,那些不在摄像机视线范畴内的物体不须要被解决,而裁剪就是为了实现这个目标而被提出来的。 一个图元和摄像机的关系有3种: 齐全在视线内局部在视线内齐全在视线外局部在视线内的图元须要裁剪,例如一条线段的一个顶点在视线内,而另一个顶点在视线外,那么视线内部的顶点应该应用一个新的顶点来代替,这个新的顶点位于这条线段和视线边界的交点处。3.屏幕映射这一步输出的坐标依然是三维坐标系。屏幕映射的工作是把每个图元的x和y坐标转换到屏幕坐标系下,屏幕坐标系是一个二维坐标系,它和咱们用于显示画面的分辨率有很大关系。 屏幕映射失去的屏幕坐标决定了这个顶点对应屏幕上哪个像素以及间隔这个像素有多远。opengl的屏幕坐标原点是左下角,而directx是左上角,如果你发现你失去的图像是倒转的,那么很有可能就是这个起因造成的。 4.三角形设置由这一步就进入了光栅化阶段,从上一个阶段输入的信息是屏幕坐标下的顶点地位以及和它们相干的额定信息,如深度值、法线方向、视角方向等,光栅化有两个最重要的指标:计算每个图元笼罩了哪些像素,以及为这些像素计算他们的色彩。光栅化的第一个流水线阶段是三角形设置,这个阶段会计算光栅化一个三角网格所需的信息。 具体来说,上一个阶段输入的都是三角网格的顶点,即咱们失去的是三角网格每条边的两个端点。但如果要失去整个三角网格对像素的笼罩状况,咱们就必须计算每条边上的像素坐标。为了可能计算边界像素的坐标信息,咱们就须要失去三角形边界的示意形式。这样一个计算三角形网格示意数据的过程就叫做三角形设置,它的输入是为了下一个阶段做筹备。 5.三角形遍历三角形遍历阶段将会查看每个像素是否被一个三角形网格所笼罩。如果被笼罩的话,就会生成一个片元,而这样一个找到哪些像素被三角网格笼罩的过程就是三角形遍历,这个阶段也被称为扫描变换。 三角形遍历阶段会依据上一个阶段的计算结果来判断一个三角网格笼罩了哪些像素,并应用三角网格3个顶点的顶点信息对整个笼罩区域的像素进行插值。 6.片元着色器片元着色器是另一个十分重要的可编程着色器阶段,片元着色器的输出是上一个阶段对顶点信息插值失去的后果,更具体来说,是依据那些从顶点着色器输入的数据插值失去的。而它的输入是一个或多个色彩值。 这一阶段能够实现很多重要的渲染技术,其中最重要的技术之一就是纹理采样。为了在片元着色器中进行纹理采样,咱们通常会在顶点着色器阶段输入每个顶点对应的纹理坐标,然和通过光栅化阶段对三角网格的3个顶点对应的纹理坐标进行插值后,就能够失去其笼罩的片元的纹理坐标了。 7.逐片元操作逐片元操作是opengl中的说法,在directx中,这一阶段被称为输入合并阶段。这一阶段有几个次要工作: 决定片源的可见性。波及很多测试工作,如深度测试,模板测试等。如果一个片源通过了所有的测试,就须要把这个片源的色彩值和曾经存储在色彩缓冲区中的色彩进行合并至此,整个GPU渲染管线就完结了。

July 8, 2022 · 1 min · jiezi

关于深度学习:论文表情识别Region-Attention-Networks

论文根本状况发表工夫及刊物/会议: 2019 TIP 问题背景遮挡和姿势变动是表情辨认须要解决的两大难题,然而目前没有对于姿势变换和遮挡的表情辨认数据集。 论文翻新点(1)在现有的表情辨认数据集选取了波及姿势变动和遮挡的图片,并标注了遮挡类型以及姿势变动角度。具体来说,论文选取了RAF-DB,FerPlus,AffectNet三个数据集的测试集,每个数据集别离抽取了局部含遮挡,姿势变动>30度,姿势变动>45度三种类型的图片,别离造成了三种测试集。(2)搭建Region Attention Network (RAN)网络模型,来获取姿势变动或遮挡表情中的重要区域。(3)提出region biased loss(RB loss)激励网络给重要区域更高的权重。 网络结构RAN次要蕴含三个局部:(1)裁剪和特征提取模块(2)自注意力模块(3)relation-attention模块 裁剪和特征提取模块通过固定地位裁剪、随机裁剪、基于人脸特色点等办法裁剪出$K$张图片,和原图一起共$K+1$张图片,一起送入同一个CNN网络进行特征提取。 对于固定裁剪,RAN共裁剪5张图片。别离以左上角,右上角为顶点,以核心偏下地位为核心,0.75为比例,裁剪出三张图片;以原图核心为核心,别离以0.9, 0.85为比例,裁剪出另外两张图片。对于随机裁剪,RAN共裁剪$K$个区域,每张图片的裁剪比例为0.7~0.95。对于基于landmark的裁剪,RAN应用MTCNN检测每个人脸图像的五个特色点,以特色点核心为核心,以$r$为半径,裁剪出$K$张图片。注:本文的默认试验设置为固定裁剪。原图$I_0$以及裁剪后的图片$I_1, I_2, ...,I_k$别离送入同一个CNN网络,失去对应的特色,原图$I_0$的特色汇合为公式中的$X$ 自注意力模块RAN应用ResNet18作为backbone,并将ResNet18在最初全连贯层之前提取到的特色送入 self-attention 模块。公式(2)中的$F_i$示意第$i$张图片在全连贯层之前的特色,$f,q^0$别离示意sigmoid激活函数和注意力机制中全连贯层的参数 。$\mu_i$示意失去的注意力权重。通过子注意力模块,咱们让更重要的裁剪区域对应的权重$\mu_i$更高。而通过公式(3)咱们让同一张图片对应的多个特色依据权重$\mu_i$进行加权均匀,计算出全局特色$F_m$。 为了进一步加强特色区域的特色,本文利用了region biased loss(RB loss),RB loss心愿各种不同的裁剪中,应该至多有一张裁剪图片可能比原图更加凸显表情特色,获取到更高的权重,因而,RB loss中设置阈值,心愿注意力权重最高的裁剪图片对应的权重和原图相比超出肯定阈值。 通过下图,能够看出RB loss的作用 Relation-attention module关系注意力模块进一步加强特色,通过将backbone提出的初始特色$F_i$和自注意力模块失去的加权均匀特色$F_m$进行矩阵拼接,之后再送入关系注意力模块的全连贯层$q^1$提取特色,最初通过sigmoid激活函数$f$失去增强特色$v_i$ RAN网络最终的输入如下: 试验RAN在含有遮挡,姿势变动的数据集上的测试后果。 不同裁剪区域、不同交融形式对试验后果的影响 3.网络结构中不同模块,以及人脸是否对齐对试验后果的影响

July 7, 2022 · 1 min · jiezi

关于深度学习:论文笔记表情识别Occlusion-Aware-Facial-Expression-Recognition

Occlusion Aware Facial Expression Recognition Using CNN With Attention MechanismDate: July 6, 2022Topic: OcclusionWhere: TIPYear: 2019 摘要次要问题:实在环境中可能呈现表情遮挡问题。此前大部分模型是在controlled face(大多数数据集都是由CK+ , MMI , OuluCASIA试验环境下失去的表情 )上失去的后果 提出含注意力机制的卷积神经网络,能够构想出遮挡区域,并且将”注意力“集中在未遮挡的局部上。 此网络混合人脸中感兴趣的区域多种示意,每一种示意都有对应的权重。 含注意力机制的卷积神经网络有两种版本,一种是全局-部分的注意力机制(global–local-based ACNN),一种是基于patch的注意力机制(patch-based ACNN)。 次要思维 人们在生活中遇到遮挡物时,会把注意力集中在未遮挡的局部,或者是关注与遮挡局部对称或严密相干的局部。 如图中小女孩用手遮挡了嘴巴,因而后三个局部失去的权重较低,特地是最初一个局部,手指齐全遮住了嘴巴,无奈判断表情,则权重极低。 pACNN:依据图片的landmark的地位把最初一层卷积层输入的特色图宰割成多个patch,对于每个patch,PG-Unit学习给每个patch对应的权重。gACNN:同时整合local和global的示意,GG-Unit给每一个全局示意一个权重。相干工作从两个方面介绍相干工作: 类似的工作:含遮挡的表情辨认 Holistic-based(基于整体的办法) 通过 designated regularization形式,进步网络的鲁棒性(这个想法也实用于一般性物体遮挡)通过生成模型补全成残缺的脸(相干钻研表明,等同状况下,对嘴巴的遮挡,相比对眼睛的遮挡会极大影响表情辨认模型的能力)Part-based:将图片分块:依据landmark分块,或者均等分块,后detecting 是否含遮挡 补全遮挡的块对所有块调配不同权重疏忽被遮挡的局部类似的技术:注意力机制网络结构 Overview 一张图片输出VGG网络,失去一些特色图ACNN将特色图解构为小特色图,失去不同的local patches。每个local patch被PG-Unit编码为一个带权重的向量,权重示意被遮挡的水平。带权重向量和local representations拼接两层全连贯层用于分类Patch Based ACNN Region Decomposition:首先检测出人脸中68个landmark,在这68个点中,抉择或者从新计算24个更为重要的点,蕴含人脸的眼睛,鼻子,嘴巴,眉毛四个关键部位。Occlusion Perception With Gate Unit: 被抉择进去的 裁剪后的特色图送入两层卷积层(不扭转空间分辨率)最初一层特色图送入两个分支 第一个分支将输出的特色图编码成部分特征向量第二个分支蕴含Attention Net应用一个标量取预计local patch的重要性。数学示意如下: Global-Local Based ACNN pACNN用于捕捉部分面部特色,gACNN用于捕捉全局面部特色 Integration With Full Face Region: Global-Local Attention能够帮忙推断部分特色Global-Local Attention能够看作一种类型 ensemble learning(集成学习)Global-Gated Unit (GG-Unit) ...

July 7, 2022 · 1 min · jiezi

关于深度学习:渲大师携手向日葵远控赋能云渲染及GPU算力服务

今年年初,在深圳遭逢疫情突袭,多地履行封闭式治理,不少企业员工连夜返岗/搬电脑的慌忙时刻,提前做好了筹备的渲巨匠显得分外从容。 渲巨匠是深圳松茂科技有限公司旗下品牌,多年来深耕于渲染及人工智能算力畛域,致力于为寰球客户提供高性价比、高可用、高算力的根底设施租赁及解决方案服务。为修建/工业设计、VR/AR、影视动漫、人工智能、深度学习等科研机构、国内外高校及集体工作室提供数据分析、模型渲染等高性能GPU服务器租赁及解决方案。 面对强烈的市场竞争及疫情防控等不确定因素,渲巨匠为了提供高性价比、高稳定性、弹性易用、触手可得的计算能力,始终在积极探索、翻新、晋升产品的计算解决效率和竞争力。当理解到「国民远控」向日葵打造的“近程办公”、“近程IT运维”解决方案后,渲巨匠发现能够齐全匹配业务需要,而后在2021年采纳向日葵“企业+至尊版”服务,并疾速实现计划部署,由此做好了应答突发状况的“万全之策”。 值得一提的是,向日葵作为国民级近程管制品牌,于2009年由国内近程连贯SaaS服务商贝锐(Oray)自主研发,被广泛应用于智慧医疗、智能工控、智慧教育、IT互联网、商业地产、连锁批发等各行各业。 一、疫情期间居家近程办公,我的项目交付不受影响 在深圳疫情全员居家隔离时,渲巨匠员工通过向日葵近程控制软件及智能开机设施,实现对办公电脑从近程开机到远控办公的一体化操作,丝毫没有影响日常失常工作进度。 对我的项目开发业务来说,秘密代码不能来到公司本地电脑,Git、SVN等代码托管服务器也通过防火墙进行了隔离,只能应用公司内网电脑拜访。渲巨匠开发者通过向日葵近程到公司电脑,再通过公司电脑拜访外部的开发环境及办公文件,实现了平安近程开发。 而且,向日葵优越的性能保障了近程工作的稳固晦涩,整体带来与办公室办公相差无几的操作体验,助力渲巨匠员工顺利高效进行我的项目开发及交付。 针对服务器运维业务,为了保障租赁给客户应用的高性能渲染集群及数据中心的公有云服务器的失常运行,渲巨匠运维人员能够通过向日葵进行近程零碎装置、调试、环境配置等日常保护。当客户服务器呈现问题,运维人员可通过向日葵一键远控服务器,及时、高效地响应客户需要,满足了渲巨匠高性能GPU 算力平台为客户提供7*24小时服务反对。 通过远控监控核心电脑,渲巨匠管理者还可随时近程查看监控画面,对办公环境、机房、仓库等重要区域现场状况一目了然,防止安全事故的产生。 除了疫情防控期,平时员工差旅期间如果遇到紧急业务须要解决,渲巨匠员工都无惧工夫、地区限度,借助向日葵让集体设施、公司电脑、服务器等各种智能终端实现无缝链接,满足在任何工夫、任何地点、任何设施上平安、高效地发展工作。 二、近程租赁高性能GPU服务器,拓展业务新模式 渲巨匠领有自建公有云机房、机柜数量达2000多台,为客户提供高性能GPU及云存储资源。 为了拓展服务形式,满足客户灵便、短期租赁GPU资源的需要,渲巨匠借助向日葵开拓“近程租赁”业务,帮忙客户疾速解决本地主机GPU瓶颈。应用上,渲巨匠只需提前为客户部署好业务环境,通过向日葵将服务器受权分享给客户应用,实现近程“云渲染”,文件随时渲染随时下载应用,GPU租赁工夫准确到分钟。 渲巨匠携手向日葵的翻新业务模式,充分发挥高性能资源优势,极大晋升了业务需要,实现GPU租赁及渲染服务的拓展降级。渲巨匠始终不忘初心,砥砺前行,致力成为一家以高新技术为外围、极具影响力的 GPU 算力服务品牌。

July 6, 2022 · 1 min · jiezi

关于深度学习:MegEngine-Inference-卷积优化之-Im2col-和-winograd-优化

作者:于雄雄 陈其友 | 旷视 MegEngine 架构师背景在 CV 畛域中,卷积计算是裁减像素的感触野的无效办法,模型大多数的计算量都是卷积操作奉献的。因而在 CV 模型的推理性能优化中,最重要的一项工作是对卷积的优化。MegEngine 在长期的工业界实际和反馈的根底上总结得出卷积优化的根本办法有: 间接卷积计算优化该办法的计算过程为逐通道进行卷积滑窗计算并累加,该优化办法对卷积的参数敏感,为了达到最优的性能,会依据各个卷积参数别离进行 kernel 优化,通用性弱,然而在 Depthwise 的卷积中却是最高效的办法。 FFT 卷积计算优化依据卷积的性质,利用傅立叶变换能够将卷积转换为频域上的乘法,在频域上的计算对应乘法,再应用傅立叶变换逆变换,就能够失去卷积对应的计算结果。该办法应用高性能的傅立叶变换算法,如 FFT,能够实现卷积计算的优化,算法性能齐全取决于傅立叶变换的性能以及相应卷积参数。 Im2col+matmul 卷积计算优化因为卷积计算中有大量的乘加运算,和矩阵乘具备很多类似的特点,因而该办法应用 Im2col 的操作将卷积运算转化为矩阵运算,最初调用高性能的 Matmul 进行计算。该办法适应性强,反对各种卷积参数的优化,在通道数稍大的卷积中性能根本与 Matmul 持平,并且能够与其余优化办法造成互补。 Winograd 卷积计算优化Winograd 办法是依照 Winograd 算法的原理将卷积运行进行转变,达到缩小卷积运算中乘法的计算总量。其次要是通过将卷积中的乘法应用加法来替换,并把一部分替换进去的加法放到 weight 的提前解决中,从而达到减速卷积计算的目标。Winograd 算法的优化局限为在一些特定的罕用卷积参数才反对。 因为 direct 卷积能够间接由公式得来,而 FFT 卷积对于以后业界用到的各种参数的卷积,其性能劣势远没有其余优化办法显著,对于这两者本文不做具体开展。这里次要讲述 Im2col 和 Winograd 算法的实现以及优化办法。 Im2col+Matmul 优化Im2col 算法简介Im2col+Matmul 办法次要包含两个步骤: 应用 Im2col 依照卷积核的须要将输出矩阵开展一个大的矩阵,矩阵的每一列示意卷积核须要的一个输出数据。应用下面转换的矩阵进行 Matmul 运算,失去的数据就是最终卷积计算的后果。 具体 Im2col 的步骤如上图所示: 将输出数据依照卷积窗进行开展并存储在矩阵的列中,多个输出通道的对应的窗开展之后将拼接成最终输入 Matrix 的一列。以卷积的 stride 为步长开展后续的卷积窗并存在 Matrix 的下一列中。实现 im2col 的操作之后会失去一个输出矩阵,卷积的 weights 也能够转换为一个矩阵,此时对 weights 的矩阵和 Im2col 的输入矩阵进行 Matmul 计算,就能够失去最终的卷积计算结果。 ...

June 23, 2022 · 3 min · jiezi

关于深度学习:OneFlow源码阅读4tensor类型体系与local-tensor

tensor和op是神经网络模型最根本的组件:op是模型的节点,tensor是连贯节点的边。 然而,构建一个tensor并不仅仅是结构一个对象那么简略,至多要思考上面这些问题: 要反对节点本地的local tensor,以及分布式的global tensor。要反对eager和lazy执行模式。要反对不同的数据类型,包含float、double、int等。要反对不同设施。1 创立tensor的办法从init.py看,有两个办法能够创立tensor对象,一个是Tensor,另一个是tensor。这两种形式最终都会通过PyFunction转发到特定的Functor。 1.1 Tensor类型Tensor是在tensor.py中引入的,构造函数被绑定为C++的ApiNewTensor,通过RegisterMethods为Tensor注册了一些Python实现的办法(如将get_item/set_item等转发给对应的C++函数),在包初始化时会通过RegisterMethod4Class实现这些办法的注册。 RegisterMethod4Class的调用流程如下: 1.2 tensor函数tensor是一个函数,其绑定定义在tensor_api.yaml.pybind.cpp中,这是构建阶段主动生成的文件。tensor函数间接绑定到PyFunction。 1.3 手动构建tensor的两种形式剖析Tensor和tensor的PyFunction签名,能够通过如下形式结构local tensor,也就是只能在节点外部应用的tensor。其中只有tensor能够指定dtype参数。 import oneflow as flowflow.tensor([[1,2,3],[4,5,6]])flow.tensor([1, 2, 3], dtype=flow.int64)flow.Tensor([[1,2,3],[4,5,6]])# error# flow.Tensor([1, 2, 3], dtype=flow.int64)2 oneflow的tensor类型体系ApiNewTensor函数返回Tensor类型。这是一个抽象类接口。通过其继承和子类的字段蕴含关系,能够失去如下的类图: 以上次要是Tensor相干的接口定义。MirroredTensor即节点内的local tensor,ConsistentTensor即一致性视角的、分布式的global tensor。 Tensor应用了Bridge模式,每个Tensor子类外部有一个TensorImpl字段。TensorImpl相干的类图如下: 3 local tensor的结构咱们以flow.Tensor([[1,2,3],[4,5,6]])为例,看一下Tensor对象结构的过程。次要的流程如下: 在这个例子中,TensorWithDataCtorFunctor最终会调用MakeLocalTensorFromData,次要的逻辑都在这个函数中。其中大量调用Python和numpy的接口,查看PyObject的数据类型,获取Shape和DataType,如果用户没有制订device,默认会设置为CPU设施。 前面次要是调用EmptyFunctor和SwitchCopyMirroredTensorFromUntypedArray。前者为tensor分配内存,后者进行数据拷贝,两个步骤都会通过虚拟机指令实现。 为什么要通过虚拟机指令实现呢?无论是内存资源的调配,还是数据拷贝,CPU和CUDA等不同设施上的操作都不一样。之前探讨Op/Kernel时曾经看到,虚拟机和InstructionType反对不同的设施,所以内存调配和数据拷贝也通过虚拟机执行。 3.1 分配内存:EmptyFunctormatmul和relu(inplace=false时)等操作在执行过程中也会创立output tensor。之前探讨relu时重点关注了op和kernel的计算逻辑,而疏忽了tensor相干的内容。 而这里只须要结构一个tensor对象,不须要其它计算,所以是一个Empty操作,EmptyKernel没有实质性的计算逻辑。 因为是eager模式下的local tensor,EmptyFunctor会进入NaiveInterpret执行。在这里会先结构EagerMirroredTensorImpl和MirroredTensor对象,用于寄存tensor后果。但这只是一个壳子,还没有为tensor的数据调配存储空间。 之后会初始化EagerBlobObject、创立TensorStorage,这样tensor次要的字段根本构建结束。 而后结构指令、提交虚拟机执行。EmptyFunctor是UserOp,最终会进入LocalCallOpKernelUtil: Compute,其中AllocateOutputBlobsMemory实现内存分配任务。 EmptyFunctor的调用流程如下: AllocateOutputBlobsMemory的调用流程如下。BlobDesc::ByteSizeOfBlobBody提供内存size,即elem_cnt * SizeOf(data_type。CPU环境下,CpuAllocator通过aligned_alloc申请内存资源。 3.2 拷贝数据:SwitchCopyMirroredTensorFromUntypedArraySwitchCopyMirroredTensorFromUntypedArray其实是MAKE_SWITCH_ENTRY宏开展后的函数名。宏开展后的代码如下。理论会调用CopyMirroredTensorFromUntypedArray。 template<typename... Args>static Maybe<void> SwitchCopyMirroredTensorFromUntypedArray( const std::tuple<DataType>& switch_tuple, Args&& ... args) { static const std::map<std::tuple<DataType>, std::function<Maybe<void>(Args && ...)>> case_handlers { {SwitchCase(DataType::kFloat), [](Args&&... args) { return CopyMirroredTensorFromUntypedArray<float>(std::forward<Args>(args)...); }}, // ... }; return case_handlers.at(switch_tuple)(std::forward<Args>(args)...);};数据拷贝的调用流程如下: ...

June 15, 2022 · 1 min · jiezi

关于深度学习:一个算子在深度学习框架中的旅程

撰文|赵露阳 算子即Operator,这里简称op。op是深度学习的根底操作,任意深度学习框架中都蕴含了数百个op,这些op用于各种类型的数值、tensor运算。 在深度学习中,通过nn.Module这样搭积木的形式搭建网络,而op就是更根底的,用于制作积木的配方和原材料。 譬如如下的一个demo网络: import oneflow as torch class TinyModel(torch.nn.Module): def __init__(self): super(TinyModel, self).__init__() self.linear1 = torch.nn.Linear(100, 200) self.activation = torch.nn.ReLU() self.linear2 = torch.nn.Linear(200, 10) self.softmax = torch.nn.Softmax() def forward(self, x): x = self.linear1(x) x = self.activation(x) x = self.linear2(x) x = self.softmax(x) return xtinymodel = TinyModel()print('The model:')print(tinymodel)从构造来看,这个网络是由各种nn.Module如Linear、ReLU、Softmax搭建而成,但从实质上,这些nn.Module则是由一个个根底op拼接,从而实现性能的。这其中就蕴含了Matmul、Relu、Softmax等op。 在OneFlow中,对于一个已有op,是如何实现从Python层->C++层的调用、流转和执行过程?本文将以 output = flow.relu(input) 为例,梳理一个op从Python -> C++执行的残缺过程。 首先,这里给出一个流程示意图: 上面,将别离具体从源码角度跟踪其各个环节。 1 Binding这里,binding是指Python和C++代码的绑定。通常,咱们用Python搭建网络,训练模型,调用函数实现各种操作。实际上,这些函数通常在Python层只是一层wrapper,底层实现还是通过C++代码实现的,那么Python -> C++是如何调用的?这就须要用到Python和C++的绑定。 在深度学习框架的实现中,即能够用Python原生的C API,也能够通过pybind11来实现函数绑定,在OneFlow中,二者均有应用,譬如: oneflow/api/python/framework/tensor.cpponeflow/api/python/framework/tensor_functions.cpp中波及到的 tensor.xxx 办法都是通过Python C API实现了函数绑定; ...

June 14, 2022 · 7 min · jiezi

关于深度学习:基于自动编码器的赛车视角转换与分割

本篇文章将介绍如何将赛道的图像转换为语义宰割后鸟瞰图的轨迹。 如下所示,输出图像为 输入: 总结来说咱们的工作是获取输出图像,即后方轨道的前置摄像头视图,并构建一个鸟瞰轨道视图,而鸟瞰轨道视图会宰割不同的色彩示意赛道和路面的边界。 仅仅从输出图像中提取出对于走向的信息是相当艰难的,因为将来的许多轨道信息被压缩到图像的前20个像素行中。鸟瞰摄像头可能以更清晰的格局表白对于后方赛道的信息,咱们能够更容易地应用它来布局汽车的行为。 在失常行驶时拍摄鸟瞰图是十分难实现的,所以如果咱们能够应用前置摄像头的图像重建这些鸟眼图像,就能让咱们用更清晰信息来进行门路的布局。另一个益处是能够升高维度,无效地将整个图像示意为一组32个数字,这比整个图像占用的空间少得多。并且如果还能够应用这种低维数据作为强化学习算法的察看空间。 本文中利用一种叫做变分主动编码器(VAEs)的工具来帮忙咱们实现这项工作。简略地说,咱们把图像压缩到32维的潜在空间,而后重建咱们宰割的鸟瞰图。本文开端的PyTorch代码显示了残缺的模型代码。 为了训练这一点,咱们从前置摄像头和鸟类摄像头收集了一系列图像。而后用编码器进行编码,而后应用全连贯的层将维度升高到指标大小,最初应用解码器用一系列反卷积层重建图像。 后果如下所示: 尽管咱们能够在重建中看到一些噪声,但它能够很好地捕捉到整体曲线。代码如下: import cv2import tqdmimport numpy as npimport torchimport torch.nn as nnimport torch.nn.functional as Fclass BEVVAE(nn.Module): """Input should be (bsz, C, H, W) where C=3, H=42, W=144""" def __init__(self, im_c=3, im_h=95, im_w=512, z_dim=32): super().__init__() self.im_c = im_c self.im_h = im_h self.im_w = im_w encoder_list = [ nn.Conv2d(im_c, 32, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.Conv2d(32, 64, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.Conv2d(64, 128, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.Conv2d(128, 256, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.Conv2d(256, 512, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.Flatten(), ] self.encoder = nn.Sequential(*encoder_list) self.encoder_list = encoder_list sample_img = torch.zeros([1, im_c, im_h, im_w]) em_shape = nn.Sequential(*encoder_list[:-1])(sample_img).shape[1:] h_dim = np.prod(em_shape) self.fc1 = nn.Linear(h_dim, z_dim) self.fc2 = nn.Linear(h_dim, z_dim) self.fc3 = nn.Linear(z_dim, h_dim) self.decoder = nn.Sequential( nn.Unflatten(1, em_shape), nn.ConvTranspose2d( em_shape[0], 256, kernel_size=4, stride=2, padding=1, output_padding=(1, 0), ), nn.ReLU(), nn.ConvTranspose2d(256, 128, kernel_size=4, stride=2, padding=1, output_padding=(1, 0)), nn.ReLU(), nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2, padding=1, output_padding=(1, 0)), nn.ReLU(), nn.ConvTranspose2d( 64, 32, kernel_size=4, stride=2, padding=1, output_padding=(1, 0) ), nn.ReLU(), nn.ConvTranspose2d(32, im_c, kernel_size=4, stride=2, padding=1, output_padding=(1, 0)), nn.Sigmoid(), ) def reparameterize(self, mu, logvar): std = logvar.mul(0.5).exp_() esp = torch.randn(*mu.size(), device=mu.device) z = mu + std * esp return z def bottleneck(self, h): mu, logvar = self.fc1(h), self.fc2(h) z = self.reparameterize(mu, logvar) return z, mu, logvar def representation(self, x): return self.bottleneck(self.encoder(x))[0] def encode_raw(self, x: np.ndarray, device): # assume x is RGB image with shape (bsz, H, W, 3) p = np.zeros([x.shape[0], 95, 512, 3], np.float) for i in range(x.shape[0]): p[i] = x[i][190:285] / 255 x = p.transpose(0, 3, 1, 2) x = torch.as_tensor(x, device=device, dtype=torch.float) v = self.representation(x) return v, v.detach().cpu().numpy() def squish_targets(self, x: np.ndarray) -> np.ndarray: # Take in target images and resize them p = np.zeros([x.shape[0], 95, 512, 3], np.float) for i in range(x.shape[0]): p[i] = cv2.resize(x[i], (512, 95)) / 255 x = p.transpose(0, 3, 1, 2) return x def encode(self, x): h = self.encoder(x) z, mu, logvar = self.bottleneck(h) return z, mu, logvar def decode(self, z): z = self.fc3(z) return self.decoder(z) def forward(self, x): # expects (N, C, H, W) z, mu, logvar = self.encode(x) z = self.decode(z) return z, mu, logvar def loss(self, bev, recon, mu, logvar, kld_weight=1.0): bce = F.binary_cross_entropy(recon, bev, reduction="sum") kld = -0.5 * torch.sum(1 + logvar - mu ** 2 - logvar.exp()) return bce + kld * kld_weighthttps://avoid.overfit.cn/post/48f129f8e05242128cc55be13433ad0a ...

June 13, 2022 · 2 min · jiezi

关于深度学习:YOLOX-module-yoloxlayersfastcocoeval-解决方案

YOLOX版本0.3.0在colab上能够失常运行,然而在本地环境上训练进行验证时会报错: AttributeError: module 'yolox.layers.fast_cocoeval' has no attribute 'InstanceAnnotation'解决办法:将文件E:\pythonFiles\YOLOX\yolox\evaluators\coco_evaluator.py中270行左右的 try: from yolox.layers import COCOeval_opt as COCOeval except ImportError: from pycocotools.cocoeval import COCOeval logger.warning("Use standard COCOeval.")更改为: try: # from yolox.layers import COCOeval_opt as COCOeval from pycocotools.cocoeval import COCOeval except ImportError: from pycocotools.cocoeval import COCOeval logger.warning("Use standard COCOeval.")具体起因不详,YOLOX后续兴许会更新?

June 7, 2022 · 1 min · jiezi

关于深度学习:卷积神经网络中的傅里叶变换1024x1024-的傅里叶卷积

卷积神经网络 (CNN) 失去了宽泛的利用并且事实证明他是十分胜利的。然而卷积的计算很低效,滑动窗口须要很多计算并且限度了过滤器的大小,通常在 [3,3] 到 [7,7] 之间的小核限度了感触野(最近才呈现的大核卷积能够参考咱们以前的文章),并且须要许多层来捕捉输出张量的全局上下文(例如 2D 图像)。图像越大小核的的体现就越差。这就是为什么很难找到解决输出高分辨率图像的 CNN模型。 有一种办法能够将核大小扩大到 [1024,1024] 及以上,并且这种办法能够减少给定输出分辨率的核大小并且对推理工夫简直没有影响,还能够大幅升高特色图的空间维度,并且不会失落简直任何信息,你置信吗? 所有这些特色都基于一个简略的数学性质:傅里叶变换的卷积定理(精确地说是相互关定理) 卷积的问题让咱们回顾一些基础知识。卷积是利用于两个函数的数学运算。让咱们从一维案例开始: 间断一维卷积 离散一维卷积 换句话说:取两个信号,保留一个而后围绕坐标轴翻转另一个信号。将固定信号上的翻转信号从负无穷挪动到正无穷(或直到信号的所有非零局部都已重叠)。对于每一步计算元素乘积并对所有值求和。后果值就是此步骤的卷积后果。 然而为什么我之前提到了相互关呢?那是因为卷积和相互关实际上是相以同的形式计算的,惟一的区别是过滤器(核)被翻转了。这由不同的符号示意: TensorFlow 和 PyTorch 实际上是在计算输出信号和可学习卷积核的相互关,而不是卷积自身。因为卷积核是由网络学习的,因而卷积核是否翻转并不重要。网络会本人弄清楚什么是最好的后果。框架甚至能够节俭一些计算而不进行翻转操作。然而有一个区别,如果卷积核是固定的,当你加载一个训练好的模型时,应该晓得它是应用相互关还是卷积训练的,因为须要晓得最终是否翻转的权重。 下面说的次要总结为两个问题: 计算输入序列中的单个点须要进行大量计算。输出信号越大(即图像的分辨率越高),核必须更频繁地挪动,因而须要更多的计算。同样实用于大核。更多的计算意味着更多的内存和更大的计算提早。CNN在较低的输出分辨率和更小的过滤器。更少的像素意味着更少的细节,更小的过滤器会导致更小的感触野。网络须要有多个间断的卷积层,以减少感触野。网络变得更深,这再次在训练期间带来了新的挑战。 二维离散傅里叶变换从数学上讲,工夫变量 t 的实数或复数函数 x(t) 的傅里叶变换是实数频率变量 f 的复数函数 X(f): 也能够说咱们将信号从时域投影到频域。通过这样做能够受害于傅里叶变换的非凡性质,即卷积定理和相干定理。 卷积定理 相互关定理 这些概念十分重要也是本文的根底:时域中的卷积/相干对应于频域中的简略元素乘法。但这有什么用的呢?如前所述,卷积须要很多计算,尤其是对于大像素图像和大核。它的复杂性与序列长度成二次方,即 O(N²)。依据卷积定理,咱们只须要对变换后的输出和变换后的核进行逐元素的乘法。并且计算傅里叶变换的高效算法,即疾速傅里叶变换 (FFT)可将复杂度升高到 O(N log(N))。而且更重要的是只有核比输出信号小,那么计算的复杂度就是恒定的。所以核大小是 [3,3] 还是 [1024, 1024] 并不重要。 傅里叶变换也实用于实数或复数离散信号 x[k],它调配实变量 n 的复数离散信号 X[n]: 一维卷积 二维卷积 离散傅里叶变换 (DFT) 是用于数字信号处理,而计算机以离散值存储信号。所以在应用 DFT 时,咱们须要记住: ...

June 7, 2022 · 4 min · jiezi

关于深度学习:5GAI云计算什么是云渲染

随着5G、AI、云计算、云服务等等资讯来袭,咱们发现云渲染被更多人通晓和关注,通过收集和调研云渲染业内的相干信息和模式,尽量用最扼要的形式为大家解答到底什么是云渲染。 在此之前,咱们简略回顾什么是渲染和云计算。 渲染是CG的最初一道工序(当然,除了后期制作)也是最终使你图像合乎你的3D场景的阶段。渲染有多种软件,如:各CG软件自带渲染引擎,还有诸如RenderMan等。建筑设计、动画制作等利用3DSMAX、MAYA等软件制作好模型、动画帧之后,将所设计内容利用软件自身或者辅助软件(lightscape、vray等)制作成最终效果图或者动画的过程。 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络拜访, 进入可配置的计算资源共享池(资源包含网络,服务器,存储,应用软件,服务),这些资源可能被疾速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。 所以,云渲染就是依靠于云计算的一种云端服务。 用户将本地工作提交到近程服务器,通过近程的计算机集群资源进行运算操作,将上传的工作进行云端渲染后再返回本地,由用户下载提取。 这期间,本地电脑资源被释放出来,能够关机也能够实现别的工作。关键在于,云渲染除了保障渲染速度和品质,还反对多任务同时进行,一次就将我的项目中的几十个子工作实现,极大进步工作效率。 云渲染的4个个性: 1、多任务同时减速渲染,效率更高 云渲染平台领有宏大的云计算资源,这是用户本地繁多电脑无法比拟的。 打个比方,同一个场景工作,咱们本人渲染用本地1台电脑渲染,而云渲染平台就用10台、20台计算机一起给你减速渲染。更重要的是,云渲染反对多个工作同时渲染,这才是要害。 假如一个我的项目几十个子工作,就指着1台电脑,花了好几天才渲染实现,而云渲染一次性将几十个工作同时渲染,可能几个小时就解决,大大提高工作效率。 特地是在极其情况,比方须要紧急出图或者改图给客户或老板的时候,本地单台渲染工夫基本来不及,而用云渲染能够疾速解决问题,防止单子黄掉。 2、平台劣势——专业性、技术性 云渲染目前曾经成为一个产业,次要服务于影视动画、建筑设计效果图体现等行业,波及到建模、灯光、渲染等等专业知识技术畛域,从业者泛滥,需要也形形色色。无论是插件版本的降级匹配,渲染的容错率等等都有技术人员进行测试和总结。 以软件、工具为例,截至目前3d max迭代到2020版,渲染器VRay迭代到4.3版、CR迭代到5.0版。而建模软件应用时用了不同版本的匹配,场景利用了不同的材质和模型,都会对渲染后果产生不同的影响。 在呈现问题时,专业性强的平台劣势就体现进去。像渲染100平台的售后客服间接是让技术人员对接的,3D max中遇到的操作问题、渲染时的伽马设置,等等技术问题都能找方法解决。简而言之,一群人给你想方法总好过一个人焦急对吧。 3、解放本地资源 咱们晓得,渲染有时候会占用你本地所有的电脑资源,不仅速度慢、卡,还有很多不易觉察的隐形老本。比方机器应用的损耗,有的散热不好的机器还会被烧,极大损耗本地电脑寿命,实际上减少了咱们的老本。 而当你的工作胜利提交云渲染进行渲染时,你的3d max软件是能够敞开,本地电脑也是能够关机的。把工作交给云渲染,本地电脑就解放出来,升高损耗的同时,还能够持续建模、画图,实现别的工作。 4、按需付费 云渲染的免费规范是依照使用者抉择的计算资源多少、时长来计算的。云渲染平台提供的计算资源越多,渲染速度越快,其费用价格天然越高。 云渲染平台推出了不同的高下线程提供用户抉择,满足不同用户对速度、费用的各种需要。 有一说一,用云渲染的费用会比本地电脑本人渲染要高一些,而且是显性收入。毕竟云渲染自身的老本就蕴含了云端服务器资源及运维老本、平台经营老本在外面。不过具体掂量这个费用是否值得,也要联合本身渲染的紧迫性和本地机器损耗的隐形收入。 综上,云渲染作为服务产业为越来越多的行业和工种带来便当,为服务付费也是合乎情理的,毕竟它切实进步了效率,起到一种正向疏导和促成的作用。而将来,云渲染行业在5G、云计算、云存储等科技不断进步倒退的背景下,也会有更新更多的倒退。

June 7, 2022 · 1 min · jiezi

关于深度学习:论文推荐TResNet改进ResNet-实现高性能-GPU-专用架构并且效果优于-EfficientNet

TResNet: High Performance GPU-Dedicated Architecture 来自阿里的达摩院,公布于2021 WACV,该论文引入了一系列架构批改,旨在进步神经网络的准确性,同时放弃其 GPU 训练和推理效率。 论文首先探讨了面向 FLOP 的优化引起的瓶颈。而后倡议更好地利用 GPU 构造的设计。最初引入了一个新的 GPU 专用模型,称其为 TResNet。 动机 上表将 ResNet50 与风行的较新架构进行了比拟,具备类似的 ImageNet top-1 精度——ResNet50-D [11]、ResNeXt50 [43]、SEResNeXt50 (SENet+ResNeXt) [13]、EfficientNet-B1 [36] 和 MixNet-L (MixConv)[37]。与 ResNet50 相比,新提出的网络中 FLOP 缩小和新技巧的应用并未转化为 GPU 吞吐量的进步。 最新的一些网络,如 EfficientNet、ResNeXt 和 MixNet (MixConv) 宽泛应用深度和 1×1 卷积,它们提供的 FLOP 显著少于 3×3 卷积。然而GPU 通常受限于内存拜访老本而不是计算数量,尤其是对于低 FLOP 层。ResNeXt 和 MixNet (MixConv) 等网络宽泛应用了多路径。对于训练这会创立大量须要存储以进行反向流传的激活图,占用大量的显存必定会减小批量大小,从而升高 GPU 吞吐量。 而TResNet 的提出旨在实现高精度的同时放弃高 GPU 利用率。 TResNet:ResNet 的改良和变动蕴含三个变体,TResNet-M、TResNet-L 和 TResNet-XL,它们仅在深度和通道数上有所不同。 SpaceToDepth Stem ...

June 4, 2022 · 2 min · jiezi

关于深度学习:深度学习与CV教程9-典型CNN架构-AlexnetVGGGooglenetRestnet等

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/37本文地址:http://www.showmeai.tech/article-detail/268申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频能够在 这里 查看。更多材料获取形式见文末。 引言ShowMeAI在文章 深度学习与CV教程(5) | 卷积神经网络 中曾经给大家介绍过CNN的外围结构组件,在本篇中,咱们给大家介绍目前最宽泛应用的典型卷积神经网络构造。包含经典构造(AlexNet、VGG、GoogLeNet、ResNet)和一些新的构造(Network in Network、Resnet改良、FractalNet、DenseNet等) 对于典型CNN构造的具体常识也能够参考ShowMeAI的 深度学习教程 | 吴恩达专项课程 · 全套笔记解读 中的文章 经典CNN网络实例详解本篇重点经典CNN架构 AlexNetVGGGoogLeNetResNet其余构造 NIN(Network in Network)ResNet改良FractalNetDenseNetNAS1.经典架构1.1 AlexNet首先回顾一下在数字辨认畛域有巨大成功的 LeNet-5,该网络结构为 [CONV-POOL-CONV-POOL-FC-FC]。卷积层应用 \(5 \times 5\) 的卷积核,步长为 \(1\);池化层应用 \(2 \times 2\) 的区域,步长为 \(2\);前面是全连贯层。如下图所示: 而2012年的 AlexNet 是第一个在 ImageNet 大赛上夺冠的大型 CNN 网络,它的构造和 LeNet-5 很类似,只是层数变多了——[CONV1-MAX POOL1-NORM1-CONV2-MAX POOL2-NORM2-CONV3-CONV4-CONV5-Max POOL3-FC6-FC7-FC8],共有5个卷积层、3个池化层、2个归一化层和三个全连贯层。如下图所示: 输出:\(227 \times 227 \times 3\) 的图片;CONV1:应用 96 个 \(11 \times 11\) 大小的卷积核,步长为 \(4\),因为 \((227-11)/4+1=55\),所以输入的尺寸为 \(55 \times 55 \times 96\),共有 \(96 \times 11 \times 11 \times 3\) 个参数;POOL1:应用 \(3 \times 3\)的池化区域,步长为 \(2\),因为 \((55-3)/2+1=27\),所以输入为 \(27 \times 27 \times 96\),没有参数;NORM1:归一化后依然是 \(27 \times 27 \times 96\);CONV2:应用 256 个 \(5 \times 5\) 的卷积核,stride \(1\)、pad \(2\) ,\((27+2 \times 2-5)+1=27\),所以输入为 \(27 \times 27 \times 256\);POOL2: \(3 \times 3\) filters,stride \(2\) ,\((27-3)/2+1=13\),所以输入为 \(13 \times 13 \times 256\);NORM2:\(13 \times 13 \times 256\);CONV3:384个 \(3 \times 3\) filters,stride \(1\), pad \(1\),输入 \([13 \times 13 \times 384]\(;CONV4:384个 \(3 \times 3\) filters,stride \(1\), pad \(1\),输入 \([13 \times 13 \times 384]\(;CONV5:256个 \(3 \times 3\) filters,stride \(1\), pad \(1\),输入 \([13 \times 13 \times 256]\(;POOL3: \(3 \times 3\) filters,stride \(2\) 输入为 \([6 \times 6 \times 256]\(;FC6:\(4096\) 个神经元,输入为 \([4096]\(;FC7:\(4096\) 个神经元,输入为 \([4096]\(;FC8:\(1000\) 个神经元,(class scores)输入为 \([1000]\(。之所以在上图中分成高低两个局部,是因为过后的GPU容量太小,只能用两个来实现。还有一些细节是: ...

June 3, 2022 · 5 min · jiezi

关于深度学习:使用-Numpy-创建自己的深度学习框架

本文并不是为了造轮子,只是通过手动实现来介绍建根本深度学习框架所需组件和步骤 Numpy 曾经提供了基本上所有须要的计算操作,咱们须要的是一个反对主动微分(autograd)的框架来计算多个操作的梯度,这是模块化办法构建神经网络层的标准化办法,通过主动微分的框架,咱们能够将优化器、激活函数等组合在一起用于训练神经网络。 所以一个根本的深度学习框架的组件总结如下: 一个autograd零碎神经网络层神经网络模型优化器激活函数数据集接下来,咱们将逐个介绍这些组件,看看它们的作用以及如何应用他们,这里将应用 gradflow(这是一个集体开源教育 autograd 零碎)因为它反对深度神经网络,并且和 PyTorch API基本一致。 Autograd零碎这是最重要的组成部分,它是每个深度学习框架的根底,因为零碎将跟踪利用于输出张量的操作,并应用损失函数针对于每个参数的梯度来更新模型的权重。这里的一个必要条件是这些操作必须是可微的。 咱们的 autograd 零碎的根底是变量,通过为咱们须要的操作实现 dunder 办法(dunder 办法 :Python中以双下划线结尾的非凡办法),咱们将可能跟踪每个实例的父实例是什么以及如何为它们计算梯度。为了帮忙进行一些操作,咱们将应用一个 numpy 数组来保留理论数据。 变量的另一个重要局部是反向流传办法,这将计算以后实例绝对于计算图中每个父类先人的梯度。在具体步骤中,咱们将应用父级的援用和原始操作中嵌入的梯度函数来更新 grad 成员字段。 以下代码片段蕴含主变量类初始化函数、增加操作的 dunder 办法和反向流传办法: class Variable: def __init__( self, data: np.ndarray, parents: Tuple[Variable] = None, requires_grad: bool = False ) -> None: self.data = data self.grad: Union[int, None] = .0 if requires_grad else None self.parents = parents or () self._requires_grad = requires_grad self._back_grad_fn = lambda: None def __add__(self, other: Variable) -> Variable: if not isinstance(other, Variable): raise TypeError("The second operator must be a Variable type") result = self.data + other.data variable = Variable(result, parents=(self, other)) if any((parent.requires_grad for parent in variable.parents)): variable.requires_grad = True def _back_grad_fn(): self.grad += variable.grad other.grad += variable.grad variable._back_grad_fn = _back_grad_fn return variable def backward(self, grad: Variable | np.ndarray = None) -> None: if grad is None: grad = np.array([1]) self.grad = grad variable_queue = [self] while len(variable_queue): variable = variable_queue.pop(0) variable._back_grad_fn() variable_queue.extend(list(variable.parents))s在 _back_grad_fn 中还须要留神两件事,1、咱们须要将梯度增加到现有值,因为须要累积它们以防计算图中有多个门路达到该变量,2、还须要利用子节点的梯度,如果您想理解无关主动微分和矩阵微积分的更多详细信息,咱们会在后续的文章中具体介绍。 ...

June 3, 2022 · 3 min · jiezi

关于深度学习:云服务器平台的架构需要满足哪些需求

云服务器,建设在云计算平台上,企业(Enterprise)只有对云服务器的架构形式以及该架构带来的价值造成清晰的了解,能力更好地适配云计算利用(application)。 对云服务商来说,岂但要思考(consider)云计算的技术个性(characteristic]),更要紧密结合云计算用户需要,能力设计(Design)出更高密度、更高效能比、更低成本(Cost)、更易治理的云服务器。为实现这些目标,就不可避免地须要颠覆传统(chuántǒng)架构,赋予云服务器平台更高的技术性和更紧密的设计。 一、云服务器的架构须要满足哪些需要? 云服务器平台的构建,须要思考现有物理集中的IT资源集群,并以此为根底实现虚拟化,建设起面向未来需要、面向倒退的动静计算(calculate)资源分配治理和服务自动化平台,这种云平台须要反对弱小的延展性和可扩充性,从而帮忙用户以最小的老本获取高度伸缩(伸出和缩进比喻在肯定限度内的变通)、高可用的计算资源。 因而,云计算平台须要有资源池为其提供能力输入,这种能力包含计算能力、存储能力和网络能力,为了将这些能力调度到其所须要的中央,云计算平台还须要对能力进行调度治理,部署动静迁徙、负载平衡策略(strategy),这些能力均是由虚拟化资源池提供的。 同时,还须要搭配云监控、云防护等措施(制订针对问题的解决办法)保障整个云平台的平安和稳固。 二、云服务器的架构是什么样的? 云服务器是基于规模化的物理服务器集群,每个集群节点被部署在骨干数据中心,可独立提供计算、存储、带宽等互联网基础设施服务。 便宜的云主机是一种相似VPS主机的虚拟化技术,VPS是采纳虚构软件,VZ或VM在一台主机上虚构出多个相似独立主机的局部,可能实现单机多用户,每个局部都能够做独自的操作系统,治理办法同主机一样。 云服务器平台的架构须要满足哪些需要? 云服务器的物理架构,由存储服务器集群、计算服务器集群、基础架构治理服务器和网络(Network)交换机组成。 5Jn)![上传中...]() 其中,存储服务器集群构建虚构资源池,具备超大容量(Capacity),为节点内的云虚拟机提供逻辑(Logic)磁盘存储、非构造数据存储以及整合备份服务;计算服务器集群,通过虚拟化技术整合,由管制平台按需生成、调配计算资源;治理服务器,采取双机热备的形式,对整个节点的所有计算服务器、共享存储、网络进行治理,同时对外提供治理整个节点的API;网络交换机,负责管理网段、公网交换网段、外部交换网段、存储网段等。 三、云服务器虚构资源池 在云服务器架构中,虚构资源池是十分重要的概念。云服务器的资源都是从资源池中调配组合而成的。 资源池,是由数十台到数百台甚至数万台服务器跨节点、跨数据中心组成,通过成熟的虚拟化技术和已部署的管理程序,独特治理虚构池中的资源。 虚拟化,就是将规模级的物理资源(CPU、内存、磁盘等)高度整合和自在调配,实现资源的弹性(Elasticity)扩容或缩减,以及疾速地在一直电的前提下实现资源的变动。这就必须要有底层虚拟化技术、SDN的反对。 总之,云服务器的架构是什么样的?总的来说,云服务器平台是将物理资源虚拟化,并实现疾速调度的过程。收费vps特有的应用程序模板,能够疾速地进行批量部署,再加上独立主机的品质和极低的的老本是中小型企业进行ASP利用的首选平台。 云服务器的架构演进对于用户而言是不可见的,但其中重构平台架构的技术(Technology)含量却十分高,其中包含某些先进性能的实现以及前瞻性的设计(Design)。 云服务器架构的稳定性(Thestabilityof)间接关系到云服务器的长期继续稳固运行,因而企业技术主管在抉择云服务器时通常会理解各大云服务商的云平台架构和云计算(calculate)规模,兼容并蓄,最终达到帮忙企业改良IT基础架构,实现商业(Business)价值的目标。

June 1, 2022 · 1 min · jiezi

关于深度学习:影视作品制作中不可或缺的技术支撑云渲染技术

近年来,云计算曾经成为影视作品制作中不可或缺的技术撑持,像《复仇者联盟》、《变形金刚》系列、《头等玩家》、《盗梦空间》等高品质电影中高渲染量的艰巨工作,只有具备超强计算能力的云渲染技术能力顺利解决。 云渲染的模式与惯例的云计算相似,行将3D程序放在近程的服务器中渲染,服务器依据指令执行对应的渲染工作,渲染后果画面则被传送回用户终端中加以显示。简略来说就是将本地电脑上设置好参数的模型通过相应利用,传到云端进行渲染,再把渲染后果传回本人的电脑。 随着倒退程度和市场生产需要的一直进步,除了影视制作外波及的设计行业也对视觉效果都提出了更高的要求,使得渲染行业受到热捧。但目前渲染行业却面临计算规模大,建设保护老本高,周期长等行业挑战: 渲染电脑配置和带宽要求高 渲染的速度次要和电脑的CPU性能无关,如果CPU性能太低,渲染速度就会很慢,电脑在渲染的同时是没法做其余事件,电脑总体资源利用率很低。而且上传模型工夫与网速(带宽)严密相连,接入速度高达100Mbps以上能力根本满足云渲染的速度。 渲染消耗工夫周期长 顶级配置的硬件须要间断运行12小时甚至更长时间能力渲染出1帧画面,而像是电影1秒的工夫至多有24帧。那么惯例的电脑配置渲染一张效果图须要多少工夫呢?如果用一台电脑渲染须要10个小时,则云渲染用10台雷同配置的电脑同时渲染,渲染时长能够缩短到约1个小时。如果想要压缩渲染工夫,晋升渲染效率,只有减少硬件/配置数量是一个抉择。 企业渲染建设保护老本高 如果企业想要建设公有云渲染,则须要购买大量高配置的IT设施。一般中低配置物理服务器的至多破费5-10万,高配置设施的价格甚至高达几十万。 后期投入过高老本,IT资源洽购,部署周期长,而且须要大量物理机监控、告警治理保护复杂度高,在保护方面企业须要投入大量人力物力。

May 31, 2022 · 1 min · jiezi

关于深度学习:算法工程师老潘总结的一些经验

算法工程师老潘总结的一些教训前一段时间始终在优化部署模型。这几天终于来了需要,又要开始重操训练一些新模型了。趁着这次机会总结了下之前的一些训练模型的笔记,可能比拟杂,抛砖引玉!当然这是不齐全统计的教训,除了训练局部,还有很多部署的坑没有写。 算法工程师50%的工夫是和数据打交道,有时候拷贝数据(别离从多个文件夹拷贝到某一文件夹);有时候筛选数据(过滤掉一些品质不好的数据);有时候把数据换个名字、加个前缀(为了后续训练的时候辨别数据的个性,比方多尺度、多种图像增强策略)等等,这些工作可能一个月要反复n屡次,因而最好总结起来;能够用Python或者shell脚本来解决,或者用jupyter notebook存本人罕用的文件解决代码。如果你不分明拿到数据的起源和牢靠度,能够先用 find ./ -size -1k -exec rm {} \ 等命令简略过滤一下,方才这个命令是扫描1k(或者其余值)以下的损坏图像并删除掉,当然也能够设置其余的参数。很多时候给你的图不肯定都是失常的图,最好提前筛一遍,要不然后续解决很麻烦。并不所有的数据都曾经有标注信息,如果收集了一批数据要拿去标注,正好公司也有标注人力,能够尝试将这批数据打上预标框让他们再去调整或者补充标框,这样效率更高些。至于预标框怎么打,能够先让模型训练一小批数据,训练个召回率高的小模型,而后预测打框就能够,也能够用一些老模型打框;不过有一个景象比拟神奇,标注人员在标注的时候,对于有预标框的数据,标注的品质反而变差了,尽管速度上来了,这是因为大部分标注人员不想调整,这时候须要你好好监督一下,要不然后续模型精度上不去大概率就是数据的问题。有时候模型的指标不仅仅看准招,当模型给他人提供服务的时候,要看PM那边怎么对待这个模型输入后果在理论场景中的应用成果;对于检测模型最终的输入分数,最终给到应用方的框个别是依据你获得分数阈值来设,设的低一点,那么框就多一点(召回率高),设的高一点,那么框就少一点(准确度高);不同形式不同场景设置不同的阈值有不同的成果,说白了模型成果好坏很大一部分依赖于场景;这个状况在理论我的项目中其实挺常见的,说白了loss也好, accuracy也好,都是很全面且软弱的评估指标。与模型构造以及评测的数据分布都有很大关系,具体如何抉择模型应该与利用场景强相干。当模型遇到badcase的时候,简略粗犷地减少模型的容量成果可能并不好;因为这个badcase大概率和场景强相干,这种状况下最好就是收集badcase,可能会有应用你模型的人给你提供badcase,但这种效率比拟低,看提供者的情绪or紧急水平;你能够间接捞一大批模型应用场景的query而后应用以后模型做检测,收集相应类别置信度比拟低的case,而后筛选进去;测试集很重要,测试集个别不是从训练集中切分进去的,从训练集中切分进去的是验证集;验证集个别用于判断这个模型有没有过拟合、有没有训练走火入魔啦,如果想用验证集来判断模型好坏的话,往往并不能代表模型理论的程度;最好是有测试集,而且测试集是和模型采集批次不同训练模型的时候比拟靠近实际水平的评估规范;如果没有测试集也能够看训练集的loss大略确定一下,一般来说只有不是demo级别的场景,模型不会轻易过拟合,咱们的训练集往往有很重的图像增强策略,每一个epoch可能图像散布都不一样,这时候其实也能够选取模型model_last。再强调下,loss和准确率不是齐全反比的关系,loss稳定很失常,loss低了不肯定代表模型的mAP高;相同如果loss变高,模型的精度也不肯定差,有可能是loss设的不够好导致局部回升占主导,覆盖了另一部分失常的降落也很失常;相干探讨:https://github.com/thegregyan... 和https://www.zhihu.com/questio...计算检测模型的mAP,理论中在计算的时候是不思考指标框分数阈值的,也就是说咱们会将所有分数大于0的检测框送去计算mAP;但这里要留神,计算mAP是有max_num也就是最大检测出指标个数,依据工作需要可能是100、可能是500也可能是5000等等,当有这个限度的时候,此时框就须要依据分数来排序,取前100、前500或者前5000的框去计算;最初,如果咱们须要可视化后果在图上画框的话,这时候是能够卡阈值的,比方大于0.2分数阈值的要,要不然最终画进去的图会有很多碎框;最初的最初,别忘了NMS!测试转换后的模型是否正确,肯定要保障输出图像的统一;这里的统一指的是输出图像的数值必须截然不同,dif为0才行;一般来说咱们输出的模型的图像范畴是0-1,通道数个别是黑白也就是RGB,不过须要留神这个黑白是否是假彩色(有时候为了传输节俭资源会传灰度图再理论推理的时候变成黑白图,对于某种场景来说,假彩色和真彩色的精度相差不大),输出尺寸也要保持一致,是否须要padding(padding成0或者127或者255,这几种padding形式队对后果影响很大)、须要补成32的倍数、或者须要最大边最小边限度,肯定要保持一致;对于类别,这样测试模型才可能保障准确性。对于模型来说,如果之后思考上线。上线的形式很多种:能够pytorch+flask间接docker上线,也能够尝试libtorch上线,也能够TensorRT上线,当然也能够通过自研框架上线…等等等等。如果这个模型谋求精度,而且是线下某一时间段跑,并不是实时,能够尝试flask+docker的服务;如果这个模型的实时性很高,在设计模型的时候就要思考之后的上线,那就须要思考模型优化以及对应的服务器推理框架了能够尝试TensorRT+triton server;持续老潘的含泪教训,紧接着AI算法工程师的一些含泪教训(一),除了训练模型阶段的留神点,这次更多的是一些部署方面的教训,心愿可能对大家有帮忙。仍然是抛砖引玉,持不同意见的小伙伴欢送留言! 再次强调一下训练集、验证集和测试集在训练模型中理论的角色:训练集相当于老师安排的作业,验证集相当于模仿试卷,测试集相当于考试试卷,做完家庭作业间接上考卷预计大概率考不好,然而做完作业之后,再做一做模仿卷就晓得大体考哪些、重点在哪里,而后调整一下参数啥的,最初真正考试的时候就能考好;训练集中拆分出一部分能够做验证集、然而测试集千万不要再取自训练集,因为咱们要保障测试集的”未知“性;验证集尽管不会直接参与训练,但咱们仍然会依据验证集的体现状况去调整模型的一些超参数,其实这里也算是”学习了“验证集的常识;千万不要把测试集搞成和验证集一样,”以各种模式“参加训练,要不然就是信息泄露。咱们应用测试集作为泛化误差的近似,所以不到最初是不能将测试集的信息泄露进来的。数据好坏间接影响模型好坏;在数据量初步阶段的状况下,模型精度一开始能够通过改模型构造来晋升,加点注意力、加点DCN、加强点backbone、或者用点其余奇妙的构造能够减少最终的精度。然而在前期想要晋升模型泛化能力就须要减少训练数据了,为什么呢?因为此时你的badcase大部分训练集中是没有的,模型没有见过badcase必定学不会的,此时须要针对性地补充badcase;那如果badcase不好补充呢?此时图像生成就很重要了,如何生成badcase场景的训练集图,生成数据的品质好坏间接影响到模型的最终成果;另外图像增强也十分十分重要,咱们要做的就是尽可能让数据在图像增强后的散布靠近测试集的散布,说白了就是通过图像生成和图像增强两大技术模仿理论中的场景。当有两个数据集A和B,A有类别a和b,但只有a的GT框;B也有类别a和b,但只有b的GT框,显然这个数据集不能间接拿来用(没有GT框的a和b在训练时会被当成背景),而你的模型要训练成一个能够同时检测a和b框,怎么办?四种形式:1、训练别离检测a和检测b的模型,而后别离在对方数据集上进行预测帮忙打标签,管制好分数阈值,制作好新的数据集后训练模型;2、应用蒸馏的形式,同样训练别离检测a和检测b的模型,而后利用这两个模型的soft-label去训练新模型;3、批改一下loss,一般来说,咱们的loss函数也会对负样本(也就是背景)进行反向流传,也是有损失回传的,这里咱们批改为,如果以后图片没有类别a的GT框,咱们对于a的损失间接置为0,让这个类别通道不进行反向流传,这样就能够对没有a框的图片进行训练,模型不会将a当成背景,因为模型“看都不看a一眼,也不晓得a是什么东东”,大家能够想一下最终训练后的模型是什么样的呢?4、在模型的最初局部将head头离开,一个负责检测a一个负责检测b,此时模型的backbone就变成了特征提取器。工作中,有很多场景,你须要通过旧模型去给须要训练的新模型筛选数据,比方通过曾经训练好的检测模型A去筛选有类别a的图给新模型去训练,这时就须要搭建一个小服务去实现这个过程;当然你也能够关上你之前的旧模型python库代码,而后回顾一番去找之前的demo.py和对应的一些参数;显然这样是比拟麻烦的,最好是将之前模型总结起来随时搭个小服务供外部应用,因为他人也可能须要应用你的模型去挑数据,小服务怎么搭建呢?间接应用flask+Pytorch就行,不过这个qps申请大的时候会假死,不过毕竟只是筛选数据么,能够适当升高一些qps,离线申请一早晨搞定。目前比拟好使的指标检测框架,无非还是那些经典的、用的人多的、资源多的、部署不便的。毕竟咱们训练模型最终的目标还是上线嘛;单阶段有SSD、yolov2-v5系列、FCOS、CenterNet系列,Cornernet等等单阶段系列,双阶段的faster-rcnn曾经被实现了好屡次了,还有mask-rcnn,也被很多人实现过了;以及最新的DETR应用transformer构造的检测框架,上述这些都能够应用TensorRT部署;其实用什么无非也就是看速度和精度怎么样,是否反对动静尺寸;不过跑分最好的不肯定在你的数据上好,千万千万要依据数据集特点选模型,对于本人的数据集可能成果又不一样,这个须要本人拉下来跑一下;相干模型TensorRT部署资源:https://github.com/grimoire/m...https://github.com/wang-xinyu...再扯一句,其实很多模型最终想要部署,首要难点在于这个模型是否曾经有人搞过;如果有人曾经搞过并且开源,那间接复制粘贴批改一下就能够,有坑他人曾经帮你踩了;如果没有开源代码可借鉴,那么就须要自个儿来了!首先看这个模型的backbone是否有非凡的op(比方dcn、比方senet,当然这两个曾经反对了),构造是否非凡(不仅仅是一般的卷积组合,有各种reshape、roll、window-shift等非凡操作)、后处理是否简单?我转换过最简单的模型,backbone有自定义op,须要本人实现、另外,这个模型有相当多的后处理,后处理还有一部分会参加训练,也就是有学习到的参数,然而这个后处理有些操作是无奈转换为trt或者其余框架的(局部操作不反对),因而只能把这个模型拆成两局部,一部分用TensorRT实现另一部分应用libtorc实现;其实大部分的模型都能够部署,只不过难度不一样,只有肯多想,法子总是有的。转换后的模型,不论是从Pytorch->onnx还是onnx->TensorRT还是tensorflow->TFLITE,转换前和转换后的模型,尽管参数一样构造一样,但同样的输出,输入不可能是齐全一样的。当然如果你输出精度卡到小数点后4位那应该是一样的,然而小数点后5、6、7位那是不可能齐全截然不同的,转换自身不可能是无损的;举个例子,一个检测模型A应用Pytorch训练,而后还有一个转换为TensorRT的模型A`,这俩是同一个模型,而且转换后的TensorRT也是FP32精度,你能够输出一个随机数,发现这两个模型的输入比照,绝对误差和相对误差在1e-4的基准下为0,然而你拿这两个模型去检测的时候,放弃所有的统一(输出、后处理等),最终产生的检测框,分数高的完全一致,分数低的(比方小于0.1或者0.2)会有一些不一样的中央,而且处于边缘的hardcase也会不统一;当然这种状况一般来说影响不大,但也须要留一个心眼。模型的实践flops和理论模型执行的速度关系不大,要看具体执行的平台,不要一味的认为flops低的模型速度就快。很多开源的检测库都是间接在Pytorch上运行进行比拟,尽管都是GPU,但这个其实是没有任何优化的,因为Pytorch是动态图;个别的模型部署都会波及到大大小小的优化,比方算子交融和计算图优化,最简略的例子就是CONV+BN的优化,很多基于Pytorch的模型速度比拟是疏忽这一点的,咱们比拟两个模型的速度,最好还是在理论要部署的框架和平台去比拟;不过如果这个模型参数比拟多的话,那模型大概率快不了,理由很简略,大部分的参数个别都是卷积核参数、全连贯参数,这些参数多了天然代表这些op操作多,天然会慢。同一个TensorRT模型(或者Pytorch、或者其余利用GPU跑的模型)在同一个型号卡上跑,可能会因为cuda、cudnn、驱动等版本不同、或者显卡的硬件功耗墙设置(P0、P1、P2)不同、或者所处零碎版本/内核版本不同而导致速度方面有差别,这种差别有大有小,我见过最大的,有70%的速度差别,所以不晓得为什么模型速度不统一的状况下,无妨思考思考这些起因。转换好要部署的模型后,个别须要测试这个模型的速度以及吞吐量;速度能够间接for循环推理跑取平均值,不过理论的吞吐量的话要模仿数据传输、模型执行以及排队的工夫;一般来说模型的吞吐量能够简略地通过1000/xx计算,xx为模型执行的毫秒,不过有些工作如果输出图像特地大,那么这样算是不行的,咱们须要思考理论图像传输的工夫,是否本机、是否跨网段等等。撩我吧如果你与我气味相投于此,老潘很违心与你交换!如果你喜爱老潘的内容,欢送关注和反对~如果有问题想要分割我,可加公众号间接私信,点这里!

May 30, 2022 · 1 min · jiezi

关于深度学习:西安的朋友们大家好我在创业做产品请大家帮帮我

前言:一个好的产品,是不须要花钱推广的,如果须要花钱推广,那么他也好不到哪儿去;因为推广时用了多少老本,那么最终仍然会翻倍的让用户买单。 大家好,我叫田康苏,是陕西康斯特勒网络科技有限公司的创始人,我当初正在研发一款能使大家都赚钱的软件。我须要大家来到我建设的一个群(君自强供需西安站),群内不打广告,不私聊,也能够静静的在外面。同时,我会提供一个需要的模板,大家将本人的需要提出来,而后其余群员帮忙解决,假使其他人真正解决了你的问题,你适当的给予肯定的报酬。就是这样,感兴趣能够持续往下听。(目前只有西安市,西安将作为这个产品的第一站) 康斯特勒|Consteale留神:为不便大家了解,以下对立将大家须要解决的问题称作(需要),将解决别人问题叫做供应。 概念:商业的实质是互通有无。商业的体现模式是交易。 这个产品是我联合本人的常识,经验,经历以及当下经济大环境,参照现实生活,在共同富裕的大政策下孕育而生的,在此不得不提的是,共同富裕不是国家或富豪将钱发放给大家,而是大家通过本人的技能(供应)为别人解决别人的问题(需要),从而取得肯定的报酬,进而进步本人的支出。 其实在咱们生存的过程中,咱们领有很多很多的赚钱的技能(供应),只是咱们没有方法让这些技能变现。同时咱们也领有很多咱们不得不做却因为种种原因做不了的事件,这样咱们就能够将本人的问题(需要),公布进去,让大家去解决咱们的问题(提供供应)。简略一句话就是,咱们既能够公布需要,让大家提供供应;同时咱们也能够通过别人的需要,帮忙别人提供供应。 一百块钱,从A到B,从B到C,从C到D。这个过程咱们称作资金流动。同样是一百块钱,然而无形中他帮忙了所有人,只有让资金流动起来,能力施展他本来的作用。 其次,通常你的问题在他人看来是棘手的事件,兴许本人做可能一共须要1000的老本,然而交给别人可能只须要100的老本,这样本人能够剩下很多钱,而且还能做最重要的事件。 在此,我必须要向大家承诺,我做这个产品,并非是为了赚钱。我心愿可能帮忙大家。帮忙那些须要帮忙的人,所以再次请大家帮帮我。 互联网产品两种法则 产品的思路:1. 社会痛点。2. 需要剖析。3. 产品原型。4. 投入市场。5. 市场反馈。6. 继续改善。7. 发明价值。8. 扭转世界。赚钱的思路:1. 时机风口。2. 商业打算。3. 路演融资。4. 资源整合。5. 走马圈地。6. 融资上市。7. 获取暴利。8. 拿钱走人。君自强我抉择的是第一种,因而,我更心愿失去大家的帮忙,而不是资本的帮忙。当初我心愿大家进到我建设的群里,这样用户对我来说是一个很大的筹码,我去跟开发团队协商,让他们看在用户的体面上,帮我尽可能低的老本做进去。 这个产品是免费的,每个人每年10元信息服务费,10块钱将用于软件更新,算法降级,服务器扩张,公司根本经营等。同时,产品将只有集体,没有组织,商家入驻等。注册进来即是普通用户,没有VIP,VVIP之说。最重要的是,大家交易的资金不须要通过平台,也就是说平台经营期间,不须要缴纳任何费用,平台不会抽取任何佣金。 首次进来的8888集体将作为第一批用户,享受的特权是罢黜10元服务费一年。小小情意,不成敬意。再次表示感谢。 取之于民,用之于民。之所以不从别的中央取得帮忙,其目标就是不心愿每年10元服务费,变得更高。或者将依照需要的其余形式变相免费。从而沦为某些人赚钱的工具。 平安方面也请大家释怀,平台将采纳实名制。其次,不容许任何广告。同时会与公安联网。以确保该平台的安全性及可信耐性。请大家释怀。 最初喊一下口号“君自强:让集体更有钱,让交易更便捷,让生存更简略”。 在此祝福大家财源滚滚,生存幸福美满。

May 18, 2022 · 1 min · jiezi

关于深度学习:热温冷冰数据存储需要全生命周期管理

随着云计算、大数据等新兴利用宽泛遍及,业务数据出现爆炸式增长,海量数据的高效拜访、经济存储和智能治理变得越来越重要。 从数据生命周期来看,在数据刚生成并应用时,属于在线数据,在线数据拜访的频率最高,数据的价值也最高,对数据拜访的性能、数据的拜访的连续性、数据逻辑谬误后的恢复性有很高的要求,但随着工夫的推移,在线热数据会逐渐变成温数据,甚至冷数据和冰数据;据统计,超过30天的数据的使用率不到10%,但这些数据依然很重要,如何解决和正当存储这部分数据,对IT零碎的运维部门来讲,是一个须要解决的重要问题。 浪潮存储基于对数据需要特点的钻研,发现不同期间的数据存在不同的需要,对于存储性能、老本的需要差别较大,基于这些特点提出了热、温、冷、冰四级分层数据生命周期管理策略,依据数据的拜访频率不同,提供相应的计划和产品,通过数据分级集中管理,实现存储性能、容量和老本之间的均衡,晋升零碎的整体存储性能的同时,缩小设施投入老本。 热数据高可用,保障业务永续 MES( 制造执行系统)、HIS(医院信息系统)、ERP(企业资源打算)等结构化数据为主的要害业务,对存储性能、对业务连续性有十分高的要求,浪潮提供基于集中式存储平台的免网关存储双活计划,在双活模式下,两个数据中心具备等同的业务解决能力并通过高速链路实时同步数据,采纳浪潮独有的WAN网络减速技术,通过先进的算法实现数据流压缩、固定块切割和多数据流并发,将近程传输的性能晋升高达10倍、延时升高为原来的十分之一,仅占用大量的网络带宽就能够实现海量数据的近程复制,大幅升高企业对容灾网络带宽的依赖,节约老本。若其中一个数据中心呈现故障,业务会立刻主动切换到另一数据中心,放弃业务间断运行,并且计划不须要独自网关,在升高了提早的同时,也缩小了网关带来的额定故障危险。 在此基础上,浪潮存储能够降级至容灾更全面的两地三核心计划,即生产数据中心、同城灾备核心、异地灾备核心。其中异地灾备核心提供数据备份,当同城中心因自然灾害等起因而产生故障时,异地灾备核心能够用备份数据进行业务的复原。两地三核心的设计架构,可在同城双核心遇自然灾害或人为毁坏时,应用异地灾备核心及时复原并提供无效的信息服务,从而保障业务和数据的连续性。 在容灾计划中,浪潮集中式存储平台可能提供满足企业要害的业务需要的可靠性和性能。在可靠性方面,浪潮存储从器部件到存储操作系统再到算法进行了全面的增强。在性能方面,通过一直打磨以iTurbo为外围的减速引擎,优化资源调度算法,充分利用更多的CPU外围和线程承载更多的数据存储过程。通过搭载iTurbo智能引擎,浪潮集中式存储在SPC-1性能测试中发明了2300 万IOPS的世界纪录。 浪潮成熟的双活、两地三核心技术计划曾经在金融、医疗等要害行业有大量的成功实践,无论是在理论产生的劫难还是灾备演练,RPO和RTO均接近于零,无效保障了用户要害业务的连续性。 温数据备份,确保数据安全 容灾计划通过数据多地寄存,物理上保障了在线热数据业务间断,但遇到逻辑问题仍可能面临危险。比方以后端业务新建一个文档,批改一条数据,删除一个图片时,存储会把最新的状态保留下来,数据的历史状态始终会被最新的状态笼罩。无论是歹意入侵、误操作,还是失常操作,存储并不辨认下层软件的用意。如果是异样操作,则须要业余的备份零碎将数据恢复到操作之前的状态。 浪潮备份解决方案部署备份一体机DP2000G6,繁多设施可提供传统备份计划中备份软件、备份服务器、备份存储三者的性能,满足企业D2D及D2D2T备份需要,简化了用备份零碎的建设和保护。浪潮备份计划通过合成多种备份技术,利用上一个全备份以及其后的增量备份生成一个新的备份,兼顾全备和增备的劣势,有效应对须要备份大量文件的利用场景;并通过重删和压缩技术,进步了备份速率,升高了企业扩容老本。 温数据备份计划能够无效抵挡因人为误操作、被勒索病毒攻打、以及自然灾害等不可抗拒力而导致的业务中断和数据失落所带来的危险,帮忙用户实现业务永远在线,数据永不失落。 冷数据归档,低成本存储有保障 随着互联网、人工智能、大数据等新技术的疾速利用,数据采集精确度一直晋升,起源一直增多,传输效率也在疾速晋升,数据规模爆发式增长,其中80%以上多为图片、视频等非结构化数据。这些非构造数据在应用一段时间后,会积淀为应用频率不高的冷数据,然而冷数据并非失去价值,大数据、人工智能等新兴业务对海量冷数据进行检索和开掘的需要仍然存在而且日益迫切。面对体量微小但拜访性能要求不高的冷数据,传统存储无奈满足海量冷数据的低成本存储需要。 基于数据存储老本、容量、性能等方面的衡量考量,浪潮存储采纳分布式存储对海量冷数据进行治理,满足大数据等新兴业务对局部冷数据进行近线或在线拜访的偶发存取性能要求。 浪潮分布式存储AS13000系列可同时提供文件、块、对象、大数据四种存储服务,实现一套存储撑持一个数据中心业务,极大地提高数据共享的效率,同时所有设施对立治理,缩小设施保护和治理老本,升高TCO。此外,随着业务增长,浪潮分布式存储不仅能够通过扩大节点减少容量及性能资源,还能在所需的存储类型产生了巨大变化状况下,能够将原有块存储的资源进行开释,配置为文件存储空间,从而防止反复投资,帮忙企业敏捷地应答海量数据业务简单的存储需要。同时为了保障数据的平安,浪潮分布式存储还基于回收站性能无效避免数据误删;并采纳数据冗余策略,反对业界最高的8份正本、4TB/H疾速重构进一步晋升系统可靠性。 冰数据离线,经济节能长期保留 除了企业本身业务的特点对数据有着长期保留需要之外,在特定的行业,对数据还有明确的监管要求,如医疗行业住院病历数据须要保留30年以上;测绘地理信息业务档案保存期限最长为永恒;教育行业的学生信息,问题,档案要求永恒保留。针对于此类数据拜访频率非常低,但须要保障平安的数据,浪潮存储采纳了模块化的磁带库,在保障数据安全的状况下,提供长久经济的解决方案。 首先,从经济节能的角度,磁带采纳纳米级磁性颗粒,存储密度更高,并且一个磁带驱动器能够对应大量的磁带,当扩容时,只需思考存储介质的老本,等同容量下磁带存储的老本仅为磁盘的1/6;磁带离线存储记录下数据后,被寄存在主动磁带库的卡槽中,不必定期通电保护,节俭大量能耗。 其次,在安全可靠层面,磁带配有内置和动静加密,以及介质本身的性质带来额定的安全性,如离线状态断绝了黑客和网络攻击,无法访问或批改数据;依据相干测试表明磁带出错率相当于硬盘万分之一,能保障数据保留期限长达30-50年。 浪潮冰数据离线解决方案反对最新的LTO9磁带,单零碎最高可提供400多PB数据空间,满足金融、医疗、档案、石油勘探等行业的海量重要数据离线长期存储需要。 数据作为企业重要的数字资产,随着企业数字化转型一直减速,数据安全要求越来越高,数据价值开掘越来越深,数据全生命周期的管理模式已成为企业在智慧时代下全新的需要。为此,浪潮提出“存储即平台”策略,以面向要害利用的集中式存储平台、面向智慧利用的分布式存储平台、保障数据安全的备份存储平台、长周期保留数据的归档存储平台四大平台,针对数据不同周期的性能、容量、老本等需要特点,提供数据全生命周期存储解决方案,助力企业提速数字化转型。

May 17, 2022 · 1 min · jiezi

关于深度学习:斯坦福NLP课程-第11讲-NLP中的卷积神经网络

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/36本文地址:http://www.showmeai.tech/article-detail/248申明:版权所有,转载请分割平台与作者并注明出处 珍藏ShowMeAI查看更多精彩内容 ShowMeAI为斯坦福CS224n《自然语言解决与深度学习(Natural Language Processing with Deep Learning)》课程的全副课件,做了中文翻译和正文,并制作成了GIF动图! 本讲内容的深度总结教程能够在这里 查看。视频和课件等材料的获取形式见文末。 引言 授课打算 AnnouncementsIntro to CNNs / 卷积神经网络介绍Simple CNN for Sentence Classification: Yoon (2014) / 利用CNN做文本分类CNN potpourri / CNN 细节Deep CNN for Sentence Classification: Conneauet al. (2017) / 深度CNN用于文本分类Quasi-recurrent Neural Networks / Q-RNN模型欢送来到课程的下半局部! 当初,咱们正在为你筹备成为 DL+NLP 钻研人员/实践者课程不会总是有所有的细节 这取决于你在网上搜寻/浏览来理解更多这是一个沉闷的钻研畛域,有时候没有明确的答案Staff 很乐意与你探讨,但你须要本人思考作业的设计是为了应酬我的项目的真正艰难 每个工作都成心比上一个工作有更少的帮忙资料在我的项目中,没有提供 autograder 或合理性查看DL 调试很艰难,然而你须要学习如何进行调试!书籍举荐 《Natural Language Processing with PyTorch: Build Intelligent Language Applications Using Deep Learning》 Delip Rao & Goku Mohandas1.卷积神经网络介绍(卷积神经网络相干内容也能够参考ShowMeAI的对吴恩达老师课程的总结文章 深度学习教程 | 卷积神经网络解读 ...

May 16, 2022 · 4 min · jiezi

关于深度学习:ICDE-2022阿里发布稀疏模型训练框架HybridBackend单位成本下训练吞吐提升至5倍

近年来,随着稠密模型对算力日益增长的需要, CPU集群必须不断扩大集群规模来满足训练的时效需要,这同时也带来了一直回升的资源老本以及试验的调试老本。 为了解决这一问题,阿里云机器学习PAI平台和阿里妈妈智能引擎训练引擎团队合作开发了稠密模型高性能同步训练框架HybridBackend,使得在同老本下GPU集群训练吞吐较CPU集群晋升至5倍,大幅升高调试老本,同时 HybridBackend 相干论文 《PICASSO: Unleashing the Potential of GPU-centric Training for Wide-and-deep Recommender Systems》也被 ICDE 22' 所收录。HybridBackend背地的技术框架如何设计?将来有哪些布局?明天一起来深刻理解。 一 HybridBackend是什么HybridBackend是阿里云机器学习平台PAI和阿里妈妈智能引擎训练引擎团队合作开发的、面向稠密模型训练的高性能同步训练框架,外围能力是大幅晋升GPU集群单位成本下的训练吞吐性能。目前HybridBackend曾经在阿里巴巴团体外部有多个业务落地,将阿里妈妈智能引擎训练引擎团队的定向广告业务年数据训练任务工夫由1个月缩短至2天,同时HybridBackend在私有云多个头部互联网企业中也有胜利利用。 二 我的项目背景以搜寻、举荐、广告业务为次要利用的稠密模型训练零碎始终是学界和业界钻研的热点之一。相比于计算机视觉(CV)和自然语言解决(NLP)为代表的浓密模型训练,稠密模型针对离散型特色(以 categorical ID 作为训练数据)应用Embedding特色表白有着百GB至数十TB级别的内存占用耗费(比一般的CV、NLP模型参数高出一到两个数量级),从而冲破了单机的内存容量限度,须要基于分布式系统的训练计划。 晚期的此类分布式工作因为模型构造绝对简略并且更新迭代迟缓,往往采纳定制化的参数服务器(Parameter Server,PS)零碎在大规模的CPU集群上进行训练。随着TensorFlow为代表的通用机器学习编程框架的呈现,以及深度神经网络(DNN)在举荐类模型上的风行(deep recommender systems),业界逐步转向基于通用机器学习编程框架(TensorFlow、PyTorch等)进行模型的端到端训练和推理,然而此时仍然以参数服务器(PS)和大规模CPU集群作为训练的范式和基础设施。 三 面临挑战随着稠密模型对算力日益增长的需要(比方Attention等构造的退出),CPU集群必须不断扩大集群规模来满足训练的时效需要,这同时也带来了一直回升的资源老本以及试验的调试老本。 以NVIDIA GPU为代表的加速器(accelerator)补救了CPU设施单位成本算力低下的劣势,在CV、NLP等算力需要大的训练任务上的利用曾经成为行业共识。然而实践证明,如只是简略地将PS训练范式中的worker从CPU设施替换为GPU设施,并不能无效地晋升训练任务的吞吐,通过 profiling GPU 的使用率,发现大量的GPU算力资源被闲置节约。这阐明,相比于CV、NLP类工作,稠密模型训练有着本身的模型构造和训练数据的个性,使得传统的PS训练范式不能无效地施展出GPU设施的劣势。以深度举荐零碎经典的 Wide and Deep 模型构造和TensorFlow框架为例,咱们剖析并总结了在PS架构下应用GPU设施训练的两个问题。 1 变动的硬件资源瓶颈 从上图的 Wide and Deep 模型构造能够看出,稠密训练次要由Embedding阶段、特色穿插(feature interation)阶段和多层感知器(MLP)阶段组成,Embedding阶段在PS范式的训练下占据了至多50%以上的训练工夫。通过剖析发现,Embedding阶段的算子次要以访存密集型(memory access intensive)和通信密集型的算子(communication intensive)为主,次要须要的硬件资源是内存和网络的带宽,而后两个阶段的算子则是计算密集型的算子占主导,须要的资源是算力。这意味着在PS的范式训练下,任何一个阶段都有可能存在某一种硬件资源成为瓶颈而其余硬件资源被节约的景象。以GPU的算力资源为例,咱们察看GPU使用率(SM Util)在不同的训练阶段之间出现脉冲式变动(pulse)。 2 算子细碎化(fragmentation)生产理论中的模型往往领有上百路的Embedding特色查问,每一路的特色查问在TensorFlow内都会调用数十个算子操作(operations)。TensorFlow的引擎在调度上千级别的大量的算子操作须要额定的CPU线程开销;对于GPU设施来说,过多的 CUDA kernel 提交到流处理器上(TensorFlow下每个GPU设施只有一个stream形象)带来了GPU Stream Multiprocessor (SM)的调度开销,同时每个算子解决数据的并发度又不高,从而很难打满GPU的计算单元。 相似的问题在CV、NLP等浓密模型的训练中也有波及,个别采纳基于编译技术的优化伎俩进行算子合并。在 Wide and Deep 模型这样的稠密场景下,Embedding阶段的这些算子又往往具备 dynamic shape 的特点,在TensorFlow动态构图阶段无奈获取精确的算子尺寸进行优化,导致相似TensorFlow-XLA等技术在此类场景下没有显著的收益。 ...

May 16, 2022 · 1 min · jiezi

关于深度学习:EasyCV开源|开箱即用的视觉自监督Transformer算法库

一 导读近年来,自监督学习和Transformer在视觉畛域大放异彩。图像自监督预训练极大升高了图像工作沉重的标注工作,节俭大量人力老本,而transormer技术在NLP畛域的巨大成功也为CV模型成果进一步晋升提供了十分大的设想空间。为推动自监督学习和视觉Transformer在阿里团体、阿里云上的落地,阿里云机器学习平台PAI 打造了 EasyCV all-in-one视觉建模工具,搭建了丰盛欠缺的自监督算法体系,提供了成果SOTA的视觉Transformer预训练模型,modelzoo笼罩图像自监督训练、图像分类、度量学习、物体检测、关键点检测等畛域,并且面向开发者提供开箱即用的训练、推理能力,同时在训练/推理效率上也做了深度优化。此外,EasyCV对阿里灵杰零碎做了全面兼容,用户能够十分不便的在阿里云环境下应用EasyCV的全副性能。 在通过阿里外部业务充沛打磨当前,咱们心愿把EasyCV框架推向社区,进一步服务宽广的CV算法开发者以及爱好者们,使其可能十分疾速不便的体验最新的图像自监督以及transformer技术,并落地到本人的业务生产当中。 EasyCV背地的算法框架如何设计?开发者能够怎么应用?将来有哪些布局?明天一起来深刻理解。 二 什么是EasyCVEasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为外围的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴团体内撑持了搜寻、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台化组件的模式,满足客户自定定制化模型、解决业务问题的需要。 我的项目开源地址:https://github.com/alibaba/Ea... 1 我的项目背景 近两年,基于无标注训练数据的图像自监督预训练技术倒退迅猛,在各个视觉工作的成果上曾经媲美甚至超过需大量标注的有监督训练的成果;另一方面,在NLP畛域大获胜利的Transformer技术在各个图像工作上进一步刷新SOTA成果,其利用呈现出井喷式的暴发。作为二者的联合,自监督视觉Transformer的预训练也应运而生。 业界自监督学习和视觉Transformer算法技术更新迭代十分快,同时也给CV算法开发者带来了诸多困扰,比方相干开源代码零散,实现形式和格调参差不齐导致学习和复现老本过高,训练、推理性能低下等等。阿里云PAI团队通过搭建灵便易用的算法框架EasyCV,体系化地积淀SOTA的自监督算法和Transformer预训练模型,封装对立、简洁易用的接口,针对自监督大数据训练方面进行性能优化,不便用户尝试最新的自监督预训练技术和Transformer模型,推动在业务上的利用和落地。 此外,基于PAI团队多年积攒的深度学习训练、推理减速技术,在EasyCV中也集成了IO优化,模型训练减速、量化裁剪等性能,在性能上具备本人的劣势。基于阿里云的PAI产品生态,用户能够不便地进行模型治理、在线服务部署、大规模离线推理工作。 2 次要个性丰盛欠缺的自监督算法体系:囊括业界有代表性的图像自监督算法SimCLR, MoCO, Swav, Moby, DINO等,以及基于mask图像预训练方法MAE,同时提供了具体的benchmark工具及复现后果。丰盛的预训练模型库:提供丰盛的预训练模型,在以transformer模型为主的根底上,也蕴含了支流的CNN 模型, 反对ImageNet预训练和自监督预训练。兼容PytorchImageModels反对更为丰盛的视觉Transformer backbone。易用性和可扩展性 :反对配置形式、API调用形式进行训练、评估、模型导出;框架采纳支流的模块化设计,灵便可扩大。高性能 :反对多机多卡训练和评估,fp16训练减速。针对自监督场景数据量大的特点,利用DALI和TFRecord文件进行IO方面的减速。对接阿里云机器学习PAI平台训练减速、模型推理优化。三 次要技术特点1 技术架构 EasyCV 底层引擎基于Pytorch,接入Pytorch训练加速器进行训练减速。算法框架局部次要分为如下几层: 框架层:框架层复用目前开源畛域应用较为宽泛的openmmlab/mmcv 接口,通过Trainer管制训练的次要流程,自定义Hooks进行学习率控制、日志打印、梯度更新、模型保留、评估等操作,反对分布式训练、评估。Evaluators模块提供了不同工作的评估指标,反对多数据集评估,最优ckpt保留,同时反对用户自定义评估指标。可视化反对预测后果可视化、输出图像可视化。数据层:提供了不同数据源(data_source)的形象,反对多种开源数据集例如Cifar、ImageNet、CoCo等,反对raw图片文件格式和TFrecord格局,TFrecord格局数据反对应用DALI进行数据处理减速,raw格局图片反对通过缓存机制减速数据读取。数据预处理(数据加强)过程形象成若干个独立的pipeline,反对配置文件形式灵便配置不同的预处理流程。模型层:模型层分为模块和算法,模块提供根底的backbone,罕用的loss,neck和各种上游工作的head,模型ModelZoo涵盖了自监督学习算法、图像分类、度量学习、指标检测和关键点检测算法,后续会持续裁减反对更多的high-level算法。推理:EasyCV提供了端到端的推理API接口,反对PAI-Blade进行推理优化,并在云上产品反对离在线推理。API层:提供了对立的训练、评估、模型导出、预测的API。EasyCV反对在本地环境不便的运行和调试,同时,如果用户想跑大规模生产工作,咱们也反对在aliyun PAI产品中不便的进行部署。 2 欠缺的自监督算法体系自监督学习无需数据标注,比照学习的引入使其成果逐渐迫近监督学习,成为近年来学术界和工业界关注的重点之一。EasyCV囊括了支流的基于比照学习的自监督算法,包含SimCLR、MoCo v1/v2、Swav, Moby, DINO。也复现了基于mask image modeling的MAE算法。此外,咱们提供了欠缺的benchmark工具,进行自监督预训练模型在ImageNet上成果的评估。 基于体系化的自监督算法和benchmark工具,用户能够不便的进行模型改良,成果比照,进行模型翻新。同时也能够基于本人的大量无标注的数据,训练适宜本人业务畛域的更好的预训练模型。 下表展现了已有自监督算法基于ImageNet数据预训练的速度和在ImageNet验证集上linear eval/finetune的成果。 模型DALITFRecord(samples/s)JPG(samples/s)性能晋升备注dino_deit_small_p16492.3204.8140%fp16 batch_size=32x8moby_deit_small_p161312.81089.320.5%fp16 batch_size=128x8mocov2_resnet502164.91365.358.56%fp16 batch_size=128x8swav_resnet501024.0853.320%fp16 batch_size=128x83 丰盛的预训练模型库CNN作为骨干网络,配合各种上游工作的head,是CV模型罕用的构造。EasyCV提供了多种传统的CNN网络结构,包含resnet、resnext、hrNet、darknet、inception、mobilenet、genet、mnasnet等。随着视觉Transformer的倒退,Transformer在越来越多的畛域代替CNN,成为表达能力更强的骨干网络。框架实现了罕用的ViT、SwinTransformer等, 同时引入了PytorchImageModel(Timm) 用于反对更为全面的Transformer构造。 联合自监督算法,所有的模型反对自监督预训练和ImageNet数据监督训练,为用户提供了丰盛的预训练backbone,用户能够在框架预置的上游工作中简略配置进行应用,同时也能够接入自定义的上游工作中。 4 易用性框架提供参数化形式和python api接口启动训练、评估、模型导出,并且提供了齐备的预测接口反对端到端推理。1.# 配置文件形式 2.python tools/train.py configs/classification/cifar10/r50.py --work_dir work_dirs/classification/cifar10/r50 --fp16 3. 4. 5.# 繁难传参形式 6.python tools/train.py --model_type Classification --model.num_classes 10 --data.data_source.type ClsSourceImageList --data.data_source.list data/train.txt API形式1.import easycv.tools 2.config_path = 'configs/classification/cifar10/r50.py' 3.easycv.tools.train(config_path, gpus=8, fp16=False, master_port=29527)推理示例1.import cv2 2.from easycv.predictors.classifier import TorchClassifier 3. 4.output_ckpt = 'work_dirs/classification/cifar10/r50/epoch_350_export.pth' 5.tcls = TorchClassifier(output_ckpt) 6. 7.img = cv2.imread('aeroplane_s_000004.png') 8.# input image should be RGB order 9.img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 10.output = tcls.predict([img]) 11.print(output) 框架目前focus在high-level视觉工作,针对分类检测宰割三大工作,基于内容风控、智能批发、智能监控、同图匹配、商品类目预测、商品检测、商品属性辨认、工业质检等利用场景,基于阿里巴巴外部的业务实际和服务阿里云内部客户的教训,筛选复现成果SOTA算法,提供预训练模型,买通训练、推理以及端侧部署流程, 不便用户进行各个场景利用的定制化开发。例如在检测畛域,咱们复现了YOLOX算法,集成了PAI-Blade的剪枝、量化等模型压缩性能,并能导出MNN模型进行端侧部署,具体能够参考模型压缩量化tutorial。5 可扩展性1、如技术架构图右侧所示,所有的模块都反对注册、通过配置文件配置应用Builder主动创立,这就使得各个模块能够通过配置进行灵便的组合、替换。上面以model和evaluator配置为例,用户能够简略的通过配置文件批改切换不同的backbone,不同的分类head进行模型结构调整。在评估方面反对用户指定多个数据集,应用不同evaluator进行多指标评估。 ...

May 16, 2022 · 2 min · jiezi

关于深度学习:多层感知机还在进步关于深度学习中MLP的5篇最新的论文推荐

多层感知机还在提高,对于深度学习中MLP的5篇最新的论文举荐1、MLP-Hash: Protecting Face Templates via Hashing of Randomized Multi-Layer Perceptronhttps://arxiv.org/pdf/2204.11... Hatef Otroshi Shahreza, Vedrana Krivokuća Hahn, Sébastien Marcel 用于身份验证的人脸识别零碎的利用正在迅速增长。只管最先进的(SOTA)人脸识别零碎具备很高的辨认性能,但为他们会为每个用户提取特色并存储在零碎数据库中。这些特色蕴含了隐衷敏感信息,泄露这些数据将危及用户的隐衷。这篇论文提出了一种新的对于特色隐衷爱护办法,称为 MLP-hash,它通过将提取的特色传递给特定的随机加权多层感知器 (MLP) 并对 MLP 输入进行二值化来生成受爱护的后果。论文评估了提出的生物特色模板爱护办法的不可链接性、不可逆性和辨认性能,以满足 ISO/IEC 30136 规范要求。在 MOBIO 和 LFW 数据集上对 SOTA 人脸识别零碎的试验表明,论文的办法与 BioHashing 和 IoM Hashing(IoM-GRP 和 IoM-URP)爱护算法具备雷同性能。论文还提供了本文中所有试验的开源实现,以便其余钻研人员能够验证咱们的发现并在咱们的工作的根底上进行复现和更深刻的钻研。 2、Modeling of the nonlinear flame response of a Bunsen-type flame via multi-layer perceptronhttps://arxiv.org/pdf/2204.05... Nilam Tathawadekar, Nguyen Anh Khoa Doan, Camilo F. Silva, Nils Thuerey 论文展现了神经网络仅进行一次非定常 的CFD 模仿可能牢靠地学习nonlinear flame。该零碎取得的上游流速和放热率稳定的工夫序列并应用多层感知机训练非线性模型。同时训练几个具备不同超参数的模型,并应用 dropout 策略作为正则化器以防止适度拟合。随后使用性能最佳的模型来计算 flame describing function(FDF)。除了精确地预测 FDF 之外,经过训练的神经网络模型还能够捕获火焰响应中存在的高次谐波。当与声学求解器联合应用时,所取得的神经网络模型比经典的 FDF 模型更适宜预测。钻研表明,预测的声学振荡的 RMS 值以及相干的主频率与 CFD 参考数据十分统一。 ...

May 15, 2022 · 1 min · jiezi

关于深度学习:OneFlow源码阅读3Op指令在虚拟机中的执行

下图展现了相干类在零碎中的地位及其关系,便于后续追踪过程中查看。 OneFlow里定义了3个Stream类、2个Device类,后续剖析过程中留神防止混同。 让指令在虚拟机里执行上一篇提到,在Interpret中,最终会结构一个lambda表达式让PhysicalRun执行。 把传给PhysicalRun的lambda表达式代入替换一下,理论执行如下代码: vm::InstructionMsgList instruction_list; InstructionsBuilder instructions_builder(std::make_shared<vm::PhysicalIdGenerator>(), &instruction_list); // kernel等参数都由lambda绑定自Interpret instructions_builder.LocalCallOpKernel(kernel, input_eager_blob_objects, output_eager_blob_objects, ctx, stream); JUST(vm::Run(instructions_builder.mut_instruction_list())); return Maybe<void>::Ok();依据op_type获取kernel,结构虚拟机指令LocalCallOpKernel这个函数很重要,这外面结构的变量在后续流程中都有重要作用。函数会结构一个InstructionMsg对象并放到列表中。 所谓指令,应该是OneFlow外部比拟细粒度的操作,而不是硬件指令。一个Op可能被转化为一个(或多个?)指令,交给调度引擎执行。 从类关系图也容易看出,指令是蕴含kernel和op conf信息的。 整个执行流程如下所示(始终到虚拟机接管指令): LocalCallOpKernel函数中的instruction_name在CPU设施上就是"cpu.LocalCallOpKernel"。 LocalCallOpKernelPhyInstrOperand类型的对象phy_instr_operand,这个对象在Init时会调用ChooseOpKernel,从UserOpRegistryMgr获取OpKernelRegistryResult并调用它的create_fn成员函数,获取理论的kernel,对于relu来说就是ReluKernel。 而后创立InstructionMsg类型的变量instruction。这个变量是由intrusive::make_shared生成的(不是std::make_shared)。这是OneFlow本人的援用计数实现。初始化调用的是InstructionMsg::\_\_Init\_\_办法。这个对象在初始化时,很重要的一个步骤是设置instr_type_id,其instruction_type的类型在CPU下就是CpuLocalCallOpKernelInstructionType。 同时会设置InstructionMsg的stream。传入LocalCallOpKernel的stream参数是oneflow::Stream,而InstructionMsg的stream是vm::Stream。对于relu,指令stream最终来自GetDeviceStream,其中的Stream数组是在VM初始化时设置的,目前还不分明这个Stream数组的具体逻辑,不过能够确定其StreamType的类型是CpuStreamType。 从下面的类关系图能够看到,InstrTypeId类型涵盖了设施类型和[指令类型](https://github.com/Oneflow-In...)。最终会在LookupInstrTypeId办法中设置InstrTypeId的值。上面须要找到InstrTypeId4InstructionName函数中的动态map是在哪里注册的。搜寻代码容易发现调用依赖关系如下: 在RegisterInstrTypeId函数中对map做了批改RegisterInstructionType调用RegisterInstrTypeIdCpuLocalCallOpKernelInstructionType注册时调用RegisterInstructionType注册宏开展后执行如下语句: vm::RegisterInstructionType<CpuLocalCallOpKernelInstructionType>("cpu.LocalCallOpKernel");template<typename T>void RegisterInstructionType(const std::string& instr_type_name) { RegisterInstrTypeId<T>(instr_type_name, StaticGlobalStreamType<typename T::stream_type>());}注册的key就是后面看到的instruction_name的值,value来自StaticGlobalStreamType返回的动态变量。CpuLocalCallOpKernelInstructionType用于辨别StreamType,理论计算逻辑在LocalCallOpKernelInstructionType中。前面会看到,执行kernel计算时会调用这个类的办法。 虚拟机的初始化在持续进入虚拟机之前,先看看虚拟机的初始化过程。虚拟机是OneFlow的执行引擎,VirtualMachine负责线程调度,具体任务交给VirtualMachineEngine执行。通过相似生产-生产的机制解决指令的执行。import oneflow时在EnvGlobalObjectsScope::Init中初始化虚拟机实例。具体过程如下: 在MakeVmDesc中,会把之前通过RegisterInstructionType注册的InstrTypeId::stream_type_都存到一个set中。再调用MakeStreamDesc结构StreamDesc对象,StreamDesc在结构时会设置stream_type(来自StaticGlobalStreamType保障指针惟一),对于relu来说就是CpuStreamType。最初将StreamDesc放到vm_desc.stream_type2desc中。这样,RegisterInstructionType和VM中的StreamType指针是统一的。 在VirtualMachineEngine初始化时,依据StreamDesc顺次创立StreamRtDesc、ThreadCtx、vm::Stream,其中StreamType也是始终从StreamDesc传递下来。 虚拟机的调度机制深度学习的Job能够视为一个有向无环图(DAG),算子/指令是图中的节点,节点是有依赖关系的。虚拟机负责保护若干个指令队列,以及指令在这些队列之间的状态转换。不同队列的指令有不同的依赖状态,比方刚收到期待调度、期待上游执行结束、能够被调度执行等。 指令结构结束后,调用Run交给虚拟机执行指令。在VirtualMachineEngine::Receive中,只是把指令列表放到pending_msg队列中。 指令的状态转换还没搞清楚,猜想大抵是这样的: InstructionMsgList -> pending_msg Receivepending_msg -> local_pending_msg Schedulelocal_pending_msg -> ready_instruction HandleLocalPendingGetRewritedPendingInstructionsByWindowSizeMakeInstructionsready_instruction -> Run ScheduleDispatchAndPrescheduleInstructionsDispatchInstruction须要留神的是,Receive时收到的元素类型是InstructionMsg,ready_instruction的元素类型是Instruction,这个转换是在MakeInstructions内实现的。 指令调度与执行在逻辑上的调用程序如下: 追踪图中MakeInstructions的调用程序能够晓得,Instruction中的Stream和InstructionMsg中的指向同一个vm::Stream对象。 定位到具体的OpKernel从上述状态转换来看,指令最终是在DispatchInstruction函数中执行的。这个函数执行指令的外围逻辑能够用如下伪码示意: instruction->mut_stream()->stream->stream_type().Run(instruction);依据下面InstructionMsg初始化的探讨,这里的StreamType就是CpuStreamType;instr_type_id.instruction_type的类型就是CpuLocalCallOpKernelInstructionType。这样就容易列出调用程序如下: 依据之前探讨的phy_instr_operand初始化的状况,OpKernelCompute中获取的user_opkernel就是ReluKernel,通过父类OpKernel的Compute办法进入ReluKernel::Compute。 在NewPrimitive中,须要搞清楚factory具体是什么类型。一路追踪到AutoRegistrationFactory,这里又是一个注册机制。然而用到REGISTER_CLASS的中央太多,一时仿佛没有脉络。 回头看NewReluPrimitive,这里指定的工厂类型是ElementwiseUnaryFactory。这是一个抽象类,搜寻一下容易发现它的CPU版本的子类ElementwiseUnaryImpl,其New办法定义了对各种数据类型的relu实现。这个源文件中还调用了宏REGISTER_PRIMITIVE_FACTORY。宏开展后的相干代码如下: static AutoRegistrationFactory<DeviceType, ElementwiseUnaryFactory> ::RawRegisterType<ElementwiseUnaryFactoryImpl> g_registry_var0(DeviceType::kCPU);std::unique_ptr<ElementwiseUnary> New(UnaryOp unary_op, DataType src_type, DataType dst_dtype) override { static const std::map<std::tuple<UnaryOp, DataType, DataType>, std::function<std::unique_ptr<ElementwiseUnary>()>> new_elementwise_unary_handle { // ... { std::make_tuple((UnaryOp::kRelu), DataType::kFloat, DataType::kFloat), NewElementwiseUnary<(UnaryOp::kRelu), float, float> }, { std::make_tuple((UnaryOp::kRelu), DataType::kDouble, DataType::kDouble), NewElementwiseUnary<(UnaryOp::kRelu), double, double> }, // ... }; const auto it = new_elementwise_unary_handle.find( std::make_tuple(unary_op, src_type, dst_dtype)); if (it != new_elementwise_unary_handle.end()) { return it->second(); } else { return nullptr; }}从以上代码容易看出,NewPrimitive返回的工厂类型是ElementwiseUnaryFactoryImpl。ReluKernel::Compute中的primitive类型是ElementwiseUnaryImpl。依据模版参数推断,其Launch办法中理论调用UnaryFunctor进行计算,在这里实现了relu的计算逻辑。 ...

May 14, 2022 · 1 min · jiezi

关于深度学习:手把手推导Back-Propagation

撰文|月踏 BP(Back Propagation)是深度学习神经网络的实践外围,本文通过两个例子展现手动推导BP的过程。 1 链式法则链式法则是BP的外围,分两种状况: (1)一元方程 在一元方程的状况下,链式法则比较简单,假如存在上面两个函数: 那么x的变动最终会影响到z的值,用数学符号示意如下: z对x的微分能够示意如下: (2)多元方程 在多元方程的状况下,链式法则略微简单一些,假如存在上面三个函数: 因为s的渺小变动会通过g(s)和h(s)两条门路来影响z的后果,这时z对s的微分能够示意如下: 这就是链式法则的全部内容,前面用理论例子来推导BP的具体过程。 2 只有一个weight的简略状况做了一个简略的网络,这能够对应到链式法则的第一种状况,如下图所示: 图1 其中圆形示意叶子节点,方块示意非叶子节点,每个非叶子节点的定义如下,训练过程中的前向过程会依据这些公式进行计算: 这个例子中,咱们是想更新w1、b1、w2三个参数值,如果用lr示意learning rate,那么它们的更新公式如下: 在训练开始之前,b1、w1、w2都会被初始化成某个值,在训练开始之后,参数依据上面两个步骤来进行更新: 先进行一次前向计算,这样能够失去y1、y2、y3、loss的值再进行一次反向计算,失去每个参数的梯度值,进而依据下面的公式(13)、(14)、(15)来更新参数值上面看下反向流传时的梯度的计算过程,因为梯度值是从后往前计算的,所以先看w2的梯度计算: 再持续看w1的梯度计算: 最初看b1的梯度计算: 把w2、w1、b1的梯度计算出来之后,就能够依照公式(13)、(14)、(15)来更新参数值了,上面用OneFlow依照图1搭建一个对应的网络做试验,代码如下: import oneflow as ofimport oneflow.nn as nnimport oneflow.optim as optimclass Sample(nn.Module): def __init__(self): super(Sample, self).__init__() self.w1 = of.tensor(10.0, dtype=of.float, requires_grad=True) self.b1 = of.tensor(1.0, dtype=of.float, requires_grad=True) self.w2 = of.tensor(20.0, dtype=of.float, requires_grad=True) self.loss = nn.MSELoss() def parameters(self): return [self.w1, self.b1, self.w2] def forward(self, x, label): y1 = self.w1 * x + self.b1 y2 = y1 * self.w2 y3 = 2 * y2 return self.loss(y3, label)model = Sample()optimizer = optim.SGD(model.parameters(), lr=0.005)data = of.tensor(1.0, dtype=of.float)label = of.tensor(500.0, dtype=of.float)loss = model(data, label)print("------------before backward()---------------")print("w1 =", model.w1)print("b1 =", model.b1)print("w2 =", model.w2)print("w1.grad =", model.w1.grad)print("b1.grad =", model.b1.grad)print("w2.grad =", model.w2.grad)loss.backward()print("------------after backward()---------------")print("w1 =", model.w1)print("b1 =", model.b1)print("w2 =", model.w2)print("w1.grad =", model.w1.grad)print("b1.grad =", model.b1.grad)print("w2.grad =", model.w2.grad)optimizer.step()print("------------after step()---------------")print("w1 =", model.w1)print("b1 =", model.b1)print("w2 =", model.w2)print("w1.grad =", model.w1.grad)print("b1.grad =", model.b1.grad)print("w2.grad =", model.w2.grad)optimizer.zero_grad()print("------------after zero_grad()---------------")print("w1 =", model.w1)print("b1 =", model.b1)print("w2 =", model.w2)print("w1.grad =", model.w1.grad)print("b1.grad =", model.b1.grad)print("w2.grad =", model.w2.grad)这段代码只跑了一次forward和一次backward,而后调用step更新了参数信息,最初调用zero_grad来对这一轮backward算进去的梯度信息进行了清零,运行后果如下: ...

May 13, 2022 · 2 min · jiezi

关于深度学习:端到端的特征转换示例使用三元组损失和-CNN-进行特征提取和转换

尽管大多数的特色策略都与畛域相干,并且必须针对每个应用程序进行专门调整。但特色工程是操纵原始数据和提取机器学习特色的过程,探索性数据分析 (EDA) 能够应用特色工程技术来可视化数据并在执行机器学习工作之前更好地识别模式和异样值。这是数据迷信的重要一步,能够确保特定机器学习应用程序的预期后果。 应用 EDA 和特色工程的组合具备多种劣势: 进步准确性缩小训练工夫缩小过拟合简化模型特色工程技术有多种特色工程办法能够用于机器学习的各种特定利用和数据类型。这些能够包含: 转换——缩放或编码数据以便模型更好地了解分类编码特色缩放特征选择——挑选出不必要或导致模型准确性升高的特色特色创立——创立从其余特色中提取或联合的新特色,以便对模型更有用特征提取——通常是某种模式的降维(PCA、ICA 等)主动编码器在典型的机器学习我的项目中,数据科学家会应用特色工程技术的组合创立简单的管道,解决数据并为机器学习做好筹备。这个过程通常是机器学习中最繁琐和最须要技能的局部。 端到端的特色转换 简单特色工程管道的一个潜在代替计划是端到端的特色转换。在端到端办法中,机器学习从原始输出数据到输入预测的整个过程是通过一个间断的管道来学习的。端到端管道所需的配置较少,并且能够轻松利用于多种形式的数据。然而应用特色工程的办法能够比端到端办法做得更好,因为它们能够针对特定工作进行更好的调整。 端到端特色工程办法不会取代 EDA。换句话说,端到端的特色转换方法也是一种特色工程,它应用机器学习模型将原始数据间接转换为可用于进步模型准确性的数据。此过程简直不须要对数据进行预处理,并且能够轻松利用于许多畛域。 在 Jean-Yves Franceschi 等人的论文“Unsupervised Scalable Representation Learning for Multivariate Time Series”。通过卷积和三元组损失学习数据的示意,并提出了一种端到端的特色转换方法,这种应用无监督卷积的办法简化并利用于各种数据。 简而言之,他们正在实现一个卷积神经网络,该网络将转换和提取特色,而后将其发送到你抉择的机器学习模型执行预测。通过适当训练,这个 CNN 将可能为咱们的模型提取重要特色,并精确执行其给定工作。 在本文中,我将应用来Pytorch , sklearn 和Kaggle的牛油果价格数据集(https://www.kaggle.com/datase...)来演示这种 CNN 特色工程技术。 首先,须要从 kaggle 下载数据集,并做一些简略的数据筹备,例如删除不须要的特色/从df中提取咱们的指标列。 df = pd.read_csv("avocado.csv")df = df.drop(columns=['Unnamed: 0',"Date", "type", "region"])接下来,咱们须要筹备两个df正本。一个正本按咱们所需的目标值列(在本例中为“AveragePrice”)排序,另一个应放弃原样。 df的排序正本将用于训练咱们的卷积特色工程层,另一个正本将用于训练主模型。 # unsorted training datay = df["AveragePrice"].to_numpy()x = df.drop(columns=["AveragePrice"])# sorted training datax_s = df.sort_values(by="AveragePrice")x_s = x_s.drop(columns=["AveragePrice"])在持续之前,须要将df转换为 pytorch 张量。 x = torch.Tensor(x.to_numpy()).reshape(-1,1,9)x_s = torch.Tensor(x_s.to_numpy()).reshape(-1,1,9)这就是咱们在将数据输出 CNN 之前须要执行的所有预处理。 ...

May 13, 2022 · 2 min · jiezi

关于深度学习:开源之夏-2022-申请-Jina-AI-社区任务成为业界领先的神经搜索开源项目贡献者

开源之夏 2022 我的项目已公布,申请 Jina AI 我的项目的同学能够筹备起来了~ 开源之夏是由「开源软件供应链点亮打算」发动,并长期反对的一项暑期开源流动。旨在激励寰球在校学生,积极参与开源软件的开发保护,促成优良开源软件社区的蓬勃发展,造就和挖掘更多优良的开发者。 往年是开源之夏举办的第三届,共计吸引了 124 家社区提报超过 300+ 我的项目。Jina AI 作为业内当先的神经搜寻 (Neural Search) 开源企业,在开源之夏 2022 中共计提报了 3 个我的项目工作。 同学们现已能够进行工作申请,取得 Jina AI 资深工程师的亲自领导,以及 Jina AI 实习机会。实现我的项目并奉献给社区后,还将取得开源之夏流动奖金和结项证书。 Jina AI 我的项目工作详情一览我的项目一:近似最近邻搜索算法 HNSW 的改良与优化波及技术畛域:AI, 近似最近邻, 向量检索 编程语言:C++, Python 我的项目难度:进阶 分割导师:felix.wang@jina.ai 我的项目反对报名语言:中文 我的项目成绩仓库: https://github.com/jina-ai/an... 我的项目形容: 针对海量向量数据的搜寻,无论是工业界还是学术界都做了大量的钻研。因为准确的向量搜寻在海量数据的场景下搜寻工夫过长,所以目前的常见做法,是在向量上建设近似搜寻索引。学术上咱们称之为近似最近邻搜寻 ANN (Approximate Nearest Neighbor Search) 问题,通常都是通过就义搜寻精度来换取工夫和空间的形式,从大量样本中获取最近邻。 依据 Benchmark 上 ANN 算法的基准测试后果,基于图构造的 HNSW 算法在查问速度和精度上优于其余 ANN 算法。然而 HNSW 算法自身的次要问题就是对内存占用较大,限度了其能够索引的数据大小。 目前咱们的开源向量索引产品 AnnLite 外围近似搜索算法是基于 HNSW 来实现,并在此基础上提供了更加丰盛的性能(例如反对前置过滤近似查问)。为了使得 AnnLite 可能具备更强的竞争力和理论利用价值,咱们心愿可能进一步对 HNSW 算法进行改良和优化。 ...

May 12, 2022 · 2 min · jiezi

关于深度学习:Jina-AI-x-矩池云-神经搜索引擎一键构建

近 5 年以来,图片、视频、语音等非结构化数据的数量,呈现了爆发式增长。随着深度学习技术的一直降级,深度表征学习、迁徙学习、比照学习等技术日益成熟, 非结构化数据的搜寻也逐步造成可能。 在此背景下,专一于神经搜寻技术的商业开源软件公司 Jina AI,提出了神经搜寻 (Neural Search):借助深度学习技术,实现多模态及跨模态的搜寻。 当初,Jina 框架曾经上线专一 AI 畛域的 GPU 云服务商矩池云 Matpool,学习者和研究者只需在租用机器时抉择 Jina 镜像,即可体验高效的、大规模非结构化数据搜寻。同时矩池云团队版用户还可实现基于镜像、材料、算力、存储等共享,实现高效合作。  神经搜寻=深度学习模型+向量搜寻神经搜寻 (Neural Search) 是指用深度学习技术,对非结构化数据进行搜寻。 与传统搜寻不同的点在于,传统搜寻次要基于文本标签,而神经搜寻则能够解决文本、图像、视频、音频甚至 3D Mesh 之间的多模态和跨模态搜寻问题。 神经搜寻零碎的利用,包含以图搜图、以文字搜图、问答机器人、照片去重、海量标签分类等 借助深度学习模型,神经搜寻将非结构化数据表示为向量。 向量空间中,类似数据汇聚合在一起,不同数据则会扩散在空间的不同地位。依据用户查问的数据,在向量空间中寻找最近邻, 就能够实现非结构化数据的搜寻。 尽管多模态和跨模态搜寻是神经搜寻的重要利用场景,然而搭建神经搜寻解决方案却非常复杂,往往波及到工程化、AI 建模和以及 DevOps。 简化这种复杂性,正是 Jina AI 在做的事件。 Jina AI 神经搜寻生态:端到端的开源技术栈Jina AI 提供了一个涵盖整个开发过程的端到端开源技术栈,即神经搜寻生态。 Jina 全家桶产品一览 DocArray: The data structure for unstructured data 在神经搜寻生态中的第一个产品是 DocArray,这也是创立神经搜寻我的项目的第一步。 DocArray 将非结构化数据,对立成同一种数据结构。 利用 Python API,研发人员能够高效地解决、向量化、搜寻、举荐、存储及传输数据。 它实用于大型项目的构建,并且针对数据科学家和 AI 工程师进行了大量优化。 Jina: Cloud-native neural search framework for any kind of data ...

May 12, 2022 · 5 min · jiezi

关于深度学习:GPU服务器全球市值最大的半导体公司

服务器是AI外围基础设施。依据IDC数据,2020年中国AI基础设施市场规模为39.3亿美元,同比增长26.8%,并将在2024年达到78.0亿美元,其中2020年服务器市场规模占AI基础设施的87%以上,承当着最为重要的角色。 互联网行业是AI服务器最大洽购行业。依据IDC数据,2020年上半年,互联网占整体减速计算服务器市场近60%的份额,同比增持超过100%;政府行业和服务业别离顺次位居第二位和第三位。 GPU服务器是AI减速计划首选。IDC预计2021年中国GPU服务器占比91.9%左右的市场份额,是数据中心AI减速计划首选。依据IDC数据,2019年中国GPU服务器市场规模达到20亿美元,预计2024年将达到64亿美元。 GPU服务器 GPU减速服务器可能提供优良的浮点计算能力,从容应对高实时、高并发的海量计算场景,例如深度学习、科学计算、3D动画渲染、CAE等利用场景。 2019年均匀每台服务器配置8.02个GPU。一台GPU服务器通常搭载多个GPU减速芯片,依据IDC数据,2019年中国AI服务器出货量为79318台,同比增长46.7%,每个服务器配置1-20个GPU,加权计算均匀每台服务器配置8.02个GPU加速卡。 寰球GPU巨头 Nvidia成立于1993年,1999年上市,市值近10年增长超过83倍,近6年增长超过49倍。截至2021年11月5日,Nvidia总市值7438亿美元,总市值美股排名第七,是目前寰球市值最大的半导体公司。 进阶之路 技术革新、场景拓展、内涵并购,Nvidia引领寰球GPU倒退。 ➢ GPU架构:Nvidia保持每2-3年推出一代新的GPU架构,持续保持技术当先,新的Ampere曾经采纳7nm工艺; ➢ 利用场景:从最后图形处理到通用计算,再到AI深度学习和主动驾驶,Nvidia一直推动GPU利用场景的冲破; ➢ 内涵并购:2000-2008年Nvidia密集收购额多家公司,涵盖显卡、图形处理、半导体等多个畛域,2020年发表打算收买ARM。 业务分类 Nvidia产品次要分为两大类:图形处理、计算&网络。上游市场包含游戏、业余可视化、数据中心、汽车四大类。 2020年Nvidia营收166.8亿美元(yoy+52.7%),净利润43.3亿美元(yoy+54.9%),其中图形处理业务营收98.3亿美元,计算&网络业务营收68.4亿美元。除去2019年游戏市场需求稳定造成业绩下滑外,Nvidia近5年营收、利润均放弃较快增长。 得益于基于Ampere架构新GPU产品带动游戏业务高增,以及数据中心对算力需要旺盛,2021上半年Nvidia营收、净利润快速增长。 上游分类与产品 Nvidia上游市场分为四类:游戏、业余可视化、数据中心、汽车,各市场重点产品如下: ➢ 游戏:GeForce RTX/GTX系列GPU(PCs)、GeForce NOW(云游戏)、SHIELD(游戏主机) ➢ 业余可视化:Quadro/RTX GPU(企业工作站) ➢ 数据中心:基于GPU的计算平台和零碎,包含DGX(AI服务器)、HGX(超算)、EGX(边缘计算)、AGX(主动设施) ➢ 汽车:NVIDIA DRIVE计算平台,包含AGX Xavier(SoC芯片)、DRIVE AV(主动驾驶)、DRIVE IX(驾驶舱软件)、Constellation(仿真软件)计算业务 计算业务是Nvidia成长的次要驱动力:数据中心已成规模,智能汽车将进入收获期。 ➢ 在数据中心市场,Nvidia领有芯片、硬件、硬件的全栈布局。得益于寰球AI利用场景的疾速减少,对算力的需要飙升。是Nvidia成长最快的市场,2020年营收达到约66.96亿美元,近4年CAGR达到68.5%,远高于游戏市场的17.6%。2020年Nvidia数据中心市场营收占比曾经超过40%,预计将来仍将持续晋升。 ➢ 在智能汽车市场, Nvidia造成了全栈式主动驾驶解决方案。AGX Xavier芯片于2018年开始出货,下一代主动驾驶芯片Orin打算用于2022年量产,算力将达到254TOPS,目前曾经取得蔚来、现实、沃尔沃、飞驰等多个整车厂定点我的项目。咱们认为2022年高阶主动驾驶汽车或将集中落地,Nvidia主动驾驶将进入收获期。中国大陆奉献 Nvidia中国大陆支出快速增长。2020年Nvidia来自中国大陆支出38.86亿美元,同比增长42.3%,近4年CAGR达到31.4%,同期Nvidia整体营收CAGR为24.6%。 Nvidia中国大陆支出占比呈上升趋势。2020年Nvidia中国大陆支出占比达到23.3%,相比于2016年的18.9%晋升4.4pct,2021上半年Nvidia中国大陆支出占比25.6%,回升趋势显著。 咱们预计中国大陆占比仍将晋升。图显业务层面,人均收入晋升将带动PC需要减少;计算业务层面,目前中国大陆在AI算法、利用层面具备当先劣势,主动驾驶场景也将率先失去开释。 景嘉微:国产GPU 领军人物 景嘉微 景嘉微成立于2006年,公司主营业务分为图形显控、小型专用化雷达、GPU芯片三类。其中图显、雷达产品次要面向军用市场,GPU芯片产品包含JM5400、JM7200,其中JM5400次要利用于公司图显模块中,JM7200胜利拓展了民用和信创市场。2021年9月,公司第三代GPU芯片JM9胜利流片,目前正在进行性能测试。 景嘉微量产芯片 景嘉微已实现两个系列、三款GPU芯片量产利用。第一代GPU产品JM5400于2014年流片胜利,次要撑持军用配备,已在国产军用飞机上实现了对ATI M9、M54、M72等芯片的代替;第二代产品JM7200于2018年8月流片胜利,性能与 Nvidia的GT640显卡相近。在JM7200根底上,公司又推出能耗更低的JM7201,胜利进入民用畛域。 景嘉微:两个系列、三款GPU量产利用 景嘉微三款量产GPU芯片介绍 JM7200 目前JM7200已实现与国内次要的CPU和操作系统厂商的适配工作,与长城、联想、同方等十余家国内次要计算机整机厂商建设单干关系并进行产品测试,胜利进入商用畛域。JM7201是JM7200针对民用市场的降级,在保障性能根底上升高能耗。 2019年11月,景嘉微全资子公司长沙景美与湖南长城科技信息有限公司签订了《策略单干协定》,依据协定,2020年湖南长城拟洽购10万套基于JM7200芯片的国产图形显卡;2020年3月,景嘉微全资子公司长沙景美与北京神州数码有限公司签订《洽购单干框架协定》,神州数码以景嘉微“大陆地区经销商”名义代理公司GPU及显卡产品。中国长城是国内信创市场的外围整机厂商,神州数码是国内重要的IT分销商和信创参与方,单干是景嘉微GPU产品在民用信创大批量落地的体现。 2021年上半年景嘉微芯片营收2.14亿元,同比增长13.5倍,占总营收比例达到45.1%。 JM9系列芯片 预计JM9271系列芯片性能达到GTX1080程度,指标中高端市场。依据公司公告,JM9231和JM9271将采纳业界支流的对立渲染架构,反对 OpenGL4.5接口,能够无缝兼容市面上支流的CPU、操作系统和应用程序。 ...

May 10, 2022 · 1 min · jiezi

关于深度学习:使用PyTorch复现ConvNext从Resnet到ConvNext的完整步骤详解

ConvNext论文提出了一种新的基于卷积的架构,不仅超过了基于 Transformer 的模型(如 Swin),而且能够随着数据量的减少而扩大!明天咱们应用Pytorch来对其进行复现。下图显示了针对不同数据集/模型大小的 ConvNext 准确度。 作者首先采纳家喻户晓的 ResNet 架构,并依据过来十年中的新最佳实际和发现对其进行迭代改良。作者专一于 Swin-Transformer,并亲密关注其设计。这篇论文咱们在以前也举荐过,如果你们有浏览过,咱们强烈推荐浏览它:) 下图显示了所有各种改良以及每一项改良之后的各自性能。 论文将设计的路线图分为两局部:宏观设计和宏观设计。宏观设计是从高层次的角度所做的所有扭转,例如架构的设计,而微设计更多的是对于细节的,例如激活函数,归一化等。 上面咱们将从一个经典的 BottleNeck 块开始,并应用pytorch一一实现论文中说到的每个更改。 从ResNet开始ResNet 由一个一个的残差(BottleNeck) 块,咱们就从这里开始。 fromtorchimportnnfromtorchimportTensorfromtypingimportListclassConvNormAct(nn.Sequential): """ A little util layer composed by (conv) -> (norm) -> (act) layers. """ def__init__( self, in_features: int, out_features: int, kernel_size: int, norm = nn.BatchNorm2d, act = nn.ReLU, **kwargs ): super().__init__( nn.Conv2d( in_features, out_features, kernel_size=kernel_size, padding=kernel_size//2, **kwargs ), norm(out_features), act(), )classBottleNeckBlock(nn.Module): def__init__( self, in_features: int, out_features: int, reduction: int = 4, stride: int = 1, ): super().__init__() reduced_features = out_features//reduction self.block = nn.Sequential( # wide -> narrow ConvNormAct( in_features, reduced_features, kernel_size=1, stride=stride, bias=False ), # narrow -> narrow ConvNormAct(reduced_features, reduced_features, kernel_size=3, bias=False), # narrow -> wide ConvNormAct(reduced_features, out_features, kernel_size=1, bias=False, act=nn.Identity), ) self.shortcut = ( nn.Sequential( ConvNormAct( in_features, out_features, kernel_size=1, stride=stride, bias=False ) ) ifin_features!= out_features elsenn.Identity() ) self.act = nn.ReLU() defforward(self, x: Tensor) ->Tensor: res = x x = self.block(x) res = self.shortcut(res) x += res x = self.act(x) returnx看看下面代码是否无效 ...

May 9, 2022 · 6 min · jiezi

关于深度学习:五年ML-Infra生涯我学到最重要的3个教训

近期,ML/AI Infra行业的倒退引发了业内人士的热烈探讨。其中,硅谷守业公司Bluesky创始人Mingsheng Hong分享了他在这一畛域的心路历程,总结了ML Infra倒退的经验教训。他自己此前曾在Google的Data Infra工作,而后转向ML Infra,2022年初,他和Zheng Shao一起创建Bluesky Data (getbluesky.io),再度回归Data Infra。 以下是他的讲述,OneFlow社区做了不扭转原意的编译。 撰文|Mingsheng Hong 翻译|周亚坤、张雨珊 1 从Data Infra到ML Infra2017年,我在Google建设了一个全新的列存储索引,并且把所有的外围商业剖析工作负载(比方AdWords和Display Ads)都移到了这个新零碎里(但迁徙过程自身也有几百个步骤,很简单)。 我花了两个季度的工夫来确保生产的稳定性(素来没有掉线过,思考到这是存储格局的迁徙,也算是个大工程了)。在这期间,我还率领团队让列存储在新一代零碎Napa和F1 Lightning中能失常运作。 一天,我在Google Brain发现了一个由Chris Lattner发动的新的TensorFlow我的项目,将一个编译器+运行时办法利用于构建ML Infra。我很感兴趣,不仅仅因为Chris自己(LLVM、Swift等我的项目的负责人)的号召力,还因为我认为SQL查问优化器和存储/执行引擎是一个专用的编译器/运行时零碎,这个畛域我曾经钻研了十年。 我很好奇构建Data Infra的哪些教训能够利用到ML Infra上,这两者也都能够从通用编译器/运行时上学到一些货色。 比方,只管上图所展现的内容不是在数据库背景下创立的,但它立即引起了我的共鸣,因为Data Infra行业领有SQL和JDBC/ODBC这样弱小的规范,使许多前端能够和一个独特的后端数据库“交换”,这反过来也能够部署到不同的硬件环境中。 同时,我也对这些新的学习机会感到很兴奋。就这样,我决定冒险一试。几年下来,这次单干产生了如下成绩: (1)一个新的ML/TensorFlow runtime(TFRT) (2)一个新的AI Infra公司Modular AI (3)一个实验性的ML框架Swift for TensorFlow 2 三条经验教训尽管我有很多技术、领导力和策略方面的经验教训能够分享,但我筛选了以下3条,可能会引起宽广受众的共鸣。 (1) 规范的力量 在ML之前,我次要做的是Data Infra工作,过后身处SQL和JDBC/ODBC这样的规范中,它们无处不在,但我并没有真正感触到它们的力量。 在ML中,Python或多或少曾经成为了“规范主机语言”,但它的各种ML编程框架和API,如PyTorch、TensorFlow(有或没有Keras)、Jax和MxNet,都有某些不同的编程模型和形象(例如PyTorch反对可变张量,而Jax是面向函数式编程设计的),这使得用户很难从一个框架迁徙到另一个框架。 不仅仅是面向用户编程ML模型的API,还有其余重要的API,例如用于再训练或服务(比方TF SavedModel) 的可序列化的、经过训练的形象模型,还有让硬件供应商将加速器集成到ML框架中的API,都十分须要规范。尽管你可能据说过ML中的规范,但它们看起来更像是这样: 我亲身经历过这种苦楚,因为我的一些我的项目(例如TFRT)使TensorFlow变得更好,但这并没有主动将其劣势扩大到PyTorch和其余工作中,因为不足规范和框架之间的互通性。作为跨框架规范,ONNX设定了一些指标,心愿其利益相关者能够持续推动。 如果没有弱小的ML规范,我放心当初蓬勃发展的ML Infra初创公司无奈长期凋敝——AWS的SageMaker这类集成平台原本能够更好地向用户销售他们的垂直集成。由AlphaZero和GPT-3等引人注目的人工智能冲破/里程碑(还有那些热门的风投资金)推动的“拆分时代(Era of Unbundling)”可能不会继续太久。 相比之下,Data Infra也在进行拆分,但因为它有弱小的规范,我心愿看到更多胜利的BI工具、ETL提供商、计算引擎和存储产品。在涉足ML之后,我从新爱上了SQL。 (2)理解并聚焦客户 深度学习是助推市场的重要ML分支,直到最近都在疾速倒退(在我看来,它的倒退逐步趋于平稳,对于这一点欢送探讨)。因而,ML从业者的角色在Data Infra中十分重要。 然而,对于ML Infra供应商来说,明确他们的指标用户至关重要。例如:他们的指标是否是模型钻研人员,正要撰写对于新神经网络体系结构的钻研论文?如果是的话,那就不要吹捧ML Infra产品是如许“封装良好”和“一键启用”。许多钻研人员自身也是弱小的软件黑客,他们长于发现新的、乏味的应用(或“滥用”)低层级Infra的办法,以实现他们的翻新(例如AlexNet就源自一个聪慧的GPU黑客)。 相同,如果他们针对生产ML模型的工程师(也叫“ML Eng”),那么尽量不要裸露太多的低级“旋钮”,因为这会使产品难以使用,并且难以扩大/保护。同样,不足规范往往会让事件变得更加艰难。 (3)减速ML执行 以下减速ML执行的示例技术很乏味,并且与其余畛域(如数据库查问优化)相干: ...

May 7, 2022 · 1 min · jiezi

关于深度学习:恒源云-Gpushare炼丹必备调参心法说人话系列

不行了,临上班前看见社群里有个小哥哥发了一大段话,太太太……搞笑了!!!为啥明明很深奥的情理,到他笔下就那么的……接底气????这我可就不想急着上班了,我得让大家一起高兴啊 这个分享就叫:说人话系列 内容起源:【炼丹必备】调参心法 创作者:阿洲 残缺内容如下:现实状态下,咱们最想看到的是训练损失降落,验证损失降落,并且验证损失大于训练损失,当然现实很饱满,事实很骨感,一起来看看以下常见的状况和思路剖析把。 A:训练损失降落,验证损失降落,然而验证损失小于训练损失。这种状况最须要留神的就是查看一下验证集的数据,确保验证集数据不会太少或者是太简略了。 B: 训练损失降落,验证损失不变甚至开始回升了,这种状况就是模型训练过拟合啦,阐明模型开始自以为是了,问题太好可能是题太简略了,所以须要减少难度了,比方减少点dropout rate。 C: 训练损失不变,验证损失降落。啥?平时作业都做不利索,考试的时候你考第一?查,这小子必定舞弊了!连忙查查训练集和验证集的数据把。 D:训练损失不变,验证损失也不变,怎么了,躺平了是吧?可能的确是难度太大了,升高点学习率吧,咱学慢点,别步子迈的太大了,batch size 也调下来点,慢点吃,别塞着了。还能够看看一些非正常状况,比方你数据的label都是错的,或者Loss函数都写错了,那这就别怪我躺平了,真学不了。 E:训练损失不变,验证损失回升,祝贺你,遇到疑难杂症了,我帮不了,解铃还须系铃人,本人再好好查查数据集把,个别人遇不到这种状况。 F: 训练损失回升,打住打住,我不想听你验证损失怎么了,你这训练损失回升,反向学习给谁看呢?反向学习还能学的这么认真?连忙给我停下来,看看是什么样【蠢才】的网络设计,或者是什么狗屁不通的超参组合,我劝你耗子尾汁。 G: 损失值呈现了nan, 你小子诚实交代,是不是本人设计了一个loss函数?连忙查查看把,什么?你没设计?那你看看你数据外面是不是就有nan呀?什么?也没有?那难道是梯度爆炸了?也,也不是?神仙难救,神仙难救啊! 对于调参炼丹,您有啥独门秘籍,说进去给咱开开眼呗,别藏着掖着啦。

May 6, 2022 · 1 min · jiezi

关于深度学习:恒源云Gpushare今日炼丹小疑问如何给数据加权重

文章起源 | 恒源云社区 原文地址 | 【炼丹保姆】 原文作者 | 阿洲 工夫:2022年5月6号情绪:解体边缘起因:居家隔离一月无余……且解封不知何时…… 算了,我摊牌了,我开始摆烂了!因为情绪不好,所以工作消极! 挑个简短精干的帖子分享,你们爱看不看,就是这么拽️ 来吧,展现️:筹备工作:import numpy as npimport torchfrom torch.utils.data import WeightedRandomSamplerfrom torch.utils.data import DataLoaderfrom torch.utils.data import TensorDataset生成数据# 假如是一个三分类的问题,每一类的样本数别离为 10,1000,3000class_counts = np.array([10, 1000, 3000])# 样本总数n_samples = class_counts.sum() # 4010# 标签labels = []for i in range(len(class_counts)): labels.extend([i]*class_counts[i])Y = torch.from_numpy(np.array(labels, dtype=np.int64))# 随机生成一些数据,不重要X = torch.randn(n_samples)生成权重# 给每一类一个权重class_weights = [n_samples/class_counts[i] for i in range(len(class_counts))]# [401.0, 4.01, 1.3367]# 对每个样本生成权重weights = [class_weights[i] for i in labels]数据封装train_dataset = TensorDataset(X, Y)sampler = WeightedRandomSampler(weights, int(n_samples),replacement=True)试验A: 加权调配应用replacement (样本可重复使用)train_loader = DataLoader(train_dataset, batch_size=1024,sampler=sampler, drop_last=True)for i, (x,y) in enumerate(train_loader): print(f"batch index {i}, n_0: {(y==0).sum()}, n_1: {(y==1).sum()}, n_2: {(y==3).sum()}")# output:# 第一个batch,每类的数量别离为 349, 344, 331# 第二个batch,每类的数量别离为 344, 360, 320# 第三个batch,每类的数量别离为 339, 348, 337试验B: 加权调配不应用replacement (样本不可重复使用)sampler = WeightedRandomSampler(weights, int(num_samples),replacement=False)train_loader = DataLoader(train_dataset, batch_size=1024,sampler=sampler, drop_last=True)for i, (x,y) in enumerate(train_loader): print(f"batch index {i}, n_0: {(y==0).sum()}, n_1: {(y==1).sum()}, n_2: {(y==3).sum()}")# output:# 第一个batch,每类的数量别离为 10, 466, 548# 第二个batch,每类的数量别离为 0, 333, 691# 第三个batch,每类的数量别离为 0, 173, 851试验C: 简略随机调配train_loader = DataLoader(train_dataset, batch_size=20,shuffle=True, drop_last=True)for i, (x,y) in enumerate(train_loader): print(f"batch index {i}, n_0: {(y==0).sum()}, n_1: {(y==1).sum()}, n_2: {(y==3).sum()}")# output:# 第一个batch,每类的数量别离为 0, 227, 797# 第二个batch,每类的数量别离为 1, 271, 752# 第三个batch,每类的数量别离为 6, 257, 761论断应用WeightedRandomSampler 并且容许样本重复使用的话根本能够保障样本的平衡采样。 ...

May 6, 2022 · 1 min · jiezi

关于深度学习:社区项目分享-用-Jina-搭建一个电影推荐系统

咱们每天都在接触举荐零碎,短视频、电商、外卖、上演、广告…… 明天,咱们将演示 Jina AI 社区用户 Achintya 的我的项目,他用 Jina 搭建了一个电影举荐零碎。 电影举荐零碎原理概览在这个 Demo 中,作者将电影举荐转换成了文本搜寻问题。 零碎将用户输出作为文本 query,并在数据库中搜寻与查找相似电影。 注:开始前须要向模型提供电影的名称、形容和类型等字段。 技术栈: Jina,Rest API,Dart 数据库: IMDB 电影数据集 电影举荐零碎架构图 具体过程如下: 1、从 Kaggle 下载 IMDB 电影数据集。 2、将数据增加至 DocumentArray 中,以便进一步预处理和索引。 3、将 DocumentArray 发送至 Flow,用 Jina Hub 上的 Executor 对数据进行索引。 4、搜寻 Flow 将对输出查问进行编码,并在索引数据中搜寻最匹配的选项。 5、找到最佳匹配后,发送 Rest API 作为输入数据(该 API 实用于各种前端框架)。 代码演示:3 个关键步骤打造电影举荐零碎本 Demo 的外围步骤包含:构建 Flow、索引以及和搜寻性能。 1、创立 Flow 这里会用到两个 Executor: SimpleIndexer 及 TransformerTorchEncoder from jina import Flow flow = ( Flow(port_expose='12345', protocol='http').add( uses="jinahub://TransformerTorchEncoder", uses_with={ "pretrained_model_name_or_path": "sentence-transformers/paraphrase-distilroberta-base-v1" }, name="encoder", install_requirements=True ) .add( uses="jinahub://SimpleIndexer/latest", uses_metas={"workspace": "workspace"}, volumes="./workspace:/workspace/workspace", name="indexer" ))2、创立 Index 函数 ...

May 6, 2022 · 2 min · jiezi

关于深度学习:国产GPU芯片发布国产GPU迎来重要里程碑

GPU是在电脑,工作站,游戏机和一些挪动设施上做图像和图形相干运算的专用处理器。寰球巨头为英伟达、AMD、英特尔,国内企业在3月底有两个GPU芯片公布,摩尔线程和壁仞科技的GPU点亮,这对国产GPU是一个重要的里程碑。 GPU的特点是有大量的核,甚至多达几千个核,和大量的高速内存,最后被设计用于游戏,计算机图像处理,现在GPU曾经不在局限于3D图形处理了,在浮点运算,并行计算等局部计算方面,GPU能够提供数十倍乃至于上百倍于CPU的性能。 多核属性对于图像处理很实用,因为像素与像素之间绝对独立,GPU大量的核能够同时对很多像素进行并行处理。 机器学习曾经有数十年的历史,GPU提供弱小而高效的并行计算能力被用在训练深度神经学习网络,节俭了大量的工夫和数据中心基础设施资源,GPU还被用于运行这些机器学习训练模型,以便在云端进行分类和预测。 将GPU加速器用于机器学习与单纯应用CPU的做法相比,GPU具备数以千计的计算外围,可实现10-100倍利用吞吐量。 从细分畛域看GPU的利用,2021年4季度,PC应用的GPU出货量(集成和独立显卡)达到1.1亿片,其中独立显卡出货量约1300万片,同比增长18%。 从厂商角度看,英特尔将集成显卡捆绑在CPU一起,英伟达是独立显卡的最大销售厂家,AMD排第三,智能手机也是GPU的次要终端,还有一个利用方向是人工智能。 作为撑持生产畛域龙头的PC和智能手机,在往年一直的传出砍单音讯,2022年PC寰球出货量将呈下滑趋势,联想、惠普、华硕、宏碁订单削减百分比都超过了两位数。 国产GPU是2006年国务院公布核高基专项,国内开始涌现出一批研发GPU的企业: 景嘉微电子,芯源微电子,壁仞科技等 在2014年的时候,景嘉微胜利研发出国内首款自主产权的GPU芯片,因为GPU技术门槛高,人才稀缺,国内的GPU倒退很慢。 景嘉微 2014年公布国内第一款GPU芯片,2019年公布商用版本芯片,2021年被美国商务部列入实体清单。 芯动科技 一站式IP和芯片定制服务及GPU企业,2021年11月公布GPU芯片风华一号,填补了国产4K级桌面显卡和服务器级显卡两大空白,反对国产新基建5G数据中心,信创桌面,元宇宙,云游戏,云桌面,图形工作站等。 芯原股份 寰球当先的半导体IP受权服务供应商,次要以GPU IP为主,2020年寰球IP受权市场排名第七。芯原股份的GPU IP源于公司在2016年收买的美国嵌入式GPU设计商圈技术(Vivante),GPU IP是专用于绘图运算,图形减速和通用计算工作的数字IP,2020年寰球市场占有率10%。 GPU市场价格崩盘 随着3月交易平台数据出炉,分析师纷纷唱衰GPU价格,英伟达股价曾经提前从年内高点300美元左近跌至180美元左近。 有钻研机构示意,与缺芯相比,GPU的价格受到加密货币挖狂热影响,以及黄牛,零售商囤货,贬低价格引发供不应求效应。去年中国开始治理挖矿市场,以及美联储等政策影响,矿机需要大幅缩小,黄牛将要为高位的GPU价格承当结果。

May 6, 2022 · 1 min · jiezi

关于深度学习:神经网络感受野浅析

1.1 感触野1.1.1 定义定义:卷积神经网络中的特色图上的一个像素点在输出图像上映射的区域大小。 1.1.2 例子:5×5的输出特色图通过1个5×5的卷积核,生成1×1的特色图,5×5的输出特色图通过两个3×3的卷积核,生成1×1的特色图。下面两个的感触野都为5×5,且两个3×3的卷积核等于一个5×5 注:下面满足卷积的计算公式: $$H_{out} = \frac {H_{in} - k + 2p}{S}$$ 1.1.3 感触野大小的计算办法一:从后往前推公式解说感触野大小计算须要留神以下几点: ==最初一层感触野的大小等于核(不肯定是卷积核,还有可能是池化核)的大小==(以后的感触野相当于“长期感触野”,用于从后往前推)感触野大小的计算不思考padding的大小以后层(i层)的感触野大小和以后层(i层)的卷积核大小和步长无关,同时也和网络后一层(i+1)层特色图的感触野大小无关 $$RF_i = (RF_{i+1} - 1) × stride + K$$ $RF_i$示意第$i$层的感触野大小,stride示意步长,K示意卷积核大小 艰深解释假如有如下网络,当初咱们要计算第i+1的感触野,那么, 首先确定i+1层核(卷积核或池化核)大小即为感触野的大小利用下面的公式计算第i层感触野的大小按照下面的公式始终推到input层,==最终计算的后果即为i+1的感触野的大小== 办法二:从前往后推公式解说顾名思义,从网络的输出层始终推到咱们想要计算层的感触野 $$RF_{i+1} = RF_i + (k - 1) * S_i$$ $$S_i$$ 示意之前所有层的步长的乘积,==不蕴含以后层==,即 $$S_i = \prod_{i=0}^n Stride_i $$ 艰深了解仍旧如图所示,咱们须要计算第i+1的层感触野的大小,那么, 首先确定input层前面的核(卷积核或池化核,个别为卷积核)大小,按照公式逐步往后推到i+1的感触野大小 1.1.4 验证验证下面例子<img src="/img/bVcZuTV" width="400px" height="300px"/> 办法一:从后往前推如果第一种状况,应用5×5的卷积核,最初一层为1×1,那么最初一层的感触野为卷积核大小,即5 如果第二种状况,应用两个3×3的卷积核(步幅为1),最初一层的“长期感触野”为卷积核大小,即3×3,前一层的感触野为: $$RF = (3 - 1) × 1 + 3 = 5$$,最终,最初一层的感触野大小为5 ...

May 3, 2022 · 2 min · jiezi

关于深度学习:顺滑编程一行代码解决多模态搜索问题

 一提到神经搜寻 (Neural Search) ,有些敌人难免会发怵,本人没有丰盛的 AI 开发以及工程教训,能玩得转吗? 别慌,明天咱们将为大家介绍一个新产品--Jina NOW:只需一行代码即可创立和部署神经搜寻解决方案。 观看视频,Jina AI 首席工程师 Florian Hoenicke,5 分钟带你理解并实操 Jina NOW:https://www.bilibili.com/vide... Jina NOW:一行代码解决多模态搜寻问题如果你是第一次接触 Jina,对 Jina 全家桶还没有充沛的理解,那么 Jina NOW 相对算得上最佳入门产品。 你能够将其了解为神经搜寻即服务 (neural search-as-service),借助 Jina 预置的性能,开发者只需一行代码,就能够创立和部署神经搜寻解决方案。 Jina Now 具备以下特点: 便于应用:没有弱小的工程能力和技术背景,也能够疾速上手。 运行迅速:几分钟内即可应用自定义数据创立 demo。 后果调优: 对于已标注的 Document,Jina NOW 提供开箱即用的后果微调深度学习模型 疾速迭代:反对疾速构建原型,实时验证想法。 稳固牢靠:简单搜寻解决方案的部署和保护,将由 Jina 后端基础设施提供反对。 2 步关上神经搜寻的大门Jina NOW 的应用办法简略,轻量化操作只需 2 步,即可实现一个神经搜寻零碎的创立: 1、装置 Jina NOW pip install jina-now留神:请应用 Python 3.7+;截至目前 Jina NOW 仅反对文本及图片两种数据类型,后续版本中将不断丰富反对的数据类型。 2、启动 Jina NOW ...

April 28, 2022 · 1 min · jiezi

关于深度学习:恒源云Gpushare社区小伙伴的技术小闲谈

文章起源 | 恒源云社区 原文地址 | 闲聊 原文作者 | 阿洲 吐槽对于numpy array的axis,我总是记不住,或者是比拟含糊,每次都得本人再造一个小array测试一下,确保不弄错。明天下定决心把这玩意给记住,本人弄了个联想记忆口诀,没有这个问题的就不要往下看啦,献丑了 上图 其实说白了就是记住这么个玩意,如果你曾经记分明了,也别往下看了 例子a = np.array([[1,1],[2,2]])# [1 1]# [2 2]print(np.mean(a,axis=0))#沿着axis0做均匀[1.5, 1.5] print(np.mean(a,axis=0))#沿着axis1做均匀[1, 2]联想记忆献丑了。axis=0,从上往下,From Top to Bottom (TB)axis=1,从左往右,From Left to Right (LR) 也就是0TB1LR 联想记忆为**不要(0)回避(TB)要(1)礼让 (LR)** 又或者是**清空 (0) 淘宝 (TB)买 (1) 卤肉 (LR)**

April 28, 2022 · 1 min · jiezi

关于深度学习:OneFlow获得首届全国颠覆性技术创新大赛最高奖

日前,由科技部主办、科技部火炬高技术产业开发核心承办的首届“全国颠覆性技术创新大赛”落下帷幕。一流科技申报的“OneFlow分布式深度学习框架”凭借当先的科技创新能力、扎实的技术实力与对行业发展趋势的预判能力取得组委会认可,斩获本次大赛的最高奖项——总决赛优胜奖。 1 高端技术星散,大赛广获好评首届“全国颠覆性技术创新大赛” 旨在进一步贯彻落实“十四五”布局和2035年近景指标大纲的相干部署,摸索建设颠覆性技术发现和遴选的新机制。来自全国各地重点高校、出名科研院所、行业龙头企业、新兴翻新企业的2724个技术我的项目同场竞技,最终36个优质我的项目取得本次大赛优胜奖。 本次大赛失去了社会各界的高度关注和充沛认可,工作在科技翻新第一线的院士、年老科学家、出名投资人及创业者等纷纷高度赞扬本次大赛,认为本次大赛为我国高端技术的研发与利用提供了广大舞台。 中国科学院深圳先进技术研究院院长,高性能、云计算、并行与分布式计算专家,曙光系列超级计算机奠基人之一樊建平院士示意,大赛是将成绩与资本联合链接向市场、实现技术成绩产业化的平台和桥梁,大赛的举办能晋升我国的原始创新能力和产业竞争力,进一步推动放慢实现科技自立自强。 2 诠释“颠覆性翻新”,OneFlow的三个劣势作为本次较量的最高奖得主之一,OneFlow分布式深度学习框架的“颠覆性翻新”次要体现在三个方面: 第一,OneFlow的产品设计理念当先于现有的深度学习框架一个代际。传统的深度学习框架都是基于单张芯片和简略并行进行设计,然而,随着大数据的浪潮席卷工业界,人工智能的算法模型爆炸式增长,从千万级参数增长至千亿级参数只用了几年工夫,只应用一张芯片训练模型将会大大降低企业的效率,多芯片分布式的硬件架构是必然的趋势。而OneFlow团队早在2016年就对模型变大的趋势做出预判,所以,OneFlow深度学习框架从研发的第一天起,就是为了多芯片分布式而设计的。 OneFlow在行业内最早提出了动态调度和流式执行的核心理念,最大水平晋升多芯片分布式环境下的训练效率,为企业节俭模型训练工夫。在2020年5月由中国信通院公布的《首轮开源深度学习软件框架测试报告》中,OneFlow深度学习框架在同样的算法和硬件条件下性能指标大幅当先国内外同类产品。 第二,OneFlow的核心技术全副自研借鉴。因为过后提出的设计理念无奈基于已有开源产品增量式改良,OneFlow必须齐全从头开始自主翻新,从头开发数十万行代码,领有残缺的独立自主知识产权。最终造成去中心化调度、全局视角和主动并行三大核心技术劣势,保障了OneFlow能够以通用工具的角色反对多种场景开发,无论是图像、语音、自然语言解决,还是大规模内容举荐,企业都能够疾速训练,灵便部署。 目前,OneFlow曾经递交人工智能操作系统及云计算相干外围专利申请34项,已取得发明专利受权19项,取得软件著作权16项。 第三,OneFlow不仅在技术层面推动翻新,更在利用落地及人才培养上用翻新的形式进行推动。在晋升多芯片分布式模型训练效率的同时,OneFlow也思考到了易用性的问题。大模型的训练部署十分复杂,以前都须要资深的工程师能力实现,OneFlow创造性地提出“基于全局性视角”的分布式编程接口,让不相熟分布式的工程师也能疾速训练部署大模型,升高大模型训练架构的编程门槛,让大模型疾速落地成为可能,从而使更多的企业具备了深度开掘本身数据资产的能力,减速人工智能在数字化转型中的利用实际。 同时,OneFlow深度学习框架作为中国团队自主研发的根底软件,可对接包含寒武纪、昇腾、燧原、曙光DCU、摩尔线程、飞腾、鲲鹏等在内的十余种国产芯片,造成纯国产化AI模型训练部署解决方案。将来,OneFlow还将推出专门适配新兴硬件的标准化模块,更快捷地满足企业对各种不同硬件类型的需要。 作为一家守业公司,OneFlow深度学习框架凭借着多重 “杀手锏”,在巨头环伺的赛道内杀出重围,这就是对自主翻新最好的诠释。 对此,袁进辉示意:“以后,在高端技术畛域开展的国际竞争十分强烈,毁坏式翻新和差异化竞争是中国企业在市场上胜出的不二法门。作为寰球惟一以守业公司形式参加深度学习框架畛域竞争的团队,咱们将坚韧不拔地走自主翻新路线,立足中国,放眼寰球,力争成为深度学习畛域的事实工业规范。” 欢送下载体验OneFlow v0.7.0最新版本:https://github.com/Oneflow-In...

April 27, 2022 · 1 min · jiezi

关于深度学习:恒源云GpushareVSA一个可变形尺寸窗口自注意力模型

文章起源 | 恒源云社区 原文地址 | VSA 原文作者 | 咚咚 搭档们,好久不见了啊。 最近平台各种性能上线,切实抽不出工夫搬运大佬们的文章,不是小编消极怠工哦~ 这不,略微有点工夫空下来,小编就立刻去社区精心筛选了一篇文章分享给你们啦。 走过路过,不要错过呀!废话不多说,注释走起♀️ 摘要引入主题: 窗口自注意力曾经在视觉Transformer中失去了宽泛的摸索,以均衡性能、计算复杂度和内存占用。现存问题: 目前的模型采纳事后定义的固定大小窗口设计,限度了它们建模长期依赖关系和适应不同大小对象的能力。解决办法: 提出了可变尺寸窗口留神(VSA)来从数据中学习自适应窗口配置。具体来说,基于每个默认窗口中的token,VSA 应用了一个窗口回归模块来预测指标窗口的大小和地位。通过对每个留神头独立采纳 VSA,能够建设长期依赖关系模型,从不同窗口捕捉丰盛的上下文,促成窗口之间的信息替换。试验后果: VSA 是一个易于实现的模块,它能够用较小的批改和能够疏忽的额定计算成本来代替最先进的代表性模型中的窗口注意力,同时大幅度地进步它们的性能,例如,在ImagNet 分类工作中,分类性能绝对Swin-T进步了1.1% ,应用较大的图像训练和测试时,性能增益减少更大。另外,在指标检测宰割、实例宰割和语义宰割工作中,解决不同大小的对象时,VSA 比一般窗口注意力更有劣势。 算法 模型整体框架如上图(a)所示,是基于swin模型进行批改的,最次要的翻新点是应用VSA(VWA) Transfomer blocks代替swin中的窗口自注意力block。 VSA Transformer模块如上图(c)所示,与传统的窗口自注意力模块不同,其中应用了VSA(VWA)(上图(b)所示)和CPE模块。接下来进行别离介绍。 VSA模块 上图(b)所示,能够简要看出,VSA module批改了每个窗口的大小和地位,进步模型对久远依赖的建模以及不同大小指标对象的检测。具体操作步骤如下: 给定VSA模块的输出特色\( X \),首先将其平分成大小一样的不重叠窗口\( X_w \),这与传统办法一样对每个窗口进行线性操作失去对应的查问\( Q_w \),\( Q_w = Linear(X_w) \)为了取得每个窗口的长宽两个方向上的缩放和地位偏置,须要进行如下操作: 1). 对\( X_w \)应用核大小和步长与窗口大小一样的均匀池化操作,并附加LeakyRelu激活层 2). 进一步应用1 ×1的卷积层,输入\( S_w \)和\( O_w \),大小均为\( R^{2×N} \),其中2示意长宽两个方向,N示意head个数 取得了缩放和偏置,那就要提取特色了,首先基于输出特色\( X \)进行线性操作获取特色图\( K \)和\( V \)而后,VSA模块依据缩放和偏置在\( K$和\( V \)上进行特征提取,失去\( K_{k, v}, V_{k, v} \in R^{M×N×C^{\prime}} \)最初将\( K_{k, v}, V_{k, v}, Q_w \)输出到多头自注意力模块MHSA中CPE模块 ...

April 26, 2022 · 1 min · jiezi

关于深度学习:材料力学的强度和刚度这下都理解了

为了保障机械系统或者整个构造的失常工作,保障其中每个零部件或者构件都可能失常的工作。材料力学四大强度实践工程构件平安设计的工作就是保障构件具备足够的强度、刚度及稳定性。 稳定性很好了解,受力作用下放弃或者复原原来均衡模式的能力。例如承压的细杆忽然蜿蜒,薄壁构件承重产生褶皱或者建筑物的立柱失稳导致坍塌。明天次要来讲一下对于刚度和强度的了解。 一、强度 定义:构件或者零部件在外力作用下,抵挡毁坏(断裂)或者显著变形的能力。 提取关键字,毁坏断裂,显著变形。 比如说孙越把ipad当成了体重秤,站上去,ipad屏幕裂了,这就是强度不够。比方武汉每年的夏天看海时许多大树枝被风吹断,这也是强度不够。 复合材料力学沈观林强度是反映资料产生断裂等毁坏时的参数,强度个别有抗拉强度,抗压强度等,就是当应力达到多少时资料产生毁坏的量,强度单位个别是兆帕。 毁坏类型 脆性断裂:在没有显著的塑形变形状况下产生的忽然断裂。如铸铁试件在拉伸时沿横截面的断裂和圆截面铸铁试件在扭转时沿斜截面的断裂。 塑形屈从:资料产生显著的塑形变形而使构件丢失工作能力,如低碳钢试样在拉伸或扭转时都会产生显著的塑形变形。 强度实践 最大拉应力实践:只有构件内一点处的最大拉应力1达到单向应力状态下的极限应力b,资料就要产生脆性断裂。危险点处于简单应力状态的构件产生脆性断裂毁坏的条件是:1=b。 所以按第一强度实践建设的强度条件为:1≤[] 。 最大拉应变实践:只有最大拉应变1达到单向应力状态下的极限值u,资料就要产生脆性断裂毁坏。1=u; 由狭义胡克定律得:1=[1-(2+3)]/E,所以1-(2+3)=b。 按第二强度实践建设的强度条件为:1-(2+3)≤[]。 最大切应力实践:只有最大切应力max达到单向应力状态下的极限切应力0,资料就要产生屈从毁坏。max=0。 依轴向拉伸斜截面上的应力公式可知0=s/2(s——横截面上的正应力)由公式得:max=(1-3)/2。所以毁坏条件改写为1-3=s。 按第三强度实践的强度条件为:1-3≤[]。 形态扭转比能实践:只有构件内一点处的形态扭转比能达到单向应力状态下的极限值,资料就要产生屈从毁坏。 所以按第四强度实践的强度条件为: sqrt(12+22+32-12-23-31)<[]。 二、刚度 定义:指构件或者整机在外力作用下,抵挡弹性变形或者位移的能力,即弹性变形或者惟一不应该超过工程容许的范畴。 刚度是反映构造变形与力的大小关系的参数,即构造受多鼎力产生多少变形的量,简略说,就是一根弹簧,拉力除以伸长量就是弹簧的刚度。刚度单位个别是N/m。 刚度类型: 当所作用的载荷是恒定载荷时称为静刚度;为交变载荷时则称为动刚度。静刚度次要包含构造刚度和接触刚度。材料力学刘鸿文构造刚度即指构件本身的刚度,次要有蜿蜒刚度和扭转刚度。 蜿蜒刚度k按下式计算:k=P/ 式中 P——静载荷(N); ——在载荷方向的弹性变形(m)。 扭转刚度kM按下式计算:kM=ML/ 式中M——作用的扭矩(N·m); L——扭矩作用处到固定端的间隔(m); ——扭转角(°) 三、两者分割 通过对上述对于强度和刚度的实践了解,绝对于刚度,强度的定义针对的是外力作用下的毁坏,而毁坏类型的分类为塑形屈从及脆性断裂,由此联想到拉伸时的应力应变曲线。如图所示。 图中曲线可分为四个阶段: I、弹性变形阶段; II、屈从阶段; III、强化阶段; IV、部分颈缩阶段。 而刚度的定义是在于抵制弹性变形,是在第一阶段下进行的,弹性作用下满足胡克定律,察看静载荷下蜿蜒刚度与扭转刚度的计算公式,相似于胡克定律,可揣测刚度的测量仅仅在弹性变形阶段进行。 在进入下一阶段后,对于拉伸过程中塑形应变火残余应变不会隐没,在应力应变曲线下,应力简直不变,而应变显著减少,此时应力为屈从极限。且对于资料则进入了塑形屈从的毁坏阶段,在进入强化阶段后,应变随应力的减少而减少,最初达到强度极限。由此可见对于强度的测量是在于资料弹性形变之后而强度极限之前。 综上,可得出刚度与强度都是在对于整机生效阶段的测量值,而刚度能够依附应力来测量,强度能够依附变形来测量,在应变过程中刚度在前一阶段而强度在后阶段,所以在整机生效的条件测量中,只有满足了刚度要求,在弹性变形阶段就能够抵制足够的应力,而强度在这样的前提下也就满足了整机的要求。依照这样的关系,才会有在理论的生产中的各类设计,例如机械设备中的轴,通常是先按强度条件确定轴的尺寸,再按刚度条件进行刚度校核。精密机械对于轴的刚度要求也就因而而设定得很高,其截面尺寸的设计往往由刚度条件管制。

April 26, 2022 · 1 min · jiezi

关于深度学习:手把手推导-Ring-Allreduce-的数学性质

撰文|袁进辉 分布式深度学习里的通信重大依赖于规定的集群通信(见《反抗软件系统复杂性③:失当分层,不多不少》对通信的探讨),诸如 all-reduce, reduce-scatter, all-gather 等,因而,实现高度优化的集群通信,以及依据工作特点和通信拓扑抉择适合的集群通信算法至关重要。 本文以数据并行常常应用的 all-reduce 为例来展现集群通信操作的数学性质。 1 all-reduce 在干什么? 图 1:all-reduce 如图 1 所示,一共 4 个设施,每个设施上有一个矩阵(为简略起见,咱们特意让每一行就一个元素),all-reduce 操作的目标是,让每个设施上的矩阵里的每一个地位的数值都是所有设施上对应地位的数值之和。 图 2:应用 reduce-scatter 和 all-gather 实现 all-reduce 如图 2 所示, all-reduce 能够通过 reduce-scatter 和 all-gather 这两个更根本的集群通信操作来实现。基于 ring 状通信能够高效的实现 reduce-scatter 和 all-gather,上面咱们别离用示意图展现其过程。 2 reduce-scatter 的实现和性质 图 3:通过环状通信实现 reduce-scatter 从图 2 能够看出,reduce-scatter 的后果是每个设施保留一部分 reduce 之后的后果。为了不便探讨,咱们先定义一些符号。 假如有 p 个设施(下面的例子中 p=4);假如整个矩阵大小是 V, 那么 reduce-scatter 后,每个设施上有V/p大小的数据块;假如卡和卡之间通信带宽是,而且是双工通信(duplex),即每个设施进口和入口带宽能够同时达到,所有设施的入口带宽总和是 p x,所有设施的进口带宽总和也是 p x。 高效实现一个集群通信的要害是如何充分利用设施和设施之间的带宽,基于环状(ring)通信实现的集群通信算法就是这一思维的体现。咱们以 reduce-scatter 为例来看看环状通信算法是怎么工作的。 ...

April 26, 2022 · 2 min · jiezi

关于深度学习:Ubuntu2004安装分区cuda113cuDNN821pytorch1110等DL框架

硬件配置主机:Dell Precision Tower 7910工作站CPU:Intel® Xeon(R) CPU E5-2620 v4 @ 2.10GHz × 16 内存:48G显卡:Nvidia TITAN Xp 12G硬盘:SSD 1T,HDD 2T原零碎:Win10深度学习框架Ubuntu 20.04.4 LTSNvidia Driver 510.60.02cuda 11.3cuDNN 8.2.1python 3.9Anacondapytorch 1.11.0pycharm 2021.3.3tensorflow 2.8.0装置过程3.1 装置Ubuntu20.043.1.1 制作U盘启动盘在官网下载Ubuntu 20.04.4 LTS镜像文件,制作U盘启动盘,我用的是Rufus。3.1.2 装置Ubuntu1) 插入U盘,开机按F2进入设置,敞开Secure Boot。2) 设置好后退出,按F12进入启动信息。抉择U盘启动。然而一到了Updates and other softwares这一步就卡住始终不动。起初发现是因为有损坏的原Win10分区。解决方案:quit,进入try ubuntu,通过Gparted删掉Win的分区。3) 分区设施分区类型名称挂载点空间调配/dev/sdc1primaryefiefi疏导分区 32 G/dev/sdc2logicalswapswap分区 48 G/dev/sdc3primaryext4根分区/SSD残余局部/dev/sdbprimaryext4home目录/homeHDD全副分区后抉择efi进行boot,否则呈现谬误:4) 一路下一步,即可装置结束。3.1.3 Ubuntu换源思考自带源下载很慢,有必要换国内源。1) 备份零碎自带源 mv /etc/apt/sources.list /etc/apt/sources.list.bak2) 编辑/etc/apt/sources.list,退出适合的国内源。 vim /etc/apt/sources.list我次要减少了阿里的源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse3.2 装置Nvidia驱动3.2.1 预步骤编辑blacklist.conf ...

April 25, 2022 · 3 min · jiezi

关于深度学习:大规模并行分布式深度学习

作者:林伟 最新的十年是人工智能爆炸的十年,人工智能曾经在社会各个领域如图片,语音,语言了解,举荐算法获得重大突破,使得其判断的后果曾经靠近或者超过了人类。这个背地的次要起因是是互联网的一直倒退使咱们可能疾速地积攒了海量数据,再加上硬件的疾速倒退以及神经网络训练形式的变革,使咱们越来越有能力训练深且宽的神经网络,产出了超过人类“智能”的模型,并失去广泛应用。所以如何实现大规模并行分布式深度学习就成为深度学习的钻研热点,从而成为推动算法翻新的要害的人工智能工程能力。 并行分布式深度学习的历史倒退历程和范式最开始推动分布式训练的场景是大规模搜寻广告举荐模型。随着互联网的倒退,咱们须要建设一个可能满足互联网用户以及数据规模一种搜寻广告举荐模型,须要通过训练可能很好对用户,网页进行无效的向量化,从而可能通过不同人或者网页的特色,找出更加相干的信息,进步人们在海量数据中匹配数据的效率。而这类模型往往须要学习进去一个十分大的特色矩阵,比方古代零碎这种特色规模以及从最开始百亿[1]曾经倒退到千亿乃至于万亿[2],这就须要一种分布式的零碎来撑持这种机器学习的模型训练。而且因为这种特色矩阵因为人群和网页这种互联网的个性,具备显著的热点效应,是十分稠密的,使得其在拜访时候经常具备在工夫和空间上的不平均性。这也是 2014年谷歌等团队在 OSDI 发表一个分布式系统《Scaling Distributed Machine Learning with the Parameter Server》[3] (相干其余钻研还有[4] [5]),该零碎(Figure 1)建设一个分布式 Key-Value 的存储系统来保留海量的特征向量,而后咱们把海量训练数据散发到多个没有状态的训练工作节点(worker),每个工作节点从分布式 KV的参数服务器获得最新的参数,在以后这批数据进行训练算出在这批数据上做出的预计和心愿的答案(个别是把用户最初实在点击的网页或者商品作为指标答案)的差距,从而计算出须要对于参数调整的梯度,而后在把这些梯度推送会参数服务器进行相干加权均匀,汇总后再调整参数,使得整个模型的预测可能更加贴近目标值。因为稠密的个性,为了可能充分发挥零碎的性能,也因为这类模型往往谋求的指标是一个动静的指标,因为人的趣味和网页自身都是时刻在变动的。所以咱们能够利用这个个性进行异步训练,也就是在训练时候能够适当应用过期的参数以及利用异步的形式来更新参数,从而可能更好的,在更大范畴来容忍参数服务器参数拜访的不平均性以及分布式场景下容错以及网络通讯的压力,使得分布式训练效率更优。更加具体的能够参照 NIPS 2013 年的《More effective distributed ml via a stale synchronous parallel parameter server》等论文[5]。 图1参数服务器(选自[3]) 于此同时,在图片,语音和语言等感知类畛域,随着海量数据的积攒以及算力倒退,神经网络算法终于能够获得突破性的后果,随着 AlexNet[6], GoogleNet[7],Resnet[8],模型的规模和深度也是越来越大,从而机器学习畛域从神级网络算法诞生出一支独立学派:深度学习,并失去了疾速爆炸性的倒退,以至于现在人们议论人工智能往往和深度学习画上了等号。然而因为GPU等硬件也是疾速倒退,显存大小也是同步在变大,使得这类模型还是可能在单块显卡可能放的下,加上咱们能够通过 ZeRO optimizer[25],CPU-offload 等技术进一步提高 GPU 显存的应用效率,以至有文章[26]说实用的模型总是可能在单卡可能放下并且失去训练。然而即便如此,模型的参数还是有上亿的规模,须要海量的数据来训练,为了减速训练,咱们还是须要应用数据并行来分布式训练,因为感知类模型往往是浓密的参数,训练每批数据后,简直是所有的参数都须要更新,这样使得在通信行为上有着十分显著不同于稠密模型的特点,于是咱们有了另外一种并行分布式形式:AllReduce[27]的同步的数据并行。这种分布式训练模式其实从高性能集群 HPC 畛域来,也就是每个训练参与方都保护一个模型的正本,而后在训练时候,每个工作节点分到 N 分之一的数据,通过前向和反向计算,失去这个数据下模型估计值和指标指的差距,从而失去这批数据上参数须要变换的梯度,而后利用高性能 HPC 集群的通信库原语 AllReduce 使得每个节点同时加权均匀所有节点部分梯度变动,使得每个工作节点都失去全局梯度变动的正本,最初同时将该梯度变动使用于模型参数上,使得其每个工作节点上的模型正本同步失去雷同的更新。AllReduce 的有能够细分为 Ring-AllReduce[26]和 Reduce-Scatter 的形式来做,其中 Ring-Allreduce 因为去中心化以及十分确定性的消息传递,使得 Nvidia 能够依据这个个性构建多个 GPU 卡的物理拓扑NVLink[9],从而可能高效进行 Ring 的 Allreduce,并且将这个通信原语集成到本人软件 NCCL 库[10],从而大大推动同步的数据并行模型训练的发展和人工智能利用的倒退。当然也有其余钻研比方字节跳动的 BytePS[11] 利用参数服务器的分布式架构来进行浓密模型的 AllReduce 这个计算,以便在没有良好 NVLink 拓扑上一样可能进行高效的同步的数据并行训练。 ...

April 25, 2022 · 3 min · jiezi

关于深度学习:5分钟NLPTextToText-Transfer-Transformer-T5统一的文本到文本任务模型

本文将解释如下术语:T5,C4,Unified Text-to-Text Tasks 迁徙学习在NLP中的有效性来自对具备自监督工作的丰盛无标记的文本数据进行预训练的模型,例如语言建模或填写缺失的单词。通过事后训练后,能够在较小的标记数据集上微调模型,通常比独自应用标记的数据训练更好的性能。迁徙学习被诸如GPT,Bert,XLNet,Roberta,Albert和Reformer等模型所证实。 Text-To-Text Transfer Transformer (T5)该论文“Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”(2019年出版)提出了一项大规模的教训考察,展现了哪种迁徙学习技术最无效,并利用这些见解创立新的被称为Text-To-Text Transfer Transformer (T5)模型。 迁徙学习的重要局部是用于预训练的未标记数据集,这不仅应该是高质量和多样化的,而且还应该是大量。以前的预训练数据集并不合乎所有这三个规范,因为: Wikipedia的文字高质量,但格调平均,适宜咱们的目标绝对较小来自Common Crawl Web抓取的文字是微小的,高度多样,但品质绝对较低。所以论文中开发了一个新的数据集:Colossal Clean Crawled Corpus (C4),这是一个Common Crawl 的“清洁”版本,比维基百科大两个数量级。 在C4上事后训练的T5模型可在许多NLP基准上取得最先进的后果,同时足够灵便,能够对几个上游工作进行微调。 对文本到文本格式进行对立应用T5,所有NLP工作都能够被转换为对立的文本到文本格式,工作的输出和输入始终是文本字符串。 该框架提供了统一的训练指标,用于预训练和微调。无论工作如何,该模型都具备最大似然指标。如果要指定模型应该哪一类的工作,须要在将其送到模型之前将工作的指标标识.作为特定的文本前缀增加到原始输出序列中。 这个框架容许在任何NLP工作上应用雷同的模型、损失函数和超参数,例如机器翻译、文档摘要、问答和分类工作。 比拟不同的模型和训练策略T5的论文提供了多种模型架构,预训练指标,数据集,训练策略和规模程度的比拟。比照的基线模型是规范编码器解码器Transformer。 模型架构:尽管一些对于NLP的迁徙学习的工作曾经思考了Transformer的架构变体,但原始的编码器 - 解码器模式在具备文本到文本框架的试验中能够完满的工作。预训练指标:大多数去噪指标训练模型会重建随机损坏的文本,在T5的设置中也是执行相似的操作。因而,倡议应用无监督的预训练来减少计算效率,例如填补空白的剥夺指标。未标记的数据集:域内数据的训练可能是无益的,但小型数据集的预训练可能导致无害的过拟合,特地是当数据集足够小时,在预训练过程中反复屡次。这促使人们应用像C4这样的大型和多样化的数据集来实现通用语言了解工作。训练策略:在训练任务后进行微调,能够为无监督的预训练产生了很好的性能晋升。规模程度缩放:比拟了利用额定计算的各种策略,包含更多数据,更大的模型,并应用模型的整合。每种办法都能够失去性能的晋升,然而用更多的数据训练一个较小的模型,往往比用更少的步骤训练一个较大的模型更好。结果表明,文本文本办法胜利利用于生成工作(例如,形象摘要),分类工作(例如自然语言推断),甚至是回归工作,对工作特定的架构和状态都有相当的性能 。 最终的T5模型联合试验的见解,作者用不同的维度(多达110亿个参数)训练模型,并在许多基准测试中实现最先进的后果。这些模型是在C4数据集上事后训练的,而后在对单个工作进行微调之前,在多任务混合上进行预训练。 最大的模型在GLUE, SuperGLUE, SQuAD, and CNN/Daily Mail 等测试中达到了最先进的后果。 总结在本文中,介绍了Text-To-Text Transfer Transformer (T5)模型和 Colossal Clean Crawled Corpus (C4)数据集。同时介绍了不同工作的例子,这被被称为对立的文本到文本工作,并看到具备不同模型架构和训练策略的性能定性试验后果。 如果你对这个感兴趣,能够本人尝试下上面的工作: 理解T5模型的后续改良,如T5v1.1(具备一些架构调整的T5的改进版),MT5(多语言T5模型)和BYT5(在字节序列上事后培训的T5模型而不是 令牌 序列)能够看看Hugging Face的T5实现并且进行微调https://www.overfit.cn/post/a0e9aaeaabf04087a278aea6f06d14d6 作者:Fabio Chiusano

April 23, 2022 · 1 min · jiezi

关于深度学习:深度学习人工智能的第三次热潮

深度学习的历史趋势迄今为止深度学习曾经经验了3次倒退浪潮: 20世纪40年代到60年代,深度学习的雏形呈现在控制论(cybernetics)中; 20世纪80年代到90年代,深度学习体现为联结主义(connectionism); 直到2006年,才真正以深度学习之名振兴。 初识几个概念主动从数据中学习出特色与橙子类型的各种算法,那么这个模型的样子就是你的规定库。 深度学习处于人工智能的哪个地位 意识深度学习一、神经网络的根本单元——神经元用数学模型模拟的人工神经元外面解决的是所有树突的信号源及相干强的计算。 计算公式是这样的:s = p1w1+p2w2+p3w3+b 二、神经网络的构造 三、深度学习的概念深度神经网络(深度学习)是一种具备至多一个隐层的神经网络,即暗藏层的层数很多。 深度学习与传统办法的区别 监督学习深度学习中的监督式学习包含卷积神经网络、循环神经网络等。 非监督学习深度学习中的非监督式学习包含确定型的自编码器办法、基于概率型受限玻尔兹曼机的比照散度办法等。 深度学习罕用的办法自编码器卷积神经网络循环神经网络深度学习无监督式办法自编码器自编码器能够作为一种特色降维的办法。 当咱们应用4个值示意四个类别的时候: 用4个值示意4个类别是不紧致的,存在压缩示意的可能性,比方2个值就能够示意这四个不同的数。 深度学习有监督式办法卷积神经网络 深度学习有监督办法卷积神经网络 深度学习有监督办法—循环神经网 循环神经网络的起源是为了刻画一个序列以后的输入与之前信息的关系。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响前面结点的输入。即:循环神经网络的暗藏层之间的结点是有连贯的,暗藏层的输出不仅包含输出层的输入,还包含上一时刻暗藏层的输入。 傅园慧说: “在澳洲训练十分辛苦,我曾经快死了,几乎是生不如死”。 从文字上来可能是愤恨的。 “鬼晓得我经验了什么,我太累了”,尽管文字上是辛苦的,然而人脸表情、语音情绪不是,所以总结起来还是开心的。 介绍强化学、AIphaGo和迁徙学习强化学习不学习,看电视—家长申斥、挨打 好好学习—处分棒棒糖 AIphaGo 迁徙学习 深度学习的多种利用场景安防监控 智慧城市 医疗衰弱 智能家居 深度学习在智能运维中的利用办法智能运维的倒退过程 KPI异样检测算法 应用自编码器联合聚类算法对KPI进行疾速聚类 法则统一的模式 抖动激烈的模式 异样的模式 运维中常见的KPI数据是一种工夫序列数据,它具备数据实例多、维度高的特点。为了升高数据分析工作的开销,进步剖析效率,咱们心愿将海量的时序数据曲线分为若干类别,从而缩小须要考查的曲线数目。 因而,须要对大规模 辅助KPI标注、辅助构建故障流传链。 应用LSTM做KPI趋势预测 写在最初近年来,在AIOps畛域疾速倒退的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需要在各行业爆发。基于此,云智慧在2021年8月公布了AIOps社区。 社区先后 开源 了数据可视化编排平台-FlyFish、运维治理平台 OMP 、云服务治理平台-摩尔平台、 Hours 算法等产品。 ...

April 20, 2022 · 1 min · jiezi

关于深度学习:Jina-Hub一站式神经搜索系统组件分享平台

 Hub 是 Jina 全家桶中十分重要的一个成员,本期推文咱们将具体介绍 Hub 的相干内容。在过往推文中,咱们介绍过: [高度适配深度学习工作的可扩大数据结构 DocArray]()[开源神经搜寻框架 Jina]()[神经搜寻零碎后果调优工具 Finetuner]()[为文本和图像创立 SOTA 表征向量的 CLIP-as-service]()明天,咱们将为大家介绍 Jina 全家桶中,另一个重要成员--Jina Hub。 Hub:A Marketplace for Executors咱们晓得,Document、Executor 和 Flow 是 Jina 中的三个重要概念。 Document:封装非结构化数据 Executor:实现神经搜寻零碎所须要的不同模块 Flow:将 Executor 连接起来 Document 是 Jina 中一个根底的数据类型, 能够帮忙开发者不便地形容非结构化数据,相当于 Numpy 中的 ndarray 或 PyTorch 中的 Tensor。 一组 Document 形成一个 DocumentArray,开发者能够像应用 Python 原生的 list 一样应用 DocumentArray。 Executor 对应神经搜寻零碎中的不同模块, 实现对数据处理的外围性能。 Flow 则对应整套神经搜寻零碎, 将多个 Executor 连接起来,构建成一套残缺的搜寻零碎。 在 Flow 中调用 Executor 非常简略: from jina import Flowf = Flow().add(uses='jinahub+docker://MyExecutor')with f:    ... ...

April 18, 2022 · 2 min · jiezi

关于深度学习:深度学习教程-吴恩达专项课程-全套笔记解读

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 引言本篇内容是ShowMeAI组织的「深度学习原理常识大全」系列教程入口,本教程依靠于吴恩达老师的《深度学习专项课程》,对内容做了从新梳理与制作,以更全面和直观的图文形式,对深度学习波及的常识、模型、原理、应用领域等进行详解。 内容笼罩:深度学习基础知识、神经网络、反向流传、优化算法(梯度降落、sgd、RMSProp、adam等)、梯度隐没/爆炸与解决、模型问题诊断、神经网络成果优化、深度神经网络、超参数调优、Batch Normalization、标签谬误与数据不匹配的解决方法、计算机视觉、CNN、卷积神经网络、指标检测、人脸识别、图像神经格调转换、序列建模、循环神经网络、RNN、自然语言解决、词嵌入、Seq2seq模型、注意力机制等。 教程地址点击查看残缺教程学习门路内容章节1.深度学习概论 2.神经网络根底 3.浅层神经网络 4.深层神经网络 5.深度学习的实用层面 6.神经网络优化算法 7.网络优化:超参数调优、正则化、批归一化和程序框架 8.AI利用实际策略(上) 9.AI利用实际策略(下) 10.卷积神经网络解读[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-XQPKbqEb-1649921431377)(http://image.showmeai.tech/de...)] 11.经典CNN网络实例详解 12.CNN利用:指标检测 13.CNN利用:人脸识别和神经格调转换 14.序列模型与RNN网络 15.自然语言解决与词嵌入 16.Seq2seq序列模型和注意力机制 ShowMeAI系列教程举荐图解Python编程:从入门到精通系列教程图解数据分析:从入门到精通系列教程图解AI数学根底:从入门到精通系列教程图解大数据技术:从入门到精通系列教程图解机器学习算法:从入门到精通系列教程机器学习实战:手把手教你玩转机器学习系列深度学习教程 | 吴恩达专项课程 · 全套笔记解读

April 15, 2022 · 1 min · jiezi

关于深度学习:深度学习教程-Seq2Seq序列模型和注意力机制

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/227申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 自然语言解决与词嵌入 中咱们对以下内容进行了介绍: 词嵌入与迁徙学习/类比推理词嵌入学习办法神经概率语言模型word2vec(skip-gram与CBOW)GloVe情感剖析词嵌入打消偏见本篇介绍自然语言解决中对于序列模型的高级常识,包含Sequence to sequence序列到序列模型和注意力机制。 1.Seq2Seq 模型1.1 Seq2Seq构造 Seq2Seq(Sequence-to-Sequence)模型可能利用于机器翻译、语音辨认等各种序列到序列的转换问题。一个 Seq2Seq 模型蕴含编码器(Encoder)和解码器(Decoder)两局部,它们通常是两个不同的 RNN。 如图,为Seq2Seq模型典型的机器翻译利用,这个Seq2Seq网络中,蕴含编码网络(encoder network)和解码网络(decoder network)两个RNN模型子结构,其中encoder编码网络将输出语句编码为一个特征向量,传递给decoder解码网络,实现翻译输入。 提出 Seq2Seq 模型的相干论文: Sutskever et al., 2014. Sequence to sequence learning with neural networks Cho et al., 2014. Learning phrase representaions using RNN encoder-decoder for statistical machine translation 1.2 Seq2Seq相似构造利用这种编码器-解码器的构造也能够用于图像形容(Image captioning)工作。这个工作要依据给定的图像,「翻译」出对应的内容形容。 要实现上述工作,能够这么做: ① 第1步:将图片输出到CNN(例如预训练好的AlexNet/VGG/Inception),去掉最初的Bleu层,则倒数第2层这个全连贯层的输入,就相当于图片的特征向量(编码向量),表征了图片特色信息。 ② 第2步:将上述过程失去的图像信息表征向量输出至RNN,即decoder解码网络中,进行解码翻译输入。 图像形容的相干论文: Mao et. al., 2014. Deep captioning with multimodal recurrent neural networks ...

April 15, 2022 · 5 min · jiezi

关于深度学习:深度学习教程-自然语言处理与词嵌入

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/226申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 序列模型与RNN网络 中咱们对以下内容进行了介绍: 循环神经网络RNN语言模型采样生成序列RNN梯度隐没与梯度爆炸GRU(门控循环单元)LSTM(长短期记忆)双向与深度RNN本篇介绍自然语言解决,文本示意与词嵌入的相干常识。 1.词嵌入 ShowMeAI在上一篇内容 序列模型与RNN网络 里介绍了基于词表(例如10000大小的vocabulary)映射,应用one-hot的形式对每个单词进行编码。例如单词Rome、Paris、Italy、France别离呈现在词汇表的第1、2、3、4的地位,则示意如下: 这中one-hot稠密单词表征的最大毛病就是每个单词都是独立的、正交的,无奈晓得不同单词之间的语义类似与关联度。例如「橙子」和「橘子」都是水果,词性相近,然而单从one-hot编码上来看,内积为零,无奈晓得二者的相似性。在自然语言解决的很多工作里,咱们更心愿能更精确地对词进行向量化表征,笼罩到其语义类似度和散布个性。 换用特色化示意办法可能解决这一问题。咱们能够通过用语义特色作为维度来示意一个词,因而语义相近的词,其词向量也相近。语义特色表征的例子如下图所示: 词语义特色表征的长度能够基于场景做不同设定,通常越长能蕴含的信息越多。假设上图的词特征向量长度设定为300。则词汇表中的每个单词都能够应用对应的\( 300 \times 1\) 的向量来示意,该向量的每个元素示意该单词对应的某个特征值。 这种特色表征的长处是依据特征向量能清晰晓得不同单词之间的类似水平,例如「橙子」和「橘子」之间的类似度较高,很可能属于同一类别。这种单词「类别」化的形式,大大提高了无限词汇量的泛化能力。这种特色化单词的操作被称为Word Embeddings,即单词嵌入。 在咱们以后的这个例子中,特征向量的每个特色元素含意是具体的,对应到理论特色,例如性别、年龄等。而在理论自然语言解决利用中,特征向量很多特色元素并不一定对应到有物理意义的特色,是比拟形象的。但这并不影响对每个单词进行向量化的无效表征,而且不同单词之间的相似性和散布个性也能够由向量表征计算取得。 如果咱们应用降维算法(具体能够浏览ShowMeAI文章 图解机器学习 | 降维算法详解)对失去的词嵌入向量解决,并在2维立体里进行可视化,能够直观看到词之间的散布和类似度,如下图所示 相干论文:van der Maaten and Hinton., 2008. Visualizing Data using t-SNE一个更官网一点的定义是:词嵌入(Word Embedding)是NLP中语言模型与表征学习技术的统称,它是指把一个维数为所有词的数量的高维空间(one-hot模式示意的词)「嵌入」到一个维数低得多的间断向量空间中,每个单词或词组被映射为实数域上的向量。 基于大语料库构建失去词嵌入/词向量,可用于实现自然语言解决中的上游各种工作(文本分类、文本类似度建模、序列标注等)。1.1 词嵌入与迁徙学习 在ShowMeAI上一篇文章 序列模型与RNN网络 介绍的命名实体辨认例子中,每个单词采纳的是one-hot编码。如下图所示,因为「菜农」是份职业,能够判断晓得「王刚」是一个人名。 如果替换one-hot为特色化示意办法对每个字进行编码,再构建RNN模型。对于一个新的句子: 因为两句话中,「菜」与「果」的特征向量很靠近,很容易类比得出「张三」也是一个人名。这就是特色化示意办法的长处之一。 通过上例,咱们晓得特色化示意办法有缩小训练样本数目的长处,前提是对海量单词建设特征向量表述(word embedding)。这样,即便是训练样本中没有的单词,也能够依据word embedding的后果失去与其词性相近的单词,从而失去与该单词相近的后果,无效缩小了训练样本的数量。 特色化示意办法的个性使得很多NLP工作能不便地进行迁徙学习,办法步骤是: ① 从大量的文本集中学习词嵌入,或者下载网上开源的、预训练好的词嵌入模型;② 将这些词嵌入模型迁徙到新的、只有大量标注训练集的工作中;③ 能够抉择是否微调词嵌入。当标记数据集不是很大时能够省下这一步。吴恩达老师倡议仅当训练样本足够大的时候,再进行上述第三步。 大家可能会留神到,这里的词嵌入,和ShowMeAI后面文章 CNN利用:人脸识别和神经格调转换 里提到的人脸特色编码有很多相似性。人脸图片通过Siamese网络,失去其特征向量,这点跟词嵌入是相似的。 不同的中央是Siamese网络输出的人脸图片能够是数据库之外的;而词嵌入个别都是已建设的词汇库中的单词,非词汇库单词对立用< UNK >示意。 1.2 词嵌入与类比推理 词嵌入的一个利用场景是类比推理。 ...

April 15, 2022 · 3 min · jiezi

关于深度学习:深度学习教程-序列模型与RNN网络

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/225申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 CNN利用:人脸识别和神经格调转换 中咱们对以下内容进行了介绍: 人脸识别Siamese网络三元组损失Triplet loss人脸验证CNN表征神经网络格调迁徙1D与3D卷积本篇内容开始咱们将对吴恩达老师的第5门课《Recurrent Neural Networks》进行总结梳理。这门课次要介绍循环神经网络(RNN)的基本概念、模型构造细节和具体利用。 自然语言(文本)和音频都是时序前后互相关联的数据,对于这些序列数据咱们会应用非凡的神经网络:循环神经网络(Recurrent Neural Network,RNN)来进行解决。应用RNN实现的利用包含下图中所示: 语音辨认音乐发生器情感分类DNA序列剖析机器翻译视频动作辨认命名实体辨认1.数学符号 咱们来看一个自然语言解决中「命名实体辨认」的例子,理解一下序列模型的数学符号命名规定。 示例语句为:王刚和李明去下班了 该句话蕴含9个字,简略地示意\( y\) 即为\( 1 \times 9\) 向量,每位对应字是否为人名的一部分,\( 1\) 示意是,\( 0\) 示意否。很显著,该句话中「王」,「刚」,「李」,「明」均是人名成分,所以,对应的输入\( y\) 可示意为: $$y = \begin{bmatrix} 1\\ 1\\ 0\\ 1\\ 1\\ 0\\ 0\\ 0\\ 0\end{bmatrix} $$ 用\( y^{\left \langle t \right \rangle}\) 示意序列对应地位的输入,应用\( T_y\) 示意输入序列长度,咱们有\( 1\leq t\leq T_y\) 。 咱们把输出\( x\) 示意为: $$x = \begin{bmatrix} x^{\left \langle 1 \right \rangle}\\ x^{\left \langle 2 \right \rangle}\\ x^{\left \langle 3 \right \rangle}\\ x^{\left \langle 4 \right \rangle}\\ x^{\left \langle 5 \right \rangle}\\ x^{\left \langle 6 \right \rangle}\\ x^{\left \langle 7 \right \rangle}\\ x^{\left \langle 8 \right \rangle}\\ x^{\left \langle 9 \right \rangle}\end{bmatrix} $$ ...

April 15, 2022 · 7 min · jiezi

关于深度学习:深度学习教程-CNN应用人脸识别和神经风格转换

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/224申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 CNN利用:指标检测 中咱们对以下内容进行了介绍: 指标定位特色点检测指标检测边框预测非极大值克制YOLORCNN本篇次要介绍计算机视觉中其余利用,包含人脸识别和神经格调迁徙。 1.人脸识别 咱们本节要介绍到人脸的一些计算机视觉利用,首先咱们对人脸验证(Face Verification)和人脸识别(Face Recognition)做一个辨别: 人脸验证:个别指一个一对一问题,只须要验证输出的人脸图像是否与某个已知的身份信息对应。人脸识别:一个更为简单的一对多问题,须要验证输出的人脸图像是否与多个已知身份信息中的某一个匹配。下面2个工作中,个别人脸识别比人脸验证更难一些。因为假如人脸验证零碎的错误率是1%,那么在人脸识别中,输入别离与K个模板都进行比拟,则相应的错误率就会减少,约K%。模板个数越多,错误率越大。 1.1 One-Shot 学习 人脸识别所面临的一个挑战是要求零碎只采集某人的一个面部样本,就能疾速精确地辨认出这个人,即只用一个训练样本来取得精确的预测后果。这被称为One-Shot学习。 One-shot learning对于数据库中的\( N\) 集体,对于每张输出图像,Softmax输入\( N+1\) 种标签(N集体+都不是=N+1品种别),这种解决办法有两个毛病: 每个人只有一张图片,训练样本少,构建的CNN网络不够强壮。若数据库减少另一个人,输入层Softmax的维度就要发生变化,相当于要从新构建CNN网络,使模型计算量大大增加,不够灵便。为了解决One-shot学习的问题,引入了类似函数(similarity function)。类似函数示意两张图片的类似水平,用\( d(img1,img2)\) 来示意。若\( d(img1,img2)\) 较小,则示意两张图片类似,是同一个人;若\( d(img1,img2)\) 较大,则示意两张图片不是同一个人。 类似函数定义及断定规定如下: $$Similarity = d(img1, img2)$$ \( d(img1,img2)\leq \tau\) 则断定图片类似\( d(img1,img2)> \tau\) 则断定图片不同具体的,在人脸识别问题中,会计算测试图片与数据库中\( K\) 个指标的类似函数,取其中\( d(img1,img2)\) 最小的指标为匹配对象。若所有的\( d(img1,img2)\) 都很大,则示意数据库没有这个人。 1.2 Siamese 网络 咱们在后面的内容里,看到CNN对于图像有很好的表征能力,训练好的模型能够通过网络档次计算对图像做十分无效的向量化表征,基于此基础咱们能够构建图像类似度度量学习的网络,这就是驰名的Siamese 网络,它是一种对两个不同输出运行雷同的卷积网络,而后对它们的后果进行比拟的神经网络。 Siamese网络的大抵构造如下: 上图中2张图片\( x^{(1)}\) 、\( x^{(2)}\) 别离输出两个雷同的卷积网络中,通过全连贯层后不再进行Softmax,而是失去特征向量\( f(x^{(1)})\) 、\( f(x^{(2)})\) 。 这时,能够通过各自网络层的输入向量之差的范数来示意两幅图片的差别度: ...

April 15, 2022 · 3 min · jiezi

关于深度学习:深度学习教程-CNN应用目标检测

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/223申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 经典CNN网络实例详解 中咱们对以下内容进行了介绍: 经典CNN构造 LeNet-5AlexNetVGGResNet(Residual Network,残差网络)Inception Neural Network1x1卷积迁徙学习数据扩增手工工程与计算机现状 本篇次要介绍计算机视觉中最典型的利用之一指标检测,指标检测工作是对输出图像进行分类的同时,检测图像中是否蕴含某些指标,并对他们精确定位并标识。 1.指标定位 咱们在后面的内容中,次要给大家介绍图像识别(分类)相干的常识,除了图像识别,咱们还有「指标定位」和「指标检测」工作,如下图所示。 定位分类问题不仅要求判断出图片中物体的品种,还要在图片中标记出它的具体位置,用边框(Bounding Box,或者称突围盒)把物体圈起来。如图两头所示。 咱们略微阐明一下定位分类和指标检测工作的差异:通常在定位分类问题中,只有一个较大的对象位于图片两头地位;而在指标检测问题中,图片能够含有多个对象,甚至单张图片中会有多个不同分类的对象。 定位分类工作中的「分类」局部大家曾经十分相熟了,应用如下的卷积神经网络即可实现。 原始图片通过若干卷积神经网络档次后,Softmax层输入分类(上图维度是\( 4 \times 1\) )向量,别离是pedestrain,car,motorcycle和background四类。 对于指标定位问题,其模型如下所示: 为了定位图片中汽车的地位,能够让神经网络多输入 4 个数字,标记为 \( b_x\) 、\( b_y\) 、\( b_h\) 、\( b_w\) (留神上图中\( P_c\) 是一个示意指标物是否存在的01取值标签)。将图片左上角标记为 \( (0, 0)\) ,右下角标记为 \( (1, 1)\) ,则有: 橙色方框的中心点:\( (b_x, b_y)\)边界框的高度:\( b_h\)边界框的宽度:\( b_w\)因而,训练集不仅蕴含对象分类标签,还蕴含示意边界框的四个数字。定义指标标签 \( Y\) 如下: $$\left[\begin{matrix}P_c\\ b_x\\ b_y\\ b_h\\ b_w\\ c_1\\ c_2\\ c_3\end{matrix}\right]$$ 则有: ...

April 15, 2022 · 3 min · jiezi

关于深度学习:深度学习教程-经典CNN网络实例详解

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/222申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 卷积神经网络解读 中咱们对以下内容进行了介绍: 卷积计算、填充卷积神经网络单层构造池化层构造卷积神经网络典型构造CNN特点与劣势本篇内容ShowMeAI开展介绍和总结几个有名的典型CNN案例。这些CNN是最典型和无效的构造,吴恩达老师心愿通过对具体CNN模型案例的剖析解说,帮忙咱们了解CNN并训练理论的模型。 本篇波及到的经典CNN模型包含: LeNet-5AlexNetVGGResNet(Residual Network,残差网络)Inception Neural Network1.经典卷积网络 1.1 LeNet-5手写字体辨认模型LeNet5由Yann LeCun传授于90年代提出来,是最早的卷积神经网络之一。它是第一个胜利利用于数字辨认问题的卷积神经网络。在MNIST数据中,它的准确率达到大概99.2%。 LeNet5通过奇妙的设计,利用卷积、参数共享、池化等操作提取特色,防止了大量的计算成本,最初再应用全连贯神经网络进行分类辨认,这个网络也是最近大量神经网络架构的终点。 LeNet-5针对灰度图像而训练,因而输出图片维度为\( (32,32,1)\) (留神其中通道数为1)。该模型总共蕴含了约6万个参数,远少于规范神经网络所需。典型的LeNet-5构造蕴含卷积层(CONV layer),池化层(POOL layer)和全连贯层(FC layer),排列程序个别为CONV layer \( \Longrightarrow\) POOL layer \( \Longrightarrow\) CONV layer \( \Longrightarrow\) POOL layer \( \Longrightarrow\) FC layer \( \Longrightarrow\) FC layer \( \Longrightarrow\) OUTPUT layer。一个或多个卷积层前面跟着一个池化层的模式至今仍非常罕用。当LeNet-5模型被提出时,其池化层应用的是均匀池化,而且各层激活函数个别选用Sigmoid和tanh。当初咱们更多的会应用最大池化并选用ReLU作为激活函数。相干论文:LeCun et.al., 1998. Gradient-based learning applied to document recognition。吴恩达老师倡议精读第二段,泛读第三段。1.2 AlexNetAlexNet由Alex Krizhevsky于2012年提出,夺得2012年ILSVRC较量的冠军,top5预测的错误率为16.4%,远超第一名。 AlexNet采纳8层的神经网络,5个卷积层和3个全连贯层(3个卷积层前面加了最大池化层),蕴含6亿3000万个链接,6000万个参数和65万个神经元。具体的网络结构如下图: 模型构造解析: 卷积层 \( \Longrightarrow\) (最大)池化层 \( \Longrightarrow\) 全连贯层的构造。AlexNet模型与LeNet-5模型相似,然而更简单,蕴含约6000万个参数。另外,AlexNet模型应用了ReLU函数。当用于训练图像和数据集时,AlexNet可能解决十分类似的根本结构模块,这些模块往往蕴含大量的暗藏单元或数据。相干论文:Krizhevsky et al.,2012. ImageNet classification with deep convolutional neural networks。这是一篇易于了解并且影响微小的论文,计算机视觉群体自此开始器重深度学习。1.3 VGGVGG是Oxford的Visual Geometry Group的组提出的CNN神经网络。该网络是在ILSVRC 2014上的相干工作,次要工作是证实了减少网络的深度可能在肯定水平上影响网络最终的性能。在提出后的几年内,大家广泛应用其作为典型CNN构造。 ...

April 15, 2022 · 3 min · jiezi

关于深度学习:深度学习教程-卷积神经网络解读

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tutorials/35本文地址:http://www.showmeai.tech/article-detail/221申明:版权所有,转载请分割平台与作者并注明出处珍藏ShowMeAI查看更多精彩内容 本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在这里查看。 引言在ShowMeAI前一篇文章 AI利用实际策略(下) 中咱们对以下内容进行了介绍: 谬误剖析(error analysis)谬误标签状况及修改数据分布和数据不匹配问题及解决办法迁徙学习多任务学习端到端学习本篇开始,咱们对吴恩达老师第4门课《Convolutional Neural Networks》(卷积神经网络)做总结梳理。内容次要笼罩卷积神经网络(CNN)的基本概念、模型和具体利用等。 1.计算机视觉 计算机视觉(Computer Vision)的高速倒退标记着新型利用产生的可能,例如主动驾驶、人脸识别、发明新的艺术风格。人们对于计算机视觉的钻研也催生了很多计算机视觉与其余畛域的穿插成绩。如下是一些典型的计算机视觉场景利用场景: 前面局部ShowMeAI会依据吴恩达老师的课程给大家讲到以下CV利用: 图片分类(Image Classification)指标检测(Object detection)神经格调转换(Neural Style Transfer)应用传统神经网络解决机器视觉面临的一个挑战是数据的输出可能会十分大。例如一张 \( 1000 \times 1000 \times 3\) 的图片,神经网络输出层的维度将高达三百万,使得网络权重 \( W\) 十分宏大。这样会造成两个结果: 神经网络结构复杂,数据量绝对较少,容易呈现过拟合。所需内存和计算量微小。因而,个别的神经网络很难解决海量图像数据。解决这一问题的办法就是应用非凡构造的神经网络:卷积神经网络(Convolutional Neural Network, CNN)。 2.卷积运算后面的文章里讲到过,神经网络由浅层到深层,别离能够检测出不同档次的信息,在计算机视觉中咱们依靠深度卷积神经网络,来顺次学习了解图片的边缘特色、部分特色(例如眼睛、鼻子等),直至最初一层综合后面检测的特色来辨认整体图像内容。 卷积运算(Convolutional Operation)是卷积神经网络最根本的组成部分。咱们以边缘检测为例,来解释卷积是怎么运算的。 2.1 边缘检测 如下图所示,以人脸识别为例,神经网络由浅层到深层,别离能够检测出图片的边缘特色 、部分特色(例如眼睛、鼻子等)、整体面部轮廓等。 图片最常做的边缘检测有两类:垂直边缘(Vertical Edges)检测和程度边缘(Horizontal Edges)检测。 图片的边缘检测能够通过与相应滤波器进行卷积来实现。以垂直边缘检测为例,原始图片尺寸为 \( 6 \times 6\) ,两头的矩阵被称作滤波器(filter),尺寸为 \( 3 \times 3\) ,卷积后失去的图片尺寸为 \( 4 \times 4\) ,失去后果如下(数值示意灰度,以左上角和右下角的值为例): 上图只显示了卷积后的第一个值和最初一个值。卷积运算的求解过程是从左到右,由上到下,每次在原始图片矩阵中取与滤波器等同大小的一部分,每一部分中的值与滤波器中的值对应相乘后求和,将后果组成一个矩阵。 下图对应一个垂直边缘检测的例子: ...

April 15, 2022 · 3 min · jiezi