Integração Scikit-Ollama para Scikit-LLM/Ollama – MachineLearningMastery.com


Neste artigo, você aprenderá como o scikit-ollama conecta a interface do scikit-learn com modelos Ollama executados localmente para realizar classificação de texto zero-shot; nenhuma API de nuvem é necessária.

Os tópicos que cobriremos incluem:

  • O que é scikit-ollama e como ele se relaciona com o scikit-llm e o ecossistema scikit-learn.
  • Como carregar um conjunto de dados de sentimento de crítica de filme e instanciar um classificador zero-shot apoiado por um modelo Llama 3 native.
  • Como o padrão de ajuste/previsão funciona no contexto da classificação orientada por LLM de disparo zero e o que ele realmente faz nos bastidores.

Não vamos perder mais tempo.

Integração Scikit-Ollama para Scikit-LLM/Ollama – MachineLearningMastery.com

Introdução

Modelo de linguagem grande A integração (LLM) em fluxos de trabalho tradicionais de aprendizado de máquina não só é possível hoje em dia, mas também transforma a forma como trabalhamos com esses modelos, tanto em termos de custo quanto de segurança. Depender apenas de APIs de nuvem comercial com gargalos de cotas e tráfego — bem como preocupações com privacidade de dados — não é mais a única abordagem a ser seguida, e scikit-ollama tem muito a dizer sobre isso. Esta biblioteca, amplamente baseada no scikit-llm, preenche a lacuna entre a sintaxe amigável do scikit-learn usada para treinar e usar modelos clássicos de aprendizado de máquina e o poder dos LLMs – especificamente modelos gratuitos instalados localmente em execução no Ollama.

Este artigo explora como configurar essa integração para construir um classificador zero-shot altamente prático para previsão de sentimentos em resenhas de filmes, usando um modelo native do Llama 3 em execução em sua máquina.

Passo a passo

Primeiro, como o scikit-ollama só é compatível com Python 3.9 ou superior, verifique a versão do Python atualmente instalada em seu ambiente de desenvolvimento native ou digital; o meu é um ambiente digital configurado dentro do Visible Studio Code:

Se você tiver o Python 3.8 ou inferior, certifique-se de instalar ou mudar para uma versão mais recente do Python antes de continuar. Em seguida, instale o scikit-ollama:

Depois de instalado, podemos começar a codificar.

Scikit-LLM fornece seu próprio catálogo de conjuntos de dados em seu datasets módulo. Usaremos um desses conjuntos de dados baseados em texto, especificamente um para classificação de sentimentos de resenhas de filmes. Este é o código necessário para carregar os dados e exibir um exemplo de revisão junto com o rótulo de sentimento associado:

Saída:

Agora, para o próprio scikit-ollama. Você precisará ter o Ollama instalado localmente em sua máquina. Siga as instruções deste artigo para fazer isso e certifique-se de instalar o modelo que deseja usar neste guia. Para extrair um modelo, execute o seguinte comando em seu terminal:

O código abaixo importa o scikit-ollama ZeroShotOllamaClassifier class para instanciar um classificador de sentimento compatível apoiado por um modelo native de Ollama – llama3:newest. Certifique-se de ter este modelo instalado em sua máquina antes de continuar:

UM esclarecimento muito importante sobre o que acabamos de fazer. llama3:newest é um LLM de uso geral, originalmente desenvolvido para fazer muito mais do que classificar texto: você pode conversar com ele, debater ideias e muito mais. Então, por que o estamos usando para instanciar um classificador zero-shot? Ao fazer isso, o scikit-ollama — junto com o scikit-llm nos bastidores — reformula nossa tarefa de classificação pretendida em um immediate de geração de texto que é sintaticamente restritode modo que o modelo native produza apenas o que é necessário, agindo como um modelo clássico de aprendizado de máquina faria em termos de formato de saída, ao mesmo tempo em que aplica o poderoso raciocínio baseado em linguagem para o qual foi construído.

Este é o núcleo do valor do scikit-ollama e do scikit-llm: unir o poder dos LLMs com a simplicidade da interface do scikit-learn para tarefas preditivas como classificação.

É hora de aplicar o tradicional ritual de dois estágios do aprendizado de máquina: ajustar e prever. Embora o ajuste de um modelo normalmente envolva a atualização de pesos em um conjunto de dados rotulado, no contexto da classificação orientada por LLM de tiro zero não há atualização de peso actual. O match() A chamada é utilizada apenas para registrar os rótulos de classificação dos candidatos, orientando o modelo para aprendizagem in-contexto:

Ao ligar para o predict() e passando por um conjunto de revisões de texto, a instância native do Ollama processa cada entrada como um immediate e analisa a saída para garantir que ela seja mapeada para um dos rótulos de classificação zero-shot, tudo nos bastidores.

O código abaixo gera previsões no conjunto de dados e imprime os três primeiros resultados. Observe que na primeira execução, é esperado um pequeno atraso no carregamento enquanto o modelo é inicializado, acompanhado por uma barra de progresso:

Saída:

O modelo native produz apenas o que se destina, agindo como um modelo clássico de aprendizado de máquina faria em termos de formato de saída, ao mesmo tempo em que aplica o poderoso raciocínio interno baseado na linguagem para o qual foi construído.

Você acabou de aproveitar um modelo native do Ollama para realizar uma tarefa de inferência específica, classificação de texto, inteiramente dentro dos limites de sua própria máquina.

Concluindo

Este artigo mostrou como trocar APIs LLM baseadas em nuvem por modelos Ollama locais para executar tarefas de inferência sem taxas de assinatura ou dados de texto confidenciais saindo de sua máquina. O ingrediente principal: a biblioteca scikit-ollama, que encapsula elegantemente essa integração native e a disponibiliza como apenas mais um pipeline do scikit-learn.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *