❶ Spark Streaming性能测试有什么好的benchmark吗
科普Spark,Spark是什么,如何使用Spark
1.Spark基于什么算法的分布式计算(很简单)
2.Spark与MapRece不同在什么地方
3.Spark为什么比Hadoop灵活
4.Spark局限是什么
5.什么情况下适合使用Spark
什么是Spark
Spark是UC Berkeley AMP lab所开源的类Hadoop MapRece的通用的并行计算框架,Spark基于map rece算法实现的分布式计算,拥有Hadoop MapRece所具有的优点;但不同于MapRece的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map rece的算法。其架构如下图所示:
Spark与Hadoop的对比
Spark的中间数据放到内存中,对于迭代运算效率更高。
Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Rece两种操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, rece, lookup, save等多种actions操作。
这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。
不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
容错性
在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错。
可用性
Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。
Spark与Hadoop的结合
Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapRece运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。
Spark的适用场景
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素)
由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。总的来说Spark的适用面比较广泛且比较通用。
运行模式
本地模式
Standalone模式
Mesoes模式
yarn模式
Spark生态系统
Shark ( Hive on Spark): Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop MapRece。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。
Spark streaming: 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。
Bagel: Pregel on Spark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。
End.
❷ visual tracker benchmark有什么用
在2015年的时候数据集由原来的50个序列扩充到现在的100个。
现在多数使用的是Benchmark V1.0来运行测试所有tracking的结果,在官网下载完代码之后,里面已经存在了关于各种tracker在不同数据集上的结果了。
想要验证自己的tracker在这个基准上的结果,说来非常的简单。
直接的方法:
首先将代码先拷到benchmark_v1.0/tackers/这个文件夹下,你会发现里面已有好几个算法的代码文件夹了。
这边注意了,我就是这样的,没有注意把代码拷贝进去之后要自己写一个调用函数,benchmark在运行的时候调用我们的算法的函数,就是每个tracker文件夹当中的run_trackers名字,这个一定要有,格式也很简单,参照其他的算法应该很容易就能写出来了。
第二步是:到benchmark_v1.0/util/configTrackers.m这个函数中,在trackers1这个结构体中添加上你的代码的名字,比如:struct(‘name’,’KCF’,’namePaper’,’KCF’),…。
第三步是:运行main_running.m函数。
这个过程当中你可能会遇到一些问题:第一个会是路径的问题,这个需要你更改的路径有configTrackers.m和configSeqs.m里面的路径,对应修改就可以了。还有一点就是在修改configTrackers.m的时候,你可能添加一个自己的tracker到已知的结构体当中会遇到运行main_running函数时出现错误,这个时候尝试单独把自己的tracker作为一个结构体,把其他的算法都注释掉,只剩下自己的tracker然后试试,因为这个时候其他的tracker结果都已经保存下来了,只需要自己的tracker的结果出来就好了。
❸ C++的粒子群算法运行结果
PSO粒子群优化算法 摘自:人工智能论坛 1. 引言
粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),有Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于叠代的优化工具。系统初始化为一组随机解,通过叠代搜寻最优值。但是并没有遗传算法用的交叉(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。详细的步骤以后的章节介绍 同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域
2. 背景: 人工生命 "人工生命"是来研究具有某些生命基本特征的人工系统. 人工生命包括两方面的内容 1. 研究如何利用计算技术研究生物现象
2. 研究如何利用生物技术研究计算问题 我们现在关注的是第二部分的内容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的. 现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为 例如floys 和 boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计. 在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上. 粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具. 3. 算法介绍 如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的例子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索 PSO 初始化为一群随机粒子(随机解)。然后通过叠代找到最优解。在每一次叠代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值pBest. 另一个极值是整个种群目前找到的最优解。这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最为粒子的邻居,那么在所有邻居中的极值就是局部极值。 在找到这两个最优值时, 粒子根据如下的公式来更新自己的速度和新的位置 v[] = v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)
present[] = persent[] + v[] (b) v[] 是粒子的速度, persent[] 是当前粒子的位置. pbest[] and gbest[] 如前定义 rand () 是介于(0, 1)之间的随机数. c1, c2 是学习因子. 通常 c1 = c2 = 2. 程序的伪代码如下 For each particle
____Initialize particle
END Do
____For each particle
________Calculate fitness value
________If the fitness value is better than the best fitness value (pBest) in history
____________set current value as the new pBest
____End ____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained 在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax 4. 遗传算法和 PSO 的比较 大多数演化计算技术都是用同样的过程
1. 种群随机初始化
2. 对种群内的每一个个体计算适应值(fitness value).适应值与最优解的距离直接有关
3. 种群根据适应值进行复制
4. 如果终止条件满足的话,就停止,否则转步骤2 从以上步骤,我们可以看到PSO和GA有很多共同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解 但是,PSO 没有遗传操作如交叉(crossover)和变异(mutation). 而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。 与遗传算法比较, PSO 的信息共享机制是很不同的. 在遗传算法中,染色体(chromosomes) 互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动. 在PSO中, 只有gBest (or lBest) 给出信息给其他的粒子, 这是单向的信息流动. 整个搜索更新过程是跟随当前最优解的过程. 与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解 5. 人工神经网络 和 PSO 人工神经网络(ANN)是模拟大脑分析过程的简单数学模型,反向转播算法是最流行的神经网络训练算法。进来也有很多研究开始利用演化计算(evolutionary computation)技术来研究人工神经网络的各个方面。 演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结构,传递函数),网络学习算法。 不过大多数这方面的工作都集中在网络连接权重,和网络拓扑结构上。在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数(fitness function)的选择一般根据研究目的确定。例如在分类问题中,错误分类的比率可以用来作为适应值 演化计算的优势在于可以处理一些传统方法不能处理的例子例如不可导的节点传递函数或者没有梯度信息存在。但是缺点在于:在某些问题上性能并不是特别好。2. 网络权重的编码而且遗传算子的选择有时比较麻烦 最近已经有一些利用PSO来代替反向传播算法来训练神经网络的论文。研究表明PSO 是一种很有潜力的神经网络算法。PSO速度比较快而且可以得到比较好的结果。而且还没有遗传算法碰到的问题 这里用一个简单的例子说明PSO训练神经网络的过程。这个例子使用分类问题的基准函数(Benchmark function)IRIS数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。 我们用3层的神经网络来做分类。现在有四个输入和三个输出。所以神经网络的输入层有4个节点,输出层有3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然后记录所有的错误分类的数目作为那个粒子的适应值。现在我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。PSO本身并没有很多的参数需要调整。所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。 6. PSO的参数设置 从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数
PSO的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为 (x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误 PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置 粒子数: 一般取 20 – 40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200 粒子的长度: 这是由优化问题决定, 就是问题解的长度 粒子的范围: 由优化问题决定,每一维可是设定不同的范围 Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子 (x1, x2, x3) x1 属于 [-10, 10], 那么 Vmax 的大小就是 20 学习因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间 中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定. 全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再有局部PSO进行搜索. 另外的一个参数是惯性权重, 由Shi 和Eberhart提出, 有兴趣的可以参考他们1998年的论文(题目: A modified particle swarm optimizer)
❹ 基于机器学习的目标跟踪算法和传统的目标跟踪算法相比,有什么优点
benchmark 2015版:Visual Tracker Benchmark 不过这些算法都比较新 要看老的话主要是06年这篇paper 和09年有一篇暂时忘记paper名字了
古老的方法比如optical flow,kalman filter(后面的particle filter)……了解不多不瞎扯了
目前tracking主要是两种,discriminative 和 generative,当然也有combine两个的比如SCM。你提到的都是前者,就是算法里面基本有一个classifier可以分辨要追踪的物体。这类除了你说的最近比较火的还有速度极占优势的CSK(后来进化成KCF/DCF了)
另一种generative的方法,大致就是用模版(或者sparse code)抽一堆feature,按距离函数来匹配。L1,ASLA,LOT,MTT都是。
最近才开始了解tracking,所以说得可能并不是很对,仅供参考
❺ 如何证明演化算法得到的解是近似最优解
1,用你的演化算法作一个benchmark,如果达到近似最优解,说明你的演化算法比较好。
2,算法没有缺点时,进行足够的时间计算,可以作为近似最优解。
3,松弛约束后,根据差可以基本判断是否最优解
❻ 偏移(shift)对优化算法寻优的影响
对函数进行旋转,最优点的位置并没有改变;
对函数进行偏移,最优点的位置变了。
旋转偏移操作,整个坐标位置也全都改变,对寻优算法有个旋转不变性的考验。
❼ 谁有tsp的benchmark~即每个TSP问题的城市坐标及最优解!!跪求啊啊!
我这里有所有算例集数据以及各种算法的的解和最优解,请问你还需要吗
❽ ubuntu benchmark怎么进行测试
一、Linpack简介
Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。前两种测试运行规模较小,已不是很适合现代计算机的发展。
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小(矩阵大小)、使用CPU数目、使用各种优化方法等等来执 行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。求解问题规模为N时,浮点运算次数为(2/3 * N^3-2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3-2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。HPL测试结果是TOP500排名的重要依据。
二、Linpack安装与测试
1. Linpack安装条件:
在安装HPL之前,系统中必须已经安装了编译器、并行环境MPI以及基本线性代数子方程(BLAS)或矢量图形信号处理库(VSIPL)两者之一。
在Ubuntu下,使用apt-get安装gfortran,mpich2,每个计算节点都需要安装
安装完后,可先使用mpicc编译helloworld验证mpi集群是否工作正常
hpl linpack缺省配置是使用atlas的库,所以这里我们安装ATLAS
参考http://blog.sina.com.cn/s/blog_708532ea0100m8nt.html
根据atlas的安装文档, 首先要switch off cpu throttling.首先安装cpufrequtils和cpufreqd这两个包, 也许还要安装powernowd包
从http://sourceforge.net/projects/math-atlas/files/下载atlas
cd ATLAS
mkdir build
cd build
../configure
make
编译没有问题的话会在lib目录下生成几个静态库
2. 安装与编译Linpack:
第一步,从www.netlib.org/benchmark/hpl 网站上下载HPL包hpl.tar.gz并解包
cd hpl-2.1
cp setup/Make.Linux_PII_CBLAS_gm Make.x86_64
vi Make.x86_64
修改下列配置:
ARCH = x86_64
TOPdir = $(HOME)/projects/hpl-2.1
LAdir = $(HOME)/projects/ATLAS/build/lib
LAinc =
LAlib = $(LAdir)/libcblas.a $(LAdir)/libatlas.a
然后开始编译:
make arch=x86_64
如果出现符号找不到的问题,请检查LAlib的库的位置
cd bin/x86_64
在这个目录下生成了两个文件, HPL.dat是linpack计算的配置文件, xhpl是测试程序
这里有关于HPL.dat的配置说明:
http://blog.csdn.net/yosoqoo/article/details/3563349
其中几个重要的参数(必须针对集群环境修改)
1 # 表示只做一次计算,使用下面的第一个数
100000 30 34 35 Ns #矩阵大小,为了测试性能,一般取N*N*8 ~ 内存总量,集群时考虑总内存量
1 # of NBs
192 2 3 4 NBs #分块大小,经验值192
4 1 4 Ps # PxQ 应该等于整个集群的进程数,一般等于cpu核数
16 4 1 Qs # P 一般<=Q
如果是单机,可以运行mpiexec -n 64 ./xhpl来看一下是否工作正常。
对于集群,首先需要保证所有机器的可以相互使用ssh无密码登录(比如要从s1登录到s2,需要把s1上的.ssh/id_rsa.pub内容拷贝到s2的.ssh/authorized_keys里。
然后创建mpi_hosts文件,内容就是集群内各机器名称,每个机器一行。
在每个机器上,都需要有相同的用户,以及同样的hpl-2.1路径和文件HPL.data,xhpl程序
运行mpiexec -n 64 -f mpi_hosts, ./xhpl
注意:
1. 矩阵不能太小,要保证矩阵数据可以占用大量内存,运行时可以free来查看内存使用量,用top,然后按1来查看cpu每个核的使用情况
2. 节点间数据传输量比较大,应该使用万兆网络,否则网络会成为瓶颈。
3.本文只是为了验证,并不是为了优化benchmark。如果要达到更好的benchmark数值,应该使用优化的blas库,比如intel的mkl。intel的mkl本身就带了linpack测试程序
❾ benchmark模型是什么模型该模型是干什么用的
没有用过桥梁的benchmark,但是以前看过结构的,它们实际上出自一家。
首先,建议你把.m源程序通读一遍,有规律可循,不费事的。当要加入自己的控制思路时,需要把源文件中的关于控制力分布,传感器分布,以及控制算法这些部分都改成你自己的。
如果只是把这个benchmark问题中的结构模型当作自己论文中的一个例子模型拿来计算,那当然可以用ansys了;但要是论文的意图侧重benchmark的本来意图(控制策略quot;比武quot;),最好还是用它提供的计算工具。
❿ 计算机视觉中,目前有哪些经典的目标跟踪算法
benchmark 2015版:Visual Tracker Benchmark 不过这些算法都比较新 要看老的话主要是06年这篇paper http://crcv.ucf.e/papers/Object%20Tracking.pdf 和09年有一篇暂时忘记paper名字了
古老的方法比如optical flow,kalman filter(后面的particle filter)……了解不多不瞎扯了
目前tracking主要是两种,discriminative 和 generative,当然也有combine两个的比如SCM。你提到的都是前者,就是算法里面基本有一个classifier可以分辨要追踪的物体。这类除了你说的最近比较火的还有速度极占优势的CSK(后来进化成KCF/DCF了)
另一种generative的方法,大致就是用模版(或者sparse code)抽一堆feature,按距离函数来匹配。L1,ASLA,LOT,MTT都是。
最近才开始了解tracking,所以说得可能并不是很对,仅供参考