¿Qué tecnologías existen actualmente para hacer matemáticas en grandes conjuntos de datos?

En primer lugar, una sola computadora tiene enormes capacidades informáticas hoy en día, por lo que, si está investigando esto prácticamente, es posible que desee comenzar por revisar la eficiencia algorítmica de su programa: los matemáticos no siempre tienen buenos conocimientos de lenguajes de programación, algoritmos y complejidad computacional, conducen a problemas serios que deben ser atendidos antes de que se arroje más potencia informática al problema. Como ejemplo, debe asegurarse de que su código esté usando vectorización, simd, etc. Los detalles dependen de la plataforma que esté usando:

Vectorización (computación paralela)
SIMD
Vectorización – MATLAB y Simulink

Dicho esto, parece haber al menos dos enfoques comunes para escalar dicho cálculo:

  • usando un grupo de computadoras
  • usando GPU (el procesador de la tarjeta gráfica), que debido a una arquitectura completamente diferente a la CPU puede abordar algunos problemas con una eficiencia mucho mayor, siendo Nvidia CUDA la plataforma más popular – Plataforma de programación y computación paralela

Mathematica y MATLAB tienen soluciones existentes que utilizan ambos enfoques:

Servidor de computación distribuida de MATLAB
GPU MATLAB Computación con GPU NVIDIA CUDA

Procesamiento en paralelo con el poder de Mathematica
Programación CUDA con Mathematica

Yendo más allá de eso, también puede escribir su propio programa en un lenguaje de programación de propósito general, como C, C ++ o Fortran, que en última instancia es más flexible. Luego debe buscar bibliotecas matemáticas efectivas:

LAPACK – PAQUETE de Álgebra Lineal
MAGMA
ScaLAPACK – Paquete de álgebra lineal escalable
PLASMA

Hadoop

Se utiliza en producción en un gran número de organizaciones para computar en algunos de los conjuntos de datos más grandes.

El sistema de archivos está diseñado para escalar a niveles de petabytes. Y además, hay una multitud de motores de ejecución para una variedad de cómputo intensivo en datos. Los marcos generalmente están diseñados para escalar horizontalmente con el tamaño de los datos.

Por ejemplo:
MapReduce y sus abstracciones de nivel superior como Crunch, Cascading, etc.
Spark, para un sistema similar que permite análisis en memoria, y especialmente MLlib para aprendizaje automático
Impala, para consultas de estilo RDBMS
Solr, para indexación de texto y búsqueda
HBase, para el almacén de valores clave distribuido

Mucho depende del tipo específico de cálculos que desea realizar. Estas herramientas son muy buenas para tareas comunes de uso intensivo de datos, pero ciertos problemas numéricos grandes probablemente sean más adecuados con un marco de estilo MPI.

(Además, trabajo para Cloudera).

SAS High Performance Analytics: análisis de alto rendimiento
Soluciones SAS para Hadoop: Soluciones SAS para Hadoop

(Trabajo para SAS)

GPU CUDA es revolucionario en informática.

More Interesting

¿Puedo usar la agrupación (k-means, etc.) en un gran conjunto de datos para automatizar el proceso de búsqueda de similitudes y hacer recomendaciones?

¿Cómo se elige una función de activación? He notado que las funciones más utilizadas se parecen, especialmente cerca de 0. ¿Tienen que ajustarse a algún comportamiento específico? ¿Es este un tema de investigación abierto? ¿Hace una gran diferencia en los resultados?

¿Cómo debo comenzar a aprender 'Machine Learning usando Java'?

Cómo evaluar los mejores resultados posibles para un clasificador SVM

¿Cuál es la diferencia entre TensorFlow y Grep? ¿Cuál es el más adecuado para el aprendizaje automático? ¿Por qué o por qué no?

Cómo calcular la probabilidad de que una oración aparezca en algún lugar del texto usando Word2Vec

¿Puedo usar algoritmos y bibliotecas ML para empresas?

¿Cómo sabemos de antemano qué características funcionarán mejor para la clasificación?

¿Cuál es la diferencia entre agrupar sin PCA y agrupar con PCA?

¿Siri es una forma de aprendizaje automático?

El lenguaje de máquina se ha mencionado en todas partes. ¿Qué es en realidad?

¿Puedes explicar el descenso coordinado en términos simples?

¿Por qué hay tantos enfoques generativos en la clasificación de escenas, mientras que el enfoque discriminatorio es el principal en el reconocimiento / detección de objetos?

¿Cómo aprendiste Machine Lerning?

¿Cómo aprenden los algoritmos de aprendizaje automático de los datos?