Si estás interesado en crear tu propio clon de ChatGPT pero prefieres alternativas gratuitas y de código abierto, has llegado al lugar indicado. En este artículo, exploraremos 12 alternativas a ChatGPT que puedes utilizar para crear tu propio modelo de chatbot sin tener que gastar dinero.
Las ventajas de las alternativas gratuitas y de código abierto a ChatGPT
Antes de sumergirnos en alternativas específicas, es importante comprender los beneficios de utilizar modelos de lenguaje de código abierto en lugar de ChatGPT.
- Privacidad de los datos. Muchas empresas desean mantener el control sobre sus datos y no quieren conceder acceso a terceros.
- Personalización. Las alternativas de código abierto permiten a los desarrolladores entrenar modelos de lenguaje personalizados utilizando sus propios datos y aplicar filtros sobre temas específicos si es necesario.
- Asequibilidad. Los modelos GPT de código abierto te permiten entrenar modelos de lenguaje sofisticados sin preocuparte por hardware costoso.
- Democratización de la IA. El uso de modelos de código abierto allana el camino para investigaciones adicionales que pueden ser utilizadas para resolver problemas del mundo real.
Ahora que hemos aclarado las ventajas, pasemos a examinar las alternativas gratuitas y de código abierto a ChatGPT.
1. Llama
Introducción a Llama
Llama significa Large Language Model Meta AI. Es un modelo que incluye una gama de tamaños, desde 7 mil millones hasta 65 mil millones de parámetros. Los investigadores de Meta AI se centraron en mejorar el rendimiento del modelo aumentando el volumen de datos de entrenamiento, en lugar del número de parámetros. Afirmaron que el modelo de 13 mil millones de parámetros superó al modelo GPT-3 de 175 mil millones de parámetros. Llama utiliza la arquitectura transformer y fue entrenado con 1,4 billones de tokens extraídos de scraping web de Wikipedia, GitHub, Stack Exchange, libros del Proyecto Gutenberg y artículos científicos en ArXiv.
Código Python para Llama
# Instala el paquete
pip install llama-cpp-python
from llama_cpp import Llama
llm = Llama(model_path="./models/7B/ggml-model.bin")
output = llm("Q: Enumera los planetas del sistema solar? A: ", max_tokens=128, stop=["Q:", "\n"], echo=True)
print(output)
2. Llama 2
Novedades en Llama 2
Hay algunas diferencias clave entre Llama 2 y Llama:
Datos de entrenamiento: Llama 2 se entrenó con un 40% más de tokens que Llama, para un total de 2 billones de tokens. Esto le da una base de conocimientos más amplia y le permite generar respuestas más precisas.Tamaño del modelo: Llama 2 está disponible en tres tamaños: 7 mil millones, 13 mil millones y 70 mil millones de parámetros. Mientras que el tamaño máximo de Llama es de 65 mil millones de parámetros.Optimización para chat: Llama 2-Chat es una versión especializada de Llama 2 optimizada para conversaciones bidireccionales. Fue entrenado con un conjunto de datos de conversaciones humanas, lo que le permite generar respuestas más naturales y atractivas.Seguridad y mitigación de sesgos: Llama 2 se entrenó con un enfoque en la seguridad y la mitigación de sesgos. Esto significa que es menos probable que genere contenido tóxico o dañino.Código abierto: Llama 2 es de código abierto, lo que significa que cualquiera puede utilizarlo para fines de investigación o comerciales, a diferencia de Llama que no puede utilizarse con fines comerciales.
Código Python para Llama 2
Para ejecutar el modelo Llama2 de 7 mil millones de parámetros, aquí tienes el código de referencia:
%cd /content !apt-get -y install -qq aria2 !git clone -b v1.3 https://github.com/camenduru/text-generation-webui %cd /content/text-generation-webui !pip install -r requirements.txt !pip install -U gradio==3.28.3 !mkdir /content/text-generation-webui/repositories %cd /content/text-generation-webui/repositories !git clone -b v1.2 https://github.com/camenduru/GPTQ-for-LLaMa.git %cd GPTQ-for-LLaMa !python setup_cuda.py install !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/raw/main/config.json -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/raw/main/generation_config.json -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o generation_config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/raw/main/special_tokens_map.json -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o special_tokens_map.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/resolve/main/tokenizer.model -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o tokenizer.model !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/raw/main/tokenizer_config.json -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o tokenizer_config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-7b-Chat-GPTQ/resolve/main/gptq_model-4bit-128g.safetensors -d /content/text-generation-webui/models/Llama-2-7b-Chat-GPTQ -o gptq_model-4bit-128g.safetensors %cd /content/text-generation-webui !python server.py --share --chat --wbits 4 --groupsize 128 --model_type llama
Para el modelo Llama2 de 13 mil millones de parámetros, puedes consultar el siguiente código:
%cd /content !apt-get -y install -qq aria2 !git clone -b v1.8 https://github.com/camenduru/text-generation-webui %cd /content/text-generation-webui !pip install -r requirements.txt !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/resolve/main/model-00001-of-00003.safetensors -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o model-00001-of-00003.safetensors !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/resolve/main/model-00002-of-00003.safetensors -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o model-00002-of-00003.safetensors !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/resolve/main/model-00003-of-00003.safetensors -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o model-00003-of-00003.safetensors !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/raw/main/model.safetensors.index.json -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o model.safetensors.index.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/raw/main/special_tokens_map.json -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o special_tokens_map.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/resolve/main/tokenizer.model -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o tokenizer.model !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/raw/main/tokenizer_config.json -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o tokenizer_config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/raw/main/config.json -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/4bit/Llama-2-13b-chat-hf/raw/main/generation_config.json -d /content/text-generation-webui/models/Llama-2-13b-chat-hf -o generation_config.json %cd /content/text-generation-webui !python server.py --share --chat --load-in-8bit --model /content/text-generation-webui/models/Llama-2-13b-chat-hf
3. Alpaca
Introducción a Alpaca
Un equipo de investigadores de la Universidad de Stanford desarrolló un modelo de lenguaje de código abierto llamado Alpaca. Se basa en el gran modelo de lenguaje de Meta llamado Llama. El equipo utilizó la API GPT de OpenAI (text-davinci-003) para mejorar el modelo Llama de 7 mil millones de parámetros. El objetivo del equipo es hacer que la IA esté disponible gratuitamente para permitir que los académicos realicen más investigaciones sin tener que preocuparse por hardware costoso para ejecutar estos algoritmos intensivos en memoria. Si bien estos modelos de código abierto no están disponibles para uso comercial, las pequeñas empresas aún pueden utilizarlos para crear sus propios chatbots.
Cómo funciona Alpaca
El equipo de Stanford comenzó su investigación con el modelo de lenguaje más pequeño de Llama, que es el modelo Llama de 7 mil millones de parámetros, y lo preentrenó con 1 billón de tokens. Comenzaron con 175 pares de instrucciones-respuesta escritos por humanos del conjunto semilla de autoaprendizaje. Luego utilizaron la API de ChatGPT para pedirle a ChatGPT que generara instrucciones adicionales utilizando el conjunto semilla. De esta manera, obtuvieron alrededor de 52.000 conversaciones de ejemplo, que utilizaron para refinar aún más el modelo Llama utilizando el marco de entrenamiento de Hugging Face.
Llama está disponible en varios tamaños: 7B, 13B, 30B y 65B de parámetros. Alpaca también se ha ampliado a modelos de 13B, 30B y 65B.
Rendimiento de Alpaca
El modelo Alpaca se probó frente a ChatGPT en tareas como la redacción de correos electrónicos, redes sociales y herramientas de productividad, y Alpaca ganó 90 veces mientras que ChatGPT ganó 89 veces. El modelo puede usarse en el mundo real para diversos propósitos. Será de gran ayuda para los investigadores en el campo de la IA ética y la ciberseguridad, como en la detección de estafas y phishing.
Limitaciones de Alpaca
Al igual que la versión comercial de ChatGPT, Alpaca también tiene limitaciones similares, como alucinaciones, toxicidad y estereotipos. En otras palabras, se puede utilizar para generar texto que difunde desinformación, racismo y odio hacia sectores vulnerables de la sociedad.
Requisitos de memoria de Alpaca
Alpaca no se puede ejecutar en CPU, requiere una GPU. Para modelos de 7B y 13B, una sola GPU con 12 GB de RAM es suficiente. Para el modelo de 30B, se necesitan recursos de sistema adicionales.
Código Python para Alpaca
Aquí tienes un código de referencia para Alpaca. Es una aplicación de chat que utiliza el modelo Alpaca 7B:
import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")
!nvidia-smi
!git clone https://github.com/deepanshu88/Alpaca-LoRA-Serve.git
%cd Alpaca-LoRA-Serve
!python3.9 -m pip install -r requirements.txt
base_model = 'decapoda-research/llama-7b-hf'
finetuned_model = 'tloen/alpaca-lora-7b'
!python3.9 app.py --base_url $base_model --ft_ckpt_url $finetuned_model --share
Recuerda que este es solo un código de referencia para Alpaca 7B. Puedes adaptarlo para usar modelos de diferentes tamaños, como Alpaca 13B y Alpaca 30B.
Salida de Alpaca
A continuación, se muestra un ejemplo de salida de Alpaca en respuesta a dos preguntas relativamente sencillas. Una pregunta es sobre un tema general y la otra es sobre codificación. Alpaca responde correctamente a ambas preguntas.
4. GPT4All
Introducción a GPT4All
El equipo de Nomic AI se inspiró en Alpaca y utilizó la API GPT-3.5-Turbo de OpenAI para recopilar alrededor de 800.000 pares de prompt-respuesta para crear 430.000 prompts de estilo asistente y generaciones, incluyendo código, diálogos y narrativas. Los 800.000 pares son aproximadamente 16 veces más grandes que Alpaca. Lo interesante de este modelo es que se puede ejecutar en CPU, no requiere GPU. Al igual que Alpaca, también es de código abierto, lo que significa que puedes usarlo con fines comerciales y ejecutarlo fácilmente en tu propia computadora.
Cómo funciona GPT4All
Funciona de manera similar a Alpaca y se basa en el modelo Llama de 7 mil millones de parámetros. El equipo entrenó modelos Llama de 7B y el modelo final se entrenó en los 437.605 prompts de estilo asistente posprocesados.
Rendimiento de GPT4All
En el procesamiento del lenguaje natural, la perplejidad se utiliza para evaluar la calidad de los modelos de lenguaje. Mide cuán sorprendido estaría un modelo de lenguaje al ver una nueva secuencia de palabras que no ha encontrado antes, basándose en sus datos de entrenamiento. Un valor de perplejidad más bajo indica que el modelo de lenguaje es mejor prediciendo la siguiente palabra en una secuencia y, por lo tanto, es más preciso. El equipo de Nomic AI afirma que sus modelos tienen una menor perplejidad que Alpaca. Sin embargo, la precisión real depende del tipo de prompt que utilices. Alpaca podría tener una mejor precisión en algunos casos.
Requisitos de memoria de GPT4All
Se puede ejecutar en una CPU con 8 GB de RAM. Si tienes un portátil con 4 GB de RAM, puede que sea el momento de actualizar a al menos 8 GB.
Código Python para GPT4All
Aquí tienes un código de referencia para GPT4All. Puedes usarlo como referencia, modificarlo según tus necesidades o ejecutarlo tal cual. Es totalmente tu discreción decidir cómo utilizar el código para que se adapte mejor a tus requisitos.
# Clona el repositorio Git !git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git # Instala los paquetes requeridos cd /content/gpt4all !python -m pip install -r requirements.txt cd transformers !pip install -e . cd ../peft !pip install -e . # Inicia el entrenamiento !accelerate launch --dynamo_backend=inductor --num_processes=8 --num_machines=1 --machine_rank=0 --deepspeed_multinode_launcher standard --mixed_precision=bf16 --use_deepspeed --deepspeed_config_file=configs/deepspeed/ds_config.json train.py --config configs/train/finetune.yaml # Descarga el checkpoint del modelo GPT4All cd /content/gpt4all/chat !wget https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin # Ejecuta el sistema de chat !./gpt4all-lora-quantized-linux-x86
Si estás ejecutando el código en una máquina local que utiliza un sistema operativo diferente a Linux, utiliza los siguientes comandos en su lugar:
Windows (PowerShell): ./gpt4all-lora-quantized-win64.exe Mac (M1): ./gpt4all-lora-quantized-OSX-m1 Mac (Intel): ./gpt4all-lora-quantized-OSX-intel
Salida de GPT4All
GPT4All no pudo responder correctamente a una pregunta relacionada con la codificación. Este es solo un ejemplo y no podemos evaluar la precisión del modelo basándonos en un solo caso. Podría funcionar bien en otros prompts, por lo que la precisión del modelo depende de cómo lo utilices. Además, cuando lo ejecuté de nuevo después de 2 días, funcionó bien para preguntas relacionadas con la codificación. Parece que han afinado aún más el modelo.
Solución de problemas de GPT4All
Si encuentras problemas con la versión distribuida que no tiene NCCL, puede ser porque CUDA no está instalado en tu computadora.
Algunos usuarios han informado de errores extraños en la plataforma Windows 10/11. Como último recurso, puedes instalar el Subsistema de Windows para Linux, que te permite instalar una distribución de Linux en tu computadora con Windows y seguir el código anterior.
5. GPT4All-J
Este modelo tiene un nombre similar al anterior, pero la diferencia es que ambos modelos provienen del mismo equipo de Nomic AI. El único cambio es que ahora ha sido entrenado sobre GPT-J en lugar de Llama. La ventaja de entrenarlo sobre GPT-J es que GPT4All-J ahora tiene licencia Apache-2, lo que significa que puedes usarlo con fines comerciales y ejecutarlo fácilmente en tu propia computadora.
6. Dolly 2
El equipo de Databricks creó un modelo de lenguaje basado en el modelo Pythia de EleutherAI, que luego fue refinado con aproximadamente 15.000 instrucciones tomadas de un corpus. Está disponible en tres tamaños: 12B, 7B y 3B de parámetros.
Requisitos de memoria de Dolly 2
Requiere una GPU con aproximadamente 10 GB de RAM para el modelo de 7B con cuantización de 8 bits. Para el modelo de 12B, se requieren al menos 18 GB de VRAM de GPU.
Código Python para Dolly 2
Aquí tienes un código de referencia para Dolly 2. Puedes usarlo como referencia para acceder al código Python y a una descripción detallada del modelo Dolly.
7. Vicuna
Introducción a Vicuna
Un equipo de investigadores de UC Berkeley, CMU, Stanford y UC San Diego desarrolló este modelo. Fue refinado sobre Llama utilizando un conjunto de datos de chat extraído del sitio web ShareGPT. Los investigadores afirman que el modelo logró una calidad superior al 90% en comparación con OpenAI ChatGPT-4. Vale la pena señalar que su rendimiento es casi igual al de Bard. Utilizaron el programa de entrenamiento de Alpaca y mejoraron dos aspectos: conversaciones de múltiples turnos y secuencias largas.
Código Python para Vicuna
Puedes consultar esta publicación – Guía detallada de Vicuna para acceder al código Python y a una descripción detallada del modelo Vicuna.
8. StableVicuna
Introducción a StableVicuna
Stability AI lanzó StableVicuna, una versión refinada del modelo Vicuna de 13B. Para mejorar el modelo Vicuna, lo entrenaron adicionalmente utilizando ajuste fino supervisado (SFT). Utilizaron tres conjuntos de datos diferentes para entrenarlo:
- OpenAssistant Conversations Dataset, que contiene 161.443 mensajes de conversación humana en 35 idiomas diferentes.
- GPT4All Prompt Generations, que es un conjunto de datos de 437.605 prompts y respuestas generados por GPT-3.5.
- Alpaca, que es un conjunto de datos de 52.000 prompts y respuestas generados por el modelo text-davinci-003.
Utilizaron trlx para entrenar un modelo de recompensa. Este modelo se configuró utilizando su modelo SFT adicional. El modelo de recompensa se entrenó utilizando tres conjuntos de datos de preferencias humanas:
- OpenAssistant Conversations Dataset con 7.213 muestras de preferencia.
- Anthropic HH-RLHF con 160.800 etiquetas de personas que expresan lo que piensan sobre la utilidad o inofensividad de los asistentes de IA.
- Stanford Human Preferences con 348.718 preferencias humanas sobre respuestas a preguntas o instrucciones en diversas áreas, como cocina o filosofía.
Finalmente, el modelo SFT se entrenó utilizando RLHF con trlX a través de un proceso denominado Optimización de Políticas Proximales. Así es como se creó StableVicuna.
Requisitos de memoria de StableVicuna
Para ejecutar el modelo GPTQ StableVicuna de 4 bits, se requieren aproximadamente 10 GB de VRAM de GPU.
Problemas de rendimiento de StableVicuna
Stability AI afirma que este modelo es una mejora respecto al modelo Vicuna original, pero mucha gente ha informado lo contrario. Este modelo tiene más «alucinaciones» que el modelo original, produciendo peores respuestas. En otras palabras, el modelo genera resultados inexactos que no se corresponden con la pregunta. Dado que estos modelos se acaban de lanzar, todavía se necesita una evaluación rigurosa. Es posible que este modelo funcione mejor en algunas tareas, pero mucho peor en otras.
Código Python para StableVicuna
Podemos ejecutar el modelo utilizando Text Generation WebUI, lo que facilita la ejecución de modelos LLM de código abierto. El siguiente código ejecuta una cuantización de 4 bits que reduce los requisitos de memoria del modelo y hace posible su ejecución con menos VRAM.
%cd /content !apt-get -y install -qq aria2 !git clone -b v1
9. Modelo Alpaca GPT-4
Introducción a Alpaca GPT-4
Alpaca GPT-4 es un modelo de lenguaje desarrollado por OpenAI. Es una versión mejorada del modelo Alpaca que utiliza 10 billones de tokens para el entrenamiento. Alpaca GPT-4 es conocido por su capacidad para generar texto de alta calidad y respuestas coherentes.
Código Python para Alpaca GPT-4
Actualmente, OpenAI no ha lanzado el código ni el modelo preentrenado para Alpaca GPT-4. Sin embargo, puedes utilizar otras alternativas gratuitas y de código abierto enumeradas en este artículo para crear tu propio chatbot.
10. Cerebras-GPT
Introducción a Cerebras-GPT
Cerebras-GPT es un modelo de lenguaje desarrollado por la empresa de inteligencia artificial Cerebras. Utiliza la tecnología de procesamiento paralelo del chip Cerebras para entrenar modelos de lenguaje grandes. Cerebras-GPT es conocido por su alto rendimiento y su capacidad para procesar grandes cantidades de datos de manera eficiente.
Requisitos de memoria de Cerebras-GPT
Cerebras-GPT requiere una GPU con una gran cantidad de VRAM, preferiblemente 32 GB o más, para ejecutar modelos de lenguaje grandes.
Código Python para Cerebras-GPT
Actualmente, Cerebras no ha lanzado el código ni el modelo preentrenado para Cerebras-GPT. Sin embargo, puedes utilizar las alternativas gratuitas y de código abierto enumeradas en este artículo para crear tu propio chatbot.
11. GPT-J 6B
Introducción a GPT-J 6B
GPT-J 6B es un modelo de lenguaje grande desarrollado por EleutherAI. Fue entrenado con 6 mil millones de parámetros utilizando técnicas avanzadas de aprendizaje automático. GPT-J 6B es conocido por su capacidad para generar texto coherente y de alta calidad sobre una amplia gama de temas.
Código Python para GPT-J 6B
Actualmente, EleutherAI no ha lanzado el código ni el modelo preentrenado para GPT-J 6B. Sin embargo, puedes utilizar las alternativas gratuitas y de código abierto enumeradas en este artículo para crear tu propio chatbot.
12. Modelo OpenChatKit
Introducción al Modelo OpenChatKit
OpenChatKit Model es un modelo de chatbot de código abierto desarrollado por OpenAI. Se basa en la arquitectura transformer y se puede utilizar para crear chatbots con respuestas coherentes y de alta calidad.
Código Python para el Modelo OpenChatKit
Actualmente, OpenAI no ha lanzado el código ni el modelo preentrenado para OpenChatKit Model. Sin embargo, puedes utilizar las alternativas gratuitas y de código abierto enumeradas en este artículo para crear tu propio chatbot.
Pubblicato in Desarrollo & Programación, Inteligencia Artificial
Sé el primero en comentar