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'instance | GPU | Mémoire GPU (GiB) | vCPUs | Mémoire (GiB) | Stockage (GB) | Bande passante réseau (Gbps) | Bande passante EBS (Gbps) |
|---|---|---|---|---|---|---|---|
| g6e.xlarge | 1 | 48 | 4 | 32 | 250 | Jusqu'Ă 20 | Jusqu'Ă 5 |
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 :
- Exécutez la commande
lsblkpour lister tous les périphériques de bloc et identifier où se trouve le volume non monté.
lsblk
- Formatez le volume en utilisant la commande mkfs avec le système de fichiers XFS :
sudo mkfs -t xfs /dev/nvme1n1
- 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
- Utilisez la commande
lsblk -fpour 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 :
- Modifiez le fichier /etc/fstab :
sudo vim /etc/fstab
- 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 :​
- Docker
- Podman
Pour définir l'emplacement des images Docker :
sudo ln -s /home/ubuntu/.local /var/lib/docker
Pour définir l'emplacement des images Podman :
- Créez le répertoire de configuration et ouvrez le fichier storage.conf :
mkdir -p ~/.config/containers/
vim ~/.config/containers/storage.conf
- Ajoutez le contenu suivant au fichier :
[storage]
driver = "overlay"
runroot = "/run/user/1000"
graphroot = "/home/ubuntu/.local/share/containers/storage"
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.
- Allez sur NVIDIA Driver Finder, entrez le modèle de GPU, dans notre cas
L40Spour sélectionner la bonne distribution dans la liste déroulante.
- Cliquez sur le bouton
Find, Nvidia vous présentera la version recommandée du pilote à télécharger, nous avons550.127.08pour le modèleL40S.
- 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%] [###########################################.........]
- 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
- 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 :
- Docker
- Podman
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
Etapes pour Podman:​
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 podman --no_documentation
2. Démarrer le bundle QAnswer en utilisant podman-compose :​
Exécutez la commande podman :
QANSWER_KEY=<qanswerKey-we-provide> \
VERSION=main podman-compose up -d