サーバーをデプロイする
独自の Computer Vision サーバーを、Docker を使用して Microsoft Windows または Ubuntu にデプロイする、または Podman を使用して Red Hat Enterprise Linux にデプロイして Computer Vision アクティビティで使用する場合は、以下の手順を実行します。
まず、WSL をマシンにインストールする必要があります。
{distribution}
は、使用する Linux ディストリビューションです。
wsl --install -d {distribution}
wsl --install -d {distribution}
Computer Vision サーバーを Windows マシンで実行するには、Nvidia Windows 11 ディスプレイ ドライバーを Nvidia の公式 Web サイトからダウンロードして、対応する GeForce または Nvidia RTX/Quadro カードを搭載したシステムにインストールする必要があります。
次のスクリプトを実行して、Podman と Nvidia Container Toolkit の両方をインストールできます。
https://github.com/UiPath/Infrastructure/blob/main/ML/ml_prereq_all.sh
https://github.com/UiPath/Infrastructure/blob/main/ML/ml_prereq_all.sh
Computer Vision サーバーを実行するには、WSL Linux ターミナルで次のコマンドを実行する必要があります。
podman run -p 8501:5000 --hooks-dir=/usr/share/containers/oci/hooks.d/ \--security-opt=label=disable --device=nvidia.com/gpu=all controls_detection eula=accept
podman run -p 8501:5000 --hooks-dir=/usr/share/containers/oci/hooks.d/ \--security-opt=label=disable --device=nvidia.com/gpu=all controls_detection eula=accept
8501
です。
WSL 内で実行される Linux インスタンスには専用の仮想ネットワーク インターフェイス コントローラーがあるため、ホスト IP へのトラフィックは、Linux インスタンスの IP に直接リダイレクトされません。以下のコマンドを使用してホスト IP のトラフィックを Linux インスタンスに転送すると、この問題を回避できます。
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8501 connectaddress=$wsl_ip connectport=8501
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8501 connectaddress=$wsl_ip connectport=8501
WSL の IP は以下のコマンドで確認できます。
wsl -d {distribution} hostname -I
wsl -d {distribution} hostname -I
{distribution}
は、インストールされている Linux ディストリビューションです。
wsl -d {distribution} echo "starting...";
$wsl_ips = (wsl -d {distribution} hostname -I);
$host_ip = $wsl_ips.Split(" ")[0];
netsh interface portproxy add v4tov4 listenport=8501 listenaddress=0.0.0.0 connectport=8501 connectaddress=$host_ip;
wsl -d {distribution} -u root service docker start;
wsl -d {distribution} -u root docker run -p 8501:5000 --gpus all controls_detection eula=accept;
wsl -d {distribution} echo "starting...";
$wsl_ips = (wsl -d {distribution} hostname -I);
$host_ip = $wsl_ips.Split(" ")[0];
netsh interface portproxy add v4tov4 listenport=8501 listenaddress=0.0.0.0 connectport=8501 connectaddress=$host_ip;
wsl -d {distribution} -u root service docker start;
wsl -d {distribution} -u root docker run -p 8501:5000 --gpus all controls_detection eula=accept;
営業担当から提供されたリンクを、現在のターミナル セッションで保存します。
export CV_URL="LINK_FROM_SALES_REP"
export CV_URL="LINK_FROM_SALES_REP"
エクスポートをダウンロードします。
wget "$CV_URL" -O controls_detection.tar
wget "$CV_URL" -O controls_detection.tar
次のコマンドを実行します。
podman load -i controls_detection.tar
podman load -i controls_detection.tar
次のコマンドを実行します。
podman run -p 8501:5000 --hooks-dir=/usr/share/containers/oci/hooks.d/ \--security-opt=label=disable --device=nvidia.com/gpu=all controls_detection eula=accept
podman run -p 8501:5000 --hooks-dir=/usr/share/containers/oci/hooks.d/ \--security-opt=label=disable --device=nvidia.com/gpu=all controls_detection eula=accept
モデルのアップグレードは、新しいバージョンのモデルのインストールに相当します。モデルをアップグレードすると、モデル自体とそのバイナリが変更され、必然的にサーバーの動作が停止するためです。
まったく同じサーバー マシンでアップグレードを実行する場合、ダウンタイムの発生が予想されます。これを回避するには、別のサーバー マシンに新しいバージョンをインストールし、インストールが完了したら、トラフィックを切り替えます。
標準的なアップグレードは次のようになります。
- ダウンタイムを準備して発表します (該当する場合)。
- 古いモデルの代わりに新しいモデルをインストールします。
- サーバーを実行します。
環境でマルチノードのロード バランサー セットアップを使用している場合は、各ノードを一度に 1 つずつ再インストールすることで、ダウンタイムを完全に回避できます。