- La primera TPU (Tensor Processing Unit) v1 de Google tuvo como objetivo desarrollar un ASIC (Application Specific Integrated Circuit) que ofreciera una ventaja de costo-rendimiento de 10x, considerando las oportunidades de nuevos servicios basados en aprendizaje profundo y la escala y costo del hardware necesario.
- La TPU fue diseñada para acelerar operaciones con tensores, donde los tensores se refieren a operaciones que mapean relaciones de arreglos multidimensionales entre vectores, escalares y otros tensores.
- La multiplicación de matrices es la operación central de las redes neuronales, y se utiliza para calcular las capas ocultas y de salida multiplicando el vector de entrada por la matriz de pesos y aplicando después una función de activación.
La primera Tensor Processing Unit de Google: orígenes
- El proyecto TPU v1 comenzó a finales de 2013 y se desarrolló en 15 meses, lo que lo convierte en un tema interesante para quienes tienen interés en los aceleradores de redes neuronales.
- El contexto y los objetivos del desarrollo de la TPU v1 se trataron en una publicación anterior, y en esta publicación se examina con más detalle la estructura y el rendimiento de la TPU v1.
Estructura y rendimiento
- El diseño de la TPU v1 se basa en la arquitectura presentada en el artículo de 1978 "Systolic Arrays (for VLSI)" de H.T Kung y Charles E. Leiserson.
- Un systolic array está compuesto por una red de procesadores que calcula datos de forma periódica y los transmite a través del sistema para realizar multiplicaciones de matrices de manera eficiente.
- El systolic array de la TPU v1 está compuesto por unidades de multiplicación/acumulación de 256x256, y genera automáticamente los resultados necesarios sin necesidad de guardar y recuperar resultados intermedios en la memoria principal.
Unidades Multiply/Accumulate (MACs)
- La TPU v1 realiza multiplicaciones enteras de 8 bits x 8 bits y aprovecha la cuantización, que requiere menos área de die que los cálculos de punto flotante.
Conjunto de instrucciones
- La TPU v1 utiliza un conjunto de instrucciones complejas (CISC) de unas 20 instrucciones, que se transmiten desde la computadora host a través de la interfaz PCIe.
- Entre las instrucciones principales se incluyen lectura de memoria del host, lectura de pesos, multiplicación/fusión de matrices, activación y escritura en memoria del host.
Software
- El hardware de la TPU v1 soporta una pila de software como Tensorflow, lo que permite portar rápidamente a la TPU aplicaciones desarrolladas para CPU y GPU.
Fabricación y die
- La TPU v1 fue fabricada usando el proceso de 28nm de TSMC, y su área de die es menos de la mitad de la de los chips Intel Haswell CPU y Nvidia K80 GPU que Google utilizaba en sus centros de datos.
Rendimiento
- La TPU v1 fue diseñada para hacer la inferencia más eficiente y ofrece una velocidad de inferencia y eficiencia energética aproximadamente entre 15 y 30 veces superiores en comparación con la GPU Nvidia K80 y la CPU Haswell.
Lecciones
- La arquitectura personalizada de la TPU v1 permite un rendimiento y un uso de energía mucho mejores que los CPU y GPU modernos.
- La TPU v1 fue diseñada con el objetivo de hacer la inferencia rápida y eficiente en consumo de energía, y no como un diseño para entrenamiento.
Opinión de GN⁺
- El desarrollo de la TPU v1 marca un importante punto de inflexión en el cambio de Google hacia hardware de propósito específico para optimizar las cargas de trabajo de inferencia en centros de datos a gran escala.
- La arquitectura systolic array optimiza el flujo de datos para minimizar el acceso a memoria, lo que contribuye a mejorar la eficiencia energética y el rendimiento.
- El éxito de la TPU v1 condujo posteriormente al desarrollo de múltiples versiones de TPU, desempeñando un papel importante en la evolución del hardware de inferencia para IA.
- Otros productos que ofrecen funciones similares a la TPU incluyen las GPU con Tensor Core de Nvidia, Nervana NNP de Intel y Inferentia de Amazon.
- Al adoptar tecnología TPU, es necesario considerar la compatibilidad con la infraestructura existente, la pila de software y el nivel de optimización para aplicaciones específicas. Las ventajas de elegir una TPU son la mejora en la velocidad de las tareas de inferencia y la eficiencia energética, aunque puede requerirse optimización para ciertos modelos o tipos de datos.
1 comentarios
Opiniones de Hacker News