ABBYY Vantage 可讓您使用託管在 Vantage 伺服器上的共用資料夾,以匯入和匯出文件與技能,以及更新資料目錄。
在開始使用共用資料夾(NFS 共用)之前,您需要在用戶端電腦上設定與這些共用資料夾的連線。請在執行 Windows 的用戶端電腦上依照下列步驟操作:
- 以系統管理員身分執行 Windows PowerShell。
- 安裝 Windows NFS Client:
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
- 根據貴公司的政策,設定 Windows 使用者與 Unix UID 和 GID 的對應關係:
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
- 重新啟動 NFS 用戶端:
nfsadmin client stop
nfsadmin client start
完成上述步驟後,您將能夠在 Vantage 中複製並使用共用資料夾路徑,並在檔案總管中開啟對應的共用資料夾。
ABBYY Vantage 使用託管於外部伺服器上的資料庫,如果這些伺服器發生故障,系統可能會無法運作。系統管理員可以在另一部伺服器上還原這些資料庫,並使用 Consul 設定與新資料庫的連線。
在開始之前,請確保已安裝 kubectl 命令列工具,並已建立與 Kubernetes 叢集的連線。
若要在 ABBYY Vantage 的設定中設定與新資料庫的連線:
- 執行下列指令以存取 Consul 網頁介面:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
然後前往 http://localhost:8500/ui/dc1/kv/secret/。
- 在開啟的 Key/Value 分頁中選擇正確的 Vantage 環境。
- 選取 platform 或 vantage 專案之一,並選擇使用此資料庫的適當服務(例如 mail)。
- 前往每個服務中都包含的 database 區段。
- 開啟 SqlServer 區段。
- 在 connectionString 鍵中:
- 將 Server 的舊值改為新伺服器的位址
- 在 Database Parameter 中指定新的資料庫
- 在 User Id 和 Password Parameters 中指定登入認證
- 按一下 Save。
- 執行下列指令以重新啟動已修改的服務:
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
當伺服器位址變更時,必須針對每個資料庫執行此程序。
下表列出了所有使用資料庫的服務,以及用於重新啟動每個服務的標籤。
| Consul 區段名稱 | 服務標籤 | 備註 |
|---|
| api-gateway-registry | api-gateway-registry | |
| api-registry | api-registry | |
| auth-adminapi2 | auth-adminapi2 | |
| auth-identity | auth-identity | |
| auth | auth-sts-identity, auth-adminapi2 | 此資料庫由兩個服務共用 |
| blob-storage | blob-storage | |
| cron-service | cron-service | |
| documentsetstorage | documentsetstorage | |
| mail | mail | |
| security-audit | security-audit | |
| storage | storage | 此資料庫區段存放於 fileMetadata 資料目錄中 |
| workflow-facade | workflow-facade | |
| workflow-scheduler | workflow-scheduler | |
| Consul 區段名稱 | 服務標籤 |
|---|
| 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 可讓您使用 GPU,搭配 Deep Learning 活動訓練技能,從半結構化文件中擷取資料。
- 虛擬 GPU 的最小記憶體:12 GB
- 主機上每個虛擬 GPU 需要 1 個 CPU 和 4 GB RAM(例如:一台具有單個 12 GB 虛擬 GPU 的虛擬機器(VM)至少需要 2 個 CPU 和 8 GB RAM)
您可以使用虛擬 GPU(vGPU)將一個實體 GPU 切分給多個虛擬機使用,讓 Vantage 資源得以更有效率地運用。
若要設定 vGPU:
- 從 nVidia Application Hub 將 nVidia GRID driver 套件複製到具備 GPU 的虛擬機上,並執行下列命令:
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
-
將 nVidia GPU operator 安裝到 Kubernetes 叢集:
a. 在執行 Vantage 安裝程式容器之前,先將授權權杖檔案(在 nVidia application hub 中產生)放在
$PWD/gpu/ 資料夾中。
b. 在執行 Vantage 安裝程式容器的指令中,新增 -v $PWD/gpu:/ansible/files/gpu:ro 這個 Parameter:
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. 在 [abbyy_workers] 群組的清單檔中新增一個 GPU 節點。具備 GPU 的虛擬機器名稱中必須包含 “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. 透過執行以下 playbook,將節點新增至叢集:
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
- 執行以下 playbook 來設定 vGPU:
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml
您可以設定 GPU 直通,讓虛擬機直接存取您的 GPU。
若要設定 GPU 直通:
- 執行 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
- 在 inventory 檔案的
[abbyy_workers] 群組中新增一個 GPU 節點(例如:worker2-12-a40-gpu01):
[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
- 執行 Playbook:
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
- 安裝 GPU Operator 的 Helm Chart:
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
- 為節點新增汙點(node taint):
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule
對於 vGPU 和 GPU passthrough 兩種模式,若要測試 GPU Operator 的安裝:
- 執行此指令:
kubectl apply -f filename
- 建立一個包含以下內容的 YAML 檔案,然後套用:
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 # 請求 1 個 GPU
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
- key: k8s.abbyy.com/techcore
effect: NoSchedule
value: "true"
- 檢查 pod 日誌。您應該會看到一則包含
Test PASSED 的回應:
kubectl -n gpu-operator logs gpu-pod
預期輸出結果:
[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
若要部署 GPU worker:
- 將下列參數加入
env_specific.yml 檔案:
techcore:
use_gpu_workers: true
use_nn_extraction_training_workers: true
- 執行下列其中一項操作:
- 若已安裝 Vantage,請執行下列 playbook 來部署 GPU 工作節點:
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
- 如果尚未安裝 Vantage,則會在安裝時部署 GPU 工作節點。
在手動審核中,如果操作人員對已開啟的工作在 15 分鐘內沒有執行任何操作,系統就會觸發逾時。系統管理員可以使用 Consul 變更觸發逾時所需的閒置時間長度。
若要設定逾時:
- 執行下列操作以存取 Consul 網頁介面:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
然後前往 http://localhost:8500/ui/dc1/kv/secret/。
- 使用 Key/Value 分頁來選擇正確的 Vantage 環境。
- 變更下列索引鍵的值:
| Key | Description |
|---|
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeout | 使用者處於非活動狀態、在工作被退回互動式工作佇列之前的最短時間。任何互動式動作(滑鼠移動、鍵盤輸入、批次處理等)都會重設倒數計時。預設值:00:15:00(15 分鐘) |
secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/processingPopTimeout | 在存在長時間作業(套用 skill、翻頁等)的情況下,使用者非活動、在工作被退回佇列之前的最短時間。當長時間執行的作業開始時,會將此值設為允許的最長非活動時間。作業完成後,非活動時間會重設為 popTimeout 的值。預設值:1.00:00:00(24 小時) |
- 按一下 Save。
- 重新啟動 verification 和 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)
當 SSL 憑證到期時,您需要將其更新為新的憑證。
- 前往 Config > Secrets,並找到所有名為
platform-wildcard 的 secret。
- 對於每個 secret,於 Data 子區段中,點擊 Show 圖示並更新以下值:
- 在
tls.crt 欄位中輸入新憑證的值
- 在
tls.key 欄位中輸入其金鑰的值
憑證與金鑰必須為 PEM 檔案,內容為 base64 ASCII 編碼 (PKCS#8)。憑證內容應以 -----BEGIN CERTIFICATE----- 開頭,金鑰內容則應以 -----BEGIN PRIVATE KEY----- 開頭。
- 點擊 Save。
- 請先確認您已能存取 Kubernetes 叢集:
- 將 PEM 格式的憑證與金鑰放入目前資料夾中:
cert.pem、key.pem。
必要時,將 CRT 檔案轉換為 PEM 格式:
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
- 執行下列指令:
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)