サーバーをデプロイする
独自の 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 カードを搭載したシステムにインストールする必要があります。
次のスクリプトを実行して、Docker と Nvidia Container Toolkit の両方をインストールできます。
https://github.com/UiPath/Infrastructure/blob/main/ML/ml_prereq_wsl.sh
https://github.com/UiPath/Infrastructure/blob/main/ML/ml_prereq_wsl.sh
Computer Vision サーバーを実行するには、WSL Linux ターミナルで次のコマンドを実行する必要があります。
export CV_URL="LINK_FROM_SALES_REP"
wget "$CV_URL" -O controls_detection.tar
docker load -i controls_detection.tar
docker run -p 8501:5000 --gpus all controls_detection eula=accept
export CV_URL="LINK_FROM_SALES_REP"
wget "$CV_URL" -O controls_detection.tar
docker load -i controls_detection.tar
docker run -p 8501:5000 --gpus 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
次のコマンドを実行します。
docker load -i controls_detection.tar
docker load -i controls_detection.tar
次のコマンドを実行します。
docker run \
-p 8501:5000 \
--gpus all \
controls_detection eula=accept
docker run \
-p 8501:5000 \
--gpus all \
controls_detection eula=accept
モデルのアップグレードは、新しいバージョンのモデルのインストールに相当します。モデルをアップグレードすると、モデル自体とそのバイナリが変更され、必然的にサーバーの動作が停止するためです。
まったく同じサーバー マシンでアップグレードを実行する場合、ダウンタイムの発生が予想されます。これを回避するには、別のサーバー マシンに新しいバージョンをインストールし、インストールが完了したら、トラフィックを切り替えます。
標準的なアップグレードは次のようになります。
- ダウンタイムを準備して発表します (該当する場合)。
- 古いモデルの代わりに新しいモデルをインストールします。
- サーバーを実行します。
環境でマルチノードのロード バランサー セットアップを使用している場合は、各ノードを一度に 1 つずつ再インストールすることで、ダウンタイムを完全に回避できます。
営業担当から提供されたリンクを、現在のターミナル セッションで保存します。
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 controls_detection eula=accept
podman run -p 8501:5000 --hooks-dir=/usr/share/containers/oci/hooks.d/
\--security-opt=label=disable controls_detection eula=accept
モデルのアップグレードは、新しいバージョンのモデルのインストールに相当します。モデルをアップグレードすると、モデル自体とそのバイナリが変更され、必然的にサーバーの動作が停止するためです。
まったく同じサーバー マシンでアップグレードを実行する場合、ダウンタイムの発生が予想されます。これを回避するには、別のサーバー マシンに新しいバージョンをインストールし、インストールが完了したら、トラフィックを切り替えます。
標準的なアップグレードは次のようになります。
- ダウンタイムを準備して発表します (該当する場合)。
- 古いモデルの代わりに新しいモデルをインストールします。
- サーバーを実行します。
環境でマルチノードのロード バランサー セットアップを使用している場合は、各ノードを一度に 1 つずつ再インストールすることで、ダウンタイムを完全に回避できます。
- Microsoft Windows
- WSL をインストールする
- Nvidia ドライバーのインストール
- Docker および Nvidia Container Toolkit をインストールする
- サーバーを実行する
- サーバーをネットワーク上で利用可能にする
- サーバーを自動的に開始する
- インストールの制約
- Ubuntu
- Computer Vision サーバー イメージのエクスポートをダウンロードする
- イメージを Docker に読み込む
- サーバーの起動
- Computer Vision モデルをアップグレードする
- Linux RHEL
- Computer Vision サーバー イメージのエクスポートをダウンロードする
- イメージを Podman に読み込む
- サーバーの起動
- Computer Vision モデルをアップグレードする