Passer au contenu principal

Configuration d’une connexion à un dossier partagé

ABBYY Vantage vous permet d’utiliser des dossiers partagés hébergés sur le serveur Vantage pour importer et exporter des documents et des Skills, ainsi que pour mettre à jour les catalogues de données. Avant de pouvoir utiliser des dossiers partagés (partage NFS), vous devez configurer une connexion à ces dossiers partagés depuis un ordinateur client. Procédez comme suit sur un ordinateur client exécutant Windows :
  1. Exécutez Windows PowerShell en tant qu’administrateur.
  2. Installez le client NFS de Windows :
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
  1. Configurez un mappage des utilisateurs Windows vers des UID et GID Unix conformément à la politique de votre entreprise :
New-ItemProperty -Path "HKLM:\Software\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousGid" -Value 65532 -PropertyType DWord
New-ItemProperty -Path "HKLM:\Software\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousUid" -Value 65532 -PropertyType DWord
  1. Redémarrer le client NFS :
nfsadmin client stop
nfsadmin client start
Une fois que vous aurez terminé les étapes ci-dessus, vous pourrez copier et utiliser les chemins des dossiers partagés dans Vantage, ainsi que les ouvrir dans l’Explorateur de fichiers.

Configuration d’une connexion à une base de données

ABBYY Vantage utilise des bases de données hébergées sur des serveurs externes et peut devenir indisponible si ces serveurs tombent en panne. L’administrateur système peut restaurer ces bases de données sur un autre serveur et configurer une connexion aux nouvelles bases de données à l’aide de Consul.
Avant de commencer, assurez-vous que l’outil en ligne de commande kubectl est installé et qu’une connexion au cluster Kubernetes a été établie.
Pour configurer une connexion à une nouvelle base de données dans les paramètres d’ABBYY Vantage :
  1. Accédez à l’interface Web de Consul en exécutant la commande ci-dessous :
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Ensuite, accédez à l’adresse http://localhost:8500/ui/dc1/kv/secret/.
  1. Utilisez l’onglet Key/Value qui s’ouvre pour sélectionner l’environnement Vantage approprié.
  2. Sélectionnez le projet platform ou vantage, ainsi que le service approprié qui utilise la base de données (par exemple, mail).
Liste des services platform dans Consul affichant les services disponibles
  1. Accédez à la section database présente dans chaque service.
Onglet Key/Value de Consul montrant la sélection de l'environnement Vantage
  1. Ouvrez la section SqlServer.
Section database de Consul montrant la configuration SqlServer
  1. Dans la clé connectionString :
    • Remplacez l’ancienne valeur de Server par l’adresse du nouveau serveur
    • Indiquez la nouvelle base de données dans le paramètre Database
    • Indiquez les identifiants de connexion dans les paramètres User Id et Password
Éditeur de la valeur connectionString dans Consul
  1. Cliquez sur Save.
  2. Redémarrez le service modifié en exécutant la commande suivante :
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
Lorsqu’une adresse de serveur est modifiée, cette procédure doit être effectuée pour chaque base de données.

Référence des services de base de données

Vous trouverez ci-dessous un tableau répertoriant tous les services qui utilisent la base de données, ainsi que le nom à utiliser pour redémarrer chaque service.

Services de plateforme

Nom de section ConsulLibellé du serviceRemarques
api-gateway-registryapi-gateway-registry
api-registryapi-registry
auth-adminapi2auth-adminapi2
auth-identityauth-identity
authauth-sts-identity, auth-adminapi2Cette base de données est utilisée par deux services.
blob-storageblob-storage
cron-servicecron-service
documentsetstoragedocumentsetstorage
mailmail
security-auditsecurity-audit
storagestorageLa section de base de données est stockée dans le catalogue de données fileMetadata.
workflow-facadeworkflow-facade
workflow-schedulerworkflow-scheduler

Services Vantage

Nom de la section ConsulLibellé du service
catalogstoragecatalogstorage
folderimportfolderimport
interactive-jobsinteractive-jobs
mailimportmailimport
permissionspermissions
publicapipublicapi
reportingreporting
secretstoragesecretstorage
skill-monitorskill-monitor
skillinfoskillinfo
subscriptionssubscriptions
tokenmanagementtokenmanagement
transactionstransactions
workspaceworkspace

Configuration du GPU

Vantage vous permet d’utiliser le GPU pour entraîner des Skills avec l’activité Deep Learning afin d’extraire des données à partir de documents semi-structurés.

Configuration système requise pour le GPU

  • Mémoire GPU virtuelle minimale : 12 Go
  • 1 CPU et 4 Go de RAM pour chaque GPU virtuel sur l’hôte (par exemple, une VM avec un seul GPU virtuel de 12 Go doit disposer d’au moins 2 CPU et 8 Go de RAM)

GPU virtuel

Vous pouvez utiliser un GPU virtuel (vGPU) pour diviser un GPU physique entre plusieurs machines virtuelles, ce qui permet d’utiliser plus efficacement les ressources Vantage. Pour configurer une vGPU :
  1. Copiez le package de pilotes NVIDIA GRID depuis le hub d’applications NVIDIA vers une machine virtuelle équipée d’un GPU et exécutez les commandes suivantes :
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
  1. Installez l’opérateur GPU NVIDIA sur le cluster Kubernetes : a. Placez le fichier de jeton de licence (généré dans le NVIDIA Application Hub) dans le dossier $PWD/gpu/ avant d’exécuter le conteneur d’installation de Vantage. b. Ajoutez le Parameter -v $PWD/gpu:/ansible/files/gpu:ro à la commande utilisée pour exécuter le conteneur d’installation de Vantage :
docker run -it \
-v $PWD/kube:/root/.kube \
-v $PWD/ssh/ansible:/root/.ssh/ansible \
-v "//var/run/docker.sock:/var/run/docker.sock" \
-v $PWD/inventory:/ansible/inventories/k8s/inventory \
-v $PWD/env_specific.yml:/ansible/inventories/k8s/group_vars/all/env_specific.yml \
-v $PWD/ssl:/ansible/files/ssl:ro \
-v $PWD/gpu:/ansible/files/gpu:ro \
--privileged \
registry.local/vantage/vantage-k8s:2.7.1
c. Ajoutez un nœud GPU au fichier d’inventaire dans le groupe [abbyy_workers]. Le nom de la machine virtuelle équipée d’un GPU doit contenir “gpu” :
[abbyy_workers]
worker16-48-w01 ansible_host=10.10.10.27
worker16-48-w02 ansible_host=10.10.10.21
worker16-48-w03 ansible_host=10.10.10.20
worker2-12-a40-gpu01 ansible_host=10.10.10.60
d. Ajoutez un nœud au cluster en exécutant le playbook suivant :
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Configurez la vGPU en exécutant le playbook suivant :
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml

GPU passthrough

Vous pouvez configurer le GPU passthrough, ce qui permet à une machine virtuelle d’accéder directement à votre GPU. Pour configurer le GPU passthrough :
  1. Exécutez le conteneur d’installation de Vantage :
docker run -it \
-v $PWD/kube:/root/.kube \
-v $PWD/ssh/ansible:/root/.ssh/ansible \
-v "//var/run/docker.sock:/var/run/docker.sock" \
-v $PWD/inventory:/ansible/inventories/k8s/inventory \
-v $PWD/env_specific.yml:/ansible/inventories/k8s/group_vars/all/env_specific.yml \
-v $PWD/ssl:/ansible/files/ssl:ro \
--privileged \
registry.local/vantage/vantage-k8s:2.7.1
  1. Ajoutez un nœud GPU (par exemple worker2-12-a40-gpu01) au fichier d’inventaire dans le groupe [abbyy_workers] :
[abbyy_workers]
worker16-48-w01 ansible_host=10.10.10.27
worker16-48-w02 ansible_host=10.10.10.21
worker16-48-w03 ansible_host=10.10.10.20
worker2-12-a40-gpu01 ansible_host=10.10.10.60
  1. Exécutez le playbook :
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Installez le chart Helm de l’opérateur GPU :
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
  1. Ajoutez un taint de nœud :
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule

Test et déploiement de GPU

Pour tester l’installation d’un opérateur GPU, en modes vGPU et GPU passthrough :
  1. Exécutez la commande suivante :
kubectl apply -f filename
  1. Créez un fichier YAML avec le contenu suivant, puis appliquez-le :
apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
  namespace: gpu-operator
spec:
  restartPolicy: Never
  containers:
    - name: cuda-container
      image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2
      resources:
        limits:
          nvidia.com/gpu: 1 # demande 1 GPU
  tolerations:
    - key: nvidia.com/gpu
      operator: Exists
      effect: NoSchedule
    - key: k8s.abbyy.com/techcore
      effect: NoSchedule
      value: "true"
  1. Vérifiez les logs du pod. Vous devriez voir une réponse contenant Test PASSED :
kubectl -n gpu-operator logs gpu-pod
Résultat attendu :
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
Pour déployer le worker GPU :
  1. Ajoutez les paramètres suivants dans le fichier env_specific.yml :
techcore:
  use_gpu_workers: true
  use_nn_extraction_training_workers: true
  1. Effectuez l’une des opérations suivantes :
    • Si Vantage est déjà installé, exécutez le playbook suivant pour déployer des workers GPU :
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
  • Si Vantage n’est pas encore installé, les workers GPU seront déployés au cours de l’installation.

Configuration d’un délai d’inactivité pour la relecture manuelle

Dans la relecture manuelle, si aucune action n’est effectuée par l’opérateur pendant 15 minutes sur une tâche ouverte, un dépassement de délai pour inactivité se produit. L’administrateur système peut modifier la durée d’inactivité nécessaire avant ce dépassement de délai à l’aide de Consul. Pour configurer le délai d’expiration :
  1. Accédez à l’interface web de Consul en exécutant :
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Accédez ensuite à http://localhost:8500/ui/dc1/kv/secret/.
  1. Utilisez l’onglet Key/Value pour sélectionner l’environnement Vantage approprié.
  2. Modifiez les valeurs des clés suivantes :
KeyDescription
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeoutPériode minimale d’inactivité d’un utilisateur avant qu’une tâche ne soit renvoyée dans la file d’attente des tâches interactives. Toute action interactive (déplacement de la souris, saisie au clavier, traitement de patch, etc.) réinitialise le compte à rebours. Par défaut : 00:15:00 (15 minutes)
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/processingPopTimeoutPériode minimale d’inactivité d’un utilisateur après laquelle la tâche sera renvoyée dans la file d’attente s’il y a des opérations de longue durée (application d’une compétence, changement de page, etc.). Lorsqu’une opération de longue durée démarre, cette valeur est définie sur la période d’inactivité maximale autorisée. Lorsque l’opération est terminée, la période d’inactivité est réinitialisée à la valeur popTimeout. Par défaut : 1.00:00:00 (24 heures)
  1. Cliquez sur Save.
  2. Redémarrez les services verification et manualverification :
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=verification -o name)
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=manualverification -o name)

Mise à jour du certificat SSL

Lorsque le certificat SSL arrive à expiration, vous devrez le remplacer par le nouveau certificat.

Utilisation de Lens

  1. Accédez à Config > Secrets et repérez tous les secrets nommés platform-wildcard.
  2. Pour chaque secret, ouvrez la sous-section Data, cliquez sur l’icône Show, puis mettez à jour les valeurs :
    • Saisissez la valeur du nouveau certificat dans le champ tls.crt
    • Saisissez la valeur de sa clé dans le champ tls.key
Le certificat et la clé doivent être des fichiers PEM dont le contenu est encodé en ASCII base64 (PKCS#8). Ils doivent commencer par -----BEGIN CERTIFICATE----- pour le certificat et -----BEGIN PRIVATE KEY----- pour la clé.
  1. Cliquez sur Save.

Utiliser la ligne de commande Linux

  1. Assurez-vous d’avoir accès au cluster Kubernetes :
kubectl get nodes
  1. Placez le certificat et la clé au format PEM dans le répertoire courant : cert.pem, key.pem.
Convertissez votre fichier CRT au format PEM si nécessaire :
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
  1. Exécutez les commandes suivantes :
for i in `kubectl get secret --field-selector metadata.name=platform-wildcard -o custom-columns=:metadata.namespace -A --no-headers 2>/dev/null`; do kubectl patch secret platform-wildcard -p "{\"data\":{\"tls.key\":\"$(base64 < "./key.pem" | tr -d '\n')\", \"tls.crt\":\"$(base64 < "./cert.pem" | tr -d '\n')\"}}" -n $i; done
kubectl rollout restart deployment -n abbyy-infrastructure $(kubectl get deployment -n abbyy-infrastructure -o custom-columns=NAME:metadata.name --no-headers 2>/dev/null | grep ingress-nginx-controller)