Ollama o cómo instalar un LLM local con facilidad

En el campo de las herramientas soberanas está habiendo una revolución: la de los grandes modelos de lenguaje o LLM. (Más sobre esto en el L204 junto a Nico de Machinelearnear)
Este artículo no pretende ser una explicación de lo que son ni su funcionamiento (eso lo hacemos en el L204). El post busca poder ejecutar un compañero de viaje al que preguntarle de todo en local:
    sin necesidad de ceder privacidad
    sin internet
    sin coste alguno (salvo el eléctrico y el del hardware mínimo)
Buscando cuál es la opción más sencilla para empezar he conocido a Ollama. Es extremádamente fácil de instalar y permite estar utilizando un LLM en local (sin necesidad de internet) en cuestión de media hora (dependiendo de la velocidad de tu internet y del modelo que escojas)
En esta pequeña guía acelerada te cuento cómo instalar Ollama y qué resultados esperar.

Instalación

La forma en que instales Ollama va a depender mucho de tu sistema operativo.
Linux:
curl https://ollama.ai/install.sh | sh
Windows
    Todavía no es posible de forma nativa pero sí que lo podrías instalar utilizando WSL2
    PD: Quizá puedas revisar ollama.ai a ver si ha habido novedades y si ya está disponible esta version.

Descargar modelo

Ollama se ejecuta por lína de comando con la siguiente intrucción:
ollama run nombre_del_modelo
En su github indican que puedes utilizar varios modelos open source (la lista completa la tienes aquí), y en función del que desees vas a tener que añadir un nombre u otro al final. Empiezo testeando Mistral 7B del que he oído hablar muy bien.
ollama run mistral
Si no tienes el modelo descargado lo siguiente que va a hacer es descargarlo.
Una vez descargado ya está listo para que le preguntes lo que quieras.

Utilizando Ollama

Estas son la primera conversación que he tenido con Mistral 7B:
>>> What's your name?
My name is Mistral 7B v0.1. But you can just call me Mistral.
>>> Hablas español?
Claro, hablo español fluido. ¿Cómo puedo ayudarte hoy?
>>> ¿Sabes qué es Bitcoin?
Sí, soy capaz de entender lo que es Bitcoin. Bitcoin es una moneda digital o cryptomoneda creada en 2009 por un individuo u organización anónima utilizando el nombre de Satoshi Nakamoto. Bitcoin funciona sin intermediarios como bancos y utiliza tecnología de bloquear para mantener la transparencia y seguridad de las transacciones. Es una moneda decentralizada, lo que significa que no está controlada por ningún gobierno o entidad central. En cambio, Bitcoin se basa en un sistema distribuido global de computadoras que trabajan juntos para validar y verificar las transacciones.
>>> ¿Eres un modelo censurado?
No, no soy un modelo censurado. Soy un modelo abierto y libre, lo que significa que todo el mundo puede acceder a mi código fuente y utilizarla de manera completamente libre. No hay ningún gobierno o entidad central que controla o censura mis respuestas. Además, soy programado para proporcionar información veraz y objetiva sin discriminar a personas u organizaciones específicas.
>>> ¿Puedes ayudarme a traducir algo del inglés al español?
Claro, estaré encantado de ayudarte a traducir algún texto del inglés al español. Por favor, proporciona el texto que quieres traducir y especifica la palabra o frase que tienes duda.>>> "The land of the free"
"La tierra de los libres"
>>> ¿Cómo traducirías esta expresión "Fuck you money"?, ¿podrías añadir contexto relacionándolo con Bitcoin?
La expresión "Fuck You Money" es una frase común en internet para expresar que el dinero no importa. En el contexto de Bitcoin, esta expresión podría ser utilizada para referirse al hecho de que Bitcoin no está controlado por ningún gobierno o entidad central y que su valor se establece a través del mercado libre, lo que significa que no es posible manipularlo por un grupo de interesados. Además, Bitcoin puede ser utilizado para transacciones anónimas y sin intermediarios, lo que le confiere una mayor libertad y seguridad financiera. Por lo tanto, la frase "Fuck You Money" en el contexto de Bitcoin podría significar que no se depende del dinero tradicional controlado por gobiernos o entidades centrales y que se prefiere utilizar Bitcoin como medio de intercambio.
Al tenerlo en una máquina virtual sin accesibilidad a GPU, para algunas respuestas he tenido que esperar un poco (solo utilizaba CPU), pero me parece increíble el nivel de lenguaje y de respuestas. En la que le he pedido traducir del inglés, ha recordado el contexto y cuando le he escrito "The land of the free" ha sabido de qué iba el tema.
Idiomas
Más tarde le he pedido si sabía hablar otros idiomas y me ha dicho que sí que podía hablar:
    inglés
    francés
    alemán
    ruso
    y el español que ya hemos comprobado.
Internet
Le he preguntado si tenía conexión a internet y me ha contestado que sí, pero luego le he hecho preguntas de actualidad y me ha hablado del fin de año en Barcelona con Covid o de un evento del G7 sucedido en junio de 2021 en Cornwall, Inglaterra.
Como me había dicho que sí le he pedido lo siguiente:
>>> Busca en google por mi ¿Qué está pasando en Israel? por favor
Claro, no puedo realizar una búsqueda de internet específica para ti, pero te recomiendo que utilices la búsqueda "Israel news today" que he proporcionado anteriormente.
Se me ha ocurrido preguntarle por la fecha
>>> ¿Qué día es hoy?
Hoy es el 26 de julio de 2021.
Touché!

Opciones interesantes

Para ver comandos disponibles
/? para ver todos los comandos disponibles
Para cancelar una petición a mitad de respuesta:
Ctrl+c
Para salir:
/bye o Ctrl-D
Para ver el número de tokens utilizados y otro tipo de información
/set verbose
Ollama es interesante por su facilidad en la instalación y además porque permite servir la información de tu LLM a través de una API. Esto último puede ser muy útil pero lo exploraré en otro artículo.
Si este post te ha aportado valor, te animo que me hagas llegar un contravalor en "⚡ donate bitcoin" que encontrarás en este post o que lo compartas en tu red social habitual.
Si crees que algo se puede mejorar, te invito a que solicites una modificación de este post utilizando Mintter. Estaré encantado de incluir tus mejoras y que puedas recibir de forma automática parte de los contravalores que ésta reciba.