安装#
Aerial Omniverse Digital Twin (AODT) 安装程序是一种在合格的系统上快速启动并运行全新安装的方法,无论是在云端还是本地部署。为了使已部署的系统能够运行 AODT,必须安装和配置几个组件。本节将详细介绍如何为每个合格的系统配置使用 AODT 安装程序。
系统要求#
AODT 可以安装在云端或本地。安装涉及部署一组前端组件和一组后端组件。前端和后端组件都需要一个 NVIDIA GPU。前端组件和后端组件可以部署到同一节点(即,共址)或不同的节点(即,多节点)。前端和后端可以部署在单个 GPU 设置上,通过数据库提示模拟。不同的是,要使前端和后端同时运行,至少需要 2 个 GPU。有关更多详细信息,请参阅本指南中的数据库回放部分。下表详细说明了每种情况下的 GPU 要求
系统类型 |
GPU 数量 |
GPU 显存 |
GPU 要求 |
GPU 注释 |
---|---|---|---|---|
仅前端 |
1 |
12GB+ |
GTX/RTX |
例如 RTX 6000 Ada, A10, L40 |
仅后端 |
1 |
48GB+ |
例如 RTX 6000 Ada, A100, H100, L40 |
|
前端和后端回放 |
1 |
48GB+ |
例如 RTX 6000 Ada, L40 |
|
前端和后端共址 |
2 |
见注释 |
见注释 |
1 个支持前端的 GPU,1 个后端 GPU |
下表描述了安装脚本使用的 GPU 驱动程序版本
系统类型 |
操作系统 |
已部署的驱动程序版本 |
---|---|---|
前端 azure |
Linux |
550.127.05 |
前端 azure |
Windows |
552.55 |
后端 azure |
Linux |
560.35.05 |
前端和后端回放 |
Linux |
560.35.05 |
前端和后端共址 |
Linux |
560.35.03 |
以及每种类型的操作系统支持。
系统类型 |
操作系统 |
---|---|
仅前端 |
Windows 11, Windows Server 2022, Ubuntu 22.04 |
仅后端 |
Ubuntu 22.04 |
前端和后端回放 |
Ubuntu 22.04 |
前端和后端共址 |
Ubuntu 22.04 |
对于内存和 CPU 要求,我们建议查看下一节中的合格系统。
附加信息#
AODT 后端支持以下流式多处理器 (SM) 架构:80、86、89 和 90。运行时逻辑检查
启动验证:启动时,后端确认它正在具有受支持的 SM 架构的系统上运行。如果检测到不支持的架构,它会向标准错误控制台发出错误并且应用程序终止。
编译时与运行时检查:后端还会将编译时 SM 架构与运行时 SM 架构进行比较。如果编译时架构与运行时架构不同,则后端会打印错误并退出。如果编译时过程指定了多个值,则运行时逻辑会选择最高值与运行时值进行比较。
编译选项:对于希望在用于编译后端的同一系统上或具有相同 SM 架构的不同系统上运行后端的用户,CMake 构建系统允许在 CMake 生成阶段指定 -DCMAKE_CUDA_ARCHITECTURES="native"
。这确保了编译后的版本与设备架构对齐,从而防止上述错误;如果用户在 CMake 生成期间未指定任何 -DCMAKE_CUDA_ARCHITECTURES
的值,则 "native"
也是默认值。
部署#
以下合格系统已经过测试,并且 AODT 安装程序直接支持
合格系统 |
节点 1 |
节点 2 |
---|---|---|
Azure VM (多节点) |
|
|
Dell R750 (共址) |
|
不适用 |
注意:在 Microsoft Azure A10 VM 上安装需要 NVIDIA GRID 驱动程序。
Azure#
Aerial Omniverse Digital Twin 可以使用 Azure 安装程序安装在 Microsoft Azure 上。Azure 安装程序可以从 NGC - Aerial Omniverse DT 安装程序 下载,使用版本标签 1.2.0
。
具体来说,用户可以首先从 Azure 文件夹下载并解压缩文件到本地目录,在该目录中创建一个名为 .secrets 的文件,并定义以下环境变量
RESOURCEGROUP=
WINDOWS_PASSWORD=
SSH_KEY_NAME=
LOCAL_IP=
GUI_OS=
NGC_CLI_API_KEY=
其中
变量 |
描述 |
---|---|
RESOURCEGROUP |
Microsoft Azure 资源组 |
SSH_KEY_NAME |
存储在 Microsoft Azure 中的 SSH 密钥的名称 |
WINDOWS_PASSWORD |
密码长度必须在 12 到 72 个字符之间,并且满足以下条件中的 3 个:1 个小写字符、1 个大写字符、1 个数字和 1 个特殊字符 |
LOCAL_IP |
将运行配置脚本的主机的 IP 地址(Azure 可见) |
GUI_OS |
Windows |
NGC_CLI_API_KEY |
NGC API 密钥 |
有关 NGC_CLI_API_KEY 的更多信息,请参见此处:NGC - 用户指南。
此外,如果需要,可以使用以下命令找到 LOCAL_IP,即本地机器的外部 IP 地址,该地址将用于连接到 VM。
curl ifconfig.me
私有 ssh 密钥必须存储在安装包可以访问的位置,例如 ~/.ssh/azure.pem
配置好上述变量后,我们可以使用 mcr.microsoft.com/azure-cli:cbl-mariner2.0
docker 镜像来运行配置脚本。
docker run --rm -it --env-file .secrets -v ./aodt_1.2.0:/aodt -w /aodt/azure mcr.microsoft.com/azure-cli:cbl-mariner2.0
docker 容器将挂载下载的脚本。
当对 GUI_OS 使用 Windows 时,AODT Azure 前端安装使用 nvidia nvidia-quadro-vws-win2022win2022-23-06-vgpu17-2:17.2.0 VM 镜像。我们可以在 此处 找到此镜像的详细信息。在使用此镜像之前,用户必须查看并接受该镜像的 Azure Marketplace 镜像条款。一种方法是在 azure-cli docker 容器内运行以下命令
$ az login
$ az vm image terms show --publisher nvidia --offer nvidia-quadro-vws-win2022 --plan ove
$ # Review the terms as needed, and then accept the terms
$ az vm image terms accept --publisher nvidia --offer nvidia-quadro-vws-win2022 --plan ove
在 docker 容器内,我们可以运行以下命令
$ az login
$ bash -e azure_install.sh
该脚本将创建 VM,配置网络入站端口,并下载下一步所需的脚本。执行结束时,它将输出类似这样的内容
To install AODT 1.2.0 on the VMs, execute the following command:
BACKEND_IP=<backend-ip> FRONTEND_IP=<frontend-ip> bash -e ./aodt_install.sh
其中 backend-ip 和 frontend-ip 是在配置期间分配给 VM 的 IP 地址。
仍然在 docker 容器中,执行给定的命令以继续安装
$ BACKEND_IP=<IP> FRONTEND_IP=<IP> bash -e ./aodt_install.sh
脚本预计需要几分钟才能完成。最后,它将显示
Use Microsoft Remote Desktop Connection to connect to <ip-address>
Username: .\aerial
Password: REDACTED-check-secrets-file
BACKEND_IP=<ip-address>
登录到 Azure VM#
我们可以使用 Microsoft 远程桌面客户端连接到安装结束时显示的 IP 地址,使用 .secrets 文件中配置的用户名和密码。
成功登录到远程桌面会话后,请等待安装脚本完成,同时忽略任何弹出窗口提示输入 NVIDIA Omniverse 电子邮件地址。
安装完成后,脚本将启动 AODT 应用程序并在浏览器中打开 Jupyter notebook。
Dell R750#
对于在本地的完整部署,我们可以选择预先认证的 Dell PowerEdge R750 服务器。使用 Ubuntu 安装程序中的默认选项安装 Ubuntu-22.04.3 Server
。加载 Ubuntu 22.04 Server ISO 时,我们可以使用可启动 USB 或服务器的虚拟媒体功能。有关安装 Ubuntu 22.04 Server 和创建可启动 USB 的说明,我们可以参考官方 Ubuntu 文档 此处。有关使用 R750 的虚拟媒体功能的说明,我们可以参考 Dell 的官方文档 此处。安装 Ubuntu-22.04.3 Server
后,我们可以使用 SSH 登录并运行以下命令
sudo apt-get install -y jq unzip
export NGC_CLI_API_KEY=<NGC_CLI_API_KEY>
AUTH_URL="https://authn.nvidia.com/token?service=ngc&scope=group/ngc:esee5uzbruax&group/ngc:esee5uzbruax/"
TOKEN=$(curl -s -u "\$oauthtoken":"$NGC_CLI_API_KEY" -H "Accept:application/json" "$AUTH_URL" | jq -r '.token')
versionTag="1.2.0"
downloadedZip="$HOME/aodt_1.2.0.zip"
curl -L "https://api.ngc.nvidia.com/v2/org/esee5uzbruax/resources/aodt-installer/versions/$versionTag/files/aodt_1.2.0.zip" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -o $downloadedZip
# Unzip the downloaded file
unzip -o $downloadedZip || jq -r . $downloadedZip
同样,有关 NGC_CLI_API_KEY 的更多信息,请参见此处:NGC - 用户指南。
下载并解压缩 aodt_1.2.0.zip 后,我们可以继续运行以下命令
cd aodt_1.2.0
./make_install.sh
./install.sh
安装完成后,我们可以使用 VNC 客户端连接到端口 5901 上的 VNC 服务器。VNC 密码是 nvidia
。
我们会发现脚本已经启动了 AODT 应用程序并在浏览器中打开了 Jupyter notebook。
如果服务器重启并且我们发现 AODT 应用程序未运行,我们可以打开终端并发出命令
~/aodt_1.2.0/frontend/start.sh
作为替代方案,我们可以使用桌面图标 AODT-1.2.0 来启动 AODT 应用程序,并将调试日志打印到终端窗口中。我们可能需要右键单击该图标并选择“允许启动”。
验证#
一旦 Aerial Omniverse Digital Twin 图形界面运行,我们可以单击显示齿轮的工具栏图标并连接到 RAN 数字孪生。
如果要求输入凭据,我们可以使用以下内容
用户名:
omniverse
密码:
aerial_123456
成功登录后,我们可以选择 Content 选项卡(有关更多详细信息,请参阅 图形用户界面 部分)并单击 Add New Connection。在对话窗口中,我们可以
输入
omniverse-server
单击
OK
展开
omniverse-server
树视图右键单击
omniverse://omniverse-server/Users/aerial/plateau/tokyo.usd
并打开地图。
地图加载完成后,我们将继续
选择 Viewport 选项卡
右键单击 Stage 小部件
并从上下文菜单中选择 Aerial > Create Panel 两次。
第一个面板将用于用户设备 UE,第二个面板将用于无线单元 (RU) - 默认情况下(请参阅 Stage 小部件中的 /Scenario 范围)。
定义面板后,我们可以
在 Viewport 中右键单击
从上下文菜单中选择 Aerial > Deploy RU
然后单击我们想要放置 RU 的最终位置
部署 RU 后,我们将从 Stage 小部件中选择它,并从 Property 小部件中启用 Show Raypaths
复选框。

类似地,我们将
在 Viewport 中右键单击
并从上下文菜单中选择 Aerial > Deploy UE。
但是,与 RU 的过程不同,这将把 UE 放在右键单击发生的位置。
最后,我们可以
在 Stage 小部件中选择 Scenario 条目
设置
Duration 等于 10.0
Interval 为 0.1
单击工具栏中的 Generate UEs 图标
单击 Start UE Mobility 图标
这将启动模拟并更新图形界面,如下图所示。
通过单击工具栏中的播放按钮,我们可以检查 UE 移动性的演变以及相应的射线,这些射线说明了 RU 发射的辐射如何到达 UE。
详细说明#
如上所述的安装过程旨在自动化,并尽可能地抽象出底层配置。但是,有时这些额外的细节会很有帮助。接下来的部分将详细介绍一些最常见的问题来源。
Azure - 订阅#
此安装假设用户只有一个订阅。如果有多个订阅,则可以使用 az account set
更改订阅
使用订阅 ID 更改活动订阅#
在 azure cli docker 容器内,在配置之前发出以下命令。
az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Azure - 防火墙#
Azure 安装脚本的一部分设置了 Azure 中前端和后端 VM 使用的防火墙配置。此默认配置允许仅为非常特定的 IP 打开非常特定的端口。后端 VM 和前端 VM 的端口不同。要查看这些防火墙的配置,请使用 Azure 门户,选择 VM,然后选择 VM 的网络配置。
用于防火墙配置的默认 IP 包括分配给前端 VM 的 IP、分配给后端 VM 的 IP 以及执行配置的机器的 IP。最后一个 IP 与存储在 .secrets 文件中的 LOCAL_IP 相同。以上说明显示了如何通过使用“curl”命令行工具查询公共端点来查找 LOCAL_IP。这将找到当前 IP 地址,并且该 IP 用于其余配置过程。
但是,有很多原因可能导致该 IP 地址发生变化,例如,如果从不同的位置或第二台计算机工作,或者 DHCP 租约在一段时间不活动后发生变化。如果 LOCAL_IP 发生变化,则防火墙将不允许连接。这是设计使然,但如果使用 LOCAL_IP 频繁更改的设置,则可能会成为问题。以下是一些可以解决此问题的方法
每次 LOCAL_IP 更改时,更新 Azure 防火墙中的 LOCAL_IP 以包含确切的 IP。例如,可以使用 Azure 门户来完成此操作。
如果已知 LOCAL_IP 可以从中提取的 IP 子网,则将防火墙中的 LOCAL_IP 更改为限制性较小的内容。例如,如果适用,则使用 /24 子网。
防火墙姿势没有万能的解决方案。您的本地 IT 部门或许能够提出适合您需求的建议。
Docker Compose#
后端 VM 利用 Docker Compose 来控制所有各种应用程序。这包括 aodt-sim 容器、aodt-gis 容器、clickhouse 数据库、Jupyter Notebook 和 Nucleus 服务器。Docker 和 Docker Compose 可用于排查这些服务的问题 - 通过读取日志、重启容器或修改配置。
Make 安装脚本#
安装过程已分为两个步骤。第一步 make_install.sh 将探测系统并创建一个安装脚本。第二步将使用生成的 install.sh 脚本来安装软件。
如果需要,用户可以在运行生成的安装脚本之前检查它们,以防某些模块需要自定义。make_install.sh 脚本可用于为三种不同的场景生成安装脚本
./make_install.sh frontend : 仅为前端组件生成 install.sh 脚本
./make_install.sh backend : 仅为后端组件生成 install.sh 脚本
./make_install.sh : 为后端和前端组件生成 install.sh 脚本(默认)