stringtranslate.com

Computación científica del búho

Owl Scientific Computing es un sistema de software para informática científica y de ingeniería desarrollado en el Departamento de Informática 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 SRG en la década de 2010. [3] El código fuente tiene 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, sistema de módulos flexible, verificación de tipos estáticos, recolector de basura inteligente y potente inferencia de tipos . Owl hereda estas características directamente de OCaml. Con Owl, los usuarios pueden escribir aplicaciones numéricas concisas con seguridad de tipos en un lenguaje funcional conciso sin sacrificar el rendimiento. Acelera el ciclo de vida del desarrollo y reduce el costo desde el prototipo hasta el uso en producción. El sistema sirve como herramienta de facto para tareas informáticas intensivas en OCaml. [5]

Historia

Owl se desarrolló cuando el Dr. Liang Wang trabajaba como postdoctorado en los laboratorios OCaml. [6] Owl se originó a partir de un proyecto de investigación que estudió 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 OCaml eran muy limitadas y las herramientas estaban fragmentadas en ese momento. Para probar varias aplicaciones analíticas, se tuvieron que implementar muchas funciones numéricas, desde álgebra de muy bajo nivel y generadores de números aleatorios hasta cosas de alto nivel como diferenciación algorítmica y redes neuronales profundas. Estos fragmentos de código comenzaron a acumularse. Posteriormente, estas funciones se eliminaron y se incluyeron en una biblioteca independiente llamada Owl.

La arquitectura de Owl llevó a cabo al menos una docena de iteraciones al principio, y algunos de los cambios arquitectónicos son bastante drásticos. Después de un año de desarrollo intensivo, Owl fue capaz de realizar muchas tareas numéricas complicadas (por ejemplo, clasificación de imágenes). El Dr. Liang Wang realizó un tutorial en 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 abundantes materiales de aprendizaje en forma de un manual detallado. [9]

Diseño y características

Owl ha implementado muchas funciones numéricas avanzadas además de su implementación de matrices de n dimensiones. En comparación con otras bibliotecas numéricas, Owl es única en muchas perspectivas; 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 panorámica de la arquitectura del sistema de Owl. El subsistema de la izquierda es el sistema numérico de Owl. Los módulos contenidos en este subsistema se dividen en tres categorías.

La arquitectura de la biblioteca numérica Owl.

El primero son los módulos centrales que contienen estructuras de datos básicas, es decir, una matriz N-dimensional (Ndarray) tanto en forma densa como dispersa. El módulo Ndarray admite varios 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 completamente interconectadas con el módulo de Álgebra lineal.

La segunda categoría son los módulos de análisis clásicos. Esta parte contiene funciones matemáticas y estadísticas básicas, álgebra lineal , regresión, optimización, trazado, etc. También se incluyen funciones matemáticas y estadísticas avanzadas, como pruebas de hipótesis estadísticas y cadena de Markov Monte Carlo . Como funcionalidad principal, Owl proporciona diferenciación algorítmica (o diferenciación automática) y módulos de gráficos de cálculo dinámico.

El nivel más alto en la arquitectura Owl incluye módulos de aplicaciones numéricas más avanzadas, como redes neuronales , procesamiento de lenguaje natural , procesamiento de datos, etc. El sistema Zoo se utiliza para secuencias de comandos y uso compartido de códigos eficientes. 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 llama Subsistema Actor y extiende la capacidad de Owl a la computación distribuida y en paralelo. La idea central es transformar una aplicación de usuario del modo de ejecución secuencial al modo paralelo (utilizando varios motores de cálculo) con un mínimo esfuerzo. El método consiste en componer dos subsistemas junto 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, hay varias otras características en Owl. Por ejemplo, los backends de JavaScript y unikernel , la integración con otros marcos como TensorFlow y PyTorch , la utilización de GPU y otros marcos aceleradores a través de gráficos simbólicos, etc.

Investigación

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

Como resultado de investigaciones que siguen parte de estas direcciones, Owl produce varias publicaciones. En 2018, se aceptó un artículo titulado Composición e implementación de servicios de análisis de datos en dispositivos perimetrales en el Taller ACM SIGCOMM 2018 sobre análisis de big data y aprendizaje automático para redes de comunicación de datos. [14] También se aceptan dos charlas en el Taller OCaml de la Conferencia Internacional sobre Programación Funcional 2019, sobre los temas de resolución de ecuaciones diferenciales ordinarias numéricas, [15] y ejecución de cálculo Owl en GPU. [16] Una pasantía en OCaml Labs investiga el tema de la segmentación de imágenes y la optimización de la memoria relacionada en Owl. [17] En 2022, Springer publicó el libro <<OCaml Scientific Computing>>. [18]

Ver también

Referencias

  1. ^ "Lanzamientos: owlbarn/owl" . Consultado el 11 de noviembre de 2020 - a través de GitHub .
  2. ^ "Búho, 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 Owlbarn GitHub, https://github.com/owlbarn/owl. Consultado el 1 de noviembre de 2020.
  5. ^ "OCamlverse: aprendizaje automático, informática científica y ciencia de datos" . Consultado el 5 de noviembre de 2020 .
  6. ^ "Laboratorios OCaml" . Consultado el 1 de noviembre de 2020 .
  7. ^ "Búho: ciencia de datos en OCaml". Tutoriales 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. ^ "Computación científica OCaml: la programación funcional se une a la ciencia de datos". Equipo búho. 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 a través de redes no confiables". Actas de investigación sobre aprendizaje automático. 2019 . Consultado el 18 de noviembre de 2020 .
  12. ^ "JuliaDiff". Julia. 2019 . Consultado el 18 de noviembre de 2020 .
  13. ^ "Servicio de DNN como un reloj: previsibilidad del rendimiento desde abajo hacia arriba". Usenix. 2020 . Consultado el 18 de noviembre de 2020 .
  14. ^ "Programa Taller BIG-DAMA 2018". ACM. 2018 . Consultado el 5 de noviembre de 2020 .
  15. ^ "OwlDE: hacer que las ODE sean ciudadanos Owl de primera clase". Taller OCaml, ICFP 2019. 2019 . Consultado el 11 de noviembre de 2020 .
  16. ^ "Ejecución de Owl Computation en GPU y TPU". Taller 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 - Programación funcional en ciencia de datos e inteligencia artificial". Saltador. 2022 . Consultado el 15 de febrero de 2022 .