Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Instalar llama 2, la IA de Meta Open Source y comercializable que planta cara a Chat GPT para usarla con Python y Docker (con acceso a GPU)

Tiempo de lectura: 3 minutos

Hola, hoy vamos a ver cómo podemos instalar y descargar llama 2, la IA de Meta que hace frente a chatgpt 3.5. Para ello he creado un Docker Compose que nos ayudará a generar el entorno.

Lo primero que tenemos que hacer, es ir a la página de llama 2 y solicitar una versión en su propia web https://ai.meta.com/llama/

Ahora nos pedirá una cuenta de correo, yo recomiendo una cuenta de universidad o de investigación para que la solicitud sea aprobada lo más rápido posible:

Ahora, nos llegará un correo con las instrucciones de instalación.

Para ello lo primero que vamos a hacer es descargar el entorno sin modelo de Llama 2, para ello vamos a su github y lo clonamos:

https://github.com/facebookresearch/llama

Una vez descargado, podemos instalarlo en nuestra máquina o usar un Docker Compose.

Yo voy a crear un Docker Compose con el que podéis instalar esta IA:

  • Creáis una carpeta llamada app en raíz del proyecto
  • Ahora creáis otra carpeta llamada Dockerfile dónde vamos a añadir nuestro archivo de configuración del entorno personalizado.

Creamos un archivo llamado container_python dentro de Dockerfile (Dockerfile/container_python) 7 añadimos este contenido:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# syntax=docker/dockerfile:1
#FROM python:3.11.3
FROM python:3.8
#WORKDIR /app
#-y es para cuando da error de yes
RUN apt-get update -y
RUN apt install python3-pip -y
RUN pip install --upgrade pip
# Ejecutar un comando que mantenga el contenedor en ejecución
CMD tail -f /dev/null
# syntax=docker/dockerfile:1 #FROM python:3.11.3 FROM python:3.8 #WORKDIR /app #-y es para cuando da error de yes RUN apt-get update -y RUN apt install python3-pip -y RUN pip install --upgrade pip # Ejecutar un comando que mantenga el contenedor en ejecución CMD tail -f /dev/null
# syntax=docker/dockerfile:1
#FROM python:3.11.3
FROM python:3.8

#WORKDIR /app

#-y es para cuando da error de yes 
RUN apt-get update -y
RUN apt install python3-pip -y
RUN pip install --upgrade pip
# Ejecutar un comando que mantenga el contenedor en ejecución
CMD tail -f /dev/null

Ahora creamos un archivo en raíz llamado docker-compose.yml

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
version: "3.1"
services:
llama_ia_python:
build:
context: ./Dockerfile
dockerfile: container_python
restart: unless-stopped
container_name: llama_ia_python
working_dir: /app
volumes:
- ./app:/app
version: "3.1" services: llama_ia_python: build: context: ./Dockerfile dockerfile: container_python restart: unless-stopped container_name: llama_ia_python working_dir: /app volumes: - ./app:/app
version: "3.1"

services:

  llama_ia_python:
      build:
        context: ./Dockerfile
        dockerfile: container_python
      restart: unless-stopped
      container_name: llama_ia_python
      working_dir: /app
      volumes:
        - ./app:/app

Con esto ya tenemos nuestro entorno creado.

Ahora tendremos que lanzar el contenedor, con el comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker compose up -d
docker compose up -d
docker compose up -d

Dejará el contenedor en segundo plano y podremos ejecutar nuestros comandos. Yo recomiendo acceder a la consola directamente desde Docker:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker exec -it llama_ia_python bash
docker exec -it llama_ia_python bash
docker exec -it llama_ia_python bash

Y nos abre la consola.

Lo primero que tenemos que hacer es navegar hasta el repositorio de llama:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd llama-main
cd llama-main
cd llama-main

Y ejecutar download.sh para descargar los modelos necesarios.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./download.sh
./download.sh
./download.sh

Ahora nos pedirá la URL de instalación, esta URL se recibe desde el email («When asked for your unique custom URL, please insert the following:«), la copiamos y la pegamos.

Y ahora nos preguntará que modelos queremos descargar, si queremos todos, pulsamos enter.

Empezará a descargar los modelos:

Una vez instalados, yo recomiendo guardarlos aparte, están en las carpetas:

Ya que solo deja descargar durante 24 horas y 5 veces.

Una vez bajados los modelos, podemos instalar llama:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip install -e .
pip install -e .
pip install -e .

Ahora, para comprobar que funciona, tendremos que utilizar este comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir llama-2-7b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4
torchrun --nproc_per_node 1 example_text_completion.py \ --ckpt_dir llama-2-7b/ \ --tokenizer_path tokenizer.model \ --max_seq_len 128 --max_batch_size 4
torchrun --nproc_per_node 1 example_text_completion.py \
    --ckpt_dir llama-2-7b/ \
    --tokenizer_path tokenizer.model \
    --max_seq_len 128 --max_batch_size 4

Con este puedes probar el chat:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
torchrun --nproc_per_node 1 example_chat_completion.py \
--ckpt_dir llama-2-7b-chat/ \
--tokenizer_path tokenizer.model \
--max_seq_len 512 --max_batch_size 4
torchrun --nproc_per_node 1 example_chat_completion.py \ --ckpt_dir llama-2-7b-chat/ \ --tokenizer_path tokenizer.model \ --max_seq_len 512 --max_batch_size 4
torchrun --nproc_per_node 1 example_chat_completion.py \
    --ckpt_dir llama-2-7b-chat/ \
    --tokenizer_path tokenizer.model \
    --max_seq_len 512 --max_batch_size 4

*Nota: si usas Docker, asegúrate de que puede acceder a la GPU, si no no funcionará este servicio. Si no funciona con Docker Compose, puedes intentar ejecutarlo en local.

Aquí podéis descargar más modelos compatibles con llama: https://huggingface.co/meta-llama/

https://huggingface.co/meta-llama/
0

Deja un comentario