Desplegar el LLM

Para desplegar el LLM, primero debe crear una instancia de BM.GPU.MI300X.8 en OCI.

A continuación, puede utilizar el servicio OCI Block Volumes para almacenar datos, objetos y datos de modelo no estructurados. Siga las instrucciones para completar cada tarea:

  1. Creación de una instancia
  2. Crear un Volumen en Bloque
  3. Asociar un Volumen en Bloque a una Instancia
  4. Conexión a un volumen en bloque
  5. Creación de un cubo de OCI Object Storage

De esta forma, se desplegará un modelo de OCI Object Storage en un cluster de OKE que se ejecute en OCI.

Creación de un clúster de OKE

Cree un cluster de OKE o utilice una consola para configurar y crear un cluster de OKE con un nodo gestionado.

Para crear un cluster OKE, utilice el siguiente comando:

oci ce cluster create --compartment-id ocid1.compartment.oc1..aaaaaaaay______t6q
      --kubernetes-version v1.24.1 --name amd-mi300x-ai-cluster --vcn-id
      ocid1.vcn.oc1.iad.aaaaaae___yja

Para utilizar la opción de consola, siga estos pasos:

  1. Utilice este comando para la opción de consola. Puede crear un nodepool gestionado una vez que se haya creado el cluster mediante el siguiente comando:
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. Después de configurar el cluster y el acceso necesario al cluster, instale ROCm siguiendo las siguientes instrucciones (por ejemplo, para Oracle Linux):
    sudo dnf install https://repo.radeon.com/amdgpu-install/6.4/el/9.5/amdgpu-install-6.4.60400-1.el9.noarch.rpm
    sudo dnf clean all
    wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    sudo rpm -ivh epel-release-latest-9.noarch.rpm
    sudo dnf install dnf-plugin-config-manager
    sudo crb enable
    sudo dnf install python3-setuptools python3-wheel
    sudo usermod -a -G render,video $LOGNAME
  3. Agregue el usuario actual al render y video:
    groupssudo dnf install rocm
  4. Instale el controlador de GPU de AMD con el siguiente comando:
    sudo dnf install https://repo.radeon.com/amdgpu-install/6.4/el/9.5/amdgpu-install-6.4.60400-1.el9.noarch.rpm
    sudo dnf clean all
    sudo dnf install "kernel-uek-devel-$(uname -r)"
    sudo dnf install amdgpu-dkms

Utilizar las funciones de vLLM en ROCm

Siga estos pasos para utilizar las funciones de vLLM en ROCm:
  1. Para utilizar las funciones de vLLM en ROCm, clone la imagen de Docker y cree el contenedor con el siguiente comando:
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. Después de crear el contenedor, puede probarlo ejecutando un modelo Hugging Face y sustituyendo <path/to/model> para que apunte al cubo de OCI Object Storage del que ha descargado el uso del siguiente comando:
    docker run -it --network=host --group-add=video --ipc=host --cap-
    add=SYS_PTRACE --security-opt seccomp=unconfined --device /dev/kfd --device /dev/dri -v <path/to/model>:/app/models vllm-rocm

Servir LLM

Importe las clases llm y SamplingParams para la inferencia fuera de línea con un lote de peticiones de datos. A continuación, puede cargar y llamar al modelo.

A continuación se muestra un ejemplo de un modelo 70B de Meta Llama 3 que necesita varias GPU para ejecutarse con paralelismo de tensor. vLLM utiliza el algoritmo de paralelismo de tensor de Megatron-LM y el multiprocesamiento de Python para gestionar el tiempo de ejecución distribuido en nodos únicos.

  1. Utilice el siguiente comando para servir la inferencia del modelo de LLM:
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. Utilice el siguiente comando para servir el modelo:
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. Para consultar el modelo, utilice el siguiente comando curl:
    curl http://localhost:8000/v1/completions \
                -H "Content-Type: application/json" \
                -d '{
                    "model": "Qwen/Qwen2-7B-Instruct",
                    "prompt": "Write a haiku about artificial intelligence",
                    "max_tokens": 128,
                    "top_p": 0.95,
                    "top_k": 20,
                    "temperature": 0.8
                    }'