Escribimos AI para Vindinium en computadoras de una sola placa. Parte 1: Selección de candidatos

A veces hay un deseo de escapar del ajetreo mundano y hacer algo interesante. En mi caso, fue Vindinium , una competencia de IA en la que cuatro caballeros luchan por la gloria, la riqueza y la comida.



Y nos prepararemos para la tarea: entrar en la clasificación. Sin embargo, la tarea se resolverá aún más interesante si establecemos una restricción estricta: ¡la inteligencia artificial extraerá recursos no de nuestra, indudablemente poderosa computadora, sino de una sola placa en la arquitectura ARM! Al mismo tiempo, no solo obtendremos experiencia con dispositivos portátiles, sino también la capacidad de mantener el bot encendido las 24 horas, los 7 días de la semana, sin dañar la computadora principal.

Parte 2
Parte 3
¡Empecemos!

¿Cuánto tiempo, brevemente, se encontraron tres computadoras de una sola placa con un precio barato: Orange Pi Zero, NanoPi Neo, NanoPi Neo2, sus breves características se presentan en la tabla:
Naranja pi ceroNanoPi NeoNanoPi Neo2
Tamaño de RAM512 MB de DDR3512 MB de DDR3512 MB de DDR3
Memoria incorporada---
CPUAllwinner H2 + Cortex A7 (arquitectura de 32 bits, 4 núcleos, frecuencia hasta 1200Hz)Allwinner H3 Cortex A7 (arquitectura de 32 bits, 4 núcleos, frecuencia hasta 1200Hz)Allwinner H5 Cortex-A53 (arquitectura de 64 bits, 4 núcleos, frecuencia de hasta 1500Hz )
Núcleo de gráficosARM Mali400 MP2, sin una pizca de OpenCLARM Mali400 MP4, sin una pizca de OpenCLARM Mali450 MP4, sin una pizca de OpenCL
"Tres tamaños", mm52x46x1740x40x1740x40x17
Acceso a internetEthernet de 100Mbps + WiFi 802.11 b / g / n con antenaEthernet de 100 MbpsEthernet de 1 Gbps
Cantidad de salidas USB1 (se muestra +2)1 (se muestra +2)1 (se muestra +2)
Precio (+ envío a Moscú), $7 + 3.85 = 10.858 + 5 = 1315 + 5 = 20

La entrega de Orange Pi Zero tardó exactamente 20 días, Neo y Neo2 llegaron un día antes, creo, muy rápidamente.

Comencemos a entender ...


Desempacando paquetes ...
imagen
imagen
imagen
imagen
imagen
imagen
imagen

Vale la pena decir que se ordenó el Kit básico de inicio (+13 dólares) para Neo, que, además de la computadora, incluye:

- Convertidor de USB a UART;
- un radiador + soporte grande (si puede llamar a una placa de aluminio del tamaño de una computadora);
- Tarjeta MicroSD en 8GB SanDisk 10class.
- Cable microUSB.

También hay un Kit de inicio completo ($ 29 + envío), que incluye todo lo que está disponible en Basic, más un estuche y una pantalla OLED, pero para nuestro propósito esto es algo redundante.

Prepárate para el primer lanzamiento ...



Desde el sitio web de Armbian, descargamos tres imágenes nuevas para NanoPi Neo, Neo2 y OrangePi Zero, utilizaremos una tarjeta MicroSD obtenida del Basic Starter Kit.

De ahora en adelante, llamaremos a una computadora de placa única una computadora de placa única, y una computadora, una computadora o computadora portátil grande y potente que nos es familiar.

Ahora tenemos dos formas de trabajar con pagadores individuales:

[1] Vía Ethernet;

Instrucciones breves
  1. Conectamos una sola placa a través de un cable Ethernet a una computadora portátil, computadora o enrutador;
  2. Encienda el poder para un solo jugador;
  3. Escaneamos la red, para la mayoría de los sistemas basados ​​en Linux se puede hacer usando el comando "arp -a", para Windows hay nmap;
  4. Estamos conectados a un servidor de placa única, para linux: "ssh ip -l root", la contraseña predeterminada es "1234"; en Windows, puede usar cualquier cliente ssh, por ejemplo, masilla multifuncional


[2] Utilizando un convertidor de USB a UART.

Instrucciones breves
  1. Conectamos el convertidor a la computadora, determinamos su dirección física: en Linux miramos las últimas líneas de “dmesg | grep tty "y buscamos algo similar a ttyUSBX, para Windows buscamos en el Administrador de dispositivos nuevos dispositivos COM
  2. Conectamos una placa única al convertidor: conectamos el cable al convertidor para que GND esté conectado con un cable negro y TX es amarillo, luego conectamos una placa única (Neo / Neo2 están conectados a los únicos contactos soldados cerca del puerto USB para que el cable negro esté cerca del borde más cercano, y apuntado en amarillo en la dirección de la tarjeta flash, resulta el orden: GND, 5V, RX, TX; Orange Pi Zero no se puede conectar con el cable que viene con el Starter Pack, no hay 5V en el medio, por lo que debe usar un cable diferente)
  3. Ahora necesita encontrar un programa en el que sea conveniente trabajar con la consola en TTY / COM: para Linux, recomendaré un minicom conveniente o masilla (necesita ejecutar con privilegios de superusuario), la masilla sigue siendo relevante para Windows


Necesita controlar la temperatura, necesita controlar la temperatura ...


Deberíamos controlar la temperatura si queremos contener AI para Vindinium, evitando reducir la frecuencia, el congelamiento o el mal funcionamiento de una sola placa. Escribamos un script simple para el monitoreo de temperatura (al mismo tiempo, entrenemos para ejecutar archivos .py):

Guión
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) 


Ahora puede cargar este archivo en una unidad flash en el directorio / home / username /.

SUGERENCIA: Ubuntu, Debian y muchos otros sistemas operativos basados ​​en Linux pueden funcionar con sistemas de archivos ext3 / ext4 desde debajo de la caja; Windows ofrecerá formatear la unidad flash USB. Debe utilizar utilidades que le permitan trabajar con este tipo de sistema de archivos, por ejemplo, instalar el controlador Ext2Fsd.

Más tarde, aprendí acerca de un programa como armbianmonitor, con el que puede monitorear de manera segura no solo la temperatura, sino también la frecuencia, la hora local y la carga, que sin duda es útil.

Conectamos cada placa individual a la red eléctrica, esperamos 15 minutos en tiempo de inactividad y vemos los resultados:
Naranja pi ceroNanoPi NeoNanoPi Neo2
60 ° C35 ° C50.3 ° C

Curiosamente, el sensor en Neo2 muestra la temperatura hasta el primer decimal, sin embargo, nos oculta información sobre la frecuencia actual del procesador .

Es triste que Orange Pi Zero esté tan caliente en tiempo de inactividad, a diferencia de su hermano Neo a la misma frecuencia de 240MHz. Los foros están llenos de descontento sobre este tema. Como una opción que resuelve este problema, se ofrece un script especial, editando archivos del sistema y usando enfriamiento. Sin embargo, también hay información de que todas estas medidas fueron contra el calentamiento a 80 grados en tiempo de inactividad, y 55-60 grados en la versión nueva de armbian es normal en este caso. Aparentemente, el problema solo se resuelve parcialmente .

Intentemos instalar enfriamiento pasivo. Para Orange Pi Zero, se compró un conjunto especial de dos disipadores térmicos para el procesador y la RAM por $ 2.82. En el caso de NanoPi, tenemos un potente radiador, que se puede comprar por separado del Starter Pack por $ 2.99.

Ahora la imagen 15 minutos después del lanzamiento se ve así:
Naranja pi ceroNanoPi NeoNanoPi Neo2
53 ° C30 ° C39.5 ° C

Calentar al máximo!


Se notó que la naranja era muy cálida. Curiosamente, ¿cuántos grados saltará la temperatura durante la carga? Usaremos el programa cpuburn disponible en los repositorios (para Neo y Zero usaremos el comando burnCortexA7, para Neo2 - burnCortexA8).

Bien decir ...

Todas las tarjetas de una sola placa alcanzan fácilmente una temperatura de 80 grados con cuatro copias de cpuburn: el enfriamiento pasivo es trivial para hacer frente a dicho calentamiento. Sin embargo, creo que en el caso de Vindinium, no todo será tan triste: hay un cambio cíclico en la fase de trabajo y el tiempo de inactividad (esperando una respuesta del servidor), y el programa cpuburn en sí está diseñado para la disipación de calor más eficiente, AI no podrá cargar el procesador en tal medida que al menos debido a la necesidad de esperar los datos de la RAM, ya que nuestra tarea no podrá acomodarse completamente en la memoria caché del procesador.

Sin embargo, aquí aparece una característica interesante: Orange Pi Zero alcanza los 80 grados incluso con una sola copia de cpuburn, para Neo2 tres copias son suficientes y Neo para cuatro copias de la prueba.

Los puntos de referencia, las personas requieren pan y puntos de referencia!


Antes de escribir AI, debe determinar la pregunta más importante: ¿cuántas veces son estas computadoras de placa única más débiles que las computadoras convencionales? No puedo creer que una pequeña pieza de silicio, metal y textolita pueda hacer algo fuera de lo común.

Para los puntos de referencia, se utilizó la utilidad phoronix-test-suite .

A diferencia de todos los reproductores de una sola placa, me permitiré incluir mi computadora portátil en las pruebas (i5 2450M, 6gb DDR3, sin gráficos discretos, ejecutando Ubuntu 16.04 LTS) para facilitar el desarrollo de AI (será posible ejecutar ciertas piezas de código y saber cuántas veces cambiará El tiempo de funcionamiento de la misma pieza en una sola placa). Usamos solo enfriamiento pasivo. Para una unidad de productividad tomamos una naranja.

Descripción de la prueba
John The Ripper es un software para descifrar contraseñas. Lea más sobre el algoritmo criptográfico Blowfish utilizado en la prueba ;
Smallpt es un render global de ligereza, que consta de 99 líneas en C ++.
C-Ray : prueba de rendimiento del procesador en operaciones de coma flotante. Esta prueba es multihilo (16 hilos por núcleo), disparará 8 rayos de cada píxel para suavizar y generar una imagen de 1600x1200.
La prueba de Himeno es un solucionador de presión lineal de Poisson que utiliza el método Jacobi .
Punto de referencia de compresión de archivos 7zip incorporado.
El punto de referencia con ffmpeg es codificar video y audio .

UPD: mientras se moderaba el artículo, se encontró una computadora vieja cerca de la casa ( Intel Pentium 4 (1 núcleo, 2 subprocesos, 2003, un procesador de procesador superior en su arquitectura), 512 MB DDR x2, Radeon 9600XT 128 MB DDR), hace trece años, tal sistema puede fue llamado fuerte. Para comparar cómo era, instalé Windows 10 Ubuntu 16.04 LTS, que, para mi sorpresa, resultó ser muy funcional.
LaptopComputadora dinosaurioNaranja pi ceroNanoPi NeoNanoPi Neo2
John The Ripper 1.8.0, Prueba: Blowfish (loros / seg)797 Real C / S (+ 125%)313 Real C / S (+ 125%)354 reales C / S394 C / S real (+ 11%)475 C / S real (+ 34%)
Smallpt V1.0.2 (segundos)586 segundos (4.6 veces más rápido)1214 segundos (2.2 veces más rápido)2694 segundos2240 Segundos (1.2 veces más rápido)1289 segundos (2.08 veces más rápido)
C-Ray v1.1 (segundos)120.86 Segundos (5.03 veces más rápido)294.61 Segundos (2.37 veces más rápido)607.83 Segundos485.71 Segundos (1.25 veces más rápido)349.51 Segundos (1.74 veces más rápido)
Himeno Benchmark v3.0 (loros)1165.11 MFLOPS (+ 8908%)385.28 MFLOPS (+ 2455%)15.08 MFLOPS13.08 MFLOPS (15% más débil)37.23 MFLOPS (+ 185%)
ompress 7zip (loros)5010 MIPS (+ 585%, gran desviación del promedio: 22.77%)1706 MIPS (+ 88%)857 MIPS950 MIPS (+ 11%)1103 MIPS (+ 29%)
ffmpeg (segundos)30.69 Segundos (13.25 veces más rápido)81.22 Segundos (5 veces más rápido)406.76 Segundos426.94 Segundos (5% más lento)La prueba no comenzó - error de compilación
Costo teniendo en cuenta la entrega y radiadores$ 283.39 (+ 2046%)-13,67 $15.97 $ (+ 17%)$ 22.97 (+ 68%)

Al estudiar la información en Internet, quedó claro que H2 + es una versión ligeramente modificada de H3 :
H2 + es una variante de H3 diseñada para unidades OTT de bajo rendimiento que carece de compatibilidad con Gigabit MAC y 4K HDMI.

Original:
H2 + es una variante de H3, dirigida a cajas OTT de gama baja, que carece de soporte de salida Gigabit MAC y 4K HDMI.

En este caso, se vuelve interesante por qué razón hay tanta diferencia en el rendimiento y el régimen térmico entre H2 + y H3.

Para resumir.


Al comparar tres tablas individuales diferentes, puedo resumir:

  • Orange Pi Zero es sin duda el más barato de todos. La presencia de WiFi a bordo es una muy buena ventaja, pero su velocidad no es más de 4Mbps (obtuve el mismo valor), lo que excluye su uso como un servidor de archivos inalámbrico normal, pero para IoT se adapta perfectamente . Debe comprar al menos algo de radiador, para no experimentar problemas con temperaturas anormales, incluso en tiempo de inactividad. Hay otro lado hermoso: la presencia de TV-OUT, con la que logré trabajar, pero si está buscando una sola placa para trabajar en modo gráfico, debe mirar en la dirección de los dispositivos con HDMI, porque la resolución de pantalla de 720x576 no agrada a la vista. Es muy conveniente que la tienda oficial del fabricante esté disponible en Aliexpress;

  • NanoPi Neo, a diferencia de su hermano menor, está privado de TV-OUT y Wi-Fi incorporado (para la operación inalámbrica, tendrá que comprar un dongle Wi-Fi por 2-3 $, cuya tasa de transferencia de datos declarada es de alrededor de 150 Mbps), y por sí solo, va a la quinta parte más cara, pero puede complacernos con una menor disipación de calor, un radiador de sonido firme, un mayor rendimiento, que cubrirá todas las deficiencias de la plataforma. También vale la pena señalar la gran variedad de componentes ofrecidos por el fabricante para su descendencia. Otro matiz es que tienes que ordenar desde el sitio oficial, aunque en realidad no es tan difícil;

  • NanoPi Neo2. La versión de firmware de armbian se encuentra en la etapa experimental, que se expresa en los problemas descritos en el artículo (incapacidad para ver la frecuencia, error al compilar ffmpeg). Sin embargo, incluso en su forma cruda, el segundo advenimiento de Neo puede presumir de un rendimiento bastante bueno en las pruebas (recuerde la arquitectura de 64 bits), Gigabit Ethernet, que lo eleva inmediatamente como un favorito para aquellas tareas donde se necesita un buen rendimiento y velocidad de transferencia de datos por cable. Pero no te olvides de Ubuntu Core, la situación puede ser mejor, y armbian no se detiene. En términos de costo, por supuesto, es más de una vez y media superior a una naranja, por lo tanto, vale la pena mirar a los competidores en su segmento de precios.

Por mi parte, decidí seguir trabajando con Neo y Neo2, y aparté una naranja hasta que aparezca una idea interesante para un hogar inteligente, porque El rendimiento de Neo es muy similar al cero, pero sin problemas de temperatura.

En el próximo artículo, elegiremos un nuevo lenguaje de programación para nosotros, que puede aprender de inmediato mientras escribe AI.

Enlace a Vindinium
→ El enlace al subreddit de Vindinium es algo muy útil, allí puedes seguir mis movimientos en Vindinium
Enlace a mi github con una pequeña cantidad de trabajo en Vindinium

Estaré muy contento si más personas se sienten atraídas por este juego, porque durante la rivalidad comienza la diversión.

Source: https://habr.com/ru/post/es405843/


All Articles