Explorando alternativas de código abierto a los modelos de OpenAI
Explorando opciones de software libre como alternativas a los modelos de OpenAI
Introducción
Noviembre ha sido dramático en el espacio de la IA. Ha sido un viaje emocionante desde el lanzamiento de las tiendas GPT, GPT-4-turbo, hasta el fiasco de OpenAI. Pero esto plantea una pregunta importante: ¿qué tan confiables son los modelos cerrados y las personas detrás de ellos? No será una experiencia agradable cuando el modelo que utilizas en producción falle debido a algún drama corporativo interno. Esto no es un problema con los modelos de código abierto. Tienes control total sobre los modelos que implementas. Tienes soberanía sobre tus datos y modelos por igual. Pero ¿es posible sustituir un modelo de código abierto con los GPT? Afortunadamente, muchos modelos de código abierto ya están funcionando al nivel o incluso mejor que los modelos GPT-3.5. Este artículo explorará algunas de las mejores alternativas de alto rendimiento para LLMs y LMMs de código abierto.
Objetivos de aprendizaje
- Discutir sobre los modelos de lenguaje de código abierto.
- Explorar los modelos de lenguaje de código abierto y los modelos multimodales de última generación.
- Una introducción suave a la cuantificación de modelos de lenguaje de gran tamaño.
- Conocer las herramientas y servicios para ejecutar LLMs localmente y en la nube.
Este artículo fue publicado como parte del Data Science Blogathon.
¿Qué es un modelo de código abierto?
Un modelo se llama de código abierto cuando los pesos y la arquitectura del modelo están disponibles de forma gratuita. Estos pesos son parámetros preentrenados de un modelo de lenguaje de gran tamaño, por ejemplo, el Llama de Meta. Estos suelen ser modelos base o modelos sin ajuste fino. Cualquiera puede utilizar los modelos y ajustarlos con datos personalizados para realizar acciones posteriores.
- La suite de referencia más grande de LLM MEGAVERSE
- Aprende Probabilidad en Ciencias de la Computación con la Universidad de Stanford de forma GRATUITA
- Más allá de los límites humanos El surgimiento de la SuperInteligencia
Pero ¿son realmente abiertos? ¿Qué sucede con los datos? La mayoría de los laboratorios de investigación no publican los datos que se utilizan para entrenar los modelos base debido a preocupaciones sobre contenido con derechos de autor y sensibilidad de los datos. Esto también nos lleva a la parte de la licencia de los modelos. Cada modelo de código abierto viene con una licencia similar a cualquier otro software de código abierto. Muchos modelos base como Llama-1 venían con una licencia no comercial, lo que significa que no se pueden utilizar estos modelos para ganar dinero. Pero modelos como Mistral7B y Zephyr7B vienen con licencias Apche-2.0 y MIT, que se pueden utilizar en cualquier lugar sin preocupaciones.
Alternativas de código abierto
Desde el lanzamiento de Llama, ha habido una carrera armamentista en el espacio de código abierto para alcanzar a los modelos de OpenAI. Y hasta ahora, los resultados han sido alentadores. En menos de un año después del lanzamiento de GPT-3.5, ya tenemos modelos que tienen un rendimiento igual o mejor que GPT-3.5 pero con menos parámetros. Pero GPT-4 sigue siendo el mejor modelo para realizar tareas generales, desde razonamiento y matemáticas hasta generación de código. Si observamos el ritmo de innovación y financiación en los modelos de código abierto, pronto tendremos modelos que se aproximarán al rendimiento de GPT-4. Por ahora, discutamos algunas excelentes alternativas de código abierto a estos modelos.
Llama 2 de Meta
Meta lanzó su mejor modelo, Llama-2, en julio de este año y se convirtió en un éxito instantáneo gracias a sus impresionantes capacidades. Meta lanzó cuatro modelos de Llama-2 con diferentes tamaños de parámetros. Llama-7b, 13b, 34b y 70b. Los modelos eran lo suficientemente buenos como para superar a otros modelos abiertos en sus respectivas categorías. Pero ahora, múltiples modelos como Mistral-7b y Zephyr-7b superan a los modelos más pequeños de Llama en muchos puntos de referencia. Llama-2 70b sigue siendo uno de los mejores en su categoría y es una alternativa digna a GPT-4 para tareas como resumir, traducción automática, entre otras.
En varios puntos de referencia, Llama-2 ha tenido un mejor rendimiento que GPT-3.5, y ha logrado acercarse a GPT-4, lo que lo convierte en un sustituto valioso de GPT-3.5 y, en algunos casos, de GPT-4. El siguiente gráfico muestra una comparación de rendimiento entre los modelos de Llama y GPT por Anyscale.
Para obtener más información sobre Llama-2, consulta este blog en HuggingFace. Estos LLM han demostrado un buen rendimiento cuando se afinan sobre conjuntos de datos personalizados. Podemos afinar los modelos para que funcionen mejor en tareas específicas.
Diferentes laboratorios de investigación también han lanzado versiones afinadas de Llama-2. Estos modelos han mostrado mejores resultados que los modelos originales en muchos puntos de referencia. Este modelo afinado de Llama-2, Nous-Hermes-Llama2-70b de Nous Research, ha sido afinado sobre más de 300.000 instrucciones personalizadas, lo que lo hace mejor que el modelo original meta-llama/Llama-2-70b-chat-hf.
Echa un vistazo al leaderboard de HuggingFace. Puedes encontrar modelos afinados de Llama-2 con mejores resultados que los modelos originales. Este es uno de los beneficios de los modelos de código abierto. Hay una gran cantidad de modelos para elegir según los requisitos.
Mistral-7B
Desde el lanzamiento de Mistral-7B, se ha convertido en el favorito de la comunidad de código abierto. Ha demostrado un rendimiento mucho mejor que cualquier modelo en la categoría y se acerca a las capacidades de GPT-3.5. Este modelo puede ser un sustituto de Gpt-3.5 en muchos casos, como resúmenes, parafraseo, clasificación, etc.
Pocos parámetros del modelo garantizan un modelo más pequeño que puede ejecutarse localmente o alojarse a tarifas más económicas que los más grandes. Aquí está el espacio original de huggingFace para Mistral-7b. Además de ser un gran rendidor, una cosa que hace destacar a Mistral-7b es que es un modelo en bruto sin censura alguna. La mayoría de los modelos están lobotomizados con RLHF pesados antes del lanzamiento, lo que los hace indeseables para muchas tareas. Pero esto hace que Mistral-7B sea adecuado para realizar tareas del mundo real y específicas.
Gracias a la vibrante comunidad de código abierto, existen algunas alternativas afinadas con mejor rendimiento que los modelos originales de Mistral7b.
OpenHermes-2.5
OpenHermes-2.5 es un modelo afinado de Mistral. Ha mostrado resultados notables en métricas de evaluación (GPT4ALL, TruthfullQA, AgiEval, BigBench). Para muchas tareas, esto es indistinguible de GPT-3.5. Para obtener más información sobre OpenHermes, consulta este repositorio de HF: teknium/OpenHermes-2.5-Mistral-7B.
Zephyr-7b
Zephyr-7b es otro modelo afinado de Mistral-7b por HuggingFace. Huggingface ha afinado completamente el Mistral-7b utilizando DPO (Direct Preference Optimization). Zephyr-7b-beta tiene un rendimiento comparable a modelos más grandes como GPT-3.5 y Llama-2-70b en muchas tareas, incluyendo escritura, temas humanísticos y juego de roles. A continuación se muestra una comparación entre Zephyr-7b y otros modelos en MTbench. Esto puede ser un buen sustituto de GPT-3.5 en muchos aspectos.
Aquí está el repositorio oficial de HuggingFace: HuggingFaceH4/zephyr-7b-beta.
Intel Neural Chat
El chat neural es un modelo LLM de 7B afinado a partir de Mistral-7B por Intel. Ha mostrado un rendimiento notable, liderando el ranking de Huggingface entre todos los modelos de 7B. El NeuralChat-7b está afinado y entrenado sobre Gaudi-2, un chip de Intel para realizar tareas de IA más rápidamente. El excelente rendimiento de NeuralChat es resultado de un afinado supervisado y una optimización directa de preferencia (DPO) sobre conjuntos de datos de Orca y slim-orca.
Aquí está el repositorio de HuggingFace de NeuralChat: Intel/neural-chat-7b-v3-1.
Modelos Abiertos Multi-Modales de Gran Tamaño
Después del lanzamiento de GPT-4 Vision, ha habido un mayor interés en los modelos multi-modales. Los Modelos de Lenguaje con Visión pueden ser excelentes en muchos casos de uso del mundo real, como responder preguntas sobre imágenes y narrar videos. En un caso de uso de este tipo, Tldraw ha lanzado un pizarra de IA que te permite crear componentes web a partir de dibujos en la pizarra usando la capacidad increíble de GPT-4V para interpretar imágenes como código.
Pero el código abierto está avanzando más rápido. Muchos laboratorios de investigación han lanzado modelos multi-modales de gran tamaño como Llava, Baklava, Fuyu-8b, etc.
Llava
El modelo multi-modal Llava (Large Language and Vision Assistant) tiene 13 mil millones de parámetros. Llava conecta el LLM Vicuna-13b y un codificador visual pre-entrenado CLIP ViT-L/14. Ha sido ajustado a través del conjunto de datos Visual Chat y Science QA para lograr un rendimiento similar a GPT-4V en muchas ocasiones. Esto se puede utilizar en tareas de preguntas y respuestas visuales.
- Repositorio de GitHub: haotian-liu/LLaVA
- Repositorio oficial: https://llava-vl.github.io/
BakLlava
BakLlava de SkunkWorksAI es otro modelo multi-modal de gran tamaño. Tiene a Mistral-7b como LLM base con arquitectura Llava-1.5 agregada. Ha mostrado resultados prometedores en comparación con Llava-13b a pesar de ser más pequeño. Este es el modelo a buscar cuando necesitas un modelo más pequeño con una buena inferencia visual.
- Repositorio de HuggingFace: SkunkworksAI/BakLLaVA-1
- Repositorio de GitHub: SkunkworksAI/BakLLaVA
Fuyu-8b
Otra alternativa de código abierto es Fuyu-8b. Es un modelo de lenguaje multi-modal capaz de Adept. Fuyu es un transformador solo decodificador sin un codificador visual; esto es diferente de Llava, donde se utiliza CLIP.
A diferencia de otros modelos multi-modales que utilizan un codificador de imágenes para alimentar a LLM con datos de imágenes, este proyecta linealmente las partes de las imágenes en la primera capa del transformador. Trata el decodificador del transformador como un transformador de imágenes. A continuación, se muestra una ilustración de la arquitectura de Fuyu.
Para obtener más información sobre Fuyu-8b, consulta este artículo. Repositorio de HuggingFace adept/fuyu-8b
¿Cómo usar LLMs Abiertos?
Ahora que estamos familiarizados con algunos de los LLMs y LMMs de código abierto con mejor rendimiento, la pregunta es cómo obtener inferencias de un modelo abierto. Hay dos formas de obtener inferencias de los modelos de código abierto. Ya sea descargamos los modelos en hardware personal o nos suscribimos a un proveedor de servicios en la nube. Esto depende de tu caso de uso. Estos modelos, incluso los más pequeños, son intensivos en cómputo y requieren de una gran cantidad de RAM y VRAM. Inferir con estos modelos en hardware comercial es muy difícil. Para facilitar esta tarea, los modelos deben ser cuantizados. Entonces, veamos qué es la cuantización del modelo.
Cuantización
La cuantización es la técnica de reducir la precisión de los números flotantes. Por lo general, los laboratorios lanzan modelos con pesos y activaciones de alta precisión de punto flotante para lograr un rendimiento de vanguardia (SOTA). Esto hace que los modelos sean exigentes en cuanto a computación y no sean ideales para ejecutarse localmente o alojarse en la nube. La solución para esto es reducir la precisión de los pesos y las incrustaciones. Esto se llama cuantización.
Los modelos SOTA generalmente tienen una precisión de float32. Hay diferentes casos en la cuantización, desde fp32 -> fp16, fp32 -> int8, fp32 -> fp8 y fp32 -> fp4. Esta sección solo discutirá la cuantización a int8 o cuantización de enteros de 8 bits.
Cuantización a int8
La representación de int8 solo puede acomodar 256 caracteres (firmados [-128,127], no firmados [0, 256]), mientras que fp32 puede tener una amplia gama de números. La idea es encontrar la proyección equivalente de los valores fp32 en [a,b] al formato int8.
Si X es un número fp32 en el rango [a,b], entonces el esquema de cuantización es
X = S*(X_q – z)
- X_q = el valor cuantizado asociado con X
- S es el parámetro de escala. Un número fp32 positivo.
- z es el punto cero. Es el valor int8 correspondiente al valor 0 en fp32.
Por lo tanto, X_q = round(X/S + z) para todo X en [a,b]
Para los valores fp3,2, más allá de [a,b] se recortan hasta la representación más cercana
X_q = clip( X_q = round(a/S + z) + round(X/S + z) + X_q = round(b/S + z) )
- round(a/S + z) es el número más pequeño y round(b/S + z) es el número más grande en el formato numérico mencionado.
Esta es la ecuación para la cuantización afín o de punto cero. Esto se trata de la cuantización de enteros de 8 bits; también existen esquemas de cuantización para fp8 de 8 bits, fp4 de 4 bits (fp4, nf4) y fp2 de 2 bits. Para obtener más información sobre la cuantización, consulte este artículo en HuggingFace.
La cuantización de modelos es una tarea compleja. Hay varias herramientas de código abierto para cuantizar LLMs, como Llama.cpp, AutoGPTQ, llm-awq, etc. Llama cpp cuantiza modelos con GGUF, AutoGPTQ utiliza GPTQ y llm-awq utiliza el formato AWQ. Estos son diferentes métodos de cuantización para reducir el tamaño del modelo.
Entonces, si desea usar un modelo de código abierto para inferencia, tiene sentido usar un modelo cuantizado. Sin embargo, deberá sacrificar algo de calidad de inferencia por un modelo más pequeño que no cueste una fortuna.
Consulte este repositorio de HuggingFace para modelos cuantizados: https://huggingface.co/TheBloke
Ejecución de modelos localmente
A menudo, para diversas necesidades, es posible que necesitemos ejecutar modelos localmente. Hay mucha libertad al ejecutar modelos localmente. Ya sea para construir una solución personalizada para documentos confidenciales o con fines de experimentación, los LLM locales brindan mucha más libertad y tranquilidad que los modelos de código cerrado.
Existen varias herramientas para ejecutar modelos localmente. Los más populares son vLLM, Ollama y LMstudio.
VLLM
El vLLM es un software de código abierto alternativo escrito en Python que le permite ejecutar LLMs localmente. Para ejecutar modelos en vLLM, se requieren ciertas especificaciones de hardware, generalmente, con capacidad de cálculo vRAM de más de siete y RAM superior a 16 GB. Debería poder ejecutarlo en una colaboración para realizar pruebas. VLLM actualmente admite el formato de cuantización AWQ. Estos son los modelos que puedes usar con vLLM. Y así es como podemos ejecutar un modelo localmente.
from vllm import LLM, SamplingParamsprompts = [ "Hola, mi nombre es", "El presidente de los Estados Unidos es", "La capital de Francia es", "El futuro de la IA es",]sampling_params = SamplingParams(temperature=0.8, top_p=0.95)llm = LLM(model="mistralai/Mistral-7B-v0.1")outputs = llm.generate(prompts, sampling_params)for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f"Prompt: {prompt!r}, Texto generado: {generated_text!r}")
El vLLM también es compatible con los puntos finales de OpenAI. Por lo tanto, puede utilizar el modelo como un reemplazo directo para la implementación existente de OpenAI.
import openai# Modifique la clave de API y la base de API de OpenAI para usar el servidor de API de vLLM.openai.api_key = "VACÍO"openai.api_base = "http://localhost:8000/v1"completion = openai.Completion.create(model="mistralai/Mistral-7B-v0.1", prompt="San Francisco es un")print("Resultado de la finalización:", completion)
Aquí, inferiremos desde el modelo local utilizando la SDK de OpenAI.
Ollama
Ollama es otra herramienta CLI de código abierto en Go que nos permite ejecutar modelos de código abierto en hardware local. Ollama admite modelos cuantizados GGUF.
Cree un archivo de modelo en su directorio y ejecútelo
FROM ./mistral-7b-v0.1.Q4_0.gguf
Cree un modelo de Ollama a partir del archivo del modelo.
ollama create example -f ArchivoDeModelo
Ahora, ejecute su modelo.
ollama run example "¿Cómo matar un proceso de Python?"
Ollama también le permite ejecutar modelos de Pytorch y HuggingFace. Para más información, consulte su repositorio oficial.
LMstudio
LMstudio es un software de código cerrado que le permite ejecutar cualquier modelo en su PC de manera conveniente. Esto es ideal si desea un software dedicado para ejecutar modelos. Tiene una interfaz de usuario agradable para utilizar modelos locales. Está disponible en Macs (M1, M2), Linux (beta) y Windows.
También admite modelos con formato GGUF. Consulte su página oficial para obtener más información. Asegúrese de que admita las especificaciones de su hardware.
Modelos de proveedores en la nube
Ejecutar modelos localmente es excelente para experimentación y casos de uso personalizados, pero utilizarlos en aplicaciones requiere que los modelos estén alojados en la nube. Puede alojar su modelo en la nube a través de proveedores de modelos de LLM dedicados, como Replicate y Brev Dev. Puede alojar, ajustar y obtener inferencias de modelos. Proporcionan un servicio escalable y elástico para alojar LLMs. La asignación de recursos cambiará según el tráfico en su modelo.
Conclusión
El desarrollo de modelos de código abierto está ocurriendo a un ritmo vertiginoso. En menos de un año de ChatGPT, tenemos modelos más pequeños que lo superan en muchos puntos de referencia. Esto es solo el comienzo, y es posible que haya un modelo a la par de GPT-4 en el futuro. Últimamente, se han planteado preguntas sobre la integridad de las organizaciones detrás de los modelos de código cerrado. Como desarrollador, no querrá que su modelo y los servicios construidos sobre él se vean comprometidos. El código abierto resuelve esto. Conoce tu modelo y eres dueño del modelo. Los modelos de código abierto brindan mucha libertad. También puede tener una estructura híbrida con modelos de código abierto y OpenAI para reducir costos y dependencias. Por lo tanto, este artículo trata sobre una introducción a algunos modelos de código abierto que tienen un rendimiento excelente y los conceptos relacionados con su ejecución.
Entonces, aquí están los puntos clave:
- Los modelos abiertos son sinónimo de soberanía. Los modelos de código abierto brindan el factor de confianza tan necesario que los modelos cerrados no logran brindar.
- Los modelos de lenguaje grandes como Llama-2 y Mistral, y sus afinamientos, han superado a GPT-3.5 en muchas tareas, lo que los convierte en sustitutos ideales.
- Los modelos multimodales grandes como Llava, BakLlava y Fuyu-8b han demostrado ser prometedores en muchas tareas de preguntas y clasificación.
- Los LLM son grandes y requieren mucha capacidad de cálculo. Por lo tanto, para ejecutarlos localmente, se requiere cuantización.
- La cuantización es una técnica para reducir el tamaño del modelo al convertir los pesos y las activaciones en números de menor tamaño.
- La implementación y la inferencia local desde modelos de código abierto requieren herramientas como LMstudio, Ollama y vLLM. Para implementar en la nube, utilice servicios como Replicate y Brev.
Preguntas frecuentes
Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y son utilizados a discreción del autor.
We will continue to update Zepes; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- IA generativa basada en datos Beneficios para los datos y el análisis
- Examinando y detectando sesgos en un conjunto de datos de incumplimiento de tarjetas de crédito
- Inflection-2 supera a PaLM-2 de Google Un avance en los modelos de lenguaje de IA
- 5 Técnicas de Optimización de Código Para Acelerar tus Programas
- Esta investigación de IA proveniente de China presenta GS-SLAM un enfoque novedoso para mejorar el mapeo y la localización en 3D.
- Revolucionando el arte digital Investigadores de la Universidad Nacional de Seúl introducen un enfoque novedoso para la creación de collages utilizando el aprendizaje por refuerzo.
- Esta Investigación de IA presenta GAIA un referente que define el próximo hito en la competencia general de IA