各位老铁们好,相信很多人对人工智能性能分析都不是特别的了解,因此呢,今天就来为大家分享下关于人工智能性能分析以及人工智能性能指标的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
如何体验到手机的AI性能?
其实这个AI人工智能我们能够感受到的,最明显的就是在拍照上,比如说它可以根据人工智能识别,识别出你拍摄的场景是什么,然后对照片的风格进行一些定向的优化。
另外,不同厂商对于人工智能的软件层面的开发有所不同,一些比较发展好的厂商,他们就可以通过人工智能识别出用户对于不同软件的使用习惯,然后提前行加载减少手机的卡顿。
怎样测算我用Python写的人工智能算法性能?
设置在深入到基准测试和性能分析之前,首先我们需要一个合适的环境。这意味着我们需要为这项任务配置我们的机器和操作系统。我的机器的规格如下:处理器:Intel(R)Xeon(R)CPUE5-2699v3@2.30GHz内存:32GB操作系统:Ubuntu16.04LTSKernel:4.4.0-75-generic我们的目标是得到可复现的结果,因此要确保我们的数据不会受到其它后台进程、操作系统配置或任何其它硬件性能提升技术的影响。让我们首先从配置用于性能分析的机器开始。
硬件功能首先,禁用所有硬件性能功能,也就是说要禁用IntelTurboBoost和HyperThreadingfromBIOS/UEFI。正如其官方网页上说的那样,TurboBoost是“一种在处理器内核运行,并可以在低于功耗、电流和温度规格限制的情况下允许它们以高于额定频率的速度运行的技术。”此外,HyperThreading是“一种可以更高效地利用处理器资源的技术,能使每个内核都能多线程运行。”这都是值得我们花钱购买的好东西。那为什么要在性能分析/基准测试中禁用它们呢?因为使用这些技术会让我们无法得到可靠的和可复现的结果。这会让运行过程发生变化。让我们看个小例子primes.py,代码故意写得很糟糕。
这段代码可在GitHub上查看:https://github.com/apatrascu/hunting-python-performance/blob/master/01.primes.py。你需要运行以下命令安装一个依赖包:
pipinstallstatistics让我们在一个启用了TurboBoost和HyperThreading的系统中运行它:
现在禁用该系统的睿频加速(TurboBoost)和超线程(HyperThreading),然后再次运行这段代码:
看看第一个案例的标准差为15%。这是一个很大的值!假设我们的优化只能带来6%的加速,那我们怎么能将运行过程中的变化(runtorunvariation)和你的实现的差异区分开?相对而言,在第二个例子中,标准差减少到了大约0.6%,我们的新优化方案效果清晰可见。
CPU节能禁用所有的CPU节能设置,并使用固定的CPU频率。这可以通过在Linux功率调节器(powergovernor)中将intel_pstate改成acpi_cpufreq而实现。intel_pstate驱动使用英特尔内核(SandyBridge或更新)处理器的内部调节器实现了一个缩放驱动。acpi_cpufreq使用了ACPIProcessorPerformanceStates。下面让我们先来检查一下:
可以看到这里所使用的调节器被设置成了节能模式,而CPU的频率范围在1.20GHz到3.60GHz之间。这个设置对日常应用来说是很不错的,但却会影响到基准测试的结果。那么应该给调节器设置什么值呢?如果我们浏览一下文档,我们可以看到我们可以使用以下设置:高性能(performance):以最大频率运行CPU节能(powersave):以最小频率运行CPU自定义(userspace):按用户指定的频率运行CPU按需(ondemand):根据当前负载动态调节频率。可能跳至最高频率,空闲时又会降低保守(conservative):根据当前负载动态调节频率。相比于按需模式,其频率调节更加渐进我们要使用性能调节器(performancegovernor),并将频率设置成CPU支持的最大频率。如下所示:
现在你已经使用性能调节器将频率设置成了固定的2.3GHz。这是最大的可设置的值,没有睿频加速(TurboBoost),它可以被用在XeonE5-2699v3上。要完成设置,请使用管理员权限运行以下命令:
如果你没有cpupower,可使用以下命令安装:
sudoapt-getinstalllinux-tools-commonlinux-header-`uname-r`-y功率调节器对CPU的工作方式有很大的影响。该调节器的默认设置是自动调节频率以减少功耗。我们不想要这样的设置,所以从GRUB中禁用它。只需要编辑/boot/grub/grub.cfg(但是如果你在kernel升级上很小心,那么这将会消失)或在/etc/grub.d/40_custom中创建一个新的kernel入口。我们的boot行中必须包含这个flag:intel_pstate=disable,如下所示:
linux/boot/vmlinuz-4.4.0-78-generic.efi.signedroot=UUID=86097ec1-3fa4-4d00-97c7-3bf91787be83rointel_pstate=disablequietsplash$vt_handoffASLR(地址空间配置随机发生器)这个设置是有争议的,参见VictorStinner的博客:https://haypo.github.io/journey-to-stable-benchmark-average.html。当我首次建议在基准测试时禁用ASLR时,那是为了进一步提升对那时在CPython中存在的ProfileGuidedOptimizations的支持。我为什么要说这个呢?因为在上面给出的特定硬件上,禁用ASLR可以将运行之间的标准差降低至0.4%。另一方面,根据在我的个人计算机(IntelCorei74710MQ)上的测试,禁用ASLR会导致Victor所提到的同样的问题。在更小的CPU(比如IntelAtom)上的测试会带来甚至更大的运行间标准差。因为这似乎并不是普遍适用的真理,而且很大程度上依赖于硬件/软件配置,所以对于这个设置,我在启用后测量一次,再禁用后测量一次,之后再进行比较。在我的机器上,我通过在/etc/sysctl.conf.中加入以下命令禁用了ASLR。使用sudosysctl-p进行应用。
kernel.randomize_va_space=0如果你想在运行时禁用它:
sudobash-c'echo0>|/proc/sys/kernel/randomize_va_space'如果你想重新启用:
sudobash-c'echo2>|/proc/sys/kernel/randomize_va_space'二、内存分析我们为什么要关心这个问题?为什么我们不仅仅就关心性能?这些问题的答案相当复杂,但我会总结出来。PyPy是一个可选的Python解释器,其相对于CPython有一些巨大的优势:速度(通过其JustinTime编译器)、兼容性(几乎可以替代CPython)和并发性(使用stackless和greenlets)。PyPy的一个缺点是因为其JIT和垃圾一样的回收站实现,它通常会使用比CPython更多的内存。但是在某些案例中,其的内存消耗会比CPython少。下面我们来看看你可以如何测量你的应用使用了多少内存。
诊断内存使用memory_profiler是一个可用来测量解释器运行一个负载时的内存用量的库。你可以通过pip安装它:
pipinstallmemory_profiler这个工具的优点是它会在一个Python脚本中一行行地显示内存消耗。这可以让我们找到脚本中可以被我们重写的位置。但这种分析有一个缺点。你的代码的运行速度比一般脚本慢10到20倍。怎么使用它?你只需要在你需要测量的函数上直接加上@profile()即可。让我们看看实际怎么操作!我们将使用之前用过的素材脚本作为模型,但做了一点修改,移除了统计部分。代码也可在GitHub查看:https://github.com/apatrascu/hunting-python-performance/blob/master/02.primes-v1.py
开始测量时,使用以下PyPy命令:
pypy-mmemory_profiler02.primes-v3.py或者直接在脚本中导入memory_profiler:
pypy-mmemory_profiler02.primes-v3.py在执行完这行代码之后,我们可以看到PyPy得到这样的结果:
我们可以看到这个脚本使用了24.371094MiB的RAM。让我们简单分析一下。我们看到其中大多数都用在了数值数组的构建中。它排除了偶数数值,保留了所有其它数值。我们可以通过调用range函数而对其进行一点改进,其使用一个增量参数。在这个案例中,该脚本看起来像是这样:
如果我们再次测量,我们可以得到以下结果:
很好,现在我们的内存消耗下降到了22.75MiB。使用列表解析(listcomprehension),我们还可以将消耗再降低一点。
再次测量:
我们最后的脚本仅消耗22.421875MiB。相比于第一个版本,差不多下降了10%。
人工智能本体特性有什么
简单的说,人工智能主要指算法,相当于人的大脑,运用功能模拟的方法,制造电脑模拟人脑的部分功能,把人的部分智能活动机械化,其中更侧重在模拟的算法。
人工智能由高科技人才和实验室支撑着,偏重前沿技术领域。如谷歌收购的DeepMind就属于深度学习算法公司,重在高科技人才对算法的新研发。
机器人更多的是各项科技的整合。机器人整机,相当做整个人的概念。牵扯的东西很多很多,既要能行动,又要能够交互。
机器人是各个科学的结晶,从材料科学、机械工程、电子工程、计算机工程、软件工程等。如中国目前出名的机器人公司“优必选”。IOT是什么?它是InternetOfThings的缩写,指的是智能家具、可穿戴,这些可以连上网的低智能含量的东西,统称为物联网。这类东西有运算能力,也叫智能,但算法的复杂度远达到被称为人工智能的地步。另外,它们也称不上是机器人,因为这个东西实在太简单,太简陋了。较为常见的智能灯泡、茶座,智能手表等,都叫IOT。
如中国人工智能新秀“出门问问”,就有研发可问答的智能穿戴时尚手表。
什么是人工智能?你听过人工智能吗?我们该如何看待人工智能?
现如今,人工智能(AI)已经走入了普通大众的视野,我们在生活中可以看到很多跟AI相关的产品。比如Siri、AI美颜、AI换脸,包括各大平台的信息推送。
虽然大家听得多,但是大部分人并不了解AI,甚至存在一些误解。
主要是因为大家只是看到一些人的言论,但是并不了解AI的基本原理。
人工智能的基本原理:机器从「特定的」大量数据中总结规律,归纳出某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。
这就是人工智能发展到现阶段的本质逻辑。
正是因为当下的人工智能是建立在「归纳逻辑」上的,所以需要依赖大量的数据。数据越多,归纳出来的经验越具有普适性。也就更加的的智能。
人工智能目前分为三个阶段:1弱人工智能:指的是专注于且只能解决特定领域问题的人工智能例如Siri、AlphaGo。
2强人工智能:指的是可以胜任人类所有工作的人工智能。
3超人工智能:假设计算机程序通过不断发展,可以比世界上最聪明,最有天赋的人类还聪明,那么,由此产生的人工智能系统就可以被称为超人工智能。
我们当前所处的阶段是弱人工智能,强人工智能还没有实现(甚至差距较远),而超人工智能更是连影子都看不到。
对人工智能的看法我们应该既要发展,又要防范。
防范的目标,不是人工智能产生自主意识,向人类倒戈,而是因为人类的疏忽,为机器人设置了错误的目标,让他们无意中把我们都消灭了。
假设我们发明了一个可以用于控制气候变化的强大人工智能系统,并且能将大气中的二氧化碳水平恢复到适宜的水平。
该人工智能系统经过分析后认为,最容易的方式就是消灭人类,因为人类活动是产生二氧化碳的最主要来源,于是人类就莫名其妙的凉凉了。
所以对于人工智能的的发展,我们应该考虑的是人类应该给予人工智能多大的权利。以及加强审视基于人工智能的决策过程
文章到此结束,如果本次分享的人工智能性能分析和人工智能性能指标的问题解决了您的问题,那么我们由衷的感到高兴!