LLM bereitstellen

Um das LLM bereitzustellen, müssen Sie zuerst eine BM.GPU.MI300X.8-Instanz in OCI erstellen.

Anschließend können Sie mit dem OCI Block Volumes-Service Daten, Objekte und unstrukturierte Modelldaten speichern. Befolgen Sie die Anweisungen zum Abschließen der einzelnen Aufgaben:

  1. Instanz erstellen
  2. Block-Volumes erstellen
  3. Block-Volumes an eine Instanz anhängen
  4. Mit einem Block-Volume verbinden
  5. OCI Object Storage-Bucket erstellen

Dadurch wird ein Modell aus OCI Object Storage in einem OKE-Cluster bereitgestellt, das auf OCI ausgeführt wird.

OKE-Cluster erstellen

Erstellen Sie ein OKE-Cluster oder verwenden Sie eine Konsole, um ein OKE-Cluster mit einem verwalteten Knoten zu konfigurieren und zu erstellen.

Um ein OKE-Cluster zu erstellen, verwenden Sie den folgenden Befehl:

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

So verwenden Sie die Konsolenoption:

  1. Verwenden Sie diesen Befehl für die Konsolenoption. Sie können eine verwaltete nodepool erstellen, nachdem das Cluster mit dem folgenden Befehl erstellt wurde:
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. Nachdem Sie das Cluster eingerichtet und den erforderlichen Zugriff auf das Cluster erteilt haben, installieren Sie ROCm mit den folgenden Anweisungen (Beispiel für 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. Fügen Sie den aktuellen Benutzer zum Rendering und Video hinzu:
    groupssudo dnf install rocm
  4. Installieren Sie den AMD-GPU-Treiber mit dem folgenden Befehl:
    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

vLLM-Funktionen in ROCm verwenden

Führen Sie die folgenden Schritte aus, um vLLM-Features in ROCm zu verwenden:
  1. Um die vLLM-Features in ROCm zu verwenden, klonen Sie das Docker-Image, und erstellen Sie den Container mit dem folgenden Befehl:
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. Nachdem Sie den Container erstellt haben, können Sie ihn testen, indem Sie ein Hugging Face-Modell ausführen und <path/to/model> ersetzen, um auf den OCI Object Storage-Bucket zu verweisen, von dem Sie den folgenden Befehl heruntergeladen haben:
    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

LLM bedienen

Importieren Sie die Klassen llm und SamplingParams für die Offline-Inferenzierung mit einem Batch von Prompts. Anschließend können Sie das Modell laden und aufrufen.

Im Folgenden finden Sie ein Beispiel für ein Meta Llama 3 70B-Modell, für das mehrere GPUs mit Tensor-Parallelität ausgeführt werden müssen. vLLM verwendet den Tensor-Parallelitätsalgorithmus von Megatron-LM und das Multiprozessing von Python, um die verteilte Laufzeit auf einzelnen Knoten zu verwalten.

  1. Verwenden Sie den folgenden Befehl, um die LLM-Modellinferenz zu bedienen:
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. Verwenden Sie den folgenden Befehl, um das Modell zu bedienen:
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. Um das Modell abzufragen, verwenden Sie den folgenden curl-Befehl:
    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
                    }'