ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

seldon-core CLI 实验管理:seldon experiment list 命令深度解析

seldon-core CLI 实验管理:seldon experiment list 命令深度解析 人工智能大模型MLOpsLLMOps模型推理服务云原生后端【免费下载链接】seldon-coreAn MLOps framework to package, deploy, monitor and manage thousands of production machine learning models项目地址https://gitcode.com/gh_mirrors/se/seldon-core点击查看免费下载导读seldon experiment list是 seldon-core v2 命令行工具seldon中用于列出当前集群内所有实验Experiment及其活跃状态的核心命令。本文以官方命令参考 docs-gb/cli/seldon_experiment_list.md 为骨架结合operator/目录下的 Cobra 命令源码与 gRPC 调度器协议深入讲解该命令的语法、参数、输出格式、底层调用链与配套配置方式并给出从实验创建到查询的完整实操示例帮助你在模型 A/B 测试与流量切分场景中快速掌握实验的巡检能力。一、命令概览实验管理子命令族在 seldon-core v2 中seldon experiment是一个管理实验Experiment的子命令族。实验允许通过在候选模型或流水线之间切分流量来测试模型新版本。从 root.go 的命令注册代码可以看到cmdExperiment.AddCommand(cmdExperimentStart, cmdExperimentStop, cmdExperimentStatus, cmdExperimentList)即experiment下共挂载 4 个子命令子命令用途参考文档experiment start启动一个实验seldon_experiment_start.mdexperiment stop停止一个实验seldon_experiment_stop.mdexperiment status查询指定实验的状态seldon_experiment_status.mdexperiment list获取实验列表及活跃状态seldon_experiment_list.md其中list不接收位置参数Args: cobra.MinimumNArgs(0)见 experiment_list.go一次性返回全部实验的概览适合作为实验生命周期的巡检入口。背景知识在 seldon-core 中一个 Experiment 定义一个 Model 或 Pipeline 之间的 HTTP 流量切分还可以配置镜像mirror模型/流水线将部分流量复制到镜像目标但不返回其结果。详见 docs-gb/experiments.md 与 kubernetes/resources/experiment.md。二、命令语法与参数说明2.1 Synopsis命令用法seldon experiment list [flags]2.2 Options选项选项类型说明--authority stringstringauthorityHTTP/2或 virtual hostHTTP/1用于覆盖 gRPC 连接中的 authority 字段-h, --helpbool显示 list 子命令帮助信息--scheduler-host stringstringseldon scheduler 主机地址默认值0.0.0.0:9004-v, --verbosebool输出详细日志输出请求 proto 内容。该选项在命令参考文档中未单列但源码 flags.go 与 experiment_list.go 中均已注册flags.BoolP(flagVerbose, v, false, verbose output)2.3 参数优先级环境变量与配置文件--scheduler-host的取值遵循命令行 配置文件 默认值的解析逻辑见 experiment_list.go 与 scheduler.go命令行显式指定--scheduler-host此时schedulerHostIsSet flags.Changed(flagSchedulerHost)为true。环境变量默认值来自环境变量SELDON_SCHEDULE_HOSTenvScheduler最终回落到defaultSchedulerHost 0.0.0.0:9004。配置文件兜底若命令行未指定schedulerHostIsSet false且配置文件~/.config/seldon/cli/config.json中controlplane.schedulerHost非空则使用该值覆盖见 scheduler.go 的NewSchedulerClient与 config.go 的ControlPlane结构// Overwrite host if set in config if !schedulerHostIsSet config.Controlplane ! nil config.Controlplane.SchedulerHost ! { schedulerHost config.Controlplane.SchedulerHost }配置文件结构如下config.go{ dataplane: { inferHost: ..., tls: false }, controlplane: { schedulerHost: 0.0.0.0:9004, tls: false } }此外CLI 与调度器之间的 gRPC 连接支持双向 TLS当配置中controlplane.keyPath非空时客户端会加载 key/crt 与 CA 证书建立 mTLS 通道否则使用明文连接scheduler.go 的loadKeyPair/newConnection。三、底层原理list 的完整调用链3.1 从命令到 RPC 调用seldon experiment list的执行链路分三层cobra 命令 (createExperimentList) └─ SchedulerClient.ListExperiments() [operator/pkg/cli/scheduler.go] └─ gRPC stream: ExperimentStatus(ExperimentStatusRequest) [apis/mlops/scheduler/scheduler.proto]在 experiment_list.go 中命令读取 flags 后构造SchedulerClient并调用schedulerClient.ListExperiments()真正的工作在 scheduler.go 的ListExperiments()完成func (sc *SchedulerClient) ListExperiments() error { req : scheduler.ExperimentStatusRequest{ SubscriberName: subscriberName, // seldon CLI } stream, err : grpcClient.ExperimentStatus(ctx, req) // 服务端流式 RPC ... writer : tabwriter.NewWriter(os.Stdout, 0, 8, 1, \t, tabwriter.AlignRight) fmt.Fprintln(writer, experiment\tactive\t) fmt.Fprintln(writer, ----------\t------\t) for { res, err : stream.Recv() ... fmt.Fprintf(writer, %s\t%v\n, res.ExperimentName, res.Active) } writer.Flush() }值得注意的三个实现细节请求中只携带subscriberName不带nameproto 定义中ExperimentStatusRequest.name注释为 Leave empty for all experimentsscheduler.proto因此list天然就是全量列举。使用服务端流式 RPCrpc ExperimentStatus(ExperimentStatusRequest) returns (stream ExperimentStatusResponse)客户端持续stream.Recv()直到io.EOF适合一次订阅多条记录。表格输出通过text/tabwriter生成右对齐的两列表格experiment / active便于人工阅读。3.2 响应消息结构每个实验返回一条ExperimentStatusResponsescheduler.protomessage ExperimentStatusResponse { string experimentName 1; bool active 2; bool candidatesReady 3; bool mirrorReady 4; string statusDescription 5; optional KubernetesMeta kubernetesMeta 6; }list命令目前只取experimentName与active两列更完整的candidatesReady、mirrorReady、statusDescription字段可通过seldon experiment status name查询参考 seldon_experiment_status.md。3.3 活跃状态的语义active 并非简单的是/否标记它反映实验是否真正处于可服务状态。从调度器侧实现 operator/scheduler/experiment.go 的订阅逻辑可见// An experiment is not active if it is being deleted or some models are not ready if !event.Active { // 处理删除 finalizer / 状态更新 }即一个实验只有在底层模型或流水线全部就绪Ready且未被删除时才是活跃的。关于候选模型就绪判定的细节可参考实验 CRD 的状态机实现 operator/apis/mlops/v1alpha1/experiment_types.go 与调度器模型管理代码 scheduler/pkg/scheduler/experiment.go。四、实操示例从创建实验到 list 巡检4.1 准备模型并启动实验以 Iris 分类模型为例完整流程见 docs-gb/examples/local-experiments.md。先加载两个候选模型并等待就绪seldon model load -f ./models/sklearn1.yaml # 模型 iris seldon model load -f ./models/sklearn2.yaml # 模型 iris2 seldon model status iris -w ModelAvailable seldon model status iris2 -w ModelAvailable创建 50/50 流量切分的实验示例文件 samples/experiments/ab-default-model.yamlapiVersion: mlops.seldon.io/v1alpha1 kind: Experiment metadata: name: experiment-sample spec: default: iris candidates: - name: iris weight: 50 - name: iris2 weight: 50启动实验seldon experiment start -f ./experiments/ab-default-model.yaml seldon experiment status experiment-sample -w # 等待 activetrue4.2 使用 list 巡检实验seldon experiment list输出示例两列表格右对齐experiment active ---------- ------ experiment-sample true第一列experiment实验名称对应 YAML 中metadata.name第二列active布尔值true表示实验正在生效、流量切分已按权重路由false表示实验已停止或候选模型未就绪。停止实验后再次list该实验的active将变为falseseldon experiment stop experiment-sample seldon experiment list4.3 带 verbose 排查当需要确认 CLI 实际发送的 gRPC 请求内容时可加上-vseldon experiment list -v该选项会在 scheduler.go 的ListExperiments()中打印请求 protoif sc.verbose { printProto(req) }输出形如{subscriberName:seldon CLI}4.4 对接自定义调度器地址本地非默认部署例如 scheduler 监听在其它端口时seldon experiment list --scheduler-host 127.0.0.1:9004 # 或通过环境变量 SELDON_SCHEDULE_HOST127.0.0.1:9004 seldon experiment list五、实验结果验证list 与流量切分的配合list虽只展示概览但结合实验特性可完成完整的验证闭环创建实验seldon experiment start -f xxx.yaml确认生效seldon experiment list中activetrue或seldon experiment status name -w验证切分向入口发送批量推理请求观察路由分布。例如本地模式seldon model infer iris -i 50 \ {inputs: [{name: predict, shape: [1, 4], datatype: FP32, data: [[1, 2, 3, 4]]}]} # Success: map[:iris2_1::27 :iris_1::23] ← 约 50/50验证 sticky session每次推理响应头x-seldon-route记录了实际路由配合-ssticky session参数可让后续请求走同一路由保证实验组的视图一致性详见 kubernetes/resources/experiment.md 的 Sticky Sessions 小节清理seldon experiment stop name后再次list确认activefalse。实验的其它形态无default字段的新端点实验、mirror镜像实验、resourceType: pipeline的流水线实验均可复用上述巡检模式对应示例文件位于 samples/experiments/ 目录。六、常见问题与排查建议现象可能原因排查方法list输出为空集群中没有任何实验或 scheduler 地址不对先seldon experiment start -f xxx.yaml创建实验用-v检查请求是否发出连接超时/拒绝scheduler 未监听在0.0.0.0:9004或启用了 mTLS 但未配置证书使用--scheduler-host指定正确地址检查~/.config/seldon/cli/config.json的controlplane段active一直为false候选模型未就绪如仍处于ModelCreating或实验正在被删除执行seldon model status model -w ModelAvailable确认候选就绪用seldon experiment status name查看candidatesReady/mirrorReady/statusDescriptionauthority 报错HTTP/2集群启用了 service mesh 或 host-based 路由按需传入--authority覆盖虚拟主机名七、参考资源命令参考seldon_experiment_list.md、seldon_experiment.md、seldon_experiment_status.md命令源码experiment_list.go、root.go、flags.go核心实现scheduler.goListExperiments与连接管理、config.goCLI 配置协议定义scheduler.protoExperimentStatusRequest/ExperimentStatusResponse调度器侧状态订阅operator/scheduler/experiment.go实验概念与示例docs-gb/experiments.md、kubernetes/resources/experiment.md、samples/experiments/、docs-gb/examples/local-experiments.md赞分享人工智能大模型MLOpsLLMOps模型推理服务云原生后端【免费下载链接】seldon-coreAn MLOps framework to package, deploy, monitor and manage thousands of production machine learning models项目地址https://gitcode.com/gh_mirrors/se/seldon-core点击查看免费下载相关推荐Seldon Core 2 CLI 配置管理实战深入解析 seldon config add 命令Seldon Core 2 CLI 配置管理实战深入解析 seldon config add 命令 本文以 Seldon Core 2 官方 CLI 参考文档人工智能大模型MLOpsLLMOps模型推理服务云原生后端BiliTools终极指南3分钟掌握B站视频下载神器BiliTools终极指南3分钟掌握B站视频下载神器 还在为B站视频下载而烦恼吗想要轻松保存喜欢的番剧、课程和音乐资源BiliTools哔哩哔哩工具箱正是人工智能大模型MLOpsLLMOps模型推理服务云原生后端inngest 中的 prometheus/procfsGo 语言读取 /proc 与 /sys 系统与进程指标完整指南inngest 中的 prometheus/procfsGo 语言读取 /proc 与 /sys 系统与进程指标完整指南 导读 prometheus/proc人工智能大模型MLOpsLLMOps模型推理服务云原生后端上一篇Django for Professionals 4.0数据库设计最佳实践模型与迁移详解下一篇SLIM容器健康检查成功率监控面板从0到1的实现指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表