Implantar o LLM

Para implantar o LLM, primeiro crie uma instância do BM.GPU.MI300X.8 no OCI.

Em seguida, você pode usar o serviço OCI Block Volumes para armazenar dados, objetos e dados de modelo não estruturados. Siga as instruções para concluir cada tarefa:

  1. Criar uma Instância
  2. Criar um Volume em Blocos
  3. Anexar um Volume em Blocos a uma Instância
  4. Estabelecer Conexão com um Volume em Blocos
  5. Criar um Bucket do OCI Object Storage

Isso implantará um modelo do OCI Object Storage em um cluster do OKE em execução no OCI.

Criar um Cluster do OKE

Crie um cluster do OKE ou use uma console para configurar e criar um cluster do OKE com um nó gerenciado.

Para criar um cluster OKE, use o seguinte 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 usar a opção de console, siga estas etapas:

  1. Use este comando para a opção de console. Você pode criar um nodepool gerenciado depois que o cluster for criado usando o seguinte comando:
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. Depois de configurar o cluster e o acesso necessário ao cluster, instale o ROCm usando as seguintes instruções (exemplo para o 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. Adicione o usuário atual à renderização e ao vídeo:
    groupssudo dnf install rocm
  4. Instale o driver AMD GPU usando o seguinte 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

Usar Recursos vLLM em ROCm

Siga estas etapas para usar os recursos vLLM em ROCm:
  1. Para usar os recursos vLLM no ROCm, clone a imagem do Docker e crie o contêiner com o seguinte comando:
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. Depois de criar o contêiner, você pode testá-lo executando um modelo Hugging Face e substituindo <path/to/model> para apontar para o bucket do OCI Object Storage no qual você fez download usando o seguinte 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 as classes llm e SamplingParams para inferência off-line com um batch de prompts. Em seguida, você pode carregar e chamar o modelo.

Veja a seguir um exemplo de um modelo 70B do Meta Llama 3 que precisa de várias GPUs para serem executadas com paralelismo de tensor. O vLLM usa o algoritmo de paralelismo de tensor do Megatron-LM e o multiprocessamento do Python para gerenciar o runtime distribuído em nós únicos.

  1. Use o seguinte comando para atender à inferência do modelo LLM:
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. Use o seguinte comando para atender ao modelo:
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. Para consultar o modelo, use o seguinte 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
                    }'