安装#

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。运行时逻辑检查

  1. 启动验证:启动时,后端确认它正在具有受支持的 SM 架构的系统上运行。如果检测到不支持的架构,它会向标准错误控制台发出错误并且应用程序终止。

  2. 编译时与运行时检查:后端还会将编译时 SM 架构与运行时 SM 架构进行比较。如果编译时架构与运行时架构不同,则后端会打印错误并退出。如果编译时过程指定了多个值,则运行时逻辑会选择最高值与运行时值进行比较。

编译选项:对于希望在用于编译后端的同一系统上或具有相同 SM 架构的不同系统上运行后端的用户,CMake 构建系统允许在 CMake 生成阶段指定 -DCMAKE_CUDA_ARCHITECTURES="native"。这确保了编译后的版本与设备架构对齐,从而防止上述错误;如果用户在 CMake 生成期间未指定任何 -DCMAKE_CUDA_ARCHITECTURES 的值,则 "native" 也是默认值。

部署#

以下合格系统已经过测试,并且 AODT 安装程序直接支持

合格系统

节点 1

节点 2

Azure VM (多节点)

  • 前端节点
  • Standard_NV36ads_A10_v5
  • Windows Server 2022
  • nvidia:nvidia-quadro-vws-win2022:win2022-23-06-vgpu17-2:17.2.0
  • NVIDIA A10 GPU
  • 36 个 vcpu
  • 内存 440GB

  • 后端节点
  • Standard_NC24ads_A100_v4
  • Ubuntu Server 22.04
  • NVIDIA A100 GPU
  • 24 个 vcpu
  • 内存 220GB

Dell R750 (共址)

  • 共址
  • Ubuntu Server 22.04
  • Intel Xeon Gold 6336Y 2.4G, 24C/48T
  • PCIe Gen4
  • 2x NVIDIA RTX 6000 Ada GPU
  • 内存 512GB DDR4
  • 存储 2TB

不适用

注意:在 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

system

成功登录后,我们可以选择 Content 选项卡(有关更多详细信息,请参阅 图形用户界面 部分)并单击 Add New Connection。在对话窗口中,我们可以

  • 输入 omniverse-server

  • 单击 OK

  • 展开 omniverse-server 树视图

  • 右键单击 omniverse://omniverse-server/Users/aerial/plateau/tokyo.usd 并打开地图。

system

地图加载完成后,我们将继续

  • 选择 Viewport 选项卡

  • 右键单击 Stage 小部件

  • 并从上下文菜单中选择 Aerial > Create Panel 两次。

第一个面板将用于用户设备 UE,第二个面板将用于无线单元 (RU) - 默认情况下(请参阅 Stage 小部件中的 /Scenario 范围)。

system

定义面板后,我们可以

  • 在 Viewport 中右键单击

  • 从上下文菜单中选择 Aerial > Deploy RU

  • 然后单击我们想要放置 RU 的最终位置

system

system

部署 RU 后,我们将从 Stage 小部件中选择它,并从 Property 小部件中启用 Show Raypaths 复选框。

system

类似地,我们将

  • 在 Viewport 中右键单击

  • 并从上下文菜单中选择 Aerial > Deploy UE

但是,与 RU 的过程不同,这将把 UE 放在右键单击发生的位置。

system

最后,我们可以

  • 在 Stage 小部件中选择 Scenario 条目

  • 设置

    • Duration 等于 10.0

    • Interval 为 0.1

  • ../_images/button_as_mobi.png 单击工具栏中的 Generate UEs 图标

  • ../_images/button_as_play.png 单击 Start UE Mobility 图标

这将启动模拟并更新图形界面,如下图所示。

system

通过单击工具栏中的播放按钮,我们可以检查 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 脚本(默认)