← Blog
December 17, 2024

Una guía paso a paso sobre cómo implementar Llama 3.1 8B en Compute con Hivenet

Una guía de configuración rápida y sencilla para implementar Llama 3.1 8B en Hivenet Compute. Ya sea que necesites hacer inferencias de alto rendimiento o ampliar la longitud del contexto, esta guía te explica cómo instalar las dependencias, ofrecer el modelo y exponer los puntos finales compatibles con OpenAI.

🚀 ¡Empieza ahora y descubre todo el potencial de Llama 3.1 en Hivenet Compute!

Requerimientos

  • 1 Computación X-Small instancia con Ubuntu v24.04 LTS modelo
  • Símbolo Hugging Face con acceso a Llama 3.1

Dependencias

Asegúrese de que estén instaladas las siguientes dependencias:

  • pip
  • miniconda
  • volm

Instalación de dependencias

Para evitar la pérdida de los paquetes instalados, todas las dependencias deben instalarse dentro del /home/ubuntu/espacio de trabajo directorio.

Conéctate a tu instancia de Compute

Primero, establece una conexión SSH con tu instancia de Compute:

ssh -i ~/.ssh/id_rsa -o «proxyCommand=SSH bastion@ssh.hivecompute.ai %h» ubuntu@d348351b-a04c-4b98-9d1a-2e474623395b.ssh.hivecompute.ai

Instalar miniconda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O install_miniconda.sh
bash install_miniconda.sh -b -p /home/ubuntu/espacio de trabajo/opt/conda
export path=/home/ubuntu/workspace/opt/conda/bin: $PATH
inicio conda

Desconecte y vuelva a conectar (CTRL+D) para que los cambios surtan efecto.

Instalar vllm

comando pip install vllm

Sirviendo Llama 3.1 8B

Los modelos Llama 3.1 tienen una longitud de contexto máxima de 128 000 fichas. En un RTX 4090 (24 GB DE VRAM):

  • 16 GB se utiliza para los parámetros del modelo (precisión BF16)
  • 8 GB está disponible para la caché KV
  • Esto permite hasta 59 000 fichas en la longitud del contexto
  • Para longitudes de contexto más largas, utilice Cuantificación FP8 o un instancia de cómpute más grande

Funcionando con total precisión (59 000 fichas)

export HF_TOKEN= <YOUR_HUGGING_FACE_TOKEN>nohup vllm serve Meta-llama/llama-3.1-8B-instruct --download-dir /home/ubuntu/workspace --gpu-memory-utilization 1 --max-model-len 59000 &

Supervise los registros para confirmar que los puntos finales están disponibles:

tail -f nohup.out

Busque un resultado similar al siguiente:
INFORMACIÓN 12-06 11:19:23 launcher.py:19] Las rutas disponibles son:
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /openapi.json, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /docs, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /docs/oauth2-redirect, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /redoc, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /health, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /tokenize, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /detokenize, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/models, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /version, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/chat/completions, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/completions, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/embeddings, métodos: POST
INFORMACIÓN: Se inició el proceso del servidor [93203]
INFORMACIÓN: Esperando el inicio de la aplicación.
INFORMACIÓN: Se ha completado el inicio de la aplicación.
INFORMACIÓN: Uvicorn se ejecuta en un socket ('0.0.0.0', 8000) (presiona CTRL+C para salir)

  1. Probar el modelo localmente

curl -X POST "http://localhost:8000/v1/chat/completions" -H «Tipo de contenido: application/json» --data '{"model»: «Meta-llama/llama-3.1-8b-Instruct», "messages»: [{"role»: «user», «content»: «¿qué es la IA?"}] , "max_tokens»: 50} '

{"id» :"chat-c31b1784c32646d2ba146e72352b6fae», "object» :"chat.completion», «creado» :1733491175, "model» :"Meta-llama/llama-3.1-8b-instruct», "choices»: [{"index» :0, "message»: {"role» :"assistant», "content» :"La inteligencia artificial (IA) se refiere a la simulación de la inteligencia humana en máquinas que están programadas para pensar y aprender como los humanos. El término también se puede aplicar a cualquier máquina que muestre rasgos asociados con la mente humana, como el aprendizaje y la resolución de problemas. \n\nAI», "tool_calls»: []}, "logprobs» :null, "finish_reason» :"length», "stop_reason» :null}], "usage»: {"prompt_tokens» :39, "total_tokens» :89, "completion_tokens» :50}, "prompt_logprobs» :null}

Funciona con precisión FP8 (128 000 fichas)

Para usar el longitud total de contexto de 128 K, ejecuta:

exportar HF_TOKEN= <YOUR_HUGGING_FACE_TOKEN>
nohup vllm serve Meta-llama/llama-3.1-8b-instruct --download-dir /home/ubuntu/workspace --gpu-memory-utilization 1 --max-model-len 12800 --dtype half --quantization fp8 --kv-cache-dtype fp8 &

Supervise los registros y espere hasta que los puntos finales de openai estén expuestos:

tail -f nohup.out
INFORMACIÓN 12-06 11:19:23 launcher.py:19] Las rutas disponibles son:
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /openapi.json, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /docs, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /docs/oauth2-redirect, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /redoc, Métodos: GET, HEAD
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /health, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /tokenize, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /detokenize, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/models, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /version, Métodos: GET
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/chat/completions, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/completions, Métodos: POST
INFORMACIÓN 12-06 11:19:23 launcher.py:27] Ruta: /v1/embeddings, métodos: POST
INFORMACIÓN: Se inició el proceso del servidor [93203]
INFORMACIÓN: Esperando el inicio de la aplicación.
INFORMACIÓN: Se ha completado el inicio de la aplicación.
INFORMACIÓN: Uvicorn se ejecuta en un socket ('0.0.0.0', 8000) (presiona CTRL+C para salir)

Probar el modelo localmente

Enviar una solicitud de prueba:

curl -X POST "http://localhost:8000/v1/chat/completions" -H «Tipo de contenido: application/json» --data '{"model»: «Meta-llama/llama-3.1-8b-Instruct», "messages»: [{"role»: «user», «content»: «¿qué es la IA?"}] , "max_tokens»: 50} '

Respuesta esperada:

{"id» :"chat-67dfc8a8c6904642a27fe8c889a6455d», "object» :"chat.completion», «creado» :1733491601, "model» :"Meta-llama/llama-3.1-8B-instruct», "choices»: [{"index» :0, "message»: {"role» :"assistant», "content» :"La inteligencia artificial (IA) es un campo amplio de la informática que se centra en la creación de máquinas inteligentes que puedan realizar tareas que normalmente requieren inteligencia humana. La IA implica el desarrollo de algoritmos, modelos estadísticos y técnicas de aprendizaje automático que permitan a los ordenadores pensar, aprender», "tool_calls»: []}, "logprobs» :null, "finish_reason» :"length», "stop_reason» :null}], "usage»: {"prompt_tokens» :39, "total_tokens» :89, "completion_tokens» :50}, "prompt_logprobs» :nulo}

Exponer puntos finales compatibles con OpenAI

Para permitir el acceso externo, tiene dos opciones:

  1. FRP (si tiene un servidor/máquina virtual de acceso público)
  2. Ngrok (si no tienes una instancia pública)

Uso de Ngrok para el acceso externo

  • Crea una cuenta a ngrok
  • Iniciar sesión y consigue tu token de autenticación
  • Descargar e instalar Ngrok

wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
sudo tar -xvzf ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin

  • Añade tu token


add-authtoken de configuración de ngrok <YOUR_NGROCK_TOKEN>

  • Reclama un dominio estático desde tu cuenta de ngrok
  • Iniciar Ngrok

<YOUR_NGROK_STATIC_DOMAIN>nohup ngrok http -url= 800 &

Probar el acceso externo

<YOUR_NGROK_STATIC_DOMAIN>curl https:///v1/models
{"object» :"list», "data»: [{"id» :"Meta-llama/llama-3.1-8b-instruct», "object» :"model», "created» :1733495850, "owned_by» :"vllm», "root» :"Meta-llama/llama-3.1-8b-instruct», "parent» :null, "max_model_instruct» len» :128000, «permission»: [{"id» :"modelperm-ecfa0d0e5dd04d4c973e9fc134d00d98", "object» :"model_permission», "created» :1733495850, "allow_create_engine» :false, "allow_sampling» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :true, "allow_logprobs» :_search_indices» :false, "allow_view» :true, "allow_fine_tuning» :false, "organization» :"*», "group» :null, "is_blocking» :false}]}}

curl -X POST «https://<YOUR_NGROK_STATIC_DOMAIN>/v1/chat/completions» -H «Tipo de contenido: application/json» --data '{"model»: «Meta-llama/llama-3.1-8b-Instruct», "messages»: [{"role»: «user», «content»: «¿qué es la IA?"}] , "max_tokens»: 50} '
{"id» :"chat-8f35de4b78ca4710b7d6badd26fc6439", "object» :"chat.completion», «creado» :1733495952, "model» :"Meta-llama/llama-3.1-8B-instruct», "choices»: [{"index» :0, "message»: {"role» :"assistant», "content» :"La IA, o Inteligencia Artificial, se refiere a la simulación de la inteligencia humana en máquinas que están programadas para pensar y aprender como los humanos. El término puede referirse a cualquier máquina que muestre rasgos asociados con la mente humana, como el aprendizaje, la resolución de problemas, la toma de decisiones,», "tool_calls»: []}, "logprobs» :null, "finish_reason» :"length», "stop_reason» :null}], "usage»: {"prompt_tokens» :39, "total_tokens» :89, "completion_tokens» :39, "total_tokens» :89, "completion_tokens» ::50}, "prompt_logprobs» :nulo}

¡Eso es! Ahora tienes Llama 3.1 8B ejecutándose en Compute con terminales compatibles con OpenAI. Si necesitas más longitud del contexto, modifica la configuración de precisión o actualiza tu instancia.

🚀 ¿Necesitas ayuda o quieres explorar más? ¡Inicie una instancia hoy mismo y lleve su implementación de IA al siguiente nivel!