¿Qué lenguaje es mejor para hacer big data y machine learning (en términos de rendimiento) Java o Python?

Primero saquemos una cosa del camino; Python y Java no son el lenguaje de elección para hacer los cálculos de la última y mejor palabra de moda en el espacio MI, Deep Neural Networks. La ejecución del código que simula la red neuronal se escribe lo más cerca posible del hardware y, en general, utiliza aceleradores (por ejemplo, GPU, TPU). Sin embargo, esa es la parte de ejecución.

Al intentar codificar contra las bibliotecas que realizan estos elementos, por ejemplo, TensorFlow, existen enlaces oficiales para Python, C ++, Java y Go, y muchos más son proporcionados por la comunidad. Los enlaces son como una capa de instrucciones: el jefe de la fábrica dice lo que harán los trabajadores. Hay diferencias entre ellos, pero una vez que el jefe ha establecido las órdenes, es decir, una vez que los enlaces han indicado al tiempo de ejecución qué hacer, la biblioteca MI ejecuta las órdenes reales (en este ejemplo, el código nativo).

Un escenario similar ocurriría al codificar, por ejemplo, trabajos de Spark. Puede hacerlo en Scala, o puede hacerlo en Python, Java, Ruby, etc. No importa mucho ya que el controlador Spark lo traducirá a las instrucciones que sean necesarias, y luego los ejecutores de Spark lo ejecutarán como Scala en una JVM. Entonces, una vez más, si está usando Python o Java para codificar contra el controlador es casi irrelevante, ya que no está realizando ningún trabajo real.

Esto es lo que la respuesta de Fedor Shabashev está insinuando. Si usa Python para configurar sus instrucciones, y luego usa otra biblioteca para realizar el cálculo, el costo general de Python probablemente sea insignificante en el contexto. Sin embargo, si quisieras usar Python para hacer los cálculos, podrías estar sufriendo un impacto en el rendimiento.

Objetivamente, codificando un algoritmo en Python versus codificando el mismo algoritmo en Java, Python siempre será más lento, suponiendo una codificación experta para ambos. Del mismo modo en Java vs C ++, C ++ vs ensamblaje. Aquí es donde entra tu segundo factor: puede ser mejor tener un código correcto en lugar de un código rápido . Muchas instituciones, por ejemplo, universidades, valorarán la precisión sobre la velocidad, por lo que puede ser preferible escribir en Python.

Para su pregunta, específicamente, yo diría que el punto de conflicto, como se discutió anteriormente, es si Python se usa como controlador o ejecutor . Es decir, ¿el código de Python utiliza una API ML / MI o desea implementar el algoritmo en Python? En el primer caso? La diferencia es insignificante. ¿En lo ultimo? Me temo que tu amigo tiene razón.

Java es un lenguaje compilado mientras que Python se interpreta. Significa que algunas cosas no se pueden implementar de manera eficiente en Python puro. Por ejemplo, el algoritmo dijkstra escrito en python puro sería al menos 30 veces más lento que el mismo algoritmo escrito en Java.

No significa que todo lo escrito en Python sea lento. Para hacer las cosas de manera eficiente en Python, debe confiar en las bibliotecas de C ++ como numpy u OpenCV. La multiplicación de matrices grandes en numpy sería tan eficiente como en Java. Por lo tanto, cualquier algoritmo que pueda expresarse en términos de operaciones matriciales, puede implementarse en Python de manera muy eficiente.

También puede mejorar el rendimiento del código Python con Cython. Por ejemplo, SGD en scikit-learn está escrito en Cython y es muy rápido [1].

[1] scikit-learn / scikit-learn

Gracias por pedirme que responda. Soy un experto en comparación de lenguajes de programación, pero podemos referirnos a algunos puntos de referencia

  1. Python 3 vs Java (quad-core Ubuntu de 64 bits)
  2. Python vs rendimiento de Java (velocidad de ejecución)

Sin embargo, hasta donde yo sé, el lenguaje compilado como Java es más rápido que el lenguaje interpretado como Python.

Python tiene más biblioteca para el aprendizaje automático en comparación con Java y está en continua evolución.

Hay una muy buena biblioteca en Python para ayudarlo con la interpretación inicial de datos, para la visualización y la aplicación de algoritmos de aprendizaje automático en comparación con Java.

Para la mayor parte del escenario, se prefiere Python sobre Java.

Java.

¿Por qué estoy respondiendo esto? Puedes hacer tu propia investigación.

Python 3 vs Java (Ubuntu quad core de 64 bits)

More Interesting

¿Cuáles son las principales aplicaciones potenciales para un cordón neural? ¿Hay algún peligro relacionado con el uso de dicha tecnología?

¿Por qué las redes neuronales recurrentes no pueden ampliarse bien?

Cómo evaluar un experimento además de usar una diferencia en regresión de diferencia

¿Cuál es el método de detección de objetos de última generación para la identificación de objetos dentro de la imagen?

¿Cómo es Octave el mejor lenguaje utilizado para el aprendizaje automático?

¿Las startups prefieren alojar o licenciar software de aprendizaje automático?

¿Cuáles son las desventajas de tener un tamaño de paso constante para el Descenso de gradiente estocástico?

¿Cuál es la capacidad del aprendizaje automático? Quiero decir, ¿cuánto puede 'aprender' una máquina?

¿Hay alguna diferencia entre los codificadores automáticos y el codificador-decodificador en el aprendizaje profundo?

¿Se está realizando una fuerte investigación en la intersección del aprendizaje automático y la neurociencia computacional?

El problema de los bandidos armados múltiples discutido en el libro de Sutton y Barto, usa 2000 ensayos y 1000 jugadas. Cuál es la diferencia entre esto?

¿Qué es el aprendizaje automático?

¿Cómo se puede utilizar el aprendizaje profundo TensorFlow para la detección de anomalías?

¿Podría la red neuronal de convolución completa aprender a discriminar entre clases si no hay muestreo descendente y la entrada es igual a salida?

¿Cuáles son actualmente los temas candentes en la investigación de aprendizaje automático y en aplicaciones reales?