Curso
El proyecto SOLAR-10.7B supone un gran salto en el desarrollo de modelos de lenguaje de gran tamaño, al introducir una nueva forma de escalar estos modelos de manera eficaz y eficiente.
Este artículo empieza explicando qué es el modelo SOLAR-10.7B, destaca su rendimiento frente a otros modelos de lenguaje grandes y profundiza en el uso de su versión especializada ajustada. Por último, entenderás las posibles aplicaciones del modelo ajustado SOLAR-10.7B-Instruct y sus limitaciones.
¿Qué es SOLAR-10.7B?
SOLAR-10.7B es un modelo de 10,7 mil millones de parámetros desarrollado por un equipo de Upstage AI en Corea del Sur.
Basado en la arquitectura de Llama-2, este modelo supera a otros modelos de lenguaje grandes con hasta 30 mil millones de parámetros, incluido el modelo Mixtral 8X7B.
Si quieres saber más sobre Llama-2, nuestro artículo Fine-Tuning LLaMA 2: A Step-by-Step Guide to Customizing the Large Language Model ofrece una guía paso a paso para ajustar Llama-2, con nuevos enfoques para superar las limitaciones de memoria y cómputo y facilitar el acceso a modelos de lenguaje abiertos.
Además, sobre la base sólida de SOLAR-10.7B, el modelo SOLAR-10.7B-Instruct se ajusta con énfasis en seguir instrucciones complejas. Esta variante demuestra un rendimiento superior, lo que pone de relieve la capacidad de adaptación del modelo y la eficacia del ajuste fino para lograr objetivos especializados.
Por último, SOLAR-10.7B introduce un método llamado Depth Up-Scaling, que exploramos a continuación.
El método Depth Up-Scaling
Este método innovador permite ampliar la profundidad de la red neuronal del modelo sin requerir un aumento equivalente de los recursos computacionales. Esta estrategia mejora tanto la eficiencia como el rendimiento global del modelo.
Elementos esenciales de Depth Up-Scaling
Depth Up-Scaling se basa en tres componentes principales: (1) pesos de Mistral 7B, (2) marco de Llama 2 y (3) preentrenamiento continuo.

Escalado en profundidad para el caso con n = 32, s = 48 y m = 8. El escalado en profundidad se consigue mediante un proceso de dos fases: escalado por profundidad seguido de preentrenamiento continuo. (Source)
Modelo base:
- Utiliza una arquitectura transformer de 32 capas, concretamente el modelo Llama 2, inicializado con pesos preentrenados de Mistral 7B.
- Se elige por su compatibilidad y rendimiento, con el objetivo de aprovechar recursos de la comunidad e introducir modificaciones novedosas para ampliar sus capacidades.
- Sirve de base para el escalado en profundidad y el preentrenamiento posterior para escalar de forma eficiente.
Escalado en profundidad:
- Escala el modelo base fijando un número objetivo de capas para el modelo escalado, teniendo en cuenta las capacidades del hardware.
- Implica duplicar el modelo base, eliminar las últimas m capas del original y las primeras m capas del duplicado, y concatenarlos para formar un modelo con s capas.
- Este proceso crea un modelo escalado con un número de capas ajustado para quedar entre 7 y 13 mil millones de parámetros, usando específicamente una base de n=32 capas y eliminando m=8 capas para alcanzar s=48 capas.
Preentrenamiento continuo:
- Aborda la caída inicial de rendimiento tras el escalado en profundidad continuando el preentrenamiento del modelo escalado.
- Se observó una rápida recuperación del rendimiento durante el preentrenamiento continuo, atribuida a la reducción de la heterogeneidad y discrepancias en el modelo.
- El preentrenamiento continuo es clave para recuperar e incluso superar el rendimiento del modelo base, aprovechando la arquitectura escalada en profundidad para un aprendizaje eficaz.
Estos resúmenes destacan las estrategias y resultados clave del enfoque Depth Up-Scaling, centrado en aprovechar modelos existentes, escalar ajustando la profundidad y mejorar el rendimiento mediante preentrenamiento continuo.
Gracias a este enfoque multifacético, SOLAR-10.7B iguala y, en muchos casos, supera las capacidades de modelos mucho más grandes. Esta eficiencia lo convierte en una opción destacada para múltiples aplicaciones específicas, demostrando su solidez y flexibilidad.
¿Cómo funciona el modelo SOLAR-10.7B Instruct?
SOLAR-10.7B Instruct destaca interpretando y ejecutando instrucciones complejas, lo que lo hace muy valioso en escenarios donde la comprensión precisa y la capacidad de responder a órdenes humanas son cruciales. Esta capacidad es esencial para desarrollar sistemas de IA más intuitivos e interactivos.
- SOLAR-10.7B Instruct es el resultado de ajustar el modelo SOLAR-10.7B original para seguir instrucciones en formato de preguntas y respuestas.
- El ajuste fino utiliza en su mayoría conjuntos de datos de código abierto, junto con conjuntos de QA de matemáticas sintetizados para reforzar las habilidades matemáticas del modelo.
- La primera versión de SOLAR-10.7B Instruct se crea integrando los pesos de Mistral 7B para potenciar su capacidad de aprendizaje y procesar información de forma eficaz y eficiente.
- El armazón de SOLAR-10.7B es la arquitectura Llama2, que ofrece una combinación de velocidad y precisión.
En conjunto, la importancia del modelo SOLAR-10.7B ajustado radica en su mayor rendimiento, su adaptabilidad y su potencial de aplicación generalizada, impulsando los campos del procesamiento del lenguaje natural y la inteligencia artificial.
Aplicaciones potenciales del modelo SOLAR-10.7B ajustado
Antes de entrar en la implementación técnica, veamos algunas posibles aplicaciones de un modelo SOLAR-10.7B ajustado.
A continuación, algunos ejemplos de educación y tutoría personalizadas, mejor atención al cliente y creación automática de contenido.
- Educación y tutoría personalizadas: SOLAR-10.7B-Instruct puede transformar el sector educativo ofreciendo experiencias de aprendizaje personalizadas. Entiende dudas complejas del alumnado y ofrece explicaciones, recursos y ejercicios a medida. Esto lo convierte en una herramienta ideal para desarrollar sistemas de tutoría inteligente que se adaptan a estilos y necesidades de aprendizaje individuales, aumentando la motivación y los resultados.
- Mejor atención al cliente: SOLAR-10.7B-Instruct puede impulsar chatbots y asistentes virtuales avanzados capaces de comprender y resolver consultas complejas de clientes con gran precisión. Esta aplicación no solo mejora la experiencia del cliente al proporcionar soporte oportuno y relevante, sino que también reduce la carga del equipo humano al automatizar las consultas rutinarias.
- Creación y resumen automáticos de contenido: Para medios y creadores, SOLAR-10.7B-Instruct permite automatizar la generación de textos como noticias, informes y piezas creativas. Además, puede resumir documentos extensos en formatos concisos y fáciles de entender, lo que resulta muy útil para periodistas, investigadores y profesionales que necesitan asimilar y reportar grandes volúmenes de información con rapidez.
Estos ejemplos subrayan la versatilidad y el potencial de SOLAR-10.7B-Instruct para mejorar la eficiencia, la accesibilidad y la experiencia de usuario en una amplia variedad de sectores.
Guía paso a paso para usar SOLAR-10.7B Instruct
Ya tenemos suficiente contexto sobre el modelo SOLAR-10.7B; es hora de ponernos manos a la obra.
Esta sección te da todas las instrucciones para ejecutar el modelo SOLAR-10.7 Instruct v1.0 - GGUF de upstage.
El código se basa en la documentación oficial en Hugging Face. Los pasos principales son:
- Instalar e importar las librerías necesarias
- Definir el modelo SOLAR-10.7B a usar desde Hugging Face
- Ejecutar la inferencia del modelo
- Generar el resultado a partir de la petición del usuario
Instalación de librerías
Las librerías principales son transformers y accelerate.
- La librería transformers da acceso a modelos preentrenados; aquí se especifica la versión 4.35.2.
- La librería accelerate está pensada para simplificar la ejecución de modelos de aprendizaje automático en diferentes hardware (CPU, GPU) sin tener que conocer a fondo sus particularidades.
%%bash
pip -q install transformers==4.35.2
pip -q install accelerate
Importar librerías
Una vez completada la instalación, importamos las siguientes librerías necesarias:
- torch es la librería de PyTorch, muy popular y de código abierto, usada en visión por computador y PLN.
- AutoModelForCausalLM se usa para cargar un modelo preentrenado de modelado de lenguaje causal, y AutoTokenizer convierte el texto a un formato que el modelo entiende (tokenización).
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
Configuración de la GPU
El modelo utilizado es la versión 1 del SOLAR-10.7B disponible en Hugging Face.
Necesitarás una GPU para acelerar la carga del modelo y el proceso de inferencia.
El acceso a la GPU en Google Colab se ilustra en la imagen siguiente:
- En la pestaña Runtime, selecciona Change runtime
- Luego elige T4 GPU en Hardware accelerator y Save los cambios
Esto cambiará el runtime predeterminado a T4:

Podemos comprobar las propiedades del runtime ejecutando el siguiente comando en el cuaderno de Colab.
!nvidia-smi

Propiedades de la GPU
Definición del modelo
Con todo preparado, cargamos el modelo así:
model_ID = "Upstage/SOLAR-10.7B-Instruct-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_ID)
model = AutoModelForCausalLM.from_pretrained(
model_ID,
device_map="auto",
torch_dtype=torch.float16,
)
- model_ID es la cadena que identifica de forma única el modelo preentrenado que queremos usar. En este caso, se especifica "Upstage/SOLAR-10.7B-Instruct-v1.0".
- AutoTokenizer.from_pretrained(model_ID) carga un tokenizador preentrenado con el model_ID indicado y lo prepara para procesar texto de entrada.
- AutoModelForCausalLM.from_pretrained() carga el propio modelo de lenguaje causal, con device_map="auto" para usar automáticamente el mejor hardware disponible (la GPU que hemos configurado) y torch_dtype=torch.float16 para emplear números en coma flotante de 16 bits, ahorrando memoria y potencialmente acelerando el cómputo.
Inferencia del modelo
Antes de generar una respuesta, el texto de entrada (petición del usuario) se formatea y tokeniza.
- user_request contiene la pregunta o entrada para el modelo.
- conversation da formato a la entrada como parte de una conversación, etiquetándola con un rol (por ejemplo, "user").
- apply_chat_template aplica una plantilla conversacional a la entrada, preparándola en un formato que el modelo entiende.
- tokenizer(prompt, return_tensors="pt") convierte el prompt en tokens y especifica el tipo de tensor ("pt" para tensores de PyTorch), y .to(model.device) asegura que la entrada esté en el mismo dispositivo (CPU o GPU) que el modelo.
user_request = "What is the square root of 24?"
conversation = [ {'role': 'user', 'content': user_request} ]
prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
Generación del resultado
La sección final usa el modelo para generar una respuesta a la pregunta de entrada y luego decodifica e imprime el texto generado.
- model.generate() genera texto a partir de las entradas proporcionadas, con use_cache=True para acelerar la generación reutilizando resultados previos. max_length=4096 limita la longitud máxima del texto generado.
- tokenizer.decode(outputs[0]) convierte los tokens generados de nuevo a texto legible.
- La instrucción print muestra la respuesta generada a la pregunta del usuario.
outputs = model.generate(**inputs, use_cache=True, max_length=4096)
output_text = tokenizer.decode(outputs[0])
print(output_text)
La ejecución correcta del código anterior genera el siguiente resultado:

Si sustituimos la petición del usuario por el siguiente texto, obtenemos la nueva respuesta generada:
user_request = "Tell me a story about the universe"

Limitaciones del modelo SOLAR-10.7B
A pesar de todas sus ventajas, SOLAR-10.7B también tiene limitaciones, como cualquier modelo de lenguaje grande. Las principales son:
- Exploración exhaustiva de hiperparámetros: durante el Depth Up-Scaling (DUS) sería necesario explorar con más detalle los hiperparámetros del modelo. Esto llevó a eliminar 8 capas del modelo base por limitaciones de hardware.
- Exigente en cómputo: el modelo requiere muchos recursos computacionales, lo que limita su uso por parte de personas y organizaciones con menos capacidad.
- Vulnerabilidad al sesgo: posibles sesgos en los datos de entrenamiento pueden afectar al rendimiento del modelo en ciertos casos de uso.
- Impacto ambiental: el entrenamiento y la inferencia del modelo consumen mucha energía, lo que puede generar preocupación ambiental.
Conclusión
Este artículo ha explorado el modelo SOLAR-10.7B, destacando su aportación a la inteligencia artificial mediante el enfoque de escalado en profundidad. Hemos visto cómo funciona, sus posibles aplicaciones y una guía práctica para su uso, desde la instalación hasta la generación de resultados.
Pese a sus capacidades, también hemos abordado sus limitaciones para ofrecerte una visión equilibrada. A medida que la IA evoluciona, SOLAR-10.7B ejemplifica los avances hacia herramientas más accesibles y versátiles.
Si quieres profundizar en el potencial de la IA, nuestro tutorial FLAN-T5 Tutorial: Guide and Fine-Tuning ofrece una guía completa para ajustar un modelo FLAN-T5 para una tarea de preguntas y respuestas con la librería transformers y ejecutar inferencia optimizada en un escenario real. También puedes consultar nuestro tutorial de fine-tuning de GPT-3.5 y nuestro code-along sobre cómo ajustar tu propio modelo LlaMA 2.
Zoumana desarrolla herramientas de IA LLM para ayudar a las empresas a llevar a cabo la diligencia debida en materia de sostenibilidad y evaluaciones de riesgos. Anteriormente trabajó como científico de datos e ingeniero de aprendizaje automático en Axionable e IBM. Zoumana es la fundadora de la plataforma tecnológica educativa de aprendizaje entre iguales ETP4Africa. Ha escrito más de 20 tutoriales para DataCamp.



