Déployer le LLM

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 OCI Block Volumes 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éation d'une instance
  2. Création d'un volume de blocs
  3. Attachement d'un volume de blocs à une instance
  4. Connexion à un volume de blocs
  5. Création d'un bucket OCI Object Storage

Un modèle d'OCI Object Storage sera ainsi déployé vers un cluster OKE exécuté sur OCI.

Créer un cluster OKE

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

Pour créer un cluster 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 une instance nodepool gérée une fois le cluster créé à 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é le cluster et l'accès requis au cluster, installez ROCm en suivant les instructions suivantes (par exemple, 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 actuel au rendu et à la vidéo :
    groupssudo dnf install rocm
  4. Installez le pilote de 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 fonctionnalités vLLM dans ROCm

Pour utiliser les fonctionnalités vLLM dans ROCm, procédez comme suit :
  1. Pour utiliser les fonctionnalités 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 bucket OCI Object Storage à partir duquel vous avez téléchargé le conteneur à 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 LLM

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

Voici un exemple de modèle Meta Llama 3 70B qui a besoin de 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 traiter 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
                    }'