Installation de QAnswer sur une instance AWS EC2

Obtenir une instance

Démarrez une instance EC2 avec les ressources appropriées.

Ce guide utilise Ubuntu Server 24.04 LTS (HVM) avec l'instance g6e.xlarge .

AWS OS selectionAWS instance type
Taille de l'instanceGPUMémoire GPU (Gio)vCPUsMémoire (Gio)Stockage (Go)Bande passante réseau (Gbps)Bande passante EBS (Gbps)
g6e.xlarge148432250Up to 20Up to 5
Avertissement

Nous provisionnons un total de 282 Go (250 Go + 32 Go) de stockage pour l'instance g6e.xlarge , composé d'un volume SSD de 32 Go combiné au SSH original de 250 Go.

AWS volume

Montage du SSD de 250 Go pour g6e.xlarge

Sur les instances g6e.xlarge , le SSD de 250 Go n'est pas monté par défaut. Montez-le manuellement pour permettre le téléchargement des images Docker.

Étapes pour monter le SSD :

  • 1. Exécutez lsblk pour lister tous les périphériques de bloc et identifier le volume non monté.
    lsblk
  • 2. Formatez le volume en utilisant la commande mkfs avec le système de fichiers XFS :
    sudo mkfs -t xfs /dev/nvme1n1
  • 3. Créez un point de montage et montez le volume :
    sudo mkdir /home/$USER/.local
    sudo mount /dev/nvme1n1 /home/$USER/.local
  • 4. Exécutez lsblk -f pour afficher l'UUID du volume monté. Notez cette valeur pour les étapes suivantes (ex. e4bc66e3-c793-4b54-ad00-e5a1e11c80ef).
    lsblk -f

Rendre le montage permanent :

  • 1. Modifiez le fichier /etc/fstab :
    sudo vim /etc/fstab
  • 2. Ajoutez l'entrée suivante à la fin du fichier en remplaçant l'UUID et le nom d'utilisateur par les valeurs réelles :
    UUID=e4bc66e3-c793-4b54-ad00-e5a1e11c80ef  /home/ubuntu/.local  xfs  defaults,nofail  0  0

Rendre le volume monté accessible par $USER

sudo chown -R $USER:$USER /home/$USER/.local

Vérifiez que le volume est monté sans problèmes avec df -h

La sortie ressemblera à :

Filesystem       Size  Used Avail Use% Mounted on
/dev/root         30G  1.7G   29G   6% /
tmpfs             16G     0   16G   0% /dev/shm
tmpfs            6.2G  1.1M  6.2G   1% /run
tmpfs            5.0M     0  5.0M   0% /run/lock
efivarfs         128K  3.6K  120K   3% /sys/firmware/efi/efivars
/dev/nvme0n1p16  881M   76M  744M  10% /boot
/dev/nvme0n1p15  105M  6.1M   99M   6% /boot/efi
tmpfs            3.1G   12K  3.1G   1% /run/user/1000
/dev/nvme1n1     233G  4.5G  229G   2% /home/ubuntu/.local

Configuration du stockage du moteur de conteneurs :

Pour définir l'emplacement des images Docker :

sudo ln -s /home/ubuntu/.local /var/lib/docker

Installer le pilote NVIDIA et NVIDIA Container Toolkit

Vérifiez que le pilote NVIDIA est installé en exécutant nvidia-smi. S'il n'est pas installé, installez le pilote avant d'utiliser le GPU.

  • 1. Accédez à NVIDIA Driver Finder et entrez le modèle de GPU (L40S) pour sélectionner la distribution correcte dans la liste déroulante.NVIDIA dropdown list
  • 2. Cliquez sur Rechercher. NVIDIA affiche la version du pilote recommandée — pour le L40S c'est 550.127.08.NVIDIA driver version
  • 3. Nous pouvons donc télécharger le nvidia-driver-550 (550.127.08) via :
    sudo apt update
    
    sudo apt install nvidia-driver-550
    # may take few minutes to build
    # Progress: [ 92%] [###########################################.........]
  • 4. Installez nvidia-container-toolkit pour activer l'accès au GPU dans les conteneurs. Consultez la documentation officielle pour référence.
    # Configure production repo:
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
    # Update the packages list from the repository:
    sudo apt-get update
    
    # Install the NVIDIA Container Toolkit packages:
    sudo apt-get install -y nvidia-container-toolkit
    
    # Generate nvidia-.yaml (optional for docker, necessary for podman)
    sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
    nvidia-ctk cdi list
  • 5. Après le redémarrage, confirmez que le pilote fonctionne en exécutant nvidia-smi:nvidia-smi output

Installer un moteur de conteneurs

Installez soit Docker ou Podman comme moteur de conteneurs. Suivez les instructions respectives ci-dessous :

Installer Docker

Suivez le guide officiel d'installation de Docker pour installer Docker.

Installer Podman (alternative à Docker)

Suivez le guide officiel d'installation de Podman pour installer Podman.

Installer podman-compose

Installez podman-compose pour docker-compose-comme fonctionnalité. Consultez la documentation officielle de podman-compose pour les étapes d'installation.

Exemple de commande d'installation :

sudo apt install -y podman podman-compose

Vérifiez que Podman et podman-compose fonctionnent :

podman --version
podman-compose --version

Résolvez le problème des conteneurs sans root dans Podman (ignorez si vous êtes root) :

sudo loginctl enable-linger $USER

Installer et déployer QAnswer

QAnswer est fourni sous forme de fichier docker-compose. Clonez le dépôt :

git clone https://gitlab.the-qa-company.com/qanswer-app/qanswer-bundle.git

Accédez au répertoire qanswer-bundle puis suivez les étapes pour votre moteur de conteneurs :

Étapes pour Docker :

1. Exécutez le script de configuration pour télécharger toutes les images de conteneurs requises. Utilisez les identifiants fournis :

QANSWER_REGISTRY_USER=<user-we-provide> \
QANSWER_REGISTRY_PASSWORD=<password-we-provide> \
VERSION=main source ./setup.sh --container_runtime docker --no_documentation

2. Démarrez le bundle QAnswer avec docker compose:

Exécutez la commande docker :

QANSWER_KEY=<qanswerKey-we-provide> \
VERSION=main docker compose up -d