El código abierto es la columna vertebral del Machine Learning. Van de la mano. Los rápidos avances en este campo no hubieran sido posibles sin la contribución de la fraternidad de código abierto ya que gran parte de las herramientas más utilizadas en la comunidad de Machine Learning son de código abierto.
Cada año se agregan más y más bibliotecas a este ecosistema. En este artículo, presento un recorrido rápido por algunas de las bibliotecas que encontré recientemente y que podrían ser un gran complemento para tu pila de Machine Learning.
Tabla de contenidos
1️⃣. HummingBird
Humminbird es una biblioteca para compilar modelos de Machine Learning tradicionales entrenados en cálculos de tensores. Esto significa que puedes aprovechar la aceleración de hardware como GPU y TPU, incluso para los modelos tradicionales de Machine Learning. Esto es beneficioso en varios niveles.
- El usuario puede beneficiarse de las optimizaciones actuales y futuras implementadas en marcos de redes neuronales;
- El usuario puede beneficiarse de la aceleración de hardware nativo;
- El usuario puede beneficiarse de tener una plataforma única para admitir modelos de redes tradicionales y neuronales;
- El usuario no tiene que rediseñar sus modelos.
Además, Hummingbird también proporciona una API de «inferencia» uniforme y conveniente siguiendo la API de Sklearn. Esto permite intercambiar modelos de Sklearn con modelos generados por Hummingbird sin tener que cambiar el código de inferencia.
🛠 Github
- https://github.com/microsoft/hummingbird
🔬 Papers
- Un compilador de tensor para el servicio de predicción de Machine Learning unificado.
- Compilación de canalizaciones de ML clásicas en cálculos de tensor para un servicio de predicción único para todos.
📋 Blog
💻 Demo
La sintaxis de Hummingbird es muy intuitiva y mínima. Para ejecutar tu modelo ML tradicional en marcos DNN, solo necesitas import hummingbird.ml y agregar convert(model, ‘dnn_framework’) a tu código. A continuación, se muestra un ejemplo que utiliza un modelo de bosque aleatorio de scikit-learn y PyTorch como marco de destino.
2️⃣. Top2Vec
Los documentos de texto contienen mucha información. Examinarlos manualmente es difícil. El modelado de temas es una técnica ampliamente utilizada en la industria para descubrir temas en una gran colección de documentos de forma automática. Algunos de los métodos tradicionales y más utilizados son la asignación de Dirichlet latente (LDA) y el análisis semántico latente probabilístico (PLSA). Sin embargo, estos métodos adolecen de inconvenientes como no considerar la semántica o el orden de las palabras. Top2vec es un algoritmo que aprovecha la incrustación semántica conjunta de documentos y palabras para encontrar vectores de temas. Esto es lo que tienen que decir los autores:
Este modelo no requiere listas de palabras vacías, derivación o lematización, y encuentra automáticamente el número de temas. Los vectores de tema resultantes se incrustan conjuntamente con los vectores de documento y palabra y la distancia entre ellos representa la similitud semántica. Nuestros experimentos demuestran que top2vec encuentra temas que son significativamente más informativos y representativos del corpus entrenado que los modelos generativos probabilísticos. Incluso, los codificadores de oraciones universales pre-entrenados y el transformador de oraciones BERT están disponibles en codificación.
Una vez que se entrena un modelo Top2Vec, podemos hacer lo siguiente:
🛠 Github
🔬 Papers
📜 Documentation
https://top2vec.readthedocs.io/en/latest/index.html
💻 Demo
Aquí hay una demostración del entrenamiento de un modelo Top2Vec en el conjunto de datos de 20newsgroups. El ejemplo se ha tomado de su repositorio oficial de Github.
3️⃣. BERTopic
BERTopic es otra técnica de modelado de temas que aprovecha las incrustaciones de BERT y un TF-IDF basado en clases para crear grupos densos que permiten temas fácilmente interpretables mientras se mantienen palabras importantes en las descripciones de los temas. También admite visualizaciones similares a LDAvis. Aquí hay un resumen rápido de las capacidades de BERTopic.
🛠 Github
https://github.com/MaartenGr/BERTopic
🔬 Documentación
https://maartengr.github.io/BERTopic/
📋 Blog
💻 Demo
A visualization of the topics generated after training aBERTopic
model on 20newsgroups dataset
Una visualización de los temas generados después de entrenar el modelo BERTopic
en un conjunto de datos de 20 grupos de noticias.
4️⃣. Captum
Captum es una biblioteca de interpretación y comprensión de modelos para PyTorch. Captum significa comprensión en latín y contiene implementaciones de propósito general de gradientes integrados, mapas de prominencia, smoothgrad, vargrad y otros para modelos PyTorch. Además, tiene una integración rápida para modelos creados con bibliotecas específicas de dominio como torchvision, torch text y otros. Captum también proporciona una interfaz web llamada Insights para facilitar la visualización y el acceso a varios de nuestros algoritmos de interpretación.
¡Captum se encuentra actualmente en fase beta y en desarrollo activo!
🛠 Github
https://github.com/pytorch/captum
🔬 Documentación
🎤 Diapositivas
- Las diapositivas de NeurIPS 2019 se pueden encontrar aquí.
- Las diapositivas del tutorial de KDD 2020 se pueden encontrar aquí.
💻 Demo
Así es como podemos analizar un modelo de muestra en CIFAR10 a través de Captum Insights:
5️⃣. Annoy
Molestar es sinónimo de vecinos más cercanos aproximados. Está construido en C ++ pero viene con enlaces en Python, Java, Scala, R y Ruby. Molestar se usa para hacer (aproximadas) consultas de vecinos más cercanos en espacios de alta dimensión. Aunque muchas otras bibliotecas realizan la misma operación, molestar viene con algunos complementos geniales. Crea grandes estructuras de datos basadas en archivos de solo lectura que se mmapean en la memoria para que muchos procesos puedan compartir los mismos datos. Annoy, creado por Erik Bernhardsson, se usa en Spotify para recomendaciones musicales, donde se usa para buscar usuarios / elementos similares.
Tenemos muchos millones de pistas en un espacio de alta dimensión, por lo que el uso de la memoria es una preocupación principal – Spotify
🛠 Github
https://github.com/spotify/annoy
🎤 Diapositivas
- Presentación de New York Machine Learning meetup sobre Annoy
💻 Demo
Así es cómo podemos usar Molestar para encontrar los 100 vecinos más cercanos.
Resumen
Así que estas fueron las bibliotecas que encontré interesantes, útiles y que valía la pena compartir. Estoy seguro de que te gustaría explorarlas y ver cómo podrías utilizarlos en tu área de trabajo. Aunque ya tenemos innumerables bibliotecas con las que jugar, explorar otras nuevas siempre es divertido y así te aseguras que estás bien informado.