メインコンテンツへスキップ

共有フォルダー接続の設定

ABBYY Vantage では、ドキュメントや Skill のインポートおよびエクスポート、さらにデータ カタログの更新のために、Vantage サーバー上でホストされている共有フォルダーを使用できます。 共有フォルダー(NFS 共有)を使用する前に、クライアント コンピューターからそれらの共有フォルダーへの接続を設定する必要があります。Windows を実行しているクライアント コンピューターで次の手順を実行します。
  1. Windows PowerShell を管理者として実行します。
  2. Windows NFS クライアントをインストールします。
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
  1. 会社のポリシーに応じて、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
  1. NFS クライアントを再起動する:
nfsadmin client stop
nfsadmin client start
上記の手順を完了すると、Vantage で共有フォルダーのパスをコピーして使用したり、File Explorer で開いたりできるようになります。

データベース接続の設定

ABBYY Vantage は外部サーバー上でホストされているデータベースを使用しており、これらのサーバーに障害が発生すると動作しなくなる可能性があります。システム管理者は、そのようなデータベースを別のサーバー上に復元し、Consul を使用して新しいデータベースへの接続を設定できます。
作業を開始する前に、kubectl コマンドラインツールがインストールされていること、および Kubernetes クラスターへの接続が確立されていることを確認してください。
ABBYY Vantage の設定で新しいデータベースへの接続を設定するには、次の手順を実行します。
  1. 次のコマンドを実行して、Consul の Web インターフェイスにアクセスします。
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
Then navigate to http://localhost:8500/ui/dc1/kv/secret/.
  1. 開いた Key/Value タブで、正しい Vantage 環境を選択します。
  2. platform または vantage プロジェクトのいずれかと、データベースを使用する適切なサービス(例: mail)を選択します。
利用可能なサービスを示す Consul の platform サービス一覧
  1. 各サービスに含まれている database セクションに移動します。
Vantage 環境選択を示す Consul の Key/Value タブ
  1. SqlServer セクションを開きます。
SqlServer 設定を示す Consul の database セクション
  1. connectionString キーで次の操作を行います:
    • Server の古い値を、新しいサーバーのアドレスに置き換えます
    • Database Parameter に新しいデータベースを指定します
    • User Id および Password Parameter にログイン資格情報を指定します
Consul の connectionString の値エディター
  1. Save をクリックします。
  2. 次のコマンドを実行して、変更したサービスを再起動します:
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
サーバーアドレスが変更された場合、この手順はすべてのデータベースごとに実行する必要があります。

データベースサービスリファレンス

以下の表では、データベースを使用するすべてのサービスと、それぞれのサービスを再起動するためのラベルを示します。

Platform Services

Consul セクション名サービス ラベルメモ
api-gateway-registryapi-gateway-registry
api-registryapi-registry
auth-adminapi2auth-adminapi2
auth-identityauth-identity
authauth-sts-identity, auth-adminapi2このデータベースは 2 つのサービスで共有されています
blob-storageblob-storage
cron-servicecron-service
documentsetstoragedocumentsetstorage
mailmail
security-auditsecurity-audit
storagestorageデータベース セクションは fileMetadata データ カタログ内に格納されます
workflow-facadeworkflow-facade
workflow-schedulerworkflow-scheduler

Vantage サービス

Consul セクション名サービスラベル
catalogstoragecatalogstorage
folderimportfolderimport
interactive-jobsinteractive-jobs
mailimportmailimport
permissionspermissions
publicapipublicapi
reportingreporting
secretstoragesecretstorage
skill-monitorskill-monitor
skillinfoskillinfo
subscriptionssubscriptions
tokenmanagementtokenmanagement
transactionstransactions
workspaceworkspace

GPU のセットアップ

Vantage では、半構造化文書からデータを抽出するための Deep Learning アクティビティを用いた Skill のトレーニングに GPU を使用できます。

GPU のシステム要件

  • 仮想 GPU の最小メモリ(RAM): 12 GB
  • ホスト上の仮想 GPU 1 つあたり、1 CPU と 4 GB の RAM(例: 12 GB の仮想 GPU を 1 基搭載した VM には、少なくとも 2 CPU と 8 GB の RAM が必要)

仮想 GPU

仮想 GPU (vGPU) を使用すると、1 つの物理 GPU を複数の仮想マシンに分割できるため、Vantage のリソースをより効率的に活用できます。 vGPU をセットアップするには:
  1. NVIDIA Application Hub から NVIDIA GRID ドライバーパッケージを GPU を搭載した仮想マシンにコピーし、次のコマンドを実行します。
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
  1. nVidia GPU オペレーターを Kubernetes クラスターにインストールします。 a. Vantage インストーラーコンテナーを実行する前に、ライセンス トークン ファイル(nVidia Application Hub で生成したもの)を $PWD/gpu/ フォルダーに配置します。 b. Vantage インストーラーコンテナーを実行するコマンドに、-v $PWD/gpu:/ansible/files/gpu:ro パラメータを追加します。
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. 次のプレイブックを実行して、クラスターにノードを追加します。
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. 次のプレイブックを実行して vGPU を設定します。
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml

GPUパススルー

GPUパススルーを設定すると、仮想マシンからGPUに直接アクセスできるようになります。 GPUパススルーを設定するには、次の手順を実行します。
  1. 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. GPU ノード(例: worker2-12-a40-gpu01)をインベントリファイルの [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. プレイブックを実行します:
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
  1. GPU Operator の Helm チャートをインストールします:
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
  1. ノードに taint を追加します:
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule

GPU のテストとデプロイ

vGPU モードおよび GPU パススルー モードのいずれの場合も、GPU オペレーターのインストールをテストするには、次のコマンドを実行します。
  1. 次のコマンドを実行します:
kubectl apply -f filename
  1. 次の内容の 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"
  1. 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 をデプロイするには:
  1. 次の Parameter を env_specific.yml ファイルに追加します。
techcore:
  use_gpu_workers: true
  use_nn_extraction_training_workers: true
  1. 次のいずれかを実行します。
    • すでに Vantage がインストールされている場合は、以下の playbook を実行して GPU ワーカーをデプロイします。
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
  • まだ Vantage がインストールされていない場合は、インストール時に GPU ワーカーがデプロイされます。

手動確認の非アクティブタイムアウトの設定

手動確認では、オペレーターが開いているタスクに対して 15 分間何の操作も行わない場合、タイムアウトが発生します。システム管理者は、Consul を使用して、タイムアウトが発生するまでの非アクティブ状態の長さを変更できます。 タイムアウトを設定するには:
  1. 次を実行して Consul の Web インターフェースにアクセスします:
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
次に、http://localhost:8500/ui/dc1/kv/secret/ に移動します。
  1. Key/Value タブを使用して、正しい Vantage 環境を選択します。
  2. 次のキーの値を変更します。
KeyDescription
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 時間)
  1. Save をクリックします。
  2. 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 証明書の更新

SSL 証明書の有効期限が切れた場合は、新しい証明書に切り替える必要があります。

Lens を使用する

  1. Config > Secrets に移動し、platform-wildcard という名前のすべての secret を探します。
  2. 各 secret について、Data サブセクションを見つけて Show アイコンをクリックし、値を更新します:
    • tls.crt field に新しい証明書の値を入力します
    • tls.key field にその鍵の値を入力します
証明書と鍵は、内容が base64 ASCII でエンコードされた (PKCS#8) 形式の PEM ファイルである必要があります。証明書は -----BEGIN CERTIFICATE-----、鍵は -----BEGIN PRIVATE KEY----- で始まっている必要があります。
  1. Save をクリックします。

Linux コマンドラインを使用する

  1. Kubernetes クラスターにアクセス可能であることを確認します。
kubectl get nodes
  1. PEM 形式の証明書ファイルと秘密鍵ファイルをカレントフォルダーに配置します: cert.pem, key.pem
必要に応じて、CRT ファイルを PEM 形式に変換してください。
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
  1. 次のコマンドを実行します。
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)