NVIDIA Holoscan SDK v2.9.0

Holoscan CLI - Package 命令

holoscan package - 为您的应用程序生成 HAP 兼容 容器。

以下代码为 x86_64 系统打包 Python 应用程序

复制
已复制!
            

# Using a Python directory as input # Required: a `__main__.py` file in the application directory to execute # Optional: a `requirements.txt` file in the application directory to install dependencies holoscan package --platform x64-workstation --tag my-awesome-app --config /path/to/my/awesome/application/config.yaml /path/to/my/awesome/application/ # Using a Python file as input holoscan package --platform x64-workstation --tag my-awesome-app --config /path/to/my/awesome/application/config.yaml /path/to/my/awesome/application/my-app.py

以下代码为带有独立 GPU 的 IGX Orin DevKit (aarch64) 打包 C++ 应用程序

复制
已复制!
            

# Using a C++ source directory as input # Required: a `CMakeLists.txt` file in the application directory holoscan package --platform igx-orin-devkit --platform-config dgpu --tag my-awesome-app --config /path/to/my/awesome/application/config.yaml /path/to/my/awesome/application/ # Using a C++ pre-compiled executable as input holoscan package --platform igx-orin-devkit --platform-config dgpu --tag my-awesome-app --config /path/to/my/awesome/application/config.yaml /path/to/my/awesome/bin/application-executable

注意

以上命令将生成的镜像加载到 Docker 上,以便可以使用 docker images 访问该镜像。

如果您需要为不同的平台打包,或者想要将生成的镜像传输到另一个系统,请使用 --output /path/to/output 标志,以便将生成的软件包保存到指定位置。

application

要打包的应用程序的路径。支持以下输入

  • C++ 源代码:您可以传递包含 C++ 源代码的目录路径,其中包含 CMakeLists.txt 文件,打包器将尝试使用 CMake 构建您的应用程序,并将编译后的应用程序包含在最终软件包中。

  • C++ 预编译可执行文件:可以直接向打包器提供预构建的可执行二进制文件。

  • Python 应用程序:您可以传递

    • 包含要执行的 __main__.py 文件(必需)和可选的 requirements.txt 文件(定义 Python 应用程序的依赖项)的目录,或者

    • 要执行的单个 Python 文件的路径

警告

Python (PyPI) 模块安装到用户的(通过 [--username USERNAME] 参数)目录中,用户 ID 通过 [--uid UID] 指定。因此,当在 Kubernetes 或其他服务提供商上运行打包的 Holoscan 应用程序,使用非 root 用户运行 Docker,以及运行 Holoscan CLI run 命令(其中登录用户的 ID 不同)时,请确保指定构建应用程序包时使用的 USER ID

例如,在使用 Argo 运行 UID=1000 的 Holoscan 打包应用程序时,包含 securityContext

复制
已复制!
            

spec: securityContext: runAsUser: 1000 runAsNonRoot: true

--config|-c CONFIG

应用程序的 配置文件的路径。配置文件必须是 YAML 格式,文件扩展名为 .yaml

[--docs|-d DOCS]

文档、README、许可证的可选目录路径,这些文档、README、许可证应包含在软件包中。

[--add DIR_PATH]

--add 允许将其他文件添加到应用程序包中。使用此选项可包含应用程序依赖的其他 Python 模块、文件或静态对象 (.so)。

  • DIR_PATH 必须是目录路径。打包器将递归复制 DIR_PATH 内的所有文件和目录到 /opt/holoscan/app/lib

  • --add 可以多次指定。

例如

复制
已复制!
            

holoscan package --add /path/to/python/module-1 --add /path/to/static-objects

以上示例中,假设目录包含以下内容

复制
已复制!
            

/path/to/ ├── python │ ├── module-1 │ ├── __init__.py │ └── main.py └── static-objects ├── my-lib.so └── my-other-lib.so

生成的软件包将包含以下内容

复制
已复制!
            

/opt/holoscan/ ├── app │ └── my-app └──lib/ ├── module-1 ├── __init__.py └── main.py ├── my-lib.so └── my-other-lib.so

[--models|-m MODELS]

模型文件、包含单个模型的目录或包含多个模型的目录的可选目录路径。

单个模型示例

复制
已复制!
            

my-model/ ├── surgical_video.gxf_entities └── surgical_video.gxf_index my-model/ └── model ├── surgical_video.gxf_entities └── surgical_video.gxf_index

多模型示例

复制
已复制!
            

my-models/ ├── model-1 │ ├── my-first-model.gxf_entities │ └── my-first-model.gxf_index └── model-2 └── my-other-model.ts

--platform PLATFORM

要生成的平台类型的逗号分隔列表。指定的每个平台值都会生成一个独立的容器镜像。如果您在同一架构上运行打包器,则生成的镜像会自动加载到 Docker 上,并且可以通过 docker images 访问。否则,请使用 --output 标志将生成的镜像保存到磁盘。

PLATFORM 必须是以下之一:clara-agx-devkitigx-orin-devkitjetson-agx-orin-devkitx64-workstation

  • igx-orin-devkit:IGX Orin DevKit

  • jetson-agx-orin-devkit:Orin AGX DevKit

  • x64-workstation:具有 x86-64 处理器 的系统

[--platform-config PLATFORM_CONFIG]

指定要生成的平台配置。PLATFORM_CONFIG 必须是以下之一:igpuigpu-assistdgpu

  • igpu:支持集成 GPU

  • igpu-assist:在存在 dGPU 的情况下,支持 iGPU 上的仅计算任务

  • dgpu:支持专用 GPU

注意

--platform 不是 x64-workstation(使用 dgpu)时,--platform-config 是必需的。

[--timeout TIMEOUT]

应用程序的可选超时值,供受支持的编排器管理应用程序的生命周期。默认为 0

[--version VERSION]

应用程序的可选版本号。指定后,它将覆盖 配置文件中指定的值。

[--base-image BASE_IMAGE]

可选地指定用于构建打包应用程序的基础容器镜像。它必须是有效的 Docker 镜像标签,可以从在线访问或通过 `docker images` 访问。默认情况下,打包器会从 NGC 中选择要使用的基础镜像。

[--build-image BUILD_IMAGE]

可选地指定用于构建 C++ 应用程序的构建容器镜像。它必须是有效的 Docker 镜像标签,可以从在线访问或通过 `docker images` 访问。默认情况下,打包器会从 NGC 中选择要使用的构建镜像。

[--includes [{debug,holoviz,torch,onnx}]]

为了减小打包的应用程序容器的大小,CLI 打包器默认情况下包含运行为 Holoscan 设计的应用程序所需的最小运行时依赖项。您可以使用此选项指定要包含在打包的应用程序中的其他运行时依赖项。以下选项可用

  • debug:包含调试工具,例如 gdb

  • holoviz:包含用于 x11 和 Wayland 上 Holoviz 渲染的依赖项

  • torch:包含 libtorchtorchvision 运行时依赖项

  • onnx:包含 onnxruntime 运行时、libnvinfer-plugin8libnconnxparser8 依赖项。

注意

有关依赖项版本,请参阅 开发者资源

用法

复制
已复制!
            

holoscan package --includes holoviz torch onnx

[--build-cache BUILD_CACHE]

指定用于存储 Docker 缓存的目录路径。默认为 ~/.holoscan_build_cache。如果 $HOME 目录不可访问,则 CLI 使用 /tmp 目录。

[--cmake-args CMAKE_ARGS]

构建 C++ 应用程序时要使用的逗号分隔的 cmake 参数列表。

例如

复制
已复制!
            

holoscan package --cmake-args "-DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_ARG=VALUE"

[--no-cache|-n]

构建镜像时不要使用缓存。

[--sdk SDK]

用于构建应用程序的 SDK:Holoscan 或 MONAI-Deploy。SDK 必须是以下之一:holoscan、monai-deploy。

[--source URL|FILE]

使用安全托管的文件或本地文件系统中的文件覆盖工件清单源。

例如:https://my.domain.com/my-file.json

[--sdk-version SDK_VERSION]

设置用于构建和打包应用程序的 SDK 版本。如果未指定,打包器将尝试检测已安装的版本。

[--holoscan-sdk-file HOLOSCAN_SDK_FILE]

Holoscan SDK Debian 或 PyPI 软件包的路径。如果未指定,打包器将根据检测/指定的 SDK 版本从互联网下载 SDK 文件。HOLOSCAN_SDK_FILE 文件名必须具有 .deb.whl 文件扩展名,分别对应 Debian 软件包或 PyPI wheel 软件包。

[--monai-deploy-sdk-file MONAI_DEPLOY_SDK_FILE]

MONAI Deploy App SDK Debian 或 PyPI 软件包的路径。如果未指定,打包器将根据 SDK 版本从互联网下载 SDK 文件。MONAI_DEPLOY_SDK_FILE 软件包文件名必须具有 .whl.gz 文件扩展名。

[--output|-o OUTPUT]

结果镜像将写入的输出目录。

注意

如果此标志不存在,打包器会将生成的镜像加载到 Docker 上,以便可以使用 docker images 访问该镜像。因此,当为与运行打包器的主机系统不同的目标架构构建软件包时,需要 --output 标志。

--tag|-t TAG

名称以及可选的标签(格式:name:tag)。

例如

复制
已复制!
            

my-company/my-application:latest my-company/my-application:1.0.0 my-application:1.0.1 my-application

[--username USERNAME]

要在容器执行上下文中创建的可选用户名。默认为 holoscan

[--uid UID]

要与使用 --username 创建的用户关联的可选用户 ID,默认为 1000

警告

由于 Docker 的一个未解决的 问题,非常大的 UID 值可能会导致非常大的镜像。建议在打包应用程序时使用默认值 1000,并在运行应用程序时使用您当前的 UID/GID。

[--gid GID]

要与使用 --username 创建的用户关联的可选组 ID,默认为 1000

上一个 Holoscan CLI
下一个 Holoscan CLI - Run 命令
© 版权所有 2022-2024, NVIDIA。 最后更新于 2025 年 1 月 27 日。