Déployer le GML

Pour déployer le LLM, vous devez d'abord créer une instance BM.GPU.MI300X.8 dans OCI.

Vous pouvez ensuite utiliser le service Volumes par blocs pour OCI pour stocker des données, des objets et des données de modèle non structurées. Suivez les instructions pour effectuer chaque tâche :

  1. Créer une instance
  2. Créer un volume par blocs
  3. Attacher un volume par blocs à une instance
  4. Se connecter à un volume par blocs
  5. Créer un seau de stockage d'objets OCI

Un modèle du service Stockage d'objets OCI sera déployé dans une grappe OKE s'exécutant sur OCI.

Créer une grappe OKE

Créez une grappe OKE ou utilisez une console pour configurer et créer une grappe OKE avec un noeud géré.

Pour créer une grappe OKE, utilisez la commande suivante :

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

Pour utiliser l'option de console, procédez comme suit :

  1. Utilisez cette commande pour l'option de console. Vous pouvez créer un fichier nodepool géré une fois la grappe créée à l'aide de la commande suivante :
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. Après avoir configuré la grappe et l'accès requis à la grappe, installez ROCm en suivant les instructions suivantes (exemple pour 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. Ajoutez l'utilisateur courant au rendu et à la vidéo :
    groupssudo dnf install rocm
  4. Installez le pilote GPU AMD à l'aide de la commande suivante :
    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

Utiliser les fonctions vLLM dans ROCm

Suivez ces étapes pour utiliser les fonctions vLLM dans ROCm :
  1. Pour utiliser les fonctions vLLM dans ROCm, clonez l'image Docker et créez le conteneur à l'aide de la commande suivante :
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. Après avoir créé le conteneur, vous pouvez le tester en exécutant un modèle Hugging Face et en remplaçant <path/to/model> pour pointer vers le seau de stockage d'objets OCI à partir duquel vous avez téléchargé le contenu à l'aide de la commande suivante :
    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 le GML

Importez les classes llm et SamplingParams pour l'inférence hors ligne à l'aide d'un lot d'invites. Vous pouvez ensuite charger et appeler le modèle.

Voici un exemple de modèle Meta Llama 3 70B qui nécessite plusieurs GPU pour s'exécuter avec un parallélisme de tenseur. vLLM utilise l'algorithme de parallélisme de tenseur de Megatron-LM et le multitraitement de Python pour gérer l'exécution distribuée sur des noeuds uniques.

  1. Utilisez la commande suivante pour servir l'inférence de modèle LLM :
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. Utilisez la commande suivante pour servir le modèle :
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. Pour interroger le modèle, utilisez la commande curl suivante :
    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
                    }'