¿GoLang es una mejor opción de lenguaje de programación para proyectos de aprendizaje automático manteniendo el rendimiento y la escala horizontal como las principales preocupaciones de diseño?

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?

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.

La respuesta es más compleja de lo que la mayoría de la gente diría. Es un sí y un no.

Golang es excelente para escribir microservicios y soluciones para ampliar las cosas. También tiene una API de Tensorflow para que pueda usar golang para llamar a cosas escritas en Tensorflow (que probablemente está escrito en python).

Supuse que Google lo usaría más para la capacitación distribuida debido a su concurrencia integrada, pero no tengo indicios de que sugiera que esta es una práctica común en Google. Habiendo preguntado a uno de los principales desarrolladores de Tensorflow en Google, me dijo que este no es el caso.

Si desea escalar horizontalmente su algoritmo, probablemente no va a reinventar la rueda. Probablemente va a hacer esto en un servicio de contenedor como Kubernetes o similar y le sugiero que también mire Pachyderm. Ambos están escritos en Golang por cierto …

Entonces, mi respuesta sería que Golang es excelente para escribir infraestructura que amplíe las cosas. Hay muchas soluciones disponibles para eso y le sugiero que no reinvente la rueda. Para escribir el número real, no tanto. Quizás en el futuro.

Es ciertamente utilizable, aunque el soporte de la biblioteca para el aprendizaje automático es bastante pequeño e inmaduro.

More Interesting

¿Qué tipo de codificación se usa en ciencia de datos?

¿Qué carrera debería intentar, ciencia de datos o aprendizaje automático?

¿Cuáles son algunas de las preguntas comerciales respondidas por la ciencia de datos? ¿Qué tipo de datos se utilizan para responder esas preguntas?

¿Cómo podrían relacionarse dos conjuntos de datos y datos completamente diferentes para generar datos completamente nuevos y un conjunto de datos, y cómo el lenguaje de programación, las herramientas de modelado de datos y Excel me ayudan a realizar dicho análisis de datos?

¿Qué herramientas usan los periodistas de datos para crear visualizaciones de datos? ¿Qué características les gustan más?

¿Cómo están almacenando los 'RNNs' memoria '?

¿Hadoop está saliendo? ¿Se avecina una tecnología que pueda reemplazar toda la forma en que MapReduce consulta en un grupo de máquinas? ¿No puede simplemente automatizar la forma en que ejecuta estas consultas? ¿Es esto lo que Blaze está tratando de lograr?

¿Es la ciencia de datos un tema extremadamente aburrido?

¿Puedo usar películas con subtítulos como conjunto de datos de entrenamiento para el reconocimiento de voz?

Cómo comenzar con un proyecto relacionado con big data

¿Cómo abordaría un nuevo trabajo de TI (software flexible, ciencia de datos) en una empresa muy grande donde se supone que todas las personas son muy hábiles?

¿Dónde puedo encontrar documentos de ciencia de datos?

¿Cuáles son las aplicaciones de los procesos estocásticos, particularmente en ciencia de datos y aprendizaje automático?

¿Cómo se ve la arquitectura de datos de una red publicitaria?

Entre la codificación y la minería de datos, ¿qué es un buen trabajo?