Articulo de referencia

Computación científica Owl

{{cite web|url=https://github.com/owlbarn/owl/releases|title=Releases – owlbarn/owl|via=[[GitHub]]|accessdate=2024-12-24}} "},"latest preview version":{"wt":""},"latest preview ...

Owl Scientific Computing es un sistema de software para computación científica y de ingeniería desarrollado en el Departamento de Ciencias de la Computación y Tecnología de la Universidad de Cambridge . [ 2 ] El Grupo de Investigación de Sistemas (SRG) del departamento reconoce a Owl como uno de los sistemas representativos desarrollados en el SRG durante la década de 2010. [ 3 ] El código fuente está licenciado bajo la Licencia MIT y se puede acceder a él desde el repositorio de GitHub. [ 4 ]

La biblioteca está diseñada y desarrollada principalmente en el lenguaje de programación funcional OCaml . Como lenguaje de programación funcional único, OCaml ofrece eficiencia en tiempo de ejecución, un sistema de módulos flexible, verificación de tipos estática, un recolector de basura inteligente y una potente inferencia de tipos . Owl hereda estas características directamente de OCaml. Con Owl, los usuarios pueden escribir aplicaciones numéricas concisas y seguras en un lenguaje funcional breve sin sacrificar el rendimiento. Acelera el ciclo de vida del desarrollo y reduce el costo desde el prototipo hasta la producción. El sistema se ha convertido en la herramienta de facto para tareas computacionalmente intensivas en OCaml. [ 5 ]

Historia

Owl se desarrolló cuando el Dr. Liang Wang trabajaba como investigador postdoctoral en los laboratorios de OCaml. [ 6 ] Owl surgió de un proyecto de investigación que estudiaba el diseño de máquinas paralelas síncronas para computación distribuida a gran escala en julio de 2016. En aquel entonces, las bibliotecas para computación numérica en el ecosistema de OCaml eran muy limitadas y las herramientas estaban fragmentadas. Para probar diversas aplicaciones analíticas, era necesario implementar muchas funciones numéricas, desde álgebra de muy bajo nivel y generadores de números aleatorios hasta funciones de alto nivel como diferenciación algorítmica y redes neuronales profundas. Estos fragmentos de código comenzaron a acumularse. Posteriormente, estas funciones se extrajeron y se integraron en una biblioteca independiente llamada Owl.

La arquitectura de Owl pasó por al menos una docena de iteraciones al principio, y algunos de los cambios arquitectónicos fueron bastante drásticos. Después de un año de desarrollo intensivo, Owl era capaz de realizar muchas tareas numéricas complejas (por ejemplo, clasificación de imágenes). El Dr. Liang Wang impartió un tutorial en la CUFP 2017 para demostrar la ciencia de datos en OCaml. [ 7 ] En 2018, el Prof. Richard Mortier dio una charla sobre Owl en el Instituto Alan Turing . [ 8 ] Para promover aún más OCaml y la programación funcional en la ciencia de datos, Owl proporciona abundante material de aprendizaje en forma de un manual detallado. [ 9 ]

Diseño y características

Owl ha implementado muchas funciones numéricas avanzadas sobre su implementación de matrices n-dimensionales. En comparación con otras bibliotecas numéricas, Owl es único en muchos aspectos; por ejemplo, la diferenciación algorítmica y la computación distribuida se han incluido como componentes integrales en el sistema central para maximizar la productividad de los desarrolladores. La siguiente figura ofrece una vista general de la arquitectura del sistema Owl. El subsistema de la izquierda es el sistema numérico de Owl. Los módulos que contiene este subsistema se dividen en tres categorías.

La arquitectura de la biblioteca numérica Owl.

El primer módulo, el módulo principal, contiene estructuras de datos básicas, como matrices N-dimensionales (Ndarray) en formatos densos y dispersos. El módulo Ndarray admite diversos tipos de números: float32, float64, complex32, complex64, int16, int32, etc. Además, el módulo principal proporciona interfaces de funciones externas para otras bibliotecas numéricas de bajo nivel, como CBLAS y LAPACK . Estas bibliotecas están totalmente integradas con el módulo de Álgebra Lineal.

La segunda categoría corresponde a los módulos de análisis clásicos. Esta sección incluye funciones matemáticas y estadísticas básicas, álgebra lineal , regresión, optimización, representación gráfica, etc. También se incluyen funciones matemáticas y estadísticas avanzadas, como pruebas de hipótesis estadísticas y el método de Monte Carlo de cadenas de Markov . Como funcionalidad principal, Owl ofrece los módulos de diferenciación algorítmica (o diferenciación automática) y de grafos de computación dinámica.

El nivel más alto de la arquitectura Owl incluye módulos para aplicaciones numéricas más avanzadas, como redes neuronales , procesamiento del lenguaje natural , procesamiento de datos, etc. El sistema Zoo se utiliza para la creación eficiente de scripts y el intercambio de código. Los módulos de la segunda categoría, especialmente la diferenciación algorítmica, hacen que el código en este nivel sea bastante conciso.

El subsistema de la derecha se denomina Subsistema de Actores y amplía la capacidad de Owl para la computación paralela y distribuida. La idea principal es transformar una aplicación de usuario del modo de ejecución secuencial al modo paralelo (utilizando diversos motores de cálculo) con un mínimo esfuerzo. El método consiste en combinar dos subsistemas con functores para generar la versión paralela del módulo definido en el subsistema numérico.

Además de lo mencionado en esta figura, Owl cuenta con otras características. Por ejemplo, los backends de JavaScript y unikernel , la integración con otros frameworks como TensorFlow y PyTorch , la utilización de GPU y otros frameworks aceleradores mediante gráficos simbólicos, etc.

Investigación

El proyecto Owl está orientado a la investigación y apoya la investigación en computación numérica en múltiples temas relacionados. Algunos de sus temas de investigación se enumeran a continuación.

  • Diseño de aprendizaje automático distribuido, paralelo y síncrono. Owl fue el primero en proponer el uso de muestreo para sincronizar nodos en algoritmos iterativos. El trabajo publicado en arXiv incluye una sólida demostración matemática. [ 10 ] Esta idea resultó ser avanzada y posteriormente se propuso en las principales conferencias de aprendizaje automático. [ 11 ]
  • Uno de los factores que contribuyen a la reducida base de código de Owl es que construye funciones analíticas avanzadas en torno a la diferenciación algorítmica . Esta idea también ha demostrado ser popular y se ha desarrollado hasta convertirse en el paradigma de la programación diferenciable . Actualmente se utiliza en paquetes numéricos populares como JuliaDiff. [ 12 ]
  • El uso del grafo computacional ofrece una optimización dimensional adicional para el cálculo en Owl. Además, el grafo computacional también conecta la aplicación Owl con aceleradores de hardware como GPU y TPU . Posteriormente, el grafo computacional se convierte en una representación intermedia de facto. Estándares como Open Neural Network Exchange y Neural Network Exchange Format ahora cuentan con un amplio soporte por parte de diversos marcos de aprendizaje profundo como TensorFlow y PyTorch .
  • La idea de composición y servicio a nivel de servicio se investigó en el subsistema Zoo de Owl. El prototipo demuestra la optimización de varias etapas en el desarrollo del código, incluyendo composición, prueba, distribución, validación y despliegue. Es muy similar a los conceptos posteriores de MLOps . Recientemente, este tema ha captado la atención en importantes conferencias de sistemas como OSDI. [ 13 ]

Como resultado de la investigación que sigue parte de estas líneas, Owl produce varias publicaciones. En 2018, un artículo titulado Data Analytics Service Composition and Deployment on Edge Devices fue aceptado en el ACM SIGCOMM 2018 Workshop on Big Data Analytics and Machine Learning for Data Communication Networks. [ 14 ] Dos charlas también fueron aceptadas en el OCaml Workshop de la International Conference on Functional Programming 2019, sobre los temas de resolución numérica de ecuaciones diferenciales ordinarias, [ 15 ] y ejecución de computación Owl en GPU. [ 16 ] Una pasantía en los OCaml Labs investiga el tema de la segmentación de imágenes y la optimización de memoria relacionada en Owl. [ 17 ] En 2022, el libro <<OCaml Scientific Computing>> fue publicado por Springer. [ 18 ] En 2023, el libro <<Architecture of Advanced Numerical Analysis Systems: Designing a Scientific Computing System using OCaml>> fue publicado por Apress. [ 19 ]

Véase también

Referencias

  1. "Versiones – owlbarn/owl" . Consultado el 24/12/2024 a través de GitHub .
  2. "Owl, Computación científica para OCaml" . Consultado el 11 de noviembre de 2020 .
  3. "Grupo de Investigación de Sistemas" . Consultado el 11 de noviembre de 2020 .
  4. Repositorio de Owlbarn en GitHub, https://github.com/owlbarn/owl . Consultado el 1 de noviembre de 2020.
  5. "OCamlverse: Aprendizaje automático, computación científica y ciencia de datos" . Consultado el 5 de noviembre de 2020 .
  6. "OCaml Labs" . Consultado el 1 de noviembre de 2020 .
  7. "Owl: Ciencia de datos en OCaml" . Tutoriales de CUFP. 2017. Consultado el 1 de noviembre de 2020 .
  8. "El diseño de software numérico funcional" . Instituto Alan Turing. 2018. Consultado el 5 de noviembre de 2020 .
  9. "OCaml Scientific Computing: Functional Programming Meets Data Science" . Owl Team. 2020. Consultado el 18 de noviembre de 2020 .
  10. Wang, Liang; Catterall, Ben; Mortier, Richard (2017). "Paralelo síncrono probabilístico". arXiv : 1709.07772 [ cs.DC ].
  11. "Aprendizaje distribuido sobre redes poco fiables" . Actas de la conferencia sobre investigación en aprendizaje automático. 2019. págs. 7202–7212 . Consultado el 18 de noviembre de 2020 . 
  12. "JuliaDiff" . Julia. 2019. Consultado el 18 de noviembre de 2020 .
  13. "Servir DNN como un reloj: Previsibilidad del rendimiento desde abajo hacia arriba" . Usenix. 2020. Recuperado el 18 de noviembre de 2020 .
  14. "Programa del taller BIG-DAMA 2018" . ACM. 2018. Consultado el 5 de noviembre de 2020 .
  15. "OwlDE: convirtiendo las ODE en ciudadanos de primera clase de Owl" . Taller de OCaml, ICFP 2019. 2019. Recuperado el 11 de noviembre de 2020 .
  16. "Ejecución de computación Owl en GPU y TPU" . Taller de OCaml, ICFP 2019. 2019. Consultado el 11 de noviembre de 2020 .
  17. «Página web personal, Pierre Vandenhove» . 2018 . Consultado el 5 de noviembre de 2020 .
  18. "OCaml Scientific Computing - Functional Programming in Data Science and Artificial Intelligence" . Springer. 2022. Consultado el 15 de febrero de 2022 .
  19. Wang, Liang; Zhao, Jianxin (2023). Arquitectura de sistemas avanzados de análisis numérico: diseño de un sistema de computación científica utilizando OCaml . Apress. doi : 10.1007/978-1-4842-8853-5 . ISBN 978-1-4842-8852-8. Consultado el 14 de diciembre de 2024 .