Tecnología aplicada en las ruinas de la fiebre blockchain o los beneficios prácticos de la asignación de recursos.

En los últimos años, los canales de noticias se han inundado de mensajes sobre un nuevo tipo de redes informáticas distribuidas que resuelven (o más bien tratan de resolver) las tareas más diversas: hacer que la ciudad sea inteligente, salvar al mundo de los infractores de derechos de autor o viceversa, transferir información o recursos en secreto, escapar de - bajo el control del estado en un área particular. Independientemente de la esfera, todos tienen una serie de características comunes, debido al hecho de que el combustible para su crecimiento fueron los algoritmos y las técnicas que llegaron a las masas durante el reciente auge de las criptomonedas y las tecnologías relacionadas. Probablemente, cada tercer artículo sobre recursos especializados en ese momento en el título tenía la palabra "blockchain": la discusión sobre nuevas soluciones de software y modelos económicos se convirtió en la tendencia dominante, contra la cual otras áreas de aplicación de sistemas informáticos distribuidos quedaron relegadas a un segundo plano.

Al mismo tiempo, visionarios y profesionales vieron la esencia principal del fenómeno: la computación distribuida en masa asociada con la construcción de redes de un gran número de participantes dispares y heterogéneos alcanzó un nuevo nivel de desarrollo. Es suficiente para sacar de la cabeza temas exagerados y mirar el tema desde el otro lado: todas estas redes, formadas por grandes grupos, que consisten en miles de participantes heterogéneos separados, no aparecieron por sí mismas. Los entusiastas del movimiento criptográfico pudieron resolver de una nueva manera los complejos problemas de sincronización de datos y la asignación de recursos y tareas, lo que nos permitió reunir una masa similar de equipos y crear un nuevo ecosistema diseñado para resolver un problema estrechamente dirigido.

Por supuesto, esto no pasó por los equipos y las comunidades involucradas en el desarrollo de la computación distribuida gratuita, y los nuevos proyectos no tardaron en llegar.
Sin embargo, a pesar de un serio aumento en la cantidad de información disponible sobre desarrollos en el campo de las redes y equipos, los creadores de sistemas prometedores tendrán que resolver problemas serios.

El primero de ellos, por extraño que parezca, es el problema de elegir una dirección.


La dirección puede ser correcta, puede conducir a un callejón sin salida: no se puede escapar de ella, las entregas centralizadas de clarividentes a la comunidad de TI todavía llegan tarde. Pero la elección debe hacerse para no caer en la trampa tradicional de que el equipo toma un campo demasiado amplio y desde el principio intenta crear otro proyecto no especializado de computación distribuida con un perfil amplio. Parece que el frente del trabajo no es tan terrible, en su mayor parte, solo necesita aplicar los desarrollos existentes: unir los nodos en una red, adaptar los algoritmos para determinar las topologías, intercambiar datos y controlar su consistencia, introducir métodos para clasificar los nodos y encontrar el consenso, y, por supuesto, solo cree su propio lenguaje de consulta y todo el idioma y el entorno informático. La idea de un mecanismo universal es muy tentadora y aparece constantemente en una esfera u otra, pero el resultado sigue siendo uno de tres: la solución creada resulta ser en realidad un prototipo limitado con un montón de "Tareas pendientes" en la cartera de pedidos, o se convierte en un monstruo inmanejable, listo para arrastrar cualquiera que toque el fétido "atolladero de Turing", o simplemente muera de forma segura por el hecho de que el cisne, el cáncer y el lucio, tirando en una dirección incomprensible, se hacen pedazos.

No repetiremos errores estúpidos y elegiremos una dirección que tenga un rango comprensible de tareas y que se adapte bien al modelo de computación distribuida. Puedes entender a las personas que están tratando de hacer todo a la vez; por supuesto, hay mucho para elegir. Y mucho parece extremadamente interesante tanto desde el punto de vista de I + D y desarrollo, como desde el punto de vista de la economía. Usando una red distribuida, puede:

  • Entrenar redes neuronales
  • Procesar flujos de señal
  • Calcular estructura proteica
  • Renderizar escenas 3D
  • Simular hidrodinámica
  • Probar estrategias de negociación para bolsas de valores

Para no dejarse llevar compilando una lista de cosas interesantes que son paralelas bien, elegiremos la representación distribuida como nuestro tema adicional.

El renderizado distribuido en sí mismo, por supuesto, nunca es un fenómeno nuevo. Los kits de herramientas de render existentes han respaldado durante mucho tiempo la distribución de la carga en diferentes máquinas, sin las cuales sería bastante triste vivir en el siglo XXI. Sin embargo, no debe pensar que el tema se ha movido hacia arriba y hacia abajo, y no hay nada que hacer allí; consideraremos un problema urgente por separado: crear una herramienta para crear una red de renderizado.

La red de representación con nosotros es la unión de nodos que necesitan realizar tareas de representación, con nodos que tienen recursos informáticos libres para manejar la representación. Los propietarios de recursos conectarán sus estaciones a la red de representación para recibir y ejecutar trabajos de representación utilizando uno de los motores de representación compatibles con la red. Al mismo tiempo, los proveedores de tareas trabajarán con la red como una nube que distribuye recursos de forma independiente, verifica la exactitud de la ejecución y gestiona los riesgos y otros problemas.

Por lo tanto, consideraremos la creación de un marco que debería admitir la integración con un conjunto de motores de renderizado populares y contener componentes que brinden herramientas para organizar una red de nodos heterogéneos y controlar el flujo de tareas.

El modelo económico para la existencia de dicha red no es de importancia fundamental, por lo tanto, para el primero tomaremos un esquema similar al utilizado en los cálculos en redes de criptomonedas: los consumidores de recursos enviarán tokens a los proveedores que realizan el trabajo de representación. Es mucho más interesante comprender qué propiedades debe tener un marco, para lo cual consideraremos el escenario principal para la interacción de los participantes de la red.

Hay tres aspectos de la interacción en una red: un proveedor de recursos, un proveedor de tareas y un operador de red (también conocido como un centro de control, una red, etc. en todo el texto).

El operador de red proporciona al proveedor de recursos una aplicación de cliente o una imagen del sistema operativo con un conjunto completo de software que instalará en la máquina cuyos recursos desea proporcionar, y una cuenta personal accesible a través de la interfaz web, lo que le permite establecer parámetros de acceso al recurso y controlar remotamente su servidor paisaje: controle los parámetros de hierro, realice la configuración remota, reinicie.

Al conectar un nuevo nodo, el sistema de gestión de red analiza el equipo y los parámetros de acceso especificados, lo clasifica, asigna una determinada calificación y lo coloca en el registro de recursos. En el futuro, para gestionar el riesgo, se analizarán los parámetros de actividad del nodo y se ajustará la calificación del nodo para garantizar la estabilidad de la red. ¿Nadie estará contento si su escena se envía para renderizar en cartas poderosas, pero a menudo sobrecalentadas?

Un usuario que necesita renderizar una escena puede ir de dos maneras: cargar la escena en el repositorio de la red a través de la interfaz web o usar el complemento para conectar su paquete de simulación o el renderizador instalado a la red. En este caso, se inicia un contrato inteligente entre el usuario y la red, cuya condición estándar para la finalización es la generación del resultado del cálculo de la escena por la red. El usuario puede monitorear el progreso de la tarea y administrar sus parámetros a través de la interfaz web de su cuenta personal.

La tarea llega al servidor, donde se analizan el volumen de la escena y el número de recursos solicitados por el iniciador de la tarea, después de lo cual el volumen total se descompone en partes adaptadas para el cálculo del número y tipo de recursos asignados por la red. La idea general es que la visualización se puede dividir en muchas tareas pequeñas. Los motores aprovechan esto distribuyendo estas tareas entre múltiples proveedores de recursos. La forma más simple es renderizar pequeñas partes de una escena llamadas segmentos. Cuando cada segmento está listo, la tarea local se considera completada, el recurso pasa al siguiente sin resolver.

Por lo tanto, para el renderizador no hay diferencia como tal si los cálculos se realizan en una máquina o en una cuadrícula desde muchas estaciones de cómputo separadas. La representación distribuida simplemente agrega más núcleos al conjunto de recursos utilizados para la tarea. A través de la red, recibe todos los datos necesarios para representar un segmento, lo calcula, envía este segmento de regreso y pasa a la siguiente tarea. Antes de ingresar al grupo general de la red, cada segmento recibe un conjunto de metainformación, que permite a los nodos en ejecución elegir las tareas informáticas más adecuadas para ellos.

Las tareas de segmentación y distribución de cómputos deben resolverse no solo desde el punto de vista de optimizar el tiempo de ejecución, sino también desde el punto de vista del uso óptimo de los recursos y el ahorro de energía, ya que la eficiencia económica de la red depende de esto. En el caso de una decisión fallida, será más conveniente poner o apagar el minero para que no haga ruido y no desperdicie electricidad.

Pero volvamos al proceso. Cuando se recibe una tarea entre el grupo y el nodo, también se forma un contrato inteligente que se ejecuta cuando el resultado de la tarea se calcula correctamente. Según los resultados del contrato, el nodo puede recibir una recompensa de una forma u otra.

El centro de control monitorea el proceso de completar la tarea, recolectando los resultados de los cálculos, enviando los incorrectos para reprocesar y clasificar la cola, rastreando el término normativo de la tarea (para que no ocurra que el último segmento no sea operado por ningún nodo).

Los resultados del cálculo pasan por la etapa de composición, después de lo cual el usuario recibe los resultados de representación y la red puede recibir una recompensa.

Por lo tanto, surge la composición funcional del marco del paisaje, diseñado para construir sistemas de renderizado distribuido:

  1. Paneles web
  2. Un conjunto de software para la instalación en nodos.
  3. Por sistema de gestión:
    • Subsistema de control de acceso
    • El subsistema de descomposición de tareas de representación
    • Subsistema de distribución de tareas
    • Subsistema de composición
    • Paisaje del servidor y subsistema de gestión de topología de red
    • Subsistema de registro y auditoría
    • Subsistema de expertos en aprendizaje
    • Rest API u otra interfaz para desarrolladores externos

Que piensas ¿Qué preguntas plantea el tema y qué respuestas le interesan?

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


All Articles