Realmente no. Si bien Go tiene una excelente historia para utilizar todos los núcleos en una CPU para subprocesos concurrentes de ejecución, en realidad no hace nada para utilizar los recursos de Instrucción única – Datos múltiples (SIMD) (GPU, MMX / SSE, etc.) hardware subyacente Básicamente, usará tantos núcleos como tenga con el diseño correcto, pero no usará ningún núcleo mejor que un simple conjunto secuencial de comandos estándar.
¿Porque es esto importante? La mayoría de los algoritmos de aprendizaje automático son realmente operaciones en un espacio dimensional superior. Calcular las operaciones de vector, matriz y tensor en los datos es clave para su funcionamiento. En Go, deberá pasar por cada operación relacionada con el enfoque matemático desglosado (lento) o llamar a una biblioteca C existente para hacer el trabajo con los comandos de vector / SIMD de la CPU / GPU.
Claro que Go podría llamar a cualquiera de esas bibliotecas, pero ¿por qué estirarse aquí? Puede llamar a todas las bibliotecas subyacentes en Python o cualquier número de idiomas y el rendimiento general sería el mismo. Adivina qué, lenguajes como Python tienen un mejor soporte en bibliotecas para hacer el trabajo en ambos lados de esas funciones SIMD. ¿Por qué elegiría ir en esos casos?
- ¿Qué es mejor para un estudiante de análisis de datos para estudiar, aprendizaje automático o series de tiempo? Tenemos que elegir uno como módulo electivo
- ¿Siempre estamos mejor con más datos en Machine Learning en la práctica?
- ¿Qué tan difícil es ser admitido en el campo de entrenamiento de ciencia de datos de Insight?
- Cómo manejar grandes cantidades de datos generados a partir de varias fuentes de datos
- ¿Cómo funciona un algoritmo aleatorio en general? ¿Hay algunos algoritmos de aprendizaje automático también involucrados?
Las matemáticas vectorizadas no fueron el foco de la creación de Go. Querían resolver problemas de programación de sistemas de back-end donde SIMD realmente no aportaba mucho a la mesa. En cambio, todo el grial es Instrucción múltiple – Datos múltiples (MIMD) con un grano de paralelismo más grueso. Los mecanismos goroutine y gochannel hacen este tipo de operación paralela muy bien.