La IA y el aprendizaje automático, es decir, la inteligencia artificial y el aprendizaje automático, dependen del rendimiento. La pila de software es tan importante como el hardware, porque un buen software puede sacar hasta el último bit de rendimiento de los procesadores limitados física y técnicamente.
En los últimos años, la demanda de procesadores especiales para las áreas de aplicación de inteligencia artificial (IA) y aprendizaje automático (ML) ha aumentado significativamente. Esto es comprensible dado el potencial de estas áreas de aplicación y los altos requisitos computacionales de las aplicaciones.
Índice de contenidos
¿Cuál es el futuro de los chips de IA?
Sin embargo, el rápido desarrollo también le hace pensar a dónde puede conducir el camino. Entonces, ¿cómo serán los mejores chips de IA del futuro? Creo que el factor más importante en la efectividad y el éxito de un chip de IA es su pila de software.
Un buen software no solo simplifica el uso de procesadores de IA para los desarrolladores, sino que también puede aprovechar todo el potencial del hardware subyacente. La inteligencia artificial requiere más de su software para ser eficiente, porque en la inteligencia artificial y el aprendizaje automático, los cálculos son fundamentalmente diferentes.
¿Cuál es la diferencia entre los cálculos en el área de inteligencia artificial?
Existen numerosas características de los algoritmos de IA que son únicos en sus respectivos campos. Quiero destacar algunos aquí en particular:
- La inteligencia artificial y el aprendizaje automático modernos tienen que ver con el manejo de información insegura. Las variables de un modelo representan algo incierto: una distribución de probabilidad. Esto tiene un gran impacto en el tipo de trabajo que debe realizar el chip. Para cubrir la amplia gama de posibilidades que pueden surgir, se necesita la precisión detallada de las fracciones y una amplia gama dinámica de posibilidades. Desde el punto de vista del software, esto requiere una variedad de técnicas de números de punto flotante y también algoritmos que los procesen de manera probabilística.
- Los datos que tratamos no solo son probabilísticos, sino que también provienen de un espacio de muy alta dimensión con contenido como imágenes, oraciones, videos o incluso simplemente conceptos de conocimiento abstracto. Estos no son los vectores de datos directos como se ve en el procesamiento de gráficos. Cuanto mayor sea el número de dimensiones en los datos, más irregular y disperso se vuelve el acceso a los datos. De ello se deduce que muchas de las técnicas comúnmente utilizadas en hardware y software, como el almacenamiento en búfer, el almacenamiento temporal / caché y la vectorización, no son aplicables aquí.
- Además, la computación con inteligencia artificial se lleva a cabo tanto con big data (grandes cantidades de datos para entrenamiento) como con big computing (una gran cantidad de operaciones de computación por elemento de datos procesados), lo que ilustra el alcance del esfuerzo de procesamiento.
¿Qué significa esto para el software?
Debido a que la computación con inteligencia artificial es tan diferente, el software en AI y ML tiene que trabajar más duro que en muchas otras áreas. La pila de software de IA debe combinar la productividad del desarrollador, la facilidad de uso y la flexibilidad con la eficiencia requerida a gran escala.
Para resolver el desafío de la eficiencia, el software de inteligencia artificial debe comunicarse con el hardware en un nivel inferior. Esto evita decisiones tardías durante el tiempo de ejecución del hardware y mejora la eficiencia. Las estructuras de datos probabilísticas y de mayor calidad en los algoritmos de IA dificultan predecir lo que sucederá durante el tiempo de ejecución. Por lo tanto, el software debe proporcionar más información sobre la estructura del algoritmo y la estructura del modelo de aprendizaje automático que se está ejecutando.
Con la inteligencia artificial, el software debe programarse para controlar la representación numérica y el movimiento de memoria explícito que son específicos de ciertos algoritmos de IA para optimizar la eficiencia. El hardware también debe ser receptivo a estas optimizaciones.
Los beneficios del co-diseño de software / hardware
En el futuro, se requerirá más codiseño de hardware / software, en el que se desarrollan algoritmos de software y hardware de IA al mismo tiempo. Esto permite un mayor grado de colaboración entre hardware y software y ayuda a los desarrolladores a organizar los espacios de memoria o la programación de subprocesos de manera eficaz de lo que se está haciendo en la actualidad.
En diversas compañías de tecnología han estado desarrollando sus pilas de software junto con el procesador IPU desde hace mucho tiempo. Para maximizar la eficiencia del procesador, han equipado estas pilas con un software de control más avanzado que en otros sistemas.
Un ejemplo de esto es cómo se gestiona el almacenamiento
Una máquina IPU M2000 de graphcore tiene una memoria DDR fuera de chip. Sin embargo, no hay caché ni área en el hardware para controlar automáticamente el movimiento o el almacenamiento en búfer de datos entre la memoria de transmisión externa y la memoria del procesador en el chip en tiempo de ejecución.
Todo esto se controla en el software sobre la base del gráfico aritmético. La gestión de la memoria es solo una de las partes de la pila de software en la que se optimiza el hardware en función de análisis avanzados. Ésta es la clave de su enfoque. Cuando el software y el hardware funcionan juntos sin problemas desde el principio, es mucho más fácil mejorar el rendimiento y la eficiencia.
Mejores chips de IA
Con un mayor control del software, se puede proporcionar información sobre cómo el hardware puede procesar diferentes modelos de inteligencia de máquinas. Quizás incluso podamos aprender a desarrollar nuevos modelos de IA que sean inherentemente más poderosos y utilicen técnicas avanzadas como la escasez.
En el futuro, los mejores chips de IA serán los que tengan el mejor software, por ende, desde ahora mismo comienza la gran competencia para ver quien puede optimizar mejor sus códigos e implementar mayores velocidades de procesamiento de datos a precios más bajo.