¡Pregunte, nosotros le respondemos!

Aplicaciones y Guías

StarCoder: su asistente local de codificación

Microsoft CoPilot ha supuesto una revolución en el campo del desarrollo de software. Este asistente de IA ayuda enormemente a los desarrolladores con diversas tareas de codificación, facilitándoles la vida. Sin embargo, un inconveniente es que no es una aplicación independiente, sino un servicio basado en la nube. Esto significa que los usuarios deben aceptar los términos y condiciones del servicio y pagar una suscripción.

Afortunadamente, el mundo del software de código abierto nos ofrece numerosas alternativas. En el momento de escribir este artículo, la alternativa más notable a CoPilot es StarCoder, desarrollada por el proyecto BigCode. StarCoder es un extenso modelo de red neuronal con 15,5B de parámetros, entrenado en más de 80 lenguajes de programación.

Este modelo se distribuye en Hugging Face (HF) utilizando un modelo gated bajo el acuerdo de licencia BigCode OpenRAIL-M v1. Puedes descargar y utilizar este modelo de forma gratuita, pero necesitas tener una cuenta en HF con una clave SSH vinculada. Antes de poder descargarlo, hay algunos pasos adicionales que debes seguir.

Añadir clave SSH a HF

Antes de empezar, tienes que configurar el reenvío de puertos (puerto remoto 7860 a 127.0.0.1:7860) en tu cliente SSH. Puedes encontrar información adicional en los siguientes artículos:

Actualice el repositorio caché de paquetes y los paquetes instalados:

sudo apt update && sudo apt -y upgrade

Vamos a instalar el gestor de paquetes del sistema Python (PIP):

sudo apt install python3-pip

Genera y añade una clave SSH que puedas usar en Hugging Face:

cd ~/.ssh && ssh-keygen

Cuando se genera el par de claves, puede mostrar la clave pública en el emulador de terminal:

cat id_rsa.pub

Copie toda la información empezando por ssh-rsa y terminando por usergpu@gpuserver como se muestra en la siguiente captura de pantalla:

Copy RSA key

Abre un navegador web, escribe https://huggingface.co/ en la barra de direcciones y pulsa Enter. Accede a tu cuenta HF y abre Profile settings. A continuación, seleccione SSH and GPG Keys y pulse el botón Add SSH Key:

Add SSH key

Rellena el Key name y pega el SSH Public key copiado del terminal. Guarda la clave pulsando Add key:

Paste the key

Ahora, tu cuenta HF está vinculada a la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como los modelos de redes neuronales. Abre tu directorio de inicio:

cd ~/

Descargue y ejecute el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

Ahora, puedes instalarlo usando el gestor de paquetes estándar:

sudo apt-get install git-lfs

Vamos a configurar git para utilizar nuestro apodo HF:

git config --global user.name "John"

Y vinculado a la cuenta de correo de HF:

git config --global user.email "john.doe@example.com"

Descargar el modelo

Ten en cuenta que StarCoder en formato binario puede ocupar una cantidad significativa de espacio en disco (>75 GB). No olvides consultar este artículo para asegurarte de que estás utilizando la partición montada correcta.

Todo está listo para la descarga del modelo. Abre el directorio de destino:

cd /mnt/fastdisk

Y empieza a descargar el repositorio:

git clone git@hf.co:bigcode/starcoder

Este proceso tarda hasta 15 minutos. Por favor, sea paciente. Puede monitorizarlo ejecutando el siguiente comando en otra consola SSH:

watch -n 0.5 df -h

Aquí, verás cómo se reduce el espacio libre en el disco montado, asegurando que la descarga está progresando y los datos se están guardando. El estado se actualizará cada medio segundo. Para detener manualmente la visualización, pulse el acceso directo Ctrl + C.

Ejecutar el modelo completo con WebUI

Clona el repositorio del proyecto:

git clone https://github.com/oobabooga/text-generation-webui.git

Abre el directorio descargado:

cd text-generation-webui

Ejecute el script de inicio:

./start_linux.sh --model-dir /mnt/fastdisk

El script comprobará la presencia de las dependencias necesarias en el servidor. Las dependencias que falten se instalarán automáticamente. Cuando se inicie la aplicación, abra su navegador web y escriba la siguiente dirección:

http://127.0.0.1:7860

Abra la pestaña Model y seleccione el modelo descargado starcoder de la lista desplegable. Haga clic en la lista Model loader y seleccione Transformers. Ajusta el deslizador de memoria máxima de la GPU para cada GPU instalada. Esto es muy importante, ya que ponerlo a 0 restringe el uso de VRAM e impide que el modelo se cargue correctamente. También tienes que establecer el uso máximo de RAM. Ahora, haz click en el botón Load y espera a que el proceso de carga se complete:

Load StarCoder model

Cambia a la pestaña Chat y prueba la conversación con el modelo. Ten en cuenta que Starcoder no está pensado para diálogos como ChatGPT. Sin embargo, puede ser útil para comprobar si hay errores en el código y sugerir soluciones.

Run the StarCoder

Si quieres obtener un modelo de diálogo completo, puedes probar otros dos modelos: starchat-alpha y starchat-beta. Estos modelos fueron afinados para conducir un diálogo tal como lo hace ChatGPT. Los siguientes comandos ayudan a descargar y ejecutar estos modelos:

Para starchat-alpha:

git clone git@hf.co:HuggingFaceH4/starchat-alpha

Para starchat-beta:

git clone git@hf.co:HuggingFaceH4/starchat-beta

El procedimiento de carga es el mismo que el descrito anteriormente. Además, puedes encontrar la implementación en C++ de starcoder, que será eficaz para la inferencia en CPU.

Ver también:



Actualizado: 13.03.2025

Publicado: 17.01.2025