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:
- Eseguire Windows PowerShell come Amministratore.
- Installare Windows NFS Client:
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
- 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
- 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:
- 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/.
- Utilizzare la scheda Key/Value che si aprirà per selezionare l’ambiente Vantage corretto.
- Selezionare il progetto platform oppure vantage, nonché il servizio appropriato che utilizza il database (ad esempio, mail).
- Passare alla sezione database presente in ogni servizio.
- Aprire la sezione SqlServer.
- 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.
- Fare clic su Save.
- 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.
| Nome della sezione Consul | Etichetta del servizio | Note |
|---|
| api-gateway-registry | api-gateway-registry | |
| api-registry | api-registry | |
| auth-adminapi2 | auth-adminapi2 | |
| auth-identity | auth-identity | |
| auth | auth-sts-identity, auth-adminapi2 | Questo database è utilizzato da due servizi |
| blob-storage | blob-storage | |
| cron-service | cron-service | |
| documentsetstorage | documentsetstorage | |
| mail | mail | |
| security-audit | security-audit | |
| storage | storage | La sezione del database è archiviata nel catalogo di dati fileMetadata |
| workflow-facade | workflow-facade | |
| workflow-scheduler | workflow-scheduler | |
| Nome della sezione Consul | Etichetta del servizio |
|---|
| catalogstorage | catalogstorage |
| folderimport | folderimport |
| interactive-jobs | interactive-jobs |
| mailimport | mailimport |
| permissions | permissions |
| publicapi | publicapi |
| reporting | reporting |
| secretstorage | secretstorage |
| skill-monitor | skill-monitor |
| skillinfo | skillinfo |
| subscriptions | subscriptions |
| tokenmanagement | tokenmanagement |
| transactions | transactions |
| workspace | workspace |
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)
È 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:
- 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
-
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
- Configura la vGPU eseguendo il seguente playbook:
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml
Puoi configurare il passthrough GPU, che consente a una macchina virtuale di accedere direttamente alla GPU.
Per configurare il passthrough GPU:
- 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
- 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
- Esegui il playbook:
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
- Installare il chart Helm dell’operatore GPU:
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
- 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:
- Esegui questo comando:
kubectl apply -f filename
- 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"
- 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:
- Aggiungere i seguenti Parameter al file
env_specific.yml:
techcore:
use_gpu_workers: true
use_nn_extraction_training_workers: true
- 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:
- 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/.
- Usa la scheda Key/Value per selezionare l’ambiente Vantage corretto.
- Modifica i valori delle seguenti chiavi:
| Key | Descrizione |
|---|
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeout | Il 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/processingPopTimeout | Il 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) |
- Fai clic su Save.
- 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.
- Vai a Config > Secrets e trova tutti i secret denominati
platform-wildcard.
- 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-----.
- Fai clic su Save.
Uso della riga di comando di Linux
- Verifica di avere accesso al cluster Kubernetes:
- 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-----
- 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)