Scikit-Ollama para la integración de Scikit-LLM/Ollama – MachineLearningMastery.com

En este artículo, aprenderá cómo scikit-ollama une la interfaz scikit-learn con modelos de Ollama que se ejecutan localmente para realizar una clasificación de texto de disparo cero; no se requiere API en la nube.

Los temas que cubriremos incluyen:

Qué es scikit-ollama y cómo se relaciona con scikit-llm y el ecosistema scikit-learn. Cómo cargar un conjunto de datos de opiniones de reseñas de películas y crear una instancia de un clasificador de disparo cero respaldado por un modelo local de Llama 3. Cómo funciona el patrón de ajuste/predicción en el contexto de la clasificación basada en LLM de tiro cero y qué hace realmente bajo el capó.

No perdamos más tiempo.

Introducción

La integración de modelos de lenguaje grande (LLM) en los flujos de trabajo tradicionales de aprendizaje automático no solo es posible hoy en día, sino que también está transformando la forma en que trabajamos con estos modelos, tanto en términos de costo como de seguridad. Depender únicamente de API comerciales en la nube con cuellos de botella de cuotas y tráfico, así como preocupaciones de privacidad de datos, ya no es el único enfoque, y scikit-ollama tiene mucho que decir al respecto. Esta biblioteca, basada en gran medida en scikit-llm, cierra la brecha entre la sintaxis amigable de scikit-learn utilizada para entrenar y utilizar modelos clásicos de aprendizaje automático y el poder de los LLM, específicamente modelos gratuitos instalados localmente que se ejecutan en Ollama.

Este artículo explora cómo configurar esta integración para crear un clasificador de disparo cero muy práctico para la predicción de sentimientos en reseñas de películas, utilizando un modelo Llama 3 local que se ejecuta en su máquina.

Tutorial paso a paso

Primero, dado que scikit-ollama solo es compatible con Python 3.9 o superior, verifique la versión de Python actualmente instalada en su entorno de desarrollo local o virtual; El mío es un entorno virtual configurado dentro de Visual Studio Code:

Si tiene Python 3.8 o inferior, asegúrese de instalar o cambiar a una versión más reciente de Python antes de continuar. Luego instale scikit-ollama:

Una vez instalado, podemos comenzar a codificar.

Scikit-LLM proporciona su propio catálogo de conjuntos de datos en su módulo de conjuntos de datos. Usaremos uno de esos conjuntos de datos basados ​​en texto, específicamente uno para la clasificación de sentimientos de reseñas de películas. Este es el código necesario para cargar los datos y mostrar una reseña de ejemplo junto con su etiqueta de opinión asociada:

Producción:

Ahora, scikit-ollama en sí. Necesitará tener Ollama instalado localmente en su máquina. Siga las instrucciones de este artículo para hacerlo y asegúrese de instalar el modelo que desea utilizar para esta guía. Para extraer un modelo, ejecute el siguiente comando en su terminal:

El siguiente código importa la clase ZeroShotOllamaClassifier de scikit-ollama para crear una instancia de un clasificador de sentimiento compatible respaldado por un modelo local de Ollama: llama3:latest. Asegúrese de tener este modelo instalado en su máquina antes de continuar:

Una aclaración muy importante sobre lo que acabamos de hacer. llama3:latest es un LLM de propósito general, creado originalmente para hacer mucho más que clasificar texto: puedes chatear con él, generar ideas y más. Entonces, ¿por qué lo usamos para crear una instancia de un clasificador de tiro cero? Al hacerlo, scikit-ollama, junto con scikit-llm bajo el capó, reformula nuestra tarea de clasificación prevista en un mensaje de generación de texto que está sintácticamente restringido, de modo que el modelo local genere solo lo que se necesita, actuando como lo haría un modelo clásico de aprendizaje automático en términos de formato de salida, sin dejar de aplicar el poderoso razonamiento basado en el lenguaje para el que fue creado.

Este es el núcleo del valor de scikit-ollama y scikit-llm: unir el poder de los LLM con la simplicidad de la interfaz scikit-learn para tareas predictivas como la clasificación.

Es hora de aplicar el ritual tradicional de dos etapas del aprendizaje automático: ajustar y predecir. Si bien el ajuste de un modelo normalmente implica actualizar los pesos en un conjunto de datos etiquetado, en el contexto de la clasificación basada en LLM de tiro cero no hay una actualización de peso real. La llamada fit() se utiliza únicamente para registrar las etiquetas de clasificación candidatas, guiando el modelo para el aprendizaje en contexto:

Al llamar al método predict() y pasar un conjunto de revisiones de texto, la instancia local de Ollama procesa cada entrada como un mensaje y analiza la salida para garantizar que se asigne a una de las etiquetas de clasificación de disparo cero, todo bajo el capó.

El siguiente código genera predicciones en el conjunto de datos e imprime los primeros tres resultados. Tenga en cuenta que en la primera ejecución, se espera un breve retraso en la carga mientras se inicializa el modelo, acompañado de una barra de progreso:

Producción:

El modelo local genera solo lo que debe, actuando como lo haría un modelo clásico de aprendizaje automático en términos de formato de salida, al mismo tiempo que aplica el poderoso razonamiento interno basado en el lenguaje para el que fue creado.

Acaba de aprovechar un modelo local de Ollama para realizar una tarea de inferencia específica, clasificación de texto, completamente dentro de los límites de su propia máquina.

Concluyendo

Este artículo mostró cómo cambiar las API LLM basadas en la nube por modelos locales de Ollama para realizar tareas de inferencia sin tarifas de suscripción ni datos de texto confidenciales que salgan de su máquina. El ingrediente clave: la biblioteca scikit-ollama, que encapsula elegantemente esta integración local y la pone a disposición como un canal más de aprendizaje de scikit.