Saltar al contenido principal

Configuración de una conexión a una carpeta compartida

ABBYY Vantage le permite utilizar carpetas compartidas alojadas en el servidor de Vantage para importar y exportar documentos y skills, así como para actualizar catálogos de datos. Antes de poder empezar a usar carpetas compartidas (recurso compartido NFS), debe configurar una conexión a esas carpetas compartidas desde un equipo cliente. Siga estos pasos en un equipo cliente que ejecute Windows:
  1. Ejecute Windows PowerShell como Administrador.
  2. Instale el cliente NFS de Windows:
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
  1. Configure una asignación de usuarios de Windows a UID y GID de Unix según las políticas de su empresa:
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. Reiniciar el cliente NFS:
nfsadmin client stop
nfsadmin client start
Una vez que haya completado los pasos anteriores, podrá copiar y utilizar rutas de carpetas compartidas en Vantage, así como abrirlas en el Explorador de archivos.

Configuración de una conexión de base de datos

ABBYY Vantage utiliza bases de datos alojadas en servidores externos y puede quedar inoperable si esos servidores fallan. El administrador del sistema puede restaurar dichas bases de datos en un servidor distinto y configurar una conexión a las nuevas bases de datos mediante Consul.
Antes de comenzar, asegúrese de que la herramienta de línea de comandos kubectl esté instalada y de que se haya establecido una conexión con el clúster de Kubernetes.
Para configurar una conexión a una nueva base de datos en la configuración de ABBYY Vantage:
  1. Acceda a la interfaz web de Consul ejecutando el siguiente comando:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Luego, navegue a http://localhost:8500/ui/dc1/kv/secret/.
  1. Utilice la pestaña Key/Value que se abrirá para seleccionar el entorno de Vantage correcto.
  2. Seleccione el proyecto platform o vantage, así como el servicio correspondiente que utiliza la base de datos (por ejemplo, mail).
Lista de servicios de plataforma de Consul que muestra los servicios disponibles
  1. Navegue a la sección database que incluye cada servicio.
Pestaña Key/Value de Consul que muestra la selección de entorno de Vantage
  1. Abra la sección SqlServer.
Sección de base de datos de Consul que muestra la configuración de SqlServer
  1. En la clave connectionString:
    • Reemplace el valor anterior de Server por la dirección del nuevo servidor
    • Especifique la nueva base de datos en el parámetro Database
    • Especifique las credenciales de acceso en los parámetros User Id y Password
Editor de valor connectionString de Consul
  1. Haga clic en Save.
  2. Reinicie el servicio modificado ejecutando el siguiente comando:
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
Cuando cambie la dirección de un servidor, este procedimiento deberá ejecutarse para cada base de datos.

Referencia de servicios de base de datos

A continuación se muestra una tabla que enumera todos los servicios que usan la base de datos, así como la etiqueta que se utiliza para reiniciar cada servicio.

Servicios de plataforma

Nombre de sección de ConsulEtiqueta de servicioNotas
api-gateway-registryapi-gateway-registry
api-registryapi-registry
auth-adminapi2auth-adminapi2
auth-identityauth-identity
authauth-sts-identity, auth-adminapi2Esta base de datos la utilizan dos servicios
blob-storageblob-storage
cron-servicecron-service
documentsetstoragedocumentsetstorage
mailmail
security-auditsecurity-audit
storagestorageLa sección de la base de datos se almacena en el catálogo de datos fileMetadata
workflow-facadeworkflow-facade
workflow-schedulerworkflow-scheduler

Servicios de Vantage

Nombre de la sección en ConsulEtiqueta del servicio
catalogstoragecatalogstorage
folderimportfolderimport
interactive-jobsinteractive-jobs
mailimportmailimport
permissionspermissions
publicapipublicapi
reportingreporting
secretstoragesecretstorage
skill-monitorskill-monitor
skillinfoskillinfo
subscriptionssubscriptions
tokenmanagementtokenmanagement
transactionstransactions
workspaceworkspace

Configuración de la GPU

Vantage le permite usar la GPU para entrenar skills mediante la actividad de Deep Learning para extraer datos de documentos semiestructurados.

Requisitos del sistema para la GPU

  • RAM mínima de la GPU virtual: 12 GB
  • 1 CPU y 4 GB de RAM para cada GPU virtual en el host (p. ej., una máquina virtual con una sola GPU virtual de 12 GB debe tener al menos 2 CPU y 8 GB de RAM)

GPU virtual

Puede usar una GPU virtual (vGPU) para dividir una GPU física en varias máquinas virtuales, lo que permite aprovechar los recursos de Vantage de manera más eficiente. Para configurar la vGPU:
  1. Copie el paquete del controlador NVIDIA GRID desde el hub de aplicaciones de NVIDIA a una máquina virtual con GPU y ejecute los siguientes comandos:
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
  1. Instale el operador de GPU de NVIDIA en el clúster de Kubernetes: a. Coloque el archivo de token de licencia (generado en el hub de aplicaciones de NVIDIA) en la carpeta $PWD/gpu/ antes de ejecutar el contenedor del instalador de Vantage. b. Agregue el parámetro -v $PWD/gpu:/ansible/files/gpu:ro al comando para ejecutar el contenedor del instalador 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. Añada un nodo de GPU al archivo de inventario en el grupo [abbyy_workers]. El nombre de la máquina virtual con la GPU debe contener “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. Agregue un nodo al clúster ejecutando el siguiente playbook:
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Configura la vGPU ejecutando el siguiente playbook:
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml

GPU Passthrough

Puede configurar el passthrough de GPU, que permite que una máquina virtual tenga acceso directo a la GPU. Para configurar el passthrough de GPU:
  1. Ejecute el contenedor del instalador 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. Añada un nodo GPU (por ejemplo, worker2-12-a40-gpu01) al archivo de inventario en el grupo [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. Ejecutar el playbook:
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. Instale el chart de Helm del operador de GPU:
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
  1. Agregue un taint al nodo:
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule

Pruebas y despliegue de GPU

Tanto en modo vGPU como en modo de paso directo de GPU (GPU passthrough), para probar la instalación de un operador de GPU:
  1. Ejecute el siguiente comando:
kubectl apply -f filename
  1. Cree un archivo YAML con el siguiente contenido y aplíquelo:
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 # solicitando 1 GPU
  tolerations:
    - key: nvidia.com/gpu
      operator: Exists
      effect: NoSchedule
    - key: k8s.abbyy.com/techcore
      effect: NoSchedule
      value: "true"
  1. Consulta el registro del pod. Deberías ver una respuesta que contenga Test PASSED:
kubectl -n gpu-operator logs gpu-pod
Resultado esperado:
[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
Para desplegar el GPU worker:
  1. Añada los siguientes Parameter al archivo env_specific.yml:
techcore:
  use_gpu_workers: true
  use_nn_extraction_training_workers: true
  1. Realice una de las siguientes acciones:
    • Si Vantage ya está instalado, ejecute el siguiente playbook para desplegar workers de GPU:
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
  • Si Vantage aún no está instalado, los GPU workers se desplegarán durante la instalación.

Configuración de un tiempo de espera por inactividad en la revisión manual

En la revisión manual, si el operador no realiza ninguna acción durante un período de 15 minutos en una tarea abierta, se activa un tiempo de espera. El administrador del sistema puede cambiar la duración del período de inactividad necesario para que se produzca el tiempo de espera usando Consul. Para configurar el tiempo de espera:
  1. Acceda a la interfaz web de Consul ejecutando:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Luego, vaya a http://localhost:8500/ui/dc1/kv/secret/.
  1. Use la pestaña Key/Value para seleccionar el entorno de Vantage correcto.
  2. Cambie los valores de las siguientes claves:
KeyDescription
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeoutEl período mínimo de tiempo que un usuario puede permanecer inactivo antes de que una tarea se devuelva a la cola de tareas interactivas. Cualquier acción interactiva (movimiento del ratón, entrada por teclado, procesamiento de parches, etc.) restablece la cuenta regresiva. Valor predeterminado: 00:15:00 (15 minutos)
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/processingPopTimeoutEl período mínimo de inactividad del usuario tras el cual la tarea se devolverá a la cola si hay operaciones de larga duración (aplicar una skill, pasar páginas, etc.). Cuando se inicia una operación de larga duración, este valor se establece en el período máximo permitido de inactividad. Cuando la operación se completa, el período de inactividad se restablece al valor de popTimeout. Valor predeterminado: 1.00:00:00 (24 horas)
  1. Haga clic en Save.
  2. Reinicie los servicios verification y 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)

Actualización del certificado SSL

Cuando expire el certificado SSL, deberá reemplazarlo por el nuevo.

Uso de Lens

  1. Vaya a Config > Secrets y busque todos los secretos con el nombre platform-wildcard.
  2. Para cada secreto, busque la subsección Data, haga clic en el icono Show y actualice los valores:
    • Introduzca el valor del nuevo certificado en el campo tls.crt
    • Introduzca el valor de su clave en el campo tls.key
El certificado y la clave deben ser archivos PEM con contenido codificado en ASCII base64 (PKCS#8). Deben comenzar con -----BEGIN CERTIFICATE----- para el certificado y -----BEGIN PRIVATE KEY----- para la clave.
  1. Haga clic en Save.

Uso de la línea de comandos de Linux

  1. Asegúrese de tener acceso al clúster de Kubernetes:
kubectl get nodes
  1. Coloque el certificado y la clave en formato PEM en la carpeta actual: cert.pem, key.pem.
Convierta el archivo CRT al formato PEM si es necesario:
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
  1. Ejecute los siguientes comandos:
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)