Vai al contenuto principale

Configurare una connessione a una cartella condivisa

ABBYY Vantage consente di utilizzare cartelle condivise ospitate sul server Vantage per importare ed esportare documenti e skill, nonché per aggiornare i cataloghi di dati. Prima di poter utilizzare le cartelle condivise (condivisione NFS), è necessario configurare una connessione a tali cartelle da un computer client. Eseguire i passaggi seguenti su un computer client con sistema operativo Windows:
  1. Eseguire Windows PowerShell come Amministratore.
  2. Installare Windows NFS Client:
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
  1. Configurare una mappatura degli utenti Windows con gli UID e i GID Unix in base alle policy aziendali:
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. Riavviare il client NFS:
nfsadmin client stop
nfsadmin client start
Una volta completati i passaggi sopra indicati, potrai copiare e utilizzare i percorsi delle cartelle condivise in Vantage, oltre ad aprirli in Esplora file.

Configurazione di una connessione al database

ABBYY Vantage utilizza database ospitati su server esterni e potrebbe smettere di funzionare se tali server si guastano. L’amministratore di sistema può ripristinare tali database su un server diverso e configurare una connessione ai nuovi database utilizzando Consul.
Prima di iniziare, assicurarsi che lo strumento da riga di comando kubectl sia installato e che sia stata stabilita una connessione al cluster Kubernetes.
Per configurare una connessione a un nuovo database nelle impostazioni di ABBYY Vantage:
  1. Accedere all’interfaccia web di Consul eseguendo il comando seguente:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Quindi accedere a http://localhost:8500/ui/dc1/kv/secret/.
  1. Utilizzare la scheda Key/Value che si aprirà per selezionare l’ambiente Vantage corretto.
  2. Selezionare il progetto platform oppure vantage, nonché il servizio appropriato che utilizza il database (ad esempio, mail).
Elenco dei servizi della piattaforma Consul che mostra i servizi disponibili
  1. Passare alla sezione database presente in ogni servizio.
Scheda Key/Value di Consul che mostra la selezione dell'ambiente Vantage
  1. Aprire la sezione SqlServer.
Sezione database di Consul che mostra la configurazione di SqlServer
  1. Nella chiave connectionString:
    • Sostituire il valore precedente di Server con l’indirizzo del nuovo server.
    • Specificare il nuovo database nel Parameter Database.
    • Specificare le credenziali di accesso nei Parameter User Id e Password.
Editor del valore connectionString di Consul
  1. Fare clic su Save.
  2. Riavviare il servizio modificato eseguendo il seguente comando:
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
Quando l’indirizzo di un server viene modificato, è necessario eseguire questa procedura per ogni database.

Riferimento ai servizi del database

Di seguito è riportata una tabella che elenca tutti i servizi che utilizzano il database, insieme all’etichetta corrispondente per il riavvio di ciascun servizio.

Servizi della piattaforma

Nome della sezione ConsulEtichetta del servizioNote
api-gateway-registryapi-gateway-registry
api-registryapi-registry
auth-adminapi2auth-adminapi2
auth-identityauth-identity
authauth-sts-identity, auth-adminapi2Questo database è utilizzato da due servizi
blob-storageblob-storage
cron-servicecron-service
documentsetstoragedocumentsetstorage
mailmail
security-auditsecurity-audit
storagestorageLa sezione del database è archiviata nel catalogo di dati fileMetadata
workflow-facadeworkflow-facade
workflow-schedulerworkflow-scheduler

Servizi Vantage

Nome della sezione ConsulEtichetta del servizio
catalogstoragecatalogstorage
folderimportfolderimport
interactive-jobsinteractive-jobs
mailimportmailimport
permissionspermissions
publicapipublicapi
reportingreporting
secretstoragesecretstorage
skill-monitorskill-monitor
skillinfoskillinfo
subscriptionssubscriptions
tokenmanagementtokenmanagement
transactionstransactions
workspaceworkspace

Configurazione della GPU

Vantage consente di utilizzare la GPU per addestrare le skill con l’attività Deep Learning per l’estrazione dei dati da documenti semistrutturati.

Requisiti di sistema per la GPU

  • Memoria minima della GPU virtuale: 12 GB
  • 1 CPU e 4 GB di RAM per ogni GPU virtuale sull’host (ad es. una VM con una singola GPU virtuale da 12 GB deve avere almeno 2 CPU e 8 GB di RAM)

GPU virtuale

È possibile utilizzare una GPU virtuale (vGPU) per suddividere una GPU fisica in più macchine virtuali, consentendo di utilizzare le risorse di Vantage in modo più efficiente. Per configurare una vGPU:
  1. Copiare il pacchetto del driver NVIDIA GRID dall’NVIDIA Application Hub a una macchina virtuale dotata di GPU ed eseguire i seguenti comandi:
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
  1. Installare l’operatore GPU nVidia sul cluster Kubernetes: a. Posizionare il file token di licenza (generato nell’hub applicazioni nVidia) nella cartella $PWD/gpu/ prima di eseguire il container dell’installer di Vantage. b. Aggiungere il Parameter -v $PWD/gpu:/ansible/files/gpu:ro al comando per eseguire il container dell’installer di 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. Aggiungere un nodo GPU al gruppo [abbyy_workers] nel file di inventario. Il nome della macchina virtuale con GPU deve contenere “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. Per aggiungere un nodo al cluster, esegui il seguente playbook:
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Configura la vGPU eseguendo il seguente playbook:
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml

GPU Passthrough

Puoi configurare il passthrough GPU, che consente a una macchina virtuale di accedere direttamente alla GPU. Per configurare il passthrough GPU:
  1. Esegui il container dell’installer di 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. Aggiungere un nodo GPU (ad es. worker2-12-a40-gpu01) al file di inventario nel gruppo [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. Esegui il playbook:
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Installare il chart Helm dell’operatore GPU:
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
  1. Aggiungi un taint al nodo:
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule

Test e distribuzione della GPU

Per testare l’installazione di un operatore GPU nelle modalità vGPU e GPU passthrough:
  1. Esegui questo comando:
kubectl apply -f filename
  1. Crea un file YAML con il seguente contenuto e applicalo:
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 # richiesta di 1 GPU
  tolerations:
    - key: nvidia.com/gpu
      operator: Exists
      effect: NoSchedule
    - key: k8s.abbyy.com/techcore
      effect: NoSchedule
      value: "true"
  1. Controlla il log del pod. Dovresti vedere una risposta contenente Test PASSED:
kubectl -n gpu-operator logs gpu-pod
Risultato previsto:
[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
Per distribuire il worker GPU:
  1. Aggiungere i seguenti Parameter al file env_specific.yml:
techcore:
  use_gpu_workers: true
  use_nn_extraction_training_workers: true
  1. Procedi in uno dei seguenti modi:
    • Se Vantage è già installato, esegui il seguente playbook per distribuire i worker GPU:
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
  • Se Vantage non è ancora installato, i worker GPU verranno distribuiti durante l’installazione.

Configurazione di un timeout di inattività per la revisione manuale

Durante la revisione manuale, se l’operatore non esegue alcuna azione per un periodo di 15 minuti relativamente a un’attività aperta, viene attivato un timeout. L’Amministratore di sistema può modificare la durata di inattività richiesta per l’attivazione del timeout utilizzando Consul. Per configurare il timeout:
  1. Accedi all’interfaccia web di Consul eseguendo:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Quindi vai all’indirizzo http://localhost:8500/ui/dc1/kv/secret/.
  1. Usa la scheda Key/Value per selezionare l’ambiente Vantage corretto.
  2. Modifica i valori delle seguenti chiavi:
KeyDescrizione
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeoutIl periodo minimo di inattività dell’utente dopo il quale un’attività viene restituita alla coda delle attività interattive. Qualsiasi azione interattiva (movimento del mouse, input da tastiera, elaborazione di patch, ecc.) azzera il conto alla rovescia. Predefinito: 00:15:00 (15 minuti)
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/processingPopTimeoutIl periodo minimo di inattività dell’utente dopo il quale l’attività viene restituita alla coda se sono in corso operazioni di lunga durata (applicazione di una skill, scorrimento delle pagine, ecc.). Quando inizia un’operazione di lunga durata, questo valore viene impostato al periodo massimo consentito di inattività. Al completamento dell’operazione, il periodo di inattività viene reimpostato al valore popTimeout. Predefinito: 1.00:00:00 (24 ore)
  1. Fai clic su Save.
  2. Riavvia i servizi verification e 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)

Aggiornamento del certificato SSL

Quando il certificato SSL scade, è necessario aggiornarlo con il nuovo certificato.

Utilizzo di Lens

  1. Vai a Config > Secrets e trova tutti i secret denominati platform-wildcard.
  2. Per ogni secret, individua la sottosezione Data, fai clic sull’icona Show e aggiorna i valori:
    • Inserisci il valore del nuovo certificato nel field tls.crt
    • Inserisci il valore della relativa chiave nel field tls.key
Il certificato e la chiave devono essere file PEM con contenuto codificato in ASCII base64 (PKCS#8). Il certificato deve iniziare con -----BEGIN CERTIFICATE----- e la chiave con -----BEGIN PRIVATE KEY-----.
  1. Fai clic su Save.

Uso della riga di comando di Linux

  1. Verifica di avere accesso al cluster Kubernetes:
kubectl get nodes
  1. Posiziona il certificato e la chiave in formato PEM nella cartella corrente: cert.pem, key.pem.
Se necessario, converti il file CRT in formato PEM:
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
  1. Eseguire i seguenti comandi:
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)