Dask

Dask es una biblioteca flexible de código abierto para la computación paralela y distribuida en Python.

¿Qué es Dask?

Dask es una biblioteca de código abierto diseñada para proporcionar paralelismo a la pila de Python existente. Dask proporciona integraciones con bibliotecas de Python como NumPy Arrays, Pandas DataFrames y scikit-learn para permitir la ejecución paralela en varios núcleos, procesadores y computadoras, sin tener que aprender nuevas bibliotecas o lenguajes.

Dask se compone de dos partes:

  • Una API de colecciones para listas paralelas, matrices y DataFrames para escalar de forma nativa Numpy, NumPy, Pandas y scikit-learn para ejecutarse en entornos distribuidos o de mayor memoria.  Las colecciones de Dask son colecciones paralelas de la biblioteca subyacente (por ejemplo, una matriz Dask consta de matrices Numpy) y se ejecutan en la capa superior del programador de tareas.
  • Un programador de tareas para crear gráficos de tareas y coordinar, programar y monitorear tareas optimizadas para cargas de trabajo interactivas en todos los núcleos y máquinas de CPU.

Un programador de tareas para crear gráficos de tareas.

Las tres colecciones paralelas de Dask, llamadas DataFrames, Bags y Arrays, pueden usar automáticamente datos particionados entre RAM y disco, así como distribuidos entre varios nodos de un clúster según la disponibilidad de recursos. Para los problemas que son paralelizables pero no se ajustan bien en abstracciones de alto nivel como las matrices Dask o los DataFrames, hay una función "retrasada" que utiliza decoradores de Python para modificar funciones de modo que funcionen de forma lenta. Esto significa que la ejecución se retrasa y la función y sus argumentos se colocan en un gráfico de tareas.

El programador de tareas de Dask puede escalar a clústeres de miles de nodos y sus algoritmos se han probado en algunas de las supercomputadoras más grandes del mundo. Su interfaz de programación de tareas se puede personalizar para trabajos específicos. Dask ofrece baja sobrecarga, baja latencia y mínimo espacio de espera necesario para la velocidad.

En un escenario distribuido, un programador coordina muchos trabajadores y mueve la computación al trabajador correcto para mantener una conversación continua sin bloqueo. Varios usuarios pueden compartir el mismo sistema. Este enfoque funciona con el sistema de archivos Hadoop HDFS, así como tiendas de objetos de cloud como el almacenamiento S3 de Amazon.

El programador de una sola máquina está optimizado para el uso de mayor tamaño que la memoria y divide las tareas en varios subprocesos y procesadores. Utiliza un enfoque de bajo consumo general que consume aproximadamente 50 microsegundos por tarea.

¿Por qué Dask?

Los científicos de datos adoptaron ampliamente el lenguaje de programación de alto nivel fácil de usar de Python y las bibliotecas de Python como NumPy, Pandas y scikit-learn.

Estas bibliotecas no tenían una solución sólida para el paralelismo, ya que se habían desarrollado antes de que los casos de uso de big data se convirtieron en tan frecuentes. Python fue la opción preferida para la computación de un solo núcleo, pero los usuarios se vieron obligados a encontrar otras soluciones para el paralelismo de varios núcleos o múltiples máquinas. Esto causó un desfasamiento en la experiencia del usuario y una frustración.

Esta creciente necesidad de escalar las cargas de trabajo en Python ha llevado al crecimiento natural de Dask en los últimos cinco años. Dask es una forma fácil de instalar y aprovisionada rápidamente para acelerar el análisis de datos en Python que no requiere que los desarrolladores actualicen su infraestructura de hardware o cambien a otro lenguaje de programación. La sintaxis utilizada para iniciar trabajos de Dask es la misma que se usa para otras operaciones de Python, por lo que se puede integrar con poca rediseño de código.

Ciencia de datos escalable de Dask.

Python, que también es popular entre los desarrolladores web, tiene una pila de redes robusta que Dask aprovecha para crear un sistema de computación distribuido flexible, de alto rendimiento y capaz de escalar una amplia variedad de cargas de trabajo. La flexibilidad de Dask lo ayuda a destacarse de otras soluciones de big data como Hadoop o Apache Spark, y su compatibilidad con código nativo hace que sea particularmente fácil de trabajar con usuarios de Python y desarrolladores C/C++/CUDA.

Dask ha sido adoptado rápidamente por la comunidad de desarrolladores de Python y ha crecido con la popularidad de Numpy y Pandas, que proporcionan extensiones valiosas a Python para abordar el análisis especial y los cálculos matemáticos.

Dask es mucho mejor que Pandas y funciona muy bien en tareas que se paralelizan fácilmente, como clasificar datos en miles de hojas de cálculo. El acelerador puede cargar cientos de DataFrames de Pandas en la memoria y coordinarlos con una sola abstracción.

Hoy en día, Dask es administrado por una comunidad de desarrolladores que abarca docenas de instituciones y proyectos PyData como Pandas, Jupyter y Scikit-Learn. La integración de Dask con estas herramientas populares ha llevado a una rápida adopción, de aproximadamente el 20% entre los desarrolladores que necesitan herramientas de big data Pythonic.

Dask se integra con estas herramientas populares.

Por Qué Dask Es Mejor con las GPU

Desde el punto de vista arquitectónico, la CPU está compuesta por solo unos pocos núcleos con una gran cantidad de memoria caché que puede manejar algunos subprocesos de software a la vez. Por el contrario, una GPU está compuesta por cientos de núcleos que pueden manejar miles de subprocesos en simultáneo.

Las GPU ofrecen la tecnología de la computación en paralelo, algo mágico hasta hace poco.

Dask + NVIDIA: Impulsar el Análisis Acelerado y Accesible

NVIDIA entiende la potencia que las GPU ofrecen al análisis de datos. Es por eso que NVIDIA se ha empeñado en capacitar a los profesionales de ciencia de datos, machine learning e inteligencia artificial para que aprovechen al máximo sus datos. Al ver la potencia y la accesibilidad de Dask, NVIDIA comenzó a usarla en el proyecto RAPIDS con el objetivo de escalar horizontalmente cargas de trabajo de análisis de datos aceleradas a múltiples GPU y sistemas basados en GPU.

Machine learning y deep learning en las GPU.

Debido a la interfaz y versatilidad de Python que son accesibles más allá de la ciencia de datos, Dask creció a lo largo de NVIDIA para convertirse en una opción natural en nuevas aplicaciones que van desde el análisis de JSON hasta la administración de workflows de deep learning integrales. Estos son algunos de los muchos proyectos y colaboraciones en curso de NVIDIA que utilizan Dask:

RAPIDS

RAPIDS es un conjunto de API y bibliotecas de software de código abierto para ejecutar procesos de ciencia de datos completamente en la GPU. Esto permite reducir los tiempos de entrenamiento de días a minutos. RAPIDS se basa en NVIDIA® CUDA-X AI™, y une años de desarrollo en gráficos, machine learning, computación de alto rendimiento (HPC) y más.

Ciencia de datos integral y acelerada por las GPU de NVIDIA en NVIDIA RAPIDS.

Si bien CUDA-X es increíblemente potente, la mayoría de los profesionales de análisis de datos prefieren experimentar, desarrollar y entrenar modelos con un conjunto de herramientas de Python, como numPy, Pandas y Scikit-learn mencionados anteriormente. Dask es un componente crítico del ecosistema RAPIDS, lo que les facilita aún más a los profesionales de datos aprovechar la computación acelerada a través de una cómoda experiencia de usuario basada en Python.

NVTabular

NVTabular es una biblioteca de preprocesamiento e ingeniería de funciones diseñada para manipular de forma rápida y sencilla terabytes de conjuntos de datos tabulares. Se basa en la biblioteca Dask-cuDF y proporciona una capa de abstracción de alto nivel, lo que simplifica la creación de operaciones ETL de alto rendimiento a gran escala. NVTabular puede escalar a miles de GPU aprovechando RAPIDS y Dask, lo que elimina el cuello de botella de esperar a que finalicen los procesos de ETL.

cuStreamz

De forma interna, en NVIDIA, usamos Dask para potenciar partes de nuestros productos y operaciones comerciales. Con Streamz, Dask y RAPIDS, hemos creado cuStreamz, una plataforma de datos de transmisión acelerada que utiliza Python de forma 100% nativa. Con cuStreamz, podemos realizar análisis en tiempo real para algunas de nuestras aplicaciones más exigentes, como GeForce NOW, NVIDIA GPU Cloud y NVIDIA Drive SIM. Si bien es un proyecto joven, notamos reducciones impresionantes en el costo total de propiedad en comparación con otras plataformas de datos de transmisión utilizando cuStreamz habilitado para Dask.

Casos de Uso para Dask

La capacidad de Dask para procesar cientos de terabytes de datos de manera eficiente la convierte en una potente herramienta para agregar paralelismo al procesamiento de ML, para permitir una ejecución más rápida del análisis de conjuntos de datos grandes y multidimensionales, y para acelerar y escalar los procesos o workflows de la ciencia de datos. Como tal, se puede utilizar en una amplia variedad de casos de uso en HPC, servicios financieros, ciberseguridad y venta minorista. Por ejemplo, Dask trabaja con workflows de Numpy para permitir el análisis de datos multidimensionales en ciencia de la tierra, imágenes de satélite, genómica, aplicaciones biomédicas y algoritmos de machine learning.

Con Pandas DataFrames, Dask puede habilitar aplicaciones en análisis de series temporales, inteligencia comercial y preparación de datos. Dask-ML, que es una biblioteca para machine learning distribuido y paralelo, se puede usar con Scikit-Learn y XGBoost para crear entrenamiento y predicción escalables en grandes modelos y conjuntos de datos. Los desarrolladores pueden usar los workflows de Dask estándar para preparar y configurar datos, luego entregar los datos a XGBoost o Tensorflow.

Dask + RAPIDS: Permitir la Innovación en la Empresa

Muchas empresas están adoptando Dask y RAPIDS para escalar algunas de sus operaciones más importantes. Algunos de los socios más grandes de NVIDIA, líderes en sus industrias, están utilizando Dask y RAPIDS para impulsar sus análisis de datos. Estos son algunos ejemplos emocionantes recientes:

Capital One

Con el objetivo de "cambiar la banca para siempre", Capital One ha invertido fuertemente en análisis de datos a gran escala para proporcionar mejores productos y servicios a sus clientes y mejorar la eficiencia operativa en toda su empresa. Con una gran comunidad de científicos de datos compatibles con Python, Capital One utiliza Dask y RAPIDS para escalar y acelerar las cargas de trabajo tradicionalmente difíciles de paralelizar de Python y reducir significativamente la curva de aprendizaje para el análisis de big data.

Centro de Computación Científica de Investigación Energética Nacional

El NERSC se dedica a proporcionar recursos de computación y experiencia para la investigación científica básica y es un líder mundial en la aceleración de los descubrimientos científicos a través de la computación. Parte de esa misión es hacer que la supercomputación sea accesible para los investigadores a fin de impulsar la exploración científica. Con Dask y RAPIDS, la increíble potencia de su última supercomputadora "Perlmutter" se vuelve fácilmente accesible para los investigadores y científicos con una experiencia limitada en supercomputación. Al aprovechar Dask para crear una interfaz familiar, pusieron el poder de la supercomputación en manos de los científicos que impulsan posibles avances en todos los campos.

Oak Ridge National Laboratory

En medio de una pandemia global, el Laboratorio Nacional de Oak Ridge está empujando los límites de la innovación mediante la construcción de un "laboratorio virtual" para el descubrimiento de fármacos en la lucha contra el COVID-19. Con Dask, RAPIDS, BlazingSQL y las GPU de NVIDIA, los investigadores pueden utilizar el poder de la supercomputadora Summit de sus laptops para analizar las capacidades de los compuestos de moléculas pequeñas para unirse a la proteasa principal del SARS-CoV-2. Con un conjunto de herramientas tan flexible, los ingenieros pudieron poner en marcha este workflow personalizado en menos de dos semanas y ver resultados de consultas de menos de segundo.

Walmart Labs

Walmart es un gigante del sector de la venta minorista, ya que utiliza enormes conjuntos de datos para atender mejor a sus clientes, predecir las necesidades de productos y mejorar la eficiencia interna. Aprovechando el análisis de datos a gran escala para lograr estos objetivos, Walmart Labs ha recurrido a Dask, XGBoost y RAPIDS para reducir los tiempos de entrenamiento en 100 veces, lo que permite una iteración rápida del modelo y mejoras de precisión para potenciar su negocio. Con Dask, ponen a disposición la potencia de las GPU de NVIDIA para que los científicos de datos resuelvan los problemas más difíciles.

Dask en la Empresa: Un Mercado en Crecimiento

Con su creciente éxito en grandes instituciones, más empresas están cubriendo la necesidad de productos y servicios de Dask en la empresa. Estas son algunas empresas que abordan las necesidades empresariales de Dask, lo que marca los inicios de un mercado en desarrollo:

Anaconda

Al igual que una gran parte del ecosistema SciPy, Dask comenzó en Anaconda Inc, donde ganó terreno y maduró hasta convertirse en una comunidad de código abierto más grande. A medida que la comunidad crecía y las empresas comenzaron a adoptar Dask, Anaconda comenzó a proporcionar servicios de consultoría, capacitación y soporte de código abierto para facilitar el uso empresarial. Anaconda, uno de los principales defensores del software de código abierto, también emplea a muchos mantenedores de Dask, para proporcionar una comprensión profunda del software a los clientes empresariales.

Coiled

Coiled fue fundada por mantenedores de Dask, como Matthew Rocklin, el líder del proyecto Dask y antiguo empleado de NVIDIA. Proporciona una solución administrada en torno a Dask para que sea fácil tanto en entornos empresariales como en cloud, así como la asistencia empresarial para ayudar a optimizar el análisis de Python dentro de las instituciones. Su producto de implementación administrada alojada públicamente proporciona una forma robusta pero intuitiva de usar Dask y RAPIDS en la actualidad.

Quansight

Quansightse dedica a ayudar a las empresas a crear valor a partir de sus datos, por lo que proporciona una variedad de servicios para impulsar el análisis de datos en todas las industrias. Al igual que Anaconda, Quansight proporciona servicios de consultoría y capacitación a empresas que utilizan Dask. Gracias a los ecosistemas PyData y NumFOCUS, Quansight también proporciona compatibilidad para empresas que necesitan mejoras o correcciones de errores en el software de código abierto.

Saturn Cloud

Saturn Cloud es una plataforma de ciencia de datos y aprendizaje de máquinas lo suficientemente flexible para cualquier equipo. Escala tu Python con Dask administrado, colabora en el cloud en los análisis y el entrenamiento de modelos y, luego, implementa tu código. Todos usan los mismos patrones, pero con escala en el cloud. La plataforma está disponible de forma gratuita y en niveles empresariales.

Por Qué Dask Es Esencial para los Equipos de Ciencia de Datos

La clave es la aceleración y la eficacia. Los desarrolladores que trabajan en algoritmos interactivos quieren una ejecución rápida para poder modificar las entradas y variables. Las laptops y desktops con memoria limitada pueden tener frustrantes limitaciones de potencia cuando se ejecutan grandes conjuntos de datos. Dask tiene funcionalidad lista para usar que hace que el procesamiento sea más eficiente incluso en una sola CPU. Cuando se aplica a un clúster, ejecutar una operación en varias CPU y GPU a menudo se puede hacer con un solo comando que reduce el tiempo de procesamiento en un 90%. Dask puede permitir que los conjuntos de datos de entrenamiento muy grandes que son típicos de machine learning se ejecuten en entornos que, de otro modo, no podrían admitirlos.

Con una estructura de poco código, un modelo de ejecución de bajo gasto general y una fácil integración en los workflows de Python, Pandas y Numpy, Dask se está convirtiendo rápidamente en parte del kit de herramientas para desarrolladores de Python.

Próximos Pasos