Holoscan CLI - Package 命令
holoscan package
- 为您的应用程序生成 HAP 兼容 容器。
holoscan package
[--help|-h] [--log-level|-l {DEBUG,INFO,WARN,ERROR,CRITICAL}] --config|-c CONFIG [--docs|-d DOCS] [--add DIR_PATH] [--models|-m MODELS] --platform PLATFORM [--platform-config PLATFORM_CONFIG] [--timeout TIMEOUT] [--version VERSION] [--base-image BASE_IMAGE] [--build-image BUILD_IMAGE] [--includes [{debug,holoviz,torch,onnx}]] [--build-cache BUILD_CACHE] [--cmake-args CMAKE_ARGS] [--no-cache|-n] [--sdk SDK] [--source URL|FILE] [--sdk-version SDK_VERSION] [--holoscan-sdk-file HOLOSCAN_SDK_FILE] [--monai-deploy-sdk-file MONAI_DEPLOY_SDK_FILE] [--output|-o OUTPUT] --tag|-t TAG [--username USERNAME] [--uid UID] [--gid GID] application [--source URL|FILE]
以下代码为 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-devkit
、igx-orin-devkit
、jetson-agx-orin-devkit
、x64-workstation
。
igx-orin-devkit
:IGX Orin DevKitjetson-agx-orin-devkit
:Orin AGX DevKitx64-workstation
:具有 x86-64 处理器 的系统
[--platform-config PLATFORM_CONFIG]
指定要生成的平台配置。PLATFORM_CONFIG
必须是以下之一:igpu
、igpu-assist
、dgpu
。
igpu
:支持集成 GPUigpu-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
:包含libtorch
和torchvision
运行时依赖项onnx
:包含onnxruntime
运行时、libnvinfer-plugin8
、libnconnxparser8
依赖项。
有关依赖项版本,请参阅 开发者资源。
用法
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