Guía: Cómo ejecutar Phi-2 en una computadora con 32GB de RAM
Introducción
Phi-2 es un potente modelo de lenguaje que requiere hardware adecuado para su ejecución. En esta guía, mostraremos cómo instalar y ejecutar Phi-2 en una computadora con 32GB de RAM. Intentaremos cubrir todos los pasos clave, desde la preparación del entorno hasta la ejecución del modelo.
Requisitos previos
Antes de comenzar la instalación, asegúrate de que tu sistema cumpla con los siguientes requisitos:
- Sistema operativo: Linux (recomendado Ubuntu 20.04/22.04) o Windows 10/11
- Procesador: Intel i7 o más reciente, AMD Ryzen 7 o más reciente
- Memoria RAM: 32GB (recomendado 64GB para un mejor rendimiento)
- Tarjeta gráfica: NVIDIA RTX 3060 o más reciente (recomendado RTX 4090 para un mejor rendimiento)
- Espacio en disco: al menos 50GB de espacio libre
Instalación del entorno
1. Instalación de Python
Phi-2 requiere Python 3.8 o una versión más reciente. Puedes instalarlo usando el gestor de paquetes:
sudo apt update
sudo apt install python3.8 python3.8-venv
2. Creación de un entorno virtual
Crear un entorno virtual ayudará a evitar conflictos con otros paquetes:
python3.8 -m venv phi2_env
source phi2_env/bin/activate
3. Instalación de dependencias
Instala los paquetes necesarios:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install transformers accelerate bitsandbytes
Descarga del modelo Phi-2
Puedes descargar el modelo Phi-2 usando la biblioteca Hugging Face Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "microsoft/phi-2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", load_in_8bit=True)
Configuración de la memoria
Para una computadora con 32GB de RAM, se recomienda usar optimizaciones de memoria, como la cuantización de 8 bits:
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
load_in_8bit=True,
offload_folder="offload",
offload_state_dict=True,
)
Ejecución del modelo
Ahora puedes ejecutar el modelo y probarlo:
prompt = "¿Cuál es el sentido de la vida?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Optimizaciones
1. Uso de DeepSpeed
DeepSpeed es una herramienta para optimizar la memoria y el rendimiento:
pip install deepspeed
2. Configuración de DeepSpeed
Crea un archivo ds_config.json:
{
"train_batch_size": "auto",
"gradient_accumulation_steps": "auto",
"optimizer": {
"type": "AdamW",
"params": {
"lr": "auto",
"betas": "auto",
"eps": 1e-8,
"weight_decay": 0.01
}
},
"fp16": {
"enabled": "auto"
},
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"offload_param": {
"device": "cpu",
"pin_memory": true
}
}
}
3. Ejecución con DeepSpeed
from transformers import AutoModelForCausalLM, AutoTokenizer
import deepspeed
model_name = "microsoft/phi-2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, export=False)
ds_config = {
"train_batch_size": "auto",
"gradient_accumulation_steps": "auto",
"optimizer": {
"type": "AdamW",
"params": {
"lr": "auto",
"betas": "auto",
"eps": 1e-8,
"weight_decay": 0.01
}
},
"fp16": {
"enabled": "auto"
},
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"offload_param": {
"device": "cpu",
"pin_memory": true
}
}
}
model_engine, optimizer, _, _ = deepspeed.initialize(
model=model,
config=ds_config
)
Resumen
Ejecutar Phi-2 en una computadora con 32GB de RAM requiere una preparación adecuada del entorno y la aplicación de optimizaciones de memoria. En esta guía, hemos discutido los pasos clave, como la instalación de Python, la creación de un entorno virtual, la descarga del modelo y la configuración de la memoria. Con estos pasos, deberías poder ejecutar Phi-2 y disfrutar de sus poderosas capacidades.