技术方案分类 第1篇
解决方案主要分为4种:MySQL的分区技术、NoSql、NewSQL、MySQL的分库分表。
(1)mysql分区技术:把一张表存放在不同存储文件。由于无法负载,使用较少。
(2)NoSQL(如MongoDB):如是订单等比较重要数据,强关联关系,需约束一致性,不太适应。
(3)NewSql(具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性):如TiDB可满足需求。
(4)MySQL的分库分表:如使用mysql,此种方案为主流方式。
技术方案分类 第2篇
PaddleNLP 完全基 PaddlePaddle ()开发。PaddlePaddle 是中国首个、也是目前国内唯一开源开放,集核心框架、工具组件和服务平台为一体的端到端开源深度学习平台,其囊括支持面向真实场景应用、达到工业级应用效果的模型,并具备针对大规模数据场景的分布式训练能力、支持多种异构硬件的高速推理引擎。
PaddleNLP 提供依托于百度百亿级大数据的预训练模型,能够极大地方便 NLP 研究者和工程师快速应用。使用者可以用 PaddleNLP 快速实现文本分类、文本匹配、序列标注、阅读理解、智能对话等 NLP 任务的组网、建模和部署,而且可以直接使用百度开源工业级预训练模型进行快速应用。用户在极大地减少研究和开发成本的同时,也可以获得更好的基于工业实践的应用效果。
文本分类是自然语言处理中最常见的任务,也是应用场景比较广泛的任务。文本分类任务定义:简单的来说,给定一段文本,可以是句子,可以是文章,甚至是一个文件内容,机器使用分类模型进行分类,给出最终的分类标签结果。
文本分类任务广泛应用于长短文本分类、情感分析、新闻分类、事件类别分类、政务数据分类、商品信息分类、商品类目预测、文章分类、论文类别分类、专利分类、案件描述分类、罪名分类、意图分类、论文专利分类、邮件自动标签、评论正负识别、药物反应分类、对话分类、税种识别、来电信息自动分类、投诉分类、广告检测、敏感违法内容检测、内容安全检测、舆情分析、话题标记等各类日常或专业领域中。
文本分类任务按照高频场景可以大致分为三大类:多分类、多标签、层次分类。全套流程包括:打通数据标注-模型训练-模型调优-模型压缩-预测部署全流程,旨在解决细分场景应用的痛点和难点,包括常见的预训练模型、数据标注质量差、效果调优困难、AI入门成本高、如何高效训练部署等问题,快速实现文本分类产品落地
本次技术方案优势:
技术方案分类 第3篇
虚拟化技术可以划分为:硬件虚拟化,操作系统虚拟化,应用程序虚拟化等。
硬件虚拟化,又叫做准虚拟化,就是用软件来虚拟一台标准电脑的硬件配置,如CPU、内存、硬盘、声显卡、光驱等,成为一台虚拟的裸机。
操作系统虚拟化,就是以原操作系统为母体样本,利用虚拟化软件克隆出多个新系统。
应用程序虚拟化,主要任务是虚拟操作系统,保证应用程序的正常运行虚拟系统的某些关键部分,如注册表等,轻量、小巧;还可以实现很多非绿色软件的移动使用,通过局域网方便快捷地分发到企业终端上,不用安装,直接使用,在应用范围和体验上超越绿色软件,大大降低了企业的IT成本。
虚拟化技术可以划分为:服务器虚拟化、存储虚拟化、网络虚拟化、桌面虚拟化、CPU虚拟化、文件虚拟化等。
服务器虚拟化,应用了硬件虚拟化和操作系统虚拟化技术,在一台服务器运行安装多个操作系统,并且可以同时运行,就相当于多台服务器同时运行了,利用率大大提高。
存储虚拟化,是将一堆独立分布的硬盘虚拟的整合成一块硬盘,存储虚拟化的目的是方便管理和有效利用存储空间。
网络虚拟化,一般是指VPN,它将两个异地的局域网,虚拟成一个局域网,这样一些企业的OA、B/S软件,就可以像真实局域网一样进行电脑互访了。
桌面虚拟化,是在服务器上部署好桌面环境,传输到客户端电脑上,而客户端只采用瘦客户机的应用模式,即只安装操作系统,接受服务器传输来的虚拟桌面,用户看到的就像本地真实环境一样,所有的使用其实是对服务器上的桌面进行操作。
CPU虚拟化,是对硬件虚拟化方案的优化和加强。以前是用虚拟化软件把一个CPU虚拟成多个CPU,而CPU虚拟化直接从硬件层面实现,这样大大提高的性能。
文件虚拟化,是将分布在多台电脑的文件数据虚拟成一台电脑上的,这样以前找文件要去不同的机器上查找,而现在则像在一台电脑上操作一样。
技术方案分类 第4篇
在机器学习(Machine learning)领域,监督学习(Supervised learning)、非监督学习(Unsupervised learning)以及半监督学习(Semi-supervised learning)是三类研究比较多,应用比较广的学习技术,wiki上对这三种学习的简单描述如下:
我们使用一些传统的监督学习方法做分类的时候,往往是训练样本规模越大,分类的效果就越好。但是在现实生活的很多场景中,标记样本地获取是比较困难的,这需要领域内的专家来进行人工标注,所花费的时间成本和经济成本都是很大的。而且,如果训练样本的规模过于庞大,训练的时间花费也会比较多。那么有没有办法,能够使用较少的训练样本来获得性能较好的分类器呢?主动学习(Active Learning)为我们提供了这种可能。主动学习通过一定的算法查询最有用的未标记样本,并交由专家进行标记,然后用查询到的样本训练分类模型来提高模型的精确度。
技术方案分类 第5篇
针对这个问题NNclassifier中设计了一个基于最近邻和支持向量的分类器来取代softmax, 使模型能对远离已有训练数据的区域产生较高的不确定性。
具体而言,每类训练学习N个支持向量,基于样本特征与各类的支持向量之间的距离,就可以定义分类概率为与这N个支持向量的核函数的最大距离:
$pc\left(fx\right)=\max n \delta\left(-d\left(fx, m_{c, n}\right)\right)$
Rejection confidence,用于度量远离所有支持向量的样本,如图(b)所示; confusion confidence,用于度量远离支持向量以及同时靠近多个不同类支持向量的样本,如图©所示。
$\begin{aligned} &M{\text {rejection }}(x)=\sumc\left(1-pc\left(fx\right)\right) \ &M{\text {confusion }}(x)=\sumc\left(1+pc\left(fx\right)-\max c pc\left(f_x\right)\right) \end{aligned}$
技术方案分类 第6篇
基于流(stream-based)的主动学习中,未标记的样例按先后顺序逐个提交给选择引擎,由选择引擎决定是否标注当前提交的样例,如果不标注,则将其丢弃。
在基于流的主动学习中,所有训练样本的集合以流的形式呈现给算法。每个样本都被单独发送给算法。算法必须立即决定是否标记这个示例。从这个池中选择的训练样本由oracle(人工的行业专家)标记,在显示下一个样本之前,该标记立即由算法接收。
于基于流的算法不能对未标注样例逐一比较,需要对样例的相应评价指标设定阈值,当提交给选择引擎的样例评价指标超过阈值,则进行标注,但这种方法需要针对不同的任务进行调整,所以难以作为一种成熟的方法投入使用。
技术方案分类 第7篇
这一类方法核心的观点是,不管不确定性或多样性,而是希望选出的样本能使模型产生的变化最大。变化最大可以着眼于loss最大,也可以关注梯度的情况,比如梯度范数大小。
learning loss 2019 在任务模型上加一个小的附属子网络用来学习预测样本的损失值。训练任务模型的时候,也同时训练这个预测损失模块,之后就用这个模块来预测对哪个未标注样本的损失大,就选他。整个算法的流程图如下
损失预测模块的结构和损失计算方法如下:
技术方案分类 第8篇
这类方法实现起来最简单,非常启发式。整个主动学习分两步来做,第一步先用不确定性(熵,BALD等)选超出主动学习budget size的候选样本集,在用多样性的方法,选择能最好覆盖这个候选集的一组样本。
SA 2017 用Bootstrapping训练若干个模型,用这些模型预测的variance来表示不确定性,之后再用候选集中样本特征相似度来选取与已经选到的样本差异最大的样本,就类似coreset-greedy的做法。
CoreLog 2021 基于Proper Scoring Rules给了表示不确定性的度量,先选出不确定性大的前k%个样本,再用kmeans聚类来选择多样的样本。
这种结合的方式没毛病,但有个小的问题,很难说清咋确定这个候选集大小,到底多大能算作高不确定性,能丢到候选集里。
技术方案分类 第9篇
1、垂直区分
垂直分库:从业务角度,一个库分成多个库,如把订单和用户信息分成两个库来存储。这样的好处就是可以微服务了。每块的业务单独部署,互不影响,通过接口去调用。
图1 单库到多库
垂直分表:把大表分成多个小表,如热点数据和非热点数据分开,提高查询速度。
2、水平区分
水平分表:同一业务如数据量大了以后,根据一定的规则分为不同的表进行存储。
图2 单表到多表
水平分库:如订单分成多个库存储,分解服务器压力。
以上一般来说,垂直分库和水平分表用的会多些。
技术方案分类 第10篇
之前介绍了基于不确定性的方法,以及基于多样性的方法。接下来我们来看看融合两者的方法。就动机而言,如果只用不确定性标准来选样本,在批量选择的场景中,很容易出现选到冗余样本的问题。而在深度学习中,由于训练开销的缘故,通常都采用批主动学习,所以为了提高主动学习的效率,就得考虑批量选择高不确定性样本时的多样性问题。而从多样性样本选择方法的角度来说,单纯的特征空间覆盖算法不能区分模型是否已经能很好预测某部分样本,会限制这类方法所能达到的上限。
融合不确定性和多样性的思路主要有三种:
技术方案分类 第11篇
到目前为止,虚拟化技术的各方面都有了进步,虚拟化也从纯软件的虚拟化逐深入到处理器级虚拟化,再到平台级虚拟化乃至输入/输出级虚拟化。对数据中心来说,虚拟化可以节约成本,最大化利用数据中心的容量和更好的保护数据。虚拟化技术已经成为私有云和混合云设计方案的基础。
虚拟机(Virtual Machine, VM) 是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。简单地说,虚拟机就是通过软件在宿主机上虚拟出一台计算机。虚拟机技术是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和数据存储。在实际的生产 环境中,虚拟机技术主要用来解决云数据中心和高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化地利用物理硬件。即将多个操作系统熟合到一台高性能服务器上,最大化利用硬件平台的所有资源,用更少的投入实现更多的应用,还可以简化IT 架构,降低管理资源的难度,避免IT架构的非必要扩张。而且虚拟机的真正硬件无关性还可以实现虚拟机运行时迁移,实现真正的不间断运行,从而最大化保持业务的持续性,不用为购买超高可用性平台而付出高昂的代价。
虚拟机技术实现了一台计算机同时运行多个操作系统,而且每个操作系统中都有多个程序运行,每个操作系统都运行在一个虚拟的CPU或虚拟主机上。虚拟机技术需要 CPU、主板芯片组、BIOS和软件的支持,如VMM软件或者某些操作系统本身。
虚拟机技术的核心是虚拟机监视器VMM (Virtual Machine Monitor) , VMM也称为 Hypervisor. VMM的作用是向底层分配访问宿主机的硬件资源,向上管理虚拟机的操作系统和应用程序。它是一个宿主程序,该程序是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机,实现一台计算机支持多个完全相同的执行环境。每个用户都会感觉到自己在一_立的、与其他用户相隔离的计算机上进行操作,尽管事实上为每个用户提供服务的都是同一台机器。在此种情况下,一台虚拟机就是由一个潜在的控制程序管理的操作系统。VMM 为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器、内 存、I/O 设备等)。VMM采用某种调度算法在各个虚拟机之间共享 CPU, 如采用时间片轮转调度算法。
虚拟机系统与实际的计算机操作系统没有区别,也会感染病毒,但是由于虚拟机是封闭的虚拟环境,如果虚拟机不与宿主机连接,则不会受宿主机病毒的影响。
cpu虚拟化: 1、模拟:纯软件方式实现,性能很差。虚拟机运行在模拟出来的cpu上。(模拟出环1,2,3,4) 2、虚拟: 完全虚拟化:full-virtulization,不知道自己运行在虚拟环境中,需要调用特权命令时直接调用。虚拟出来的架构与地参架构要保持一致 BT技术:二进制翻译(软件),边翻译边执行。上层架构和底层架构要保持一致(即虚拟机系统架构和物理机的系统架构保持一致)。虚拟机用户空之间可直接运行在物理cpu的环3,只需要虚拟出ring0
HVM技术:硬件辅助虚拟化,此cpu为特制cpu,比普通cpu多了一个环(环-1,0,1,2,3),物理机的内核运行在环-1上,虚拟机的内核运行在环0上,用户空间都运行在环3上(性能优秀)半虚拟化:para-virtulization,知道自己运行在虚拟环境中,需要调用特权指令时,向物理机的内核发起请求,由物理内核进行调用(性能优秀,切需要对虚拟机的内核进行修改)。虚拟出来的架构与底层架构要保持一致。
内存虚拟: shadow page table技术(影子页表):需要经过两次的内存地址转换。cpu在不同虚拟机之间切换时,需要清空MMU中的缓存,所以TLB中的缓存很难命中,效率低下。 虚拟机是进程,进程运行时需要申请内存,虚拟机把自己看作是运行在申请来的内存上(虚拟内存),实际上是运行在物理内存上。当虚拟机中的进程需要调用内存时,先将进程所需的线性地址空间地址发送给MMU,由MMU映射到虚拟机申请来的虚拟内存地址,在由shadow page table技术将虚拟内存地址转换到物理内存地址中。
硬件虚拟化: MMU Virtulization:MMU虚拟化(硬件虚拟化,需要特定cpu支持) Intel:EPT,ExtendedPage Table AMD:NTP,Nested Page Table
TLB virtulization tagged TLB
I/O: 外存: 硬盘、光盘、U盘 网络设备: 网卡 显示设备: VGA:frame buffer机制 键盘鼠标: ps/2,usb
I/O虚拟化的方式: 模拟(性能较差):完全使用软件来模拟真实硬件
半虚拟化(性能优秀):只能运用在网卡和硬盘设备上。如果虚拟机向外发一个包,直接由虚拟机中的IO前端驱动(IO frontend)直接转发到物理机中的IO站(IO stack),然后又由物理机的内核直接将IO站中的包通过IO后端驱动(IO backend)来驱动网卡将包发送出去。此方法与模拟的方法比较,减少了在虚拟机中通过软件模拟网卡,然后由虚拟机中的驱动来驱动网卡,再由模拟的网卡将包转发进物理机中的步骤,性能大大提升。
IO-through:IO透传 多个硬件设备,每台虚拟机通过物理机上内核中的IO管理器(IO Manager)调度到自己专属的硬件设备上。如:有五块硬盘,物理机使用了两块硬盘,剩下的三块硬盘分配到3台虚拟机上,每个虚拟机有自己的专属硬盘。
需要主板支持透传技术 Intel:VT-d 在虚拟技术中,实现IO的可靠性,灵活性,和性能的提升。基于北桥的硬件辅助的虚拟化技术。
技术方案分类 第12篇
分库分表常用的方案:Hash取模方案和range范围方案;
路由算法为最主要的算法,指得是把路由的Key按照指定的算法进行存放;
1、Hash取模方案
根据取余分配到不同的表里。要根据实际情况确认模的大小。此方案由于平均分配,不存在热点问题,但数据迁移很复杂。
图3 hash方案
2、Range范围方案
range根据范围进行划分,如日期,大小。此方案不存在数据迁移,但存在热点问题。
图4 range方案
技术方案分类 第13篇
解决此类问题的中间件主要为:Proxy模式、Client模式。
(1)Proxy模式
把SQL组合、数据库路由、执行结果合并等功能全部存放在一个代理服务中,而与分库分表相关的处理逻辑全部存放在另外的服务中,这种设计模式的优点是对业务代码无侵入,业务只需要关注自身的业务逻辑即可。
图5 proxy模式
(2)Client模式
把分库分表相关逻辑存放在客户端,一版客户端的应用会引用一个jar,然后再jar中处理SQL组合、数据库路由、执行结果合并等相关功能。
图6 client模式
(3)中间件的比较
图7 中间件
由于Client模式少了一层,运维方便,相对来说容易些。
技术方案分类 第14篇
最小置信度=1(100%置信度)和每个项目的最自信的标签之间的差异。
虽然可以单独按置信度的顺序进行排名,但将不确定性得分转换为0-1范围,其中1是最不确定的分数可能很有用。因为在这种情况下,我们必须将分数标准化。我们从1中减去该值,将结果乘以N/(1-N),n为标签数。这时因为最低置信度永远不会小于标签数量(所有标签都具有相同的预测置信度的时候)。
让我们将其应用到上面的示例中,不确定性分数将是:() *(3/2)= 。
最小置信度是最简单,最常用的方法,它提供预测顺序的排名,这样可以以最低的置信度对其预测标签进行采样。
技术方案分类 第15篇
在各种主动学习方法中,查询函数的设计最常用的策略是:不确定性准则(uncertainty)和差异性准则(diversity)。 不确定性越大代表信息熵越大,包含的信息越丰富;而差异性越大代表选择的样本能够更全面地代表整个数据集。
对于不确定性,我们可以借助信息熵的概念来进行理解。我们知道信息熵是衡量信息量的概念,也是衡量不确定性的概念。信息熵越大,就代表不确定性越大,包含的信息量也就越丰富。事实上,有些基于不确定性的主动学习查询函数就是使用了信息熵来设计的,比如熵值装袋查询(Entropy query-by-bagging)。所以,不确定性策略就是要想方设法地找出不确定性高的样本,因为这些样本所包含的丰富信息量,对我们训练模型来说就是有用的。
那么差异性怎么来理解呢?之前说到或查询函数每次迭代中查询一个或者一批样本。我们当然希望所查询的样本提供的信息是全面的,各个样本提供的信息不重复不冗余,即样本之间具有一定的差异性。在每轮迭代抽取单个信息量最大的样本加入训练集的情况下,每一轮迭代中模型都被重新训练,以新获得的知识去参与对样本不确定性的评估可以有效地避免数据冗余。但是如果每次迭代查询一批样本,那么就应该想办法来保证样本的差异性,避免数据冗余。
从上图也可以看出来,在相同数目的标注数据中,主动学习算法比监督学习算法的分类误差要低。这里注意横轴是标注数据的数目,对于主动学习而言,相同的标注数据下,主动学习的样本数>监督学习,这个对比主要是为了说明两者对于训练样本的使用效率不同:主动学习训练使用的样本都是经过算法筛选出来对于模型训练有帮助的数据,所以效率高。但是如果是相同样本的数量下去对比两者的误差,那肯定是监督学习占优,这是毋庸置疑的。
技术方案分类 第16篇
主动学习不是一次为所有的数据收集所有的标签,而是对模型理解最困难的数据进行优先级排序,并仅对那些数据要求标注标签。然后模型对少量已标记的数据进行训练,训练完成后再次要求对最不确定数据进行更多的标记。
通过对不确定的样本进行优先排序,模型可以让专家(人工)集中精力提供最有用的信息。这有助于模型更快地学习,并让专家跳过对模型没有太大帮助的数据。这样在某些情况下,可以大大减少需要从专家那里收集的标签数量,并且仍然可以得到一个很好的模型。这样可以为机器学习项目节省时间和金钱!