Distribuisci LLM

Per distribuire l'LLM, devi prima creare un'istanza BM.GPU.MI300X.8 in OCI.

Quindi puoi utilizzare il servizio Volumi a blocchi OCI per memorizzare dati, oggetti e dati di modelli non strutturati. Seguire le istruzioni per completare ogni attività:

  1. Creare un'istanza
  2. Creare un Volume a Blocchi
  3. Collega un volume a blocchi a un'istanza
  4. Connettersi a un volume a blocchi
  5. Crea un bucket di storage degli oggetti OCI

In questo modo verrà distribuito un modello dallo storage degli oggetti OCI a un cluster OKE in esecuzione su OCI.

Creare un cluster OKE

Creare un cluster OKE o utilizzare una console per configurare e creare un cluster OKE con un nodo gestito.

Per creare un cluster OKE, utilizzare il comando seguente:

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

Per utilizzare l'opzione della console, effettuare le operazioni riportate di seguito.

  1. Utilizzare questo comando per l'opzione della console. È possibile creare un nodepool gestito una volta creato il cluster utilizzando il comando seguente:
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. Dopo aver configurato il cluster e aver effettuato l'accesso necessario al cluster, installare ROCm utilizzando le istruzioni riportate di seguito (ad esempio, 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. Aggiungere l'utente corrente al rendering e al video:
    groupssudo dnf install rocm
  4. Installare il driver GPU AMD utilizzando il seguente 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

Utilizzare le funzioni vLLM in ROCm

Per utilizzare le funzioni vLLM in ROCm, effettuare le operazioni riportate di seguito.
  1. Per utilizzare le funzioni vLLM in ROCm, duplicare l'immagine Docker e creare il contenitore con il comando seguente:
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. Dopo aver creato il contenitore, è possibile eseguirne il test eseguendo un modello Hugging Face e sostituendo <path/to/model> per puntare al bucket OCI Object Storage da cui è stato scaricato utilizzando il comando seguente:
    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

Fornisci LLM

Importare le classi llm e SamplingParams per l'inferenza offline con un batch di prompt. È quindi possibile caricare e chiamare il modello.

Di seguito è riportato un esempio di modello 70B Meta Llama 3 che richiede l'esecuzione di più GPU con parallelismo del tensore. vLLM utilizza l'algoritmo di parallelismo del tensore di Megatron-LM e il multiprocessing di Python per gestire il runtime distribuito su singoli nodi.

  1. Utilizzare il comando seguente per servire l'inferenza del modello LLM:
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. Utilizzare il comando seguente per servire il modello:
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. Per eseguire una query sul modello, utilizzare il comando curl seguente:
    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
                    }'