Aller au contenu principal

Installer QAnswer sur l'instance AWS EC2

Obtenir une instance​

La première étape consiste à démarrer une instance EC2 avec les ressources appropriées.

Pour le guide ci-dessous, nous supposerons que vous avez choisi d'utiliser Ubuntu Server 24.04 LTS (HVM) avec l'instance g6e.xlarge.

Taille de l'instanceGPUMémoire GPU (GiB)vCPUsMémoire (GiB)Stockage (GB)Bande passante réseau (Gbps)Bande passante EBS (Gbps)
g6e.xlarge148432250Jusqu'Ă  20Jusqu'Ă  5
attention

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

Montage du SSD de 250 Go pour l'instance g6e.xlarge​

Pour les instances AWS de type g6e.xlarge, le SSD de 250 Go n'est pas monté par défaut sous /dev/nvme0n1. Cela nécessite un montage manuel pour permettre le téléchargement des images Docker.

Étapes pour monter le SSD :

  1. Exécutez la commande lsblk pour lister tous les périphériques de bloc et identifier où se trouve le volume non monté.
lsblk
  1. Formatez le volume en utilisant la commande mkfs avec le système de fichiers XFS :
sudo mkfs -t xfs /dev/nvme1n1
  1. Créez un répertoire pour servir de point de montage et montez le volume dans le répertoire que vous venez de créer.
sudo mkdir /home/$USER/.local
sudo mount /dev/nvme1n1 /home/$USER/.local
  1. Utilisez la commande lsblk -f pour afficher l'UUID du volume monté. Notez cette valeur pour les étapes suivantes (par exemple, e4bc66e3-c793-4b54-ad00-e5a1e11c80ef).
lsblk -f

Rendre le montage permanent :

  1. Modifiez le fichier /etc/fstab :
sudo vim /etc/fstab
  1. Ajoutez l'entrée suivante à la fin du fichier, en remplaçant UUID et username par vos 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 soit monté sans problèmes avec df -h

Vous devriez voir une sortie similaire Ă  celle-ci:

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

Configurer le stockage du runtime de conteneur :​

Pour définir l'emplacement des images Docker :

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

Installer le pilote NVIDIA et le kit d'outils de conteneur NVIDIA​

Si le serveur n'a pas de pilote nvidia installé (vérifiez en utilisant la commande nvidia-smi), nous devons d'abord installer le pilote afin d'utiliser le GPU sur la machine.

  1. Allez sur NVIDIA Driver Finder, entrez le modèle de GPU, dans notre cas L40S pour sélectionner la bonne distribution dans la liste déroulante.
  1. Cliquez sur le bouton Find, Nvidia vous présentera la version recommandée du pilote à télécharger, nous avons 550.127.08 pour le modèle L40S.
  1. 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%] [###########################################.........]
  1. Installez le nvidia-container-toolkit, pour garantir que le GPU soit utilisé dans le conteneur, consultez la documentation pour obtenir de l'aide si nécessaire.
# 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
  1. Après le redémarrage, nous devrions être en mesure de voir la sortie similaire via la commande nvidia-smi :

Installer un Runtime de Conteneur​

En fonction de vos préférences, vous pouvez choisir d'installer soit Docker soit Podman comme runtime de conteneur. Suivez les instructions respectives ci-dessous :

Installer Docker​

Si Docker n'est pas encore installé sur votre machine, suivez le guide d'installation officiel de Docker pour le configurer.

Installer Podman (Alternative à Docker)​

Si Podman n'est pas encore installé sur votre machine, vous pouvez l'installer en suivant le guide d'installation officiel de Podman.

Installer podman-compose​

Pour utiliser Podman avec une fonctionnalité similaire à docker-compose, vous devrez installer podman-compose. Consultez la documentation officielle de podman-compose pour des étapes d'installation détaillées.

Commande d'installation exemple :

sudo apt install -y podman podman-compose

Une fois installé, vérifiez que Podman et podman-compose sont correctement configurés en exécutant :

podman --version
podman-compose --version

Résoudre le problème en attente des conteneurs sans privilèges dans podman, à ignorer si vous utilisez root.

sudo loginctl enable-linger $USER

Installer & éployer QAnswer​

QAnswer est fourni sous forme de fichier docker-compose. Vous pouvez cloner le dépôt en exécutant la commande suivante

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

Pour déployer QAnswer, accédez au répertoire qanswer-bundle. En fonction de votre runtime de conteneur (Docker ou Podman), suivez les étapes ci-dessous :

Etapes pour Docker:​

1. Exécutez notre script de configuration, il téléchargera toutes les images de conteneur dont nous avons besoin. Vous devez y mettre les identifiants que nous vous fournirons :​

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

2. Lancer le bundle QAnswer en utilisant docker compose :​

Exécutez la commande docker :

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

Join Us

We value your feedback and are always here to assist you.
If you need additionnal help, feel free to join our Discord server. We look forward to hearing from you!

Discord Community Server