QAnswer auf einer AWS EC2-Instanz installieren

Eine Instanz beschaffen

Starten Sie eine EC2-Instanz mit den entsprechenden Ressourcen.

Dieser Leitfaden verwendet Ubuntu Server 24.04 LTS (HVM) mit der g6e.xlarge Instanz.

AWS OS selectionAWS instance type
InstanzgrößeGPUGPU-Speicher (GiB)vCPUsSpeicher (GiB)Speicher (GB)Netzwerkbandbreite (Gbps)EBS-Bandbreite (Gbps)
g6e.xlarge148432250Up to 20Up to 5
Warnung

Wir stellen insgesamt 282 GB (250 GB + 32 GB) Speicher für die g6e.xlarge Instanz bereit, bestehend aus einem 32-GB-SSD-Volume kombiniert mit der ursprünglichen 250-GB-SSH.

AWS volume

Handhabung der 250-GB-SSD-Einbindung für g6e.xlarge

Bei g6e.xlarge Instanzen ist die 250-GB-SSD standardmäßig nicht eingebunden. Binden Sie sie manuell ein, um Docker-Image-Downloads zu ermöglichen.

Schritte zur Einbindung der SSD:

  • 1. Führen Sie lsblk aus, um alle Block-Geräte aufzulisten und das nicht eingebundene Volume zu identifizieren.
    lsblk
  • 2. Das Volume mit dem mkfs-Befehl und dem XFS-Dateisystem formatieren:
    sudo mkfs -t xfs /dev/nvme1n1
  • 3. Einen Einbindungspunkt-Ordner erstellen und das Volume einbinden:
    sudo mkdir /home/$USER/.local
    sudo mount /dev/nvme1n1 /home/$USER/.local
  • 4. Führen Sie lsblk -f aus, um die UUID des eingebundenen Volumes anzuzeigen.
    lsblk -f

Die Einbindung dauerhaft machen:

  • 1. Die /etc/fstab-Datei bearbeiten:
    sudo vim /etc/fstab
  • 2. Den folgenden Eintrag am Ende der Datei hinzufügen und UUID sowie Benutzername ersetzen:
    UUID=e4bc66e3-c793-4b54-ad00-e5a1e11c80ef  /home/ubuntu/.local  xfs  defaults,nofail  0  0

Das eingebundene Volume für $USER zugänglich machen

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

Volume-Einbindung ohne Probleme prüfen mit df -h

Die Ausgabe sieht ähnlich aus wie:

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

Container-Laufzeit-Speicher konfigurieren:

Speicherort für Docker-Images festlegen:

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

NVIDIA-Treiber und NVIDIA Container Toolkit installieren

Überprüfen Sie, ob der NVIDIA-Treiber installiert ist, indem Sie nvidia-smiausführen. Falls nicht installiert, installieren Sie den Treiber vor der GPU-Nutzung.

  • 1. Gehen Sie zu NVIDIA Driver Finder und geben Sie das GPU-Modell (L40S) ein, um die richtige Distribution aus der Dropdown-Liste auszuwählen.NVIDIA dropdown list
  • 2. Klicken Sie auf Suchen. NVIDIA zeigt die empfohlene Treiberversion an — für den L40S ist das 550.127.08.NVIDIA driver version
  • 3. Laden Sie also den nvidia-driver-550 (550.127.08) herunter über:
    sudo apt update
    
    sudo apt install nvidia-driver-550
    # may take few minutes to build
    # Progress: [ 92%] [###########################################.........]
  • 4. Installieren Sie nvidia-container-toolkit um GPU-Zugriff in Containern zu ermöglichen. Siehe die offizielle Dokumentation als Referenz.
    # 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. Bestätigen Sie nach dem Neustart, dass der Treiber funktioniert, indem Sie nvidia-smiausführen:nvidia-smi output

Container-Laufzeit installieren

Installieren Sie entweder Docker oder Podman als Container-Laufzeit. Folgen Sie den jeweiligen Anweisungen unten:

Docker installieren

Folgen Sie dem offiziellen Docker-Installationsleitfaden um Docker zu installieren.

Podman installieren (Alternative zu Docker)

Folgen Sie dem offiziellen Podman-Installationsleitfaden um Podman zu installieren.

Installieren von podman-compose

Installieren Sie podman-compose für docker-compose-ähnliche Funktionalität. Weitere Informationen finden Sie in der offiziellen podman-compose-Dokumentation für Installationsschritte.

Beispiel-Installationsbefehl:

sudo apt install -y podman podman-compose

Stellen Sie sicher, dass sowohl Podman als auch podman-compose funktionieren:

podman --version
podman-compose --version

Lösen Sie das Rootless-Container-Problem in Podman (überspringen, wenn als root ausgeführt wird):

sudo loginctl enable-linger $USER

QAnswer installieren & bereitstellen

QAnswer wird als docker-compose-Datei bereitgestellt. Klonen Sie das Repository:

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

Navigieren Sie in das qanswer-bundle Verzeichnis und folgen Sie dann den Schritten für Ihre Container-Laufzeit:

Schritte für Docker:

1. Führen Sie das Setup-Skript aus, um alle erforderlichen Container-Images zu laden. Verwenden Sie die Ihnen bereitgestellten Zugangsdaten:

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

2. Starten Sie das QAnswer-Bundle mit docker compose:

Docker-Befehl ausführen:

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