Deep Learning y OpenVINO Toolkit. Respuestas de expertos de Intel


Estamos completando la próxima iteración del encabezado Habr, "Haga una pregunta a un experto de Intel", dedicado a Deep Learning y el Kit de herramientas Intel OpenVINO . Por razones que no estamos muy claras para nosotros, la actividad de los lectores de Habra esta vez fue mucho más baja de lo habitual, sin embargo, Intel no ocupó a personas entusiastas; las preguntas que faltaban para completar se recopilaron sin conexión. Y sí, también tenemos un ganador en el concurso por la mejor pregunta, según la tradición, al final de la publicación sobre él.

imagen Pregunta
¿Qué beneficios ofrece el usuario de OpenVINO y por qué deberían usarlo?

Yuri Gorbachov. La principal ventaja del producto es el rendimiento, el tamaño mínimo y un número casi cero de dependencias. Son estos requisitos los que destacamos como los principales en el desarrollo de productos.

El producto es ideal para implementar aplicaciones que utilizan Deep Learning y Computer Vision para resolver problemas. Por ejemplo, el rendimiento de nuestro producto cuando se computan redes en plataformas Intel es varias veces mayor en comparación con los marcos populares. También tenemos requisitos significativamente más bajos para la memoria usada, lo cual es relevante para varias aplicaciones. En pocas palabras, en algunas plataformas es imposible iniciar una red utilizando marcos debido a la falta de memoria.

imagen Pregunta
¿Es posible entrenar redes usando OpenVINO en plataformas Intel? Digamos, es muy interesante, ¿es posible entrenar en las plataformas de Nervana?

Yuri Gorbachov. No, el soporte de capacitación no está incluido en el producto. La parte decente de las mejoras que obtenemos se debe precisamente al hecho de que no esperamos que el producto se use en la capacitación (por ejemplo, reutilizando memoria, fusionando capas, etc.).

imagen Pregunta
¿Por qué no puede simplemente usar los marcos en los que la red fue entrenada para ejecutar redes neuronales? ¿Qué proporciona el motor de inferencia de aprendizaje profundo en comparación con los marcos? ¿Por qué necesito cambiar algo?

Yuri Gorbachov. El uso, por supuesto, es posible. Pero si necesita el mejor rendimiento, elegir OpenVINO es bastante fácil de explicar.

El rendimiento del motor de inferencia de aprendizaje profundo es actualmente el mejor en las plataformas Intel. Publicamos los resultados en comparación con los marcos populares; probablemente no tenga sentido repetirlos aquí. Solo puedo decir que incluso las versiones de frameworks que usan bibliotecas Intel pierden rendimiento en nuestro producto.
Además, el motor de inferencia de aprendizaje profundo es el único producto que admite el lanzamiento de redes de marcos populares en todas las plataformas Intel y que ejecutan varios sistemas operativos. Daré los siguientes escenarios como ejemplos:
  • La ejecución de redes en FPGA solo es posible a través de OpenVINO
  • Lanzamiento de las redes Caffe / TensorFlow / MXNet en Intel GPU y Movidius.
  • Lanzamiento completo en redes en plataformas Intel con sistema operativo Windows

En general, ejecutar Windows es una historia diferente. No todos los marcos soportan un lanzamiento tan simple; por ejemplo, ejecutar caffe no es muy simple. TensorFlow proporciona binarios para Windows, pero si necesita realizar modificaciones y reconstruir, puede haber un problema. Al mismo tiempo, vemos que a menudo se ejecuta en Windows.

imagen Pregunta S_o_T
¿Cuál es el formato futuro para la representación intermedia de la arquitectura de red? ¿OpenVINO planea apoyar a NNEF?

Yuri Gorbachov. Actualmente, ONNX es el estándar más popular. Más bien, es el resultado del apoyo de Facebook, Microsoft y otros jugadores. En particular, WinML acepta ONNX para la ejecución y proporciona buenas herramientas para trabajar con este formato. Soy escéptico sobre la estandarización de tales cosas en general. Desafortunadamente, la práctica muestra que tan pronto como la conversación se traslada al plano de los comités de estandarización, en el que se sientan representantes de varias compañías que venden sus productos, el progreso se ve severamente inhibido. Ya existe el problema de que ONNX no es suficiente para expresar un conjunto de redes existentes. Por ejemplo, Mask-RCNN, desarrollado por el propio Facebook, no es compatible con ONNX. Además de redes de la familia SSD y Faster-RCNN.

No consideramos el soporte NNEF: no hubo solicitudes de clientes y, objetivamente, este estándar no se usa con frecuencia. En la práctica, he visto este estándar en uso solo una vez. Por cierto, esa compañía tiene un contrato con el Grupo Khronos.

¿Qué herramientas existen para analizar el rendimiento de las GPU Intel con inferencia simultánea de varias redes?

Yuri Gorbachov. Creo que el producto más adecuado sería Intel vTune. Lo usamos nosotros mismos en el desarrollo, se muestra una gran cantidad de información útil, y si este producto se domina al menos a un nivel básico, esta es una ayuda significativa. Por cierto, el motor de inferencia de aprendizaje profundo admite la capacidad de implementar capas usted mismo. Y en el proceso de esta implementación, probablemente aún tenga que usar el generador de perfiles para lograr el mejor rendimiento.

imagen Pregunta Hanry396
Los investigadores han identificado una "huella respiratoria" única para 17 enfermedades diferentes, como el cáncer de riñón o la enfermedad de Parkinson, y han desarrollado un dispositivo que muestra muestras de aliento con una precisión del 86% utilizando una serie de sensores a nanoescala y analizando los resultados utilizando métodos de inteligencia artificial. Y en relación con esto, surgió la pregunta: “En su opinión, ¿hasta qué punto en la medicina puede desarrollarse la IA y será posible combinar el cerebro humano con una computadora?

Yuri Gorbachov. El desarrollo de la IA en la medicina ya está ocurriendo, principalmente a un nivel bastante básico, pero los pasos están claramente trazados. Los enfoques para segmentar imágenes de resonancia magnética utilizando redes se están volviendo populares, nuestros clientes ya están analizando las plataformas más productivas para tales tareas, evidencia de que los productos se están preparando para su lanzamiento. Me parece importante que a menudo el uso de redes persigue no solo el objetivo de la aceleración, sino también la mejora de la calidad de los diagnósticos.

Acerca de la sinergia de una computadora con un cerebro humano, da miedo pensar hasta ahora. Al menos, parece que los métodos actuales para resolver problemas de IA son torpes en comparación con el cerebro humano.

imagen Pregunta enginerr_7
Traté de integrar openVINO y ROS, no tuve éxito, la pregunta es, ¿cómo integrar OpenVINO en ROS correctamente?

Yuri Gorbachov. Es algo difícil responder la pregunta, no está claro qué no funcionó. La forma más básica puede ser vincular un nodo ROS específico con OpenVINO. Nosotros mismos usamos este método, funcionó.

Recomiendo hacer una pregunta más detallada en nuestro foro , lo ayudarán allí, nuestro equipo responde preguntas allí junto con el equipo de soporte del producto.

En el procesamiento de imágenes biomédicas, a menudo se utilizan datos de entrada de cinco dimensiones, convoluciones tridimensionales y otras operaciones. ¿Hay algún apoyo planeado / planeado? ¿Existe / está previsto soportar redes recursivas, redes (o capas separadas) con conjuntos comunes de parámetros?

Yuri Gorbachov. Sí, planificamos e implementamos soporte para convoluciones tridimensionales y agrupación. Creo que podemos esperar el lanzamiento de una versión del producto con soporte para fin de año. También habrá soporte para redes recurrentes (LSTM / RNN).

imagen Pregunta
¿Por qué OpenVINO incluye la biblioteca OpenCV en forma binaria? Después de todo, cualquiera puede descargarlo y construirlo usted mismo.

Yuri Gorbachov. Las razones son bastante comunes. OpenCV está disponible en formato fuente y su construcción es, en esencia, una tarea simple. Es un poco más difícil crear el paquete más eficiente. A menudo, esto genera preguntas y decidimos simplemente proporcionar el paquete terminado. No usamos ninguna magia especial, solo construimos correctamente y con las opciones correctas.

Por supuesto, usarlo es opcional, pero recomendaría comparar el rendimiento de la aplicación con ella y con una compilación personalizada. En algunos casos, los clientes pudieron acelerar sus aplicaciones simplemente porque cambiaron a nuestra distribución.

Además, en el caso de la entrega de OpenVINO, el módulo OpenCV DNN utiliza el motor de inferencia como motor para lanzar redes. En promedio, esto da una aceleración de al menos 2 veces en comparación con el código en OpenCV.

imagen Pregunta
OpenVINO incluye modelos entrenados. ¿Cuál es su diferencia con los modelos que están disponibles en línea? ¿Puedo usarlos en aplicaciones y hay alguna restricción en el uso comercial?

Yuri Gorbachov. De hecho, OpenVINO contiene modelos cuyo uso no impone absolutamente ninguna restricción (excepto los intentos de reconstruir el modelo original a partir de un formato de presentación intermedio) y no requiere la firma de un acuerdo de licencia.

Hay dos diferencias con respecto a los modelos públicos:
  • Rendimiento y tamaño de los modelos . Todos los modelos suministrados resuelven un problema limitado (por ejemplo, detección de peatones) y esto nos permite reducir significativamente su tamaño. En el caso de los modelos públicos, se intenta resolver un problema más general (detectar varias clases de objetos) y esto requiere modelos mucho más complejos desde el punto de vista computacional con una gran cantidad de parámetros. En el ejemplo anterior (detección de peatones), nuestro modelo puede resolver el problema más de 10 veces más rápido que uno público con una calidad no peor.
  • La decisión de tareas exóticas . A menudo sucede que la tarea no causa mucho interés en la comunidad académica y no es fácil encontrar un modelo público. Por ejemplo, detección de ángulos de rotación de la cabeza o análisis de edad y género. En este caso, nuestro modelo lo libera de la necesidad de encontrar un conjunto de datos y capacitarlo.

imagen Pregunta
Parece que varios modelos hacen lo mismo, por ejemplo, la detección de rostros. ¿Por qué hay tantos de ellos?

Yuri Gorbachov. Hay dos diferencias:
  • Valor por velocidad / calidad . Algunos modelos pueden funcionar mucho más rápido debido a una ligera pérdida de calidad. Dependiendo de los requisitos de la aplicación, puede elegir uno u otro.
  • Diferentes condiciones para la declaración del problema . Por ejemplo, el ángulo de disparo de una persona puede afectar la calidad de la detección y proporcionamos 2 modelos para diferentes casos.

Cabe señalar que para los modelos hay un archivo con una descripción, allí puede ver las cifras de rendimiento, la precisión del modelo y ejemplos de imágenes que se espera que ingresen, es decir. Descripción del escenario.

imagen Pregunta
¿Por qué las redes de recurrencia no son compatibles? ¿Está previsto admitir primitivas y topologías específicas utilizando estas primitivas?

Yuri Gorbachov. Se está implementando el apoyo; es una cuestión común de tiempo y prioridades. Creo que para fin de año deberíamos implementar esta funcionalidad y una serie de innovaciones.

imagen Pregunta
¿Qué debo hacer si intento importar un modelo y obtengo errores? ¿Es posible resolver esto usted mismo o es necesario ir al soporte? ¿Incluso me apoyarán?

Yuri Gorbachov. Por el momento, puede recurrir al foro de soporte, respondemos una gran cantidad de preguntas y resolvemos problemas. Cabe señalar que el componente Model Optimizer es un conjunto de scripts de Python. En principio, esto significa que puede ver y reparar algo usted mismo si hay interés en esto.
También estamos planeando lanzar el código fuente, esto debería permitirnos hacer cosas más complejas que corregir errores.

Bueno, el ganador de la competencia es H_Braiser S_o_T con una pregunta sobre el soporte para NNEF. Felicidades

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


All Articles