我们在单板计算机上为Vindinium编写AI。 第1部分:候选人选择

有时候,人们渴望逃离世俗的喧嚣,做一些有趣的事情。 以我为例 ,这是Vindinium ,这是一场AI竞赛,其中四名骑士为荣耀,财富和食物而战。



我们将为任务做准备-进入排行榜。 但是,如果我们设置严格的限制,任务将变得更加有趣-人工智能将不会从毫无疑问的强大计算机上获取资源,而是会从ARM体系结构的单板上获得资源! 同时,我们不仅将获得便携式设备的使用经验,而且还能够将机器人保持在24/7的状态,而不会损坏主计算机!

第二部分
第三部分
让我们开始吧!

简短地找到了三台价格便宜的单板计算机-Orange Pi Zero,NanoPi Neo,NanoPi Neo2,它们的简要特征在下表中列出:
橙pi零NanoPi NeoNanoPi Neo2
内存大小512MB DDR3512MB DDR3512MB DDR3
内建记忆体------
中央处理器Allwinner H2 + Cortex A7(32位架构,4核,频率高达1200Hz)Allwinner H3 Cortex A7(32位架构,4核,频率高达1200Hz)Allwinner H5 Cortex-A53( 64位架构,4核,频率高达1500Hz
图形核心ARM Mali400 MP2,无OpenCL提示ARM Mali400 MP4,无OpenCL提示ARM Mali450 MP4,无OpenCL提示
“三种尺寸”,毫米52x46x1740x40x1740x40x17
上网服务带天线的 100Mbps以太网+ 802.11 b / g / n WiFi100Mbps以太网1Gbps以太网
USB输出数量1(显示+2)1(显示+2)1(显示+2)
价格(+运送至莫斯科),$7 + 3.85 = 10.858 + 5 = 1315 + 5 = 20

Orange Pi Zero的交付正好花了20天,我认为Neo和Neo2提前一天到达。

让我们开始了解...


开箱包装...
图片
图片
图片
图片
图片
图片
图片

值得一说的是,Neo订购了基本入门套件(+13美元),除计算机外,还包括:

-USB-to-UART转换器;
-大型散热器(如果您可以称呼为计算机大小的铝板)+支架;
-8GB SanDisk 10class上的MicroSD卡。
-MicroUSB电缆。

还有一个完整的入门工具包(29美元+运费),它包括Basic中的所有内容,以及外壳和OLED屏幕,但对于我们来说,这有点多余。

准备首次启动...



armbian网站上, 我们为NanoPi Neo,Neo2和OrangePi Zero下载了三个新图像,我们将使用从基本入门工具包获得的MicroSD卡。

从现在开始,我们将单板计算机称为单板计算机,然后将计算机称为我们熟悉的大型强大计算机或便携式计算机。

现在,您可以通过两种方式与单一付款人合作:

[1]通过以太网;

简要说明
  1. 我们通过以太网电缆将单板连接到笔记本电脑,计算机或路由器。
  2. 打开一个播放器的电源;
  3. 我们扫描网络,对于大多数基于linux的系统来说,可以使用“ arp -a”命令来完成,而对于Windows,则存在nmap。
  4. 我们已连接到Linux的单板服务器:“ ssh ip -l root”,默认密码为“ 1234”; 在Windows上,您可以使用任何ssh客户端,例如,多功能腻子


[2]使用USB到UART转换器。

简要说明
  1. 我们将转换器连接到计算机,确定其物理地址:在linux中,我们查看“ dmesg | grep tty”,并寻找与ttyUSBX类似的东西,对于Windows,我们在设备管理器中查找新的COM设备
  2. 我们将单板连接到转换器:我们将导线连接到转换器,以便GND与黑线连接,TX为黄色,然后我们连接单板(Neo / Neo2连接到USB端口附近的唯一焊接触点,以便黑线靠近最近的边缘,并且黄色指向闪存卡的方向,则顺序为:GND,5V,RX,TX;橙色Pi Zero不能与入门包随附的电缆连接,中间没有5V,因此您必须使用其他电缆)
  3. 现在您需要找到一个程序,在该程序中可以很方便地在TTY / COM上使用控制台:对于linux,我将推荐一个方便的minicom或putty(您需要以超级用户权限运行),putty与Windows仍然相关


您需要监控温度,您需要监控温度...


如果要在其中包含用于Vindinium的AI,则应该控制温度,避免降低单板的频率,冻结或故障。 让我们编写一个用于温度监控的简单脚本(同时,让我们训练运行.py文件):

剧本
import time, sys print('NanoTemp 0.1') while True: with open('/sys/devices/virtual/thermal/thermal_zone0/temp', 'r') as f: temp1 = f.read()[:-1] with open('/sys/devices/virtual/thermal/thermal_zone1/temp', 'r') as f: temp2 = f.read()[:-1] print('\r'+temp1+' '+ temp2) time.sleep(0.5) 


现在,您可以将此文件上传到目录/ home / username /中的闪存驱动器。

提示:Ubuntu,Debian和许多其他基于Linux的操作系统都可以在盒子下面使用ext3 / ext4文件系统。 Windows将提供格式化USB闪存驱动器的信息。 您必须使用允许您使用这种类型的文件系统的实用程序,例如,安装Ext2Fsd驱动程序。

后来我了解了诸如armbianmonitor之类的程序,使用该程序,您不仅可以安全地监视温度,还可以安全地监视频率,本地时间和负载,这无疑是有用的。

我们将每个单板连接到电源,在空闲时间等待15分钟,然后查看结果:
橙pi零NanoPi NeoNanoPi Neo2
60°摄氏度35°摄氏度50.3°摄氏度

有趣的是,Neo2上的传感器显示的温度一直到小数点后一位,但它向我们隐藏了有关当前处理器频率的信息

令人遗憾的是,Orange Pi Zero在闲置时间如此热,不像其兄弟Neo在240MHz的相同频率上。 论坛对此主题充满不满。 作为解决此问题的选项,提供了一个特殊的脚本,用于编辑系统文件并使用冷却功能。 但是,也有信息表明,所有这些措施都是为了防止在空闲时间加热到80度,在这种情况下,新鲜版本的armbian中的55-60度是正常的。 显然,该问题仅得到部分解决

让我们尝试安装被动冷却。 对于Orange Pi Zero,以2.82美元的价格购买了一套特殊的两个散热器,分别用于处理器和RAM。 在NanoPi的情况下,我们有一个功能强大的散热器,可以从Starter Pack单独购买,价格为2.99美元。

现在,启动后15分钟的图片如下所示:
橙pi零NanoPi NeoNanoPi Neo2
53°摄氏度30°摄氏度39.5°摄氏度

热身充分!


注意到橙色非常温暖。 有趣的是,负载期间温度将跃升多少度。 我们将使用存储库中可用的cpuburn程序(对于Neo和Zero,我们将使用burnCortexA7命令,对于Neo2-burnCortexA8)。

好吧...

使用四份cpuburn,所有单板卡都可以轻松达到80度的温度-被动冷却对于应对这种加热是微不足道的。 但是,我相信对于Vindinium而言,并不是所有事情都会如此令人难过-工作和停机阶段会周期性变化(等待服务器的响应),并且cpuburn程序本身旨在实现最高效的散热,因此AI无法将处理器加载到这样的程度至少由于需要等待RAM中的数据,因为我们的任务将无法完全容纳在处理器缓存中。

但是,这里有一个有趣的功能-Orange Pi Zero即使使用cpuburn的一个副本也可以达到80度,对于Neo2来说,三个副本就足够了,对于Neo的四个副本来说就足够了。

基准,人们需要面包和基准!


在编写AI之前,您需要确定最重要的问题:这些单板计算机比传统计算机弱多少倍? 我不敢相信一小块硅,金属和纺织物就能做任何与众不同的事情。

对于基准测试,使用了phoronix-test-suite实用程序。

与所有单板游戏机相比,我将允许自己测试笔记本电脑(i5 2450M,6gb DDR3,无离散图形,运行Ubuntu 16.04 LTS),以促进AI的开发(可以运行某些代码并知道将更改多少次)同一块在单板上的工作时间)。 我们仅使用被动冷却。 对于生产力单位,我们采用橙色。

测试说明
John The Ripper是一个密码破解软件。 阅读有关测试中使用的Blowfish密码算法的更多信息
Smallpt是亮度的全局渲染 ,由C ++中的99行组成。
C射线 -浮点运算中的处理器性能测试。 该测试是多线程的(每个核心16个线程),将从每个像素发出8束光线进行平滑处理,并生成1600x1200的图像。
Himeno检验是使用Jacobi方法的线性泊松压力求解器。
内置7zip 文件压缩基准
使用ffmpeg的基准是对视频和音频进行编码

UPD:在审阅本文时,在房屋附近发现了一台旧计算机( Intel Pentium 4 (1核,2线程,2003年,其架构上是顶级处理器),512MB DDR x2,Radeon 9600XT 128MB DDR),十三年前,这样的系统可以被称为强者。 为了进行比较,我安装了Windows 10 Ubuntu 16.04 LTS,令我惊讶的是,该功能非常实用。
手提电脑恐龙电脑橙pi零NanoPi NeoNanoPi Neo2
约翰·开膛手1.8.0,测试:河豚(鹦鹉/秒)797真实C / S(+ 125%)313真实C / S(+ 125%)354真实C / S394真实C / S(+ 11%)475真实C / S (+ 34%)
Smallpt V1.0.2(秒)586秒(快4.6倍)1214秒(加快2.2倍)2694秒2240秒(快1.2倍)1289秒 (快2.08倍)
C-Ray v1.1(秒)120.86秒(加快5.03倍)294.61秒(快2.37倍)607.83秒485.71秒(快1.25倍)349.51秒 (快1.74倍)
Himeno Benchmark v3.0(鹦鹉)1165.11 MFLOPS(+ 8908%)385.28 MFLOPS(+ 2455%)15.08 MFLOPS13.08 MFLOPS(弱15%)37.23 MFLOPS (+ 185%)
ompress 7zip(鹦鹉)5010 MIPS(+ 585%,与平均值相差较大:22.77%)1706 MIPS(+ 88%)857 MIPS950 MIPS(+ 11%)1103 MIPS (+ 29%)
ffmpeg(秒)30.69秒(快13.25倍)81.22秒(快5倍)406.76秒426.94秒(慢5%)测试未开始-编译错误
成本考虑到交付和散热器$ 283.39(+ 2046%)--13.67 $15.97 $(+ 17%)$ 22.97(+ 68%)

在Internet上研究信息时,很明显H2 +是H3略微修改版本
H2 +是H3的一种变体,专为缺乏千兆MAC和4K HDMI支持的低性能OTT单元而设计。

原件:
H2 +是H3的变体,针对的是低端OTT盒,缺少千兆MAC和4K HDMI输出支持。

在这种情况下,由于什么原因导致H2 +和H3在性能和热态方面存在如此差异变得很有趣。

总结一下。


通过比较三种不同的单板,我可以总结一下:

  • Orange Pi Zero无疑是最便宜的。 板载WiFi的存在是一个很好的优势,但是它的速度不超过4Mbps (我获得了相同的值),这不将其用作普通的无线文件服务器,但对于IoT,它非常适合 。 您应该至少购买一些散热器,以免即使在空闲时间也不会遇到温度异常的问题。 还有一个美丽的方面-我设法使用TV-OUT,但是如果您正在寻找以图形模式工作的单板,则应该朝具有HDMI的设备方向发展,因为720x576的屏幕分辨率不会令眼睛满意。 制造商的官方商店可在Aliexpress上找到,这非常方便;

  • NanoPi Neo与弟弟不同,它被剥夺了TV-OUT和内置Wi-Fi(要进行无线操作,您必须以2-3美元的价格购买Wi-Fi加密狗,声明的数据传输速率约为150 Mbps),并且单独地,它到第五部分的价格更高,但是它可以以较低的散热,坚固的固体散热器,更高的性能来取悦我们,这将弥补平台的所有缺点。 还值得注意的是制造商为其后代提供的各种组件。 另一个细微差别是,尽管实际上并不那么困难,但您必须从官方网站订购。

  • NanoPi Neo2。 armbian的固件版本处于试验阶段,在本文中描述的问题(无法看到频率,错误编译ffmpeg)中得到了表达。 但是,即使是原始形式,Neo的第二次出现也可以在测试(召回64位体系结构)中拥有相当不错的性能-千兆以太网,这使其立即成为那些需要良好性能和有线数据传输速度的任务的最爱。 但是不要忘了Ubuntu Core,它的情况可能会更好,而且armbian不会停滞不前。 就成本而言,它当然比橙子高出一倍半以上,因此值得在其价格范围内寻找竞争对手。

就我自己而言,我决定继续与Neo和Neo2一起工作,并留下橙色直到出现关于智能家居的有趣想法,因为 Neo的性能非常类似于零,但没有温度问题。

在下一篇文章中,我们将为自己选择一种新的编程语言,您在编写AI时可以立即学习。

链接到Vindinium
到Vindinium subreddit链接是非常有用的,您可以在其中跟踪我在Vindinium的活动
在Vindinium上进行少量工作即可链接到我的github

如果更多的人被吸引到这个游戏中,我将感到非常高兴,因为在对抗中,乐趣开始了!

Source: https://habr.com/ru/post/zh-CN405843/


All Articles