主题
准备启动清单
启动清单集中记录“要运行什么、依赖什么、怎样才算成功”,用于填写任务、请求部署参数和核对验收结果。它不是 RLark CRD,也不是可直接运行的 RLinf 配方;模板中的占位符不能提交到控制台。
第一次使用 RLark 时,请选择规模较小且不访问真实机器人或其他物理执行器的工作负载。真实机器人任务需要另外完成安全条件检查。
完成启动清单
先填写工作负载信息,再请求平台管理员补充与部署环境有关的参数:
- 填写应用、各角色镜像、拓扑、资源需求、配置、挂载方式和验收标准,把状态设为
DRAFT_FOR_PROFILE。 - 使用这份草案请求已验证的部署参数,取得环境、集群、全局节点匹配、资源、存储和网络检查结果。
- 把管理员返回的内容填入
deployment_binding,重新核对各角色副本和路径,并完成任务、平台和必要的安全确认。 - 所有必填项都确认后,把状态改为
READY_TO_SUBMIT,再打开创建向导。
DRAFT_FOR_PROFILE 状态不能用于创建 Job
代码提交、各角色不可变镜像、配置记录方式、持久化输出或 checkpoint、成功与失败标准填写完整后,才能把草案发给管理员。部署参数、全局节点匹配和 Header 单副本没有确认前,清单不能改为 READY_TO_SUBMIT。
复制启动清单模板
复制下面的模板到受版本控制的运行记录中并填写。只记录非敏感信息和 Secret 的引用名称;不要写入密码、令牌、私钥、对象存储密钥或镜像仓库凭据。
yaml
manifest:
revision: "<required: immutable record revision>"
status: "DRAFT_FOR_PROFILE" # DRAFT_FOR_PROFILE or READY_TO_SUBMIT
run_identity:
run_id: "<required: unique run identifier>"
workload_owner: "<required: team or role>"
technical_reviewer: "<required: reviewer>"
change_or_experiment_ref: "<required: ticket, experiment, or review URL>"
target_environment_hint: "<optional: requested environment, or admin-to-recommend>"
scope: "<required: non-device smoke run>"
source:
repository: "<required: RLinf upstream or fork URL>"
commit: "<required: full commit SHA>"
patch_refs: []
expected_versions:
rlinf: "<required>"
python: "<required>"
ray: "<required>"
cuda: "<required or not-applicable>"
nccl: "<required or not-applicable>"
configuration:
base_config_refs: ["<required: repository path@commit>"]
cli_overrides: []
environment_inputs: []
precedence_note: "<required: how base config, overrides, and environment combine>"
resolved_config_artifact: "<required: output path or artifact URL produced at runtime>"
resolved_config_hash_method: "<required: deterministic hash command or method>"
roles:
- name: "<required: UI role name>"
rlinf_process_role: "<required: workload responsibility>"
rlark_task_role: "<required: Actor, Rollout, or Env>"
header: "<required: true or false>"
intended_replicas: "<required: workload requirement, before deployment matching>"
placement_requirements:
node_category_or_hardware: "<required>"
gpu_per_pod: "<required: integer, including 0>"
device_resources: []
cpu_memory_or_shm_requirements: "<required or not-applicable>"
locality_or_network_requirements: "<required or not-applicable>"
image:
immutable_reference: "<required: registry/repository@sha256:digest>"
build_record: "<required: CI/build provenance URL>"
runtime_user: "<required: non-secret user name or UID>"
required_commands: ["bash", "ray", "python"]
python_imports: ["ray"]
prepare_script_ref: "<required: repository path@commit or reviewed inline block>"
non_secret_environment:
- name: "<optional variable name>"
value_or_source: "<reviewed non-secret value or source>"
mounts:
- purpose: "<input, config, checkpoint, output, or logs>"
source_requirement: "<dataset/object/managed storage/host locality requirement>"
container_path: "<required absolute path>"
access: "<read-only or read-write>"
persistence: "<required: lifetime and retention expectation>"
runtime:
run_script_ref: "<required: repository path@commit or reviewed inline block>"
expected_total_ranks_or_workers: "<required>"
workload_selected_network_interfaces: []
domain_required: "<required: true or false>"
ssh_required: "<required: true or false>"
tensorboard_directory: "<optional: container path>"
data_and_persistence:
inputs:
- location: "<required: approved non-secret path or dataset ID>"
version_or_checksum: "<required>"
access: "<required: read-only or read-write>"
output_location: "<required: unique persistent path or object prefix>"
checkpoint_location: "<required: persistent path or object prefix>"
overwrite_policy: "<required: refuse, resume, or replace after approval>"
retention_owner: "<required: team or role>"
acceptance:
runtime_bootstrap_signals: ["<required: exact log or health signal>"]
application_progress_signals: ["<required: workload-emitted signal>"]
persistent_artifacts: ["<required: file/object and validation method>"]
maximum_wait: "<required: reviewed duration>"
failure_or_stop_signals: ["<required: exact signal and response owner>"]
operations:
stop_owner: "<required: person, team, or on-call role>"
stop_action: "<required: approved RLark or external-system action>"
external_side_effects_to_check: ["<required or not-applicable>"]
information_to_preserve_before_stop: ["<required>"]
recovery_or_resume_plan: "<required: checkpoint-based plan or not-applicable>"
cleanup_owner_and_scope: "<required: Job, temporary access, files, and retention boundary>"
# 工作负载草案保持 UNBOUND;收到已确认的部署参数后再填写。
deployment_binding:
status: "UNBOUND" # UNBOUND or APPROVED
profile_ref: "<fill after administrator response>"
profile_revision: "<fill after administrator response>"
profile_expires_at: "<fill after administrator response>"
environment: "<fill after administrator response>"
rlark_version_or_commit: "<fill after administrator response>"
roles:
- name: "<must match roles[].name>"
cluster: "<approved cluster>"
node_selector:
"<admin-verified label key>": "<admin-verified single value>"
matched_nodes: ["<admin-reported Node and namespace>"]
global_match_count: "<admin-reported count; Header must be 1>"
approved_gpu_per_pod: "<approved integer>"
approved_device_resources: []
approved_mount_sources: ["<StorageClass or verified per-node hostPath fact>"]
domain: "<approved name or not-applicable>"
secret_injection_path: "<approved mechanism name or not-applicable>"
support_contact: "<team or role>"
review:
workload_draft_review: "<required before profile request: reviewer, result, time>"
platform_profile_review: "<fill after profile response: reviewer, result, time>"
safety_review: "<approved, rejected, or not-applicable with reason>"
final_submit_review: "<fill only after binding: reviewer, result, time>"请结合管理员返回的目标部署信息确认 runtime.workload_selected_network_interfaces。平台不会自动填写 RLINF_COMM_NET_DEVICES 等通信配置;无法确认接口名时保持未绑定状态,不要猜测。
提交给管理员前检查
只有以下各项全部满足,才把草案交给管理员:
草案通过后,向管理员获取已验证的部署参数。
创建任务前检查
管理员回复后,把部署参数记录和各角色的结果填入 deployment_binding,再逐项确认:
全部通过后,更新清单 revision,把 manifest.status 设为 READY_TO_SUBMIT,继续在 RLark 上运行 RLinf 任务。RLark 与 RLinf 的分工见RLark 与 RLinf。