创建应用程序
使用文本表示和 CLI 工具
设置 NGC API 密钥
设置 NGC API 密钥以同步来自 NGC 的微服务:请确保您已首先按照先决条件生成您的 NGC 个人密钥。
$ ucf_app_builder_cli registry repo set-api-key -a <API-KEY>
Checking which NGC UCS teams you have access to
Adding NGC Catalog team ace
Repository 'catalog-ace' added
Adding NGC Catalog team ucs-ms
以 “catalog-” 开头的存储库名称表示它们存在于 NGC 统一目录中,而不是 NGC 私有注册表中。NGC 统一目录包含完全公开的工件,或需要某些产品启用(订阅)才能访问某些工件(如 ace-ea 或 nvaie)的工件。
该命令将打印使用 API 密钥可以访问的存储库。
列出可用的微服务
要获取可用微服务的列表
$ ucf_app_builder_cli service list
List of available services in local repository:
==============================================
ucf.svc.myservice
List of available services in UCF repository:
================================================
ucf.svc.botmaker.dialog-manager
ucf.svc.botmaker.speech-controller
ucf.svc.botmaker.speech-web-app
ucf.svc.botmaker.text-web-app
ucf.svc.riva.speech-skills
该命令列出本地构建的以及 NGC 存储库中可用的微服务。
查看微服务的信息
要查看有关微服务的信息,请运行
$ ucf_app_builder_cli service info -n ucf.svc.botmaker.speech-web-app name: ucf.svc.botmaker.speech-web-app specVersion: 2.5.0 chart: https://helm.ngc.nvidia.com/eevaigoeixww/ucf-11-ea-release/charts/botmaker-speech-web-app-2.0.0.tgz description: BotMaker Speech Web App type: msapplication tags: [] keywords: [] publish: false ciTrigger: false egress: - name: speech-controller description: Speech Controller gRCPC endpoint protocol: TCP scheme: grpc mandatory: true data-flow: in-out ingress: - name: webapp-ui description: Web App UI Endpoint scheme: http data-flow: in-out service: botmaker-speech-web-app-deployment-service port: 5001 protocol: TCP metadata: {} version: 2.0.0 displayName: BotMaker Speech Web App category: functional: Speech AI industry: General secrets: [] buildToolVersion: 1.1.1 Parameters: ------------- debug: (boolean), Start bot in debug mode [Mandatory:False] feedback: (boolean), Enables feedback buttons in web mode [Mandatory:False] gunicornWorkers: (string ), Number of Gunicorn Workers for FM Server [Mandatory:False] gunicornTimeout: (string ), Gunicorn Timeout for FM Server [Mandatory:False] Compliance Info: --------------------- Report Generated on 2022-11-22 18:24:51 (UTC) using MSBuilder v1.1.1 Development compliance (Mandatory) 100.0% Development compliance (Optional) 66.66%
根据此信息,用户可以选择要使用的微服务以及如何在应用程序中使用它们 - 设置参数、连接端点等。
在上述命令中添加 --show-docs
将打印微服务的详细文档。
$ ucf_app_builder_cli service info -n ucf.svc.botmaker.speech-web-app --show-docs
...
Documentation:
--------------
╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ ucf.svc.botmaker.speech-web-app ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Description
BotMaker Speech Web App
Sample web application that communicates with Speech Controller and can be used to interact with speech based bot using web
browser.
Usage
Params:
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ botmaker-webapp: │
│ debug: false │
│ # Show debug info for bot in Web App │
│ feedback: true │
│ # Enables feedback buttons in web mode │
│ gunicornWorkers: "1" │
│ # Number of Gunicorn Workers for Web App │
│ gunicornTimeout: "120" │
│ # Gunicorn Timeout for Web App │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Connections:
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ connections: │
│ botmaker-webapp/speech-controller: speech-controller/grpc-api │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Performance
NA
Supported Platforms
x86 dGPU
Deployment requirements
1 Make sure k8s foundational services are running
License
NVIDIA Proprietary License
Known Issues / Limitations
NA
References
NA
创建应用程序样板
现在已经选择了所需的微服务,我们可以开始创建应用程序了。
我们将首先创建一个样板,然后开始更新它以匹配参考应用程序 更新参考应用程序。
运行以下命令以生成应用程序样板
$ ucf_app_builder_cli app create my-application
UCF Application graph boilerplate generated at my-application.yaml (Doc: README.md)
这将生成一个新的文件 my-application.yaml
以及应用程序文档的 README.md
。
该文件是一个包含以下内容的模板
specVersion: 2.5.0 version: 0.0.1 doc: README.md name: my-application description: Description for my-application dependencies: - ucf.svc.microserviceA:0.0.1 - ucf.svc.microserviceB:0.0.1 components: - name: microserviceA type: ucf.service.microserviceA parameters: paramA1: 100 paramA2: - name: test secrets: some-secret-name: some-secret - name: microserviceB type: ucf.service.microserviceB parameters: paramB1: false paramB2: - name: test connections: microserviceA/http: microserviceB/http vaultAgent: auth: path: auth/jwt/authMountPath type: jwt jwt: audience: https://vault-service:443 role: auth-role role: auth-role namespace: vault-namespace service: https://vault-service/ # certificates: # devCerts: # file: certificates.yaml # addToHelmChart: false secrets: some-secret: vaultAgent: path: secret/mount/path template: type: kv key: KEY_IN_SECRET # some-secret: # k8sSecret: # secretName: <k8sSecretName> # key: <keyInK8sSecret> # some-secret: # secretsStoreCsi: # providerClassName: <providerClassName> # objectName: <objectName> # some-secret: # certificate: # certName: <certificateName> # type: <certificate/privateKey/issuingCA>
注意
应用程序名称不应包含空格
更新应用程序信息
更新应用程序的基本信息,如名称、简短描述等。有关字段的更多信息,请参阅 基本信息。
更新后,该部分将如下所示
specVersion: 2.5.0 version: 1.13.1 doc: README.md name: ucf-bot-app description: UCF application for a bot
更新依赖项
将要在应用程序中使用的微服务添加到 dependencies
部分。此信息是构建应用程序时获取所需版本的微服务所必需的。
必须在此部分添加微服务列表及其所需的版本。格式是字符串列表 <microservice-type>:<microservice-version>
。微服务版本可以从上面描述的 service info
命令中获得。
要查看微服务的所有可用版本,请运行
$ ucf_app_builder_cli service versions -n ucf.svc.botmaker.speech-web-app
List of versions for service in UCF repository:
===============================================
2.0.0
<microservice-version>
可以是固定版本,也可以是 NPM 版本范围规范的格式 https://github.com/npm/node-semver#ranges
更新后,该部分将如下所示
dependencies:
- ucf.svc.riva.speech-skills:2.0.0
- ucf.svc.botmaker.speech-web-app:>=2.0.0 && < 3.0.0
- ucf.svc.botmaker.speech-controller:2.0.x
- ucf.svc.botmaker.dialog-manager:2.0.0
在上面的示例中,当构建应用程序时,工具将获取与该微服务的版本规范匹配的最高版本。
对于
ucf.svc.riva.speech-skills
和ucf.svc.botmaker.dialog-manager
,将选择版本2.0.0
对于
ucf.svc.botmaker.speech-web-app
,如果可用版本为1.0.0
、2.0.0
和3.0.0
,则将选择版本3.0.0
对于
ucf.svc.botmaker.speech-controller
,如果可用版本为1.0.0
、2.0.0
和2.1.0
,则将选择版本2.0.0
这允许在构建应用程序时选择最新兼容版本的微服务,而无需更新应用程序图文件。
UCS 微服务遵循语义版本控制 - <MAJOR>.<MINOR>.<PATCH>
。预发布版本也受支持,如 semver.org (例如 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7 等) 所述。以下是在使用语义版本控制时需要记住的一些重要概念
版本
<MAJOR>
部分的更改表示重大更改,可能破坏向后兼容性。版本
<MINOR>
部分的更改表示对微服务进行的增强,并保留了向后兼容性。版本
<PATCH>
部分的更改表示对微服务进行的次要更改,例如错误修复,并保留了向后兼容性。
添加和配置微服务
接下来,我们将微服务添加到应用程序并配置它们,即设置它们的参数和密钥。这是通过将微服务添加到 components
部分来完成的。
例如,可以使用以下方法将 ucf.svc.botmaker.speech-web-app
添加到应用程序中
- name: botmaker-webapp
type: ucf.svc.botmaker.speech-web-app
parameters:
debug: false
gunicornTimeout: "60"
imagePullSecrets:
- name: ngc-docker-reg-secret
必须根据微服务的参数模式设置参数,参数模式可以从 service info
命令输出中获得。例如,对于 ucf.svc.botmaker.speech-web-app
$ ucf_app_builder_cli service info -n ucf.svc.botmaker.speech-web-app ... Parameters: ------------- speech: (boolean), Speech Web App or Text Web App [Mandatory:False] debug: (boolean), Start bot in debug mode [Mandatory:False] feedback: (boolean), Disables feedback buttons in web mode [Mandatory:False] gunicornWorkers: (string ), Number of Gunicorn Workers for FM Server [Mandatory:False] gunicornTimeout: (string ), Gunicorn Timeout for FM Server [Mandatory:False] ...
这里,debug
是一个 boolean
参数,gunicornTimeout
是一个 string
参数。必须指定标记为强制性的参数。一些微服务具有嵌套参数,如下例所示。
UCS 应用程序构建工具将验证这些参数。在应用程序构建期间,如果未设置强制参数或它们与参数模式不匹配,则构建工具将抛出错误。例如,如果 debug
设置为 "123"
Validating application ...
debug:'123' is not of type 'boolean'
Warning!!! parameter validation failed for microservice instance botmaker-webapp
Application validation failed
对于使用 UCS MS Builder Tool 构建 Helm Chart 的微服务,会隐式添加一些参数。这些参数不会显示在 service info
输出中。例如,imagePullSecrets
是一个隐式参数。隐式添加的参数在下一节中描述。
隐式添加的参数
如上一节所述,使用 UCS MS Builder Tool 生成 Helm Chart 的微服务会隐式添加一些参数。
以下是如何设置这些参数及其详细信息的示例
- name: <svc-name>
type: <svc-ucf-type>
parameters:
imagePullSecrets: # List of K8S secrets to be used for pulling images required by the MS (Since 1.0 EA)
- name: ngc-docker-reg-secret
ucfVisibleGpus: [1, 2] # List of GPUs that should be made visible to the containers in the MS. Internally sets NVIDIA_VISIBLE_GPUS env var (Since 1.0 EA)
resources: # Resource requests and limits to set on the containers in the MS. (Since 1.0 EA)
requests: # Refer to - https://kubernetes.ac.cn/docs/reference/generated/kubernetes-api/v1.22/#resourcerequirements-v1-core
cpu: 1
limits:
nvidia.com/gpu: 1
podAnnotations: # Annotations to set on the pods belonging to the MS (Since 1.1 EA)
annotation-name: annotation-value
podLabels: # Labels to set on the pods belonging to the MS (Since 1.1 EA)
label-name: label-value
extraPodVolumes: # List of extra volumes to add to all the pods belonging to the MS (Since 1.1 EA)
- name: extra-vol1 # Refer to https://kubernetes.ac.cn/docs/reference/generated/kubernetes-api/v1.22/#volume-v1-core
emptyDir: {}
extraPodVolumeMounts: # List of extra volume mounts to add to all the containers of all the pods belonging to the MS (Since 1.1 EA)
- name: extra-vol1:
mountPath: /tmp/extra-vol-dir
svcAnnotations: # Annotations to set on the services belonging to the MS (Since 1.1 EA)
annotation-name: annotation-value
svcLabels: # Labels to set on the services belonging to the MS (Since 1.1 EA)
label-name: label-value
global:
ucfGlobalEnv: # List of environment variables to set in all containers of all the pods belonging to the MS (Since 1.1 EA)
- name: SOME_ENV_VAR_NAME
value: someEnvVarValue
配置密钥
必须为每个微服务指定所有强制性密钥。可以使用 service info
命令查看密钥要求。
有关密钥在 UCS 工具中如何工作以及如何配置它们的更多信息,请参阅 密钥管理。
连接微服务端点
接下来,我们将微服务连接在一起。具有强制性 Egress 端点的微服务必须连接到另一个有意义的微服务,该微服务具有相应的和兼容的 Ingress 端点,以提供所需的功能。
微服务的端点可以从 service info
命令输出中获得。
连接被指定为应用程序 yaml 中具有顶级键 connections
的对象。连接格式如下
connections:
<egress-endpoint-component-name1>/<egress-endpoint-name1>: <ingress-endpoint-component-name1>/<ingress-endpoint-name1>
<egress-endpoint-component-name2>/<egress-endpoint-name2>: <ingress-endpoint-component-name2>/<ingress-endpoint-name2>
如果出口端点支持多个连接 (multi: true
),则可以使用数组样式格式将多个入口端点连接到它
connections: <egress-endpoint-component-name>/<egress-endpoint-name>: [ <ingress-endpoint-component-name1>/<ingress-endpoint-name1>, <ingress-endpoint-component-name2>/<ingress-endpoint-name2> ]
UCS 应用程序构建工具将验证端点和连接。如果未连接强制性 Egress 端点或发生无效连接,则工具将抛出错误。
添加详细文档
将构建应用程序所需的任何详细文档以及然后将构建的 Helm Chart 部署到应用程序图文件的 README 文件中。
部署的值规范文件
应用程序开发人员可以选择值规范文件作为构建应用程序时的可选输入,该文件指定如何覆盖部署的值。该文件采用多文档 YAML 格式,每个文档定义一个值规范,该规范应用于应用程序中的某些微服务实例。
以下是值规范文件的简单示例
spec:
namespace: my-application
---
spec:
serviceAccount:
name: my-sa
create: True
usedBy: ["dialog-manager", "speech-controller"]
“usedBy” 对于值规范是可选的,当 “usedBy” 不存在时,应用程序中的所有服务实例都适用。
下表列出了值规范中支持的所有值。
字段 |
描述 |
---|---|
命名空间 |
服务预期部署到的命名空间 |
服务帐户 |
微服务的服务帐户信息 |
nodeSelector |
节点标签,用于选择可以在其上调度 Pod 的节点,更多信息请参见 <https://kubernetes.ac.cn/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling> |
tolerations |
用于允许 Pod 在具有匹配污点的节点上调度的规则,更多信息请参见 <https://kubernetes.ac.cn/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling> |
affinity |
用于约束 Pod 可以调度到哪些节点的规则,更多信息请参见 <https://kubernetes.ac.cn/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling> |
storageClassName |
用于持久卷声明的存储类名称 |
使用 UCS Studio
有关使用 UCS Studio 创建应用程序的示例,请参阅 创建参考应用程序。
构建应用程序
可以使用 UCS Application Builder CLI
工具或 UCS Studio
GUI 构建 UCS 应用程序。
使用 CLI 工具
可以使用以下命令构建现有的应用程序图文件
$ ucf_app_builder_cli app build app.yaml
2022-12-05 14:44:52,464 - AppBuilder - INFO - Syncing any missing service versions to cache...
2022-12-05 14:44:52,507 - AppBuilder - INFO - Validating application ...
2022-12-05 14:44:52,517 - AppBuilder - INFO - Building application ucf-bot-app-1.13.1 ...
2022-12-05 14:45:00,122 - AppBuilder - INFO - Application Information written to ucf-bot-app-1.13.1/app_info.yaml
2022-12-05 14:45:00,122 - AppBuilder - INFO - Application compliance report generated at ucf-bot-app-1.13.1/compliance_report.json
2022-12-05 14:45:00,123 - AppBuilder - INFO - Application Helm Chart generated in ucf-bot-app-1.13.1
2022-12-05 14:45:00,123 - AppBuilder - INFO - App built
应用程序构建执行多项验证,包括任何语法错误、不正确的参数、无效的连接,并在出现任何问题时失败
$ ucf_app_builder_cli app build app.yaml
2022-12-05 14:46:16,846 - AppBuilder - INFO - Syncing any missing service versions to cache...
2022-12-05 14:46:16,888 - AppBuilder - INFO - Validating application ...
2022-12-05 14:46:16,891 - AppBuilder - ERROR - Mandatory endpoint 'speech-controller' not set for microservice instance speech-web-app
2022-12-05 14:46:16,899 - AppBuilder - ERROR - Application validation failed
参数文件
与其在应用程序 yaml 中指定参数,不如通过参数(params)文件提供给定应用程序组件的某些或所有参数。例如,给定名为 创建应用程序样板 部分中的应用程序示例,我们可以将参数放在 params.yaml 文件中,而不是在应用程序 YAML 中提供参数,如下所示
microserviceA:
paramA1: 100
paramA2:
- name: test
microserviceB:
paramB1: false
paramB2:
- name: test
可以使用以下命令应用参数文件
$ ucf_app_builder_cli app build app.yaml params1.yaml params2.yaml
您还可以混合和匹配,以便应用程序 YAML 包含一些定义的参数,而其他参数在参数文件中提供。如果参数在两个位置都定义了,则参数文件中的参数将优先。此外,可以指定多个参数文件以提供级联方式来覆盖参数。最右侧位置定义的参数将优先。例如,如果您使用以下命令行构建应用程序
ucf_app_builder_cli app build app.yaml params1.yaml params2.yaml
并且某些应用程序组件 C 的某些参数 P 在 app.yaml 以及 params1.yaml 和 params2.yaml 中指定,则将使用 params2.yaml 中的 P 值。
从 2.8.1 版本开始,参数文件也支持应用程序组件参数块中内置的 “files” 参数。
值规范文件
可以使用 ‘-v’ 指定值规范文件
$ ucf_app_builder_cli app build app.yaml params1.yaml params2.yaml -v value_spec.yaml
使用 UCS Studio
有关使用 UCS Studio 构建应用程序的示例,请参阅 创建参考应用程序。
构建输出
构建应用程序会生成以下内容
命令输出中提到的位置的可部署 Helm Chart,例如
ucf-bot-app-1.13.1
应用程序信息文件,其中包含一些对部署应用程序有用的信息,例如
ucf-bot-app-1.13.1/app_info.yaml
。目前包括应用程序中使用的密钥列表及其详细信息。这可以用于在部署应用程序之前设置所有密钥。
应用程序中使用的微服务公开的指标列表及其详细信息。这可以用于创建任何 Prometheus 规则或警报或 HPA 配置。
此文件的示例
metrics: - name: nv_inference_count description: No. of inference requests executed by the server labels: [ model, version ] microservice: ucf.svc.riva.speech-skills v2.0.0 secrets: - name: my-ngc-api-key description: Secret for NGC API key type: Kubernetes Secret secretName: ngc-api-key-secret secretKey: NGC_API_KEY usedBy: - ucf.svc.riva.speech-skills v2.0.0 - ucf.svc.botmaker.speech-controller v2.0.0 - ucf.svc.botmaker.dialog-manager v2.0.0
值覆盖 yaml 文件,其中包含适用于应用程序 Helm Chart 的值子集,可用于在安装期间覆盖值
添加到应用程序的所有微服务的组合合规性报告,例如
ucf-bot-app-1.13.1/compliance_report.json
。此文件的示例{ "name": "ucf-bot-app", "version": "1.13.1", "time-utc": "2023-03-13 13:21:33", "appbuilder-version": "2.0.0", "compliance-development-mandatory-overall": 100.0, "compliance-development-optional-overall": 49.99, "compliance-ms": [ { "name": "ucf.svc.riva.speech-skills", "version": "2.0.0", "compliance-development-mandatory": 100.0, "compliance-development-optional": 66.66 }, { "name": "ucf.svc.botmaker.speech-web-app", "version": "2.0.0", "compliance-development-mandatory": 100.0, "compliance-development-optional": 66.66 }, { "name": "ucf.svc.botmaker.speech-controller", "version": "2.0.0", "compliance-development-mandatory": 100.0, "compliance-development-optional": 33.33 }, { "name": "ucf.svc.botmaker.dialog-manager", "version": "2.0.0", "compliance-development-mandatory": 100.0, "compliance-development-optional": 33.33 } ] }
使用 Helm 部署应用程序
构建 UCS 应用程序会生成可部署的 Helm Chart。部署它的一个简单方法是使用 helm install
命令
$ helm install <release-name> <app-output-helm-chart>
一些微服务使用 NodePort
服务类型将其功能公开给外部用户。在某些云服务提供商提供的 Kubernetes 中,公开 NodePort
服务可能不可行或可能很棘手。在这种情况下,可以使用 global.useLoadBalancerInsteadOfNodePort
参数将 NodePort
服务类型覆盖为 LoadBalancer
。这仅适用于使用 UCS 1.5 或更高版本构建的微服务。以下是使用该选项的示例
$ helm install <release-name> <app-output-helm-chart> –set=global.useLoadBalancerInsteadOfNodePort=true
用户也可以有自己的部署应用程序图表的方法。
复制到输出 Helm Chart 的应用程序 README 可能包含部署应用程序所需的其他先决条件/步骤。
某些应用程序依赖于核心服务,如 Vault Agent Injector、Secrets Store CSI Driver。用户必须在部署应用程序之前部署这些服务。在应用程序构建期间生成的 应用程序信息 可能会有所帮助。
将应用程序部署到 NVCF
UCS 工具允许您构建应用程序并直接在 NVCF 上部署为云函数。以下示例演示了将现有的 UCS 微服务 ucf.svc.nvcf.image-segmentation:1.3.0
部署到 NVCF。
创建应用程序清单
将以下内容保存到名为 app.yaml 的文件中
specVersion: '2.5.0' version: 0.0.2 doc: README.md name: image-segmentation-app description: Performs segmentation of a given image and is based on Deepstream 6.2 triton docker dependencies: - ucf.svc.nvcf.image-segmentation:1.3.0 components: - name: image-segmentation type: ucf.svc.nvcf.image-segmentation parameters: imagePullSecrets: - name: ngc-docker-reg-secret
为 UCS 工具创建 NVCF 配置文件
将以下内容保存到名为 nvcf.yaml 的文件中,并将 “DockerRegSecrets” 中的 “Password” 字段设置为您的 NGC API 密钥
FunctionName: "image-segmentation-service" # NVCF function name InferenceUrl: "/grpc" # NVCF function interface URL. Use '/grpc' for gRPC functions InferencePort: "50000" # NVCF function port HelmChartServiceName: "image-seg-nvcf-segmentation-deployment-segmentation-service" # K8s service name exposed as function GpuType: "A10G" # Type of GPU Backend: "GFN" # Backend type MaxInstance: "1" # Maximum number of instances MinInstance: "1" # Minimum number of instances InstanceType: "ga10g_1.br20_2xlarge" # Type of instance DockerRegSecrets: - Name: "ngc-docker-reg-secret" Username: "NGC_CLI_API_KEY" Password: "<KEY>" #AdditionalSecrets: # - Name: "" # Key: "" # Value: "" #StorageProvisioner: # - Name: "" # Namespace: ""
将 UCS 应用程序部署到 NVCF
首先,构建应用程序
ucf_app_builder_cli app build app.yaml
然后运行 nvcf-deploy 子命令。这将把您的应用程序 Helm Chart 上传到 nv-ucf/staging,除非您正在构建的版本已存在。然后,它将创建 NVCF 函数并部署它
> ucf_app_builder_cli app nvcf-deploy app.yaml nvcf.yaml {'version': False, 'version_all': False, 'parser_name': 'app', 'help': 'Create a microservice from the application', 'app': 'app.yaml', 'nvcf': 'nvcf.yaml', 'subparser_name': 'nvcf-deploy'} 2024-03-27 14:52:01,668 - AppBuilder - INFO - Syncing any missing service versions to cache... 2024-03-27 14:52:01,674 - AppBuilder - INFO - Deploying application image-segmentation-app-0.0.2 on NVCF 2024-03-27 14:52:01,675 - AppBuilder - INFO - nvcf metadata: {'FunctionName': 'image-segmentation-service', 'InferenceUrl': '/grpc', 'InferencePort': '50000', 'HelmChartServiceName': 'image-seg-nvcf-segmentation-deployment-segmentation-service', 'GpuType': 'A10G', 'Backend': 'GFN', 'MaxInstance': '1', 'MinInstance': '1', 'InstanceType': 'ga10g_1.br20_2xlarge', 'DockerRegSecrets': [ {'Name': 'ngc-docker-reg-secret', 'Username': 'NGC_CLI_API_KEY', 'Password': '<KEY>'} ]} 2024-03-27 14:52:04,687 - MsBuilder - INFO - App started deploying on NVCF

另请查看 UCS A2F 演示。