El uso de los modelos de IA open source en el desarrollo
Miguel Lopez
Posted on November 6, 2024
Durante el ultimo año han aparecido un gran numero de herramientas con inteligencia artificial para hacer mas sencilla la vida de los usuarios, ya sea generación de imágenes o chatbots, incluso escalando a herramientas que ejecutan procesos gigantescos y profesionales.
He estado investigando, aprendiendo y probando muchas de estas herramientas desde chatgpt, gemini hasta dall-e o midjourney, todas funcionan muy bien pero cuando yo quiero escalar mis aplicaciones con estas herramientas me encuentro con que no tienen una alternativa gratuita u open source.
Esto me ha hecho llevar mi investigación a un paso mas allá y me he encontrado con stable diffusion ui (Generación de imágenes, https://github.com/AUTOMATIC1111/stable-diffusion-webui) y con *ollama *(Chatbot, https://ollama.com/), ambas son herramientas open source que te permiten ejecutar un servicio como API para consumirlo desde cualquiera de nuestras aplicaciones, con esto he llegado un paso mas allá con alternativas open source, pero para que esto funcione debo mantener estas herramientas ejecutándose para ser consumidas por nuestras aplicaciones.
Para entender como llevar esto a nuestras aplicaciones es importante entender como funcionan estas herramientas, y básicamente lo que hacen es utilizar archivos con la extensión "safetensors" que son LLM o modelos de lenguaje de gran tamaño, siendo estos modelos entrenados para realizar diferentes funciones según las necesidades de quien lo entrene (Ejemplo: Generación de imágenes, traducción, desarrollo de código, chatbot, entre otros).
Al entender un poco los modelos LLM y los archivos "safetensors" nos llega la siguiente pregunta como usar estos archivos en mis aplicaciones, y aquí es donde entra HugginFace, una web/base de datos de modelos de inteligencia artificial open source, y han creado su librería propia para python con 2 componentes extremadamente útiles para lo que queremos "Transformers" y "Diffusers".
*Transformers *(https://huggingface.co/docs/transformers/index) es el componente que nos permite consumir cualquier modelo especializado en texto, ejemplo convertir audio a texto o viceversa, modelos de chatbox como llama de Meta, entre otros.
import transformers
import torch
model_id = "meta-llama/Llama-3.1-8B"
pipeline = transformers.pipeline(
"text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto"
)
pipeline("Hey how are you doing today?")
Diffusers (https://huggingface.co/docs/diffusers/index) es el componente que nos permite consumir cualquier modelo especializado en generación de imágenes, ejemplo stable diffusion.
from diffusers import AutoPipelineForText2Image
import torch
pipe = AutoPipelineForText2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16")
pipe.to("cuda")
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
image = pipe(prompt=prompt, num_inference_steps=1, guidance_scale=0.0).images[0]
A este proceso se le conoce como Inferencia de modelos LLM, y a partir de aquí basado en esta información puedes comenzar a aplicar inteligencia artificial en tus diferentes aplicaciones con Python.
Cabe destacar que también he intentado usar la inferencia de modelos con otro lenguaje como nodejs y la verdad es que no funciona tan bien como con python, pero es importante mencionar que se necesita un hardware potente para la inferencia de modelos LLM por lo que lo que puedes ahorrar el uso de las API de ChatGPT o Gemini lo puedes gastar en comprar un hardware adecuado.
Hasta aquí llega este mi primer articulo, espero que mi camino para el uso de modelos LLM en el desarrollo de software te ayude a saltar pasos en este camino.
Posted on November 6, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
September 23, 2024
August 27, 2024