免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

使用 Meshery 设计在 GKE 上构建单 GPU 在线推理服务架构(gke-online-serving-single-gpu)

使用 Meshery 设计在 GKE 上构建单 GPU 在线推理服务架构(gke-online-serving-single-gpu) 云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载本篇技术指南以 Meshery 官方 Catalog 中的gke-online-serving-single-gpu设计patternIdc0db1f13-46e8-481f-b5b5-27b6d2e0b74d归类于 scaling 场景为核心讲解如何基于 Google Kubernetes EngineGKE落地一套面向 GPU 加速在线推理工作负载的 Kubernetes 架构。读完本文你将掌握该 Catalog 设计的组件构成、Service 端口与标签定义、组件间的层级关系以及使用mesheryctl design import将设计一键导入 Meshery 并部署到集群的完整方法。设计背景与适用场景该设计在 Catalog 的元数据c0db1f13-46e8-481f-b5b5-27b6d2e0b74d.md中被明确描述为一套为需要 GPU 加速的在线服务online serving工作负载量身定制的 Kubernetes 架构。该设计针对 Google Kubernetes EngineGKE做了优化利用单个 GPU 实例来提升机器学习推理machine learning inference、实时分析real-time analytics或其他 GPU 密集型任务的计算性能。由此可以提炼出该设计的三条核心定位面向在线推理工作负载是常驻服务型serving而非批处理型batch强调低延迟与持续可用单 GPU 起步架构以单 GPU 实例为计算核心适合推理服务早期部署、成本可控的形态GKE 优化设计中的资源与调度假设建立在 GKE 节点池含 GPU 节点池之上。从设计文件名的gke-online-serving-single-gpu可以推断triton相关资源对应 NVIDIA Triton Inference Server 一类 GPU 推理服务tfserve相关资源对应 TensorFlow Serving 一类模型服务二者正是该设计中面向在线推理的典型负载。设计文件本身的元数据还声明了与 GCP、Kubernetes 的兼容性compatibility: gcp, kubernetes发布版本为publishedVersion: 0.0.1创建时间为 2024-03-01。设计文件在仓库中的组织方式该 Catalog 设计在仓库中由两部分组成文件作用docs/catalog/scaling/c0db1f13-46e8-481f-b5b5-27b6d2e0b74d.mdCatalog 展示页 frontmatter名称、类型、兼容性、patternInfo、patternCaveats、下载链接等docs/data/catalog/c0db1f13-46e8-481f-b5b5-27b6d2e0b74d/0.0.1/design.yml设计的完整结构化定义components relationshipsschemaVersiondesigns.meshery.io/v1beta1docs/data/catalog/c0db1f13-46e8-481f-b5b5-27b6d2e0b74d/0.0.1/artifacthub-pkg.ymlArtifactHub 包元数据安装命令、readme、许可证Apache-2.0等这种「frontmatter 元数据 结构化 design.yml」的组织方式与仓库中其他 700 Catalog 条目保持一致是 Meshery 将可视化设计Design以可移植文件形式分发的基础。设计组件清单解析打开 design.ymlschemaVersion 为designs.meshery.io/v1beta1当前版本0.0.137可以看到该设计包含 7 个组件对象。除去 2 个作为画布辅助的注释性 GenericNode 和 2 个 NodeGroupInventoryWalletmeshery-core模型中的画布管理节点实际生效的 Kubernetes 资源为 2 个 Namespace 和 2 个 Service。Namespace 定义设计定义了default与triton-deployment两个命名空间default组件 idec762ae2-441f-420a-aaef-ebffc1ff8258承载tfserve-service模型来源为git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3对应 Kubernetesv1.32.0-alpha.3模型版本triton-deployment组件 idf6749417-ebda-4dec-b0b1-8daeff49144c独立承载 Triton 推理服务相关资源从命名即可看出这是为 Triton 部署单独划定的命名空间。将 Triton 与 TensorFlow Serving 分别放入不同命名空间有助于后续对两套推理负载做独立的资源配额、网络策略与 GPU 调度管理。Service 定义两个 Service 均为LoadBalancer类型端口定义如下tfserve-service组件 id4c5d358a-f93e-44f4-b428-e68ff7c47bf2namespacedefaultselectorapp: tfserve端口名Port协议targetPort说明http8000TCP8500HTTP 推理入口转发到后端的 8500 端口grpc8000TCP8000gRPC 推理入口Kubernetes 允许同名 port 下不同协议同名复用triton-service组件 id3a1ef857-baf6-4d3c-82bc-31fd365e0ce2namespacedefaultselectorapp: triton端口名Port协议targetPort说明http8001TCP8000HTTP 推理入口grpc8000TCP8001gRPC 推理入口metrics8002TCP8002Prometheus 指标暴露端口两组端口映射与 NVIDIA Triton 官方约定的 8000HTTP/ 8001gRPC/ 8002Metrics端口语义存在差异这说明该设计在编写时将对外暴露端口与后端目标端口做了自定义编排——tfserve后端目标端口为 8500TensorFlow Serving 默认端口triton后端目标端口为 8000/8001/8002。部署前请务必核对后端 Deployment 实际监听的端口避免端口错配。画布辅助节点其余 4 个组件id77b3a011...、fe81dbb3...、c7a862b1...、78af12d9...来自meshery-core模型属于 GenericNode / NodeGroupInventoryWallet 等注释类isAnnotation: true节点主要用于记录画布布局信息如triton-deployment命名空间钱包的坐标位置不参与实际资源下发。组件间的关系定义设计文件末尾的relationships数组描述了组件间的拓扑关系全部来自 Kubernetes 模型schemaVersion 为relationships.meshery.io/v1alpha3hierarchical / parentinventory 子类型如tfserve-service、triton-service与其所属 Namespace 之间、以及 Namespace 钱包与 Namespace 之间通过patchStrategy: replace将子组件引用的命名空间configuration.metadata.namespace修正为父组件的命名空间保证 Service 落在正确命名空间hierarchical / siblingmatchlabels 子类型Service 与钱包节点之间通过configuration.metadata.labels的标签匹配建立兄弟关系使得selector: {app: tfserve}、selector: {app: triton}这类标签语义在设计画布上可视化呈现。在 Meshery 的图形化设计画布中这些关系会以连线自动渲染导入后实际下发时命名空间归属由 hierarchical 关系中的 patch 规则自动落实无需手工为每个 Service 单独指定 namespace。使用 mesheryctl 导入并部署该设计artifacthub-pkg.yml 中记录的安装命令为mesheryctl design import -f指向的正是mesheryctl的设计导入子命令。命令语法与参数导入命令的完整用法见 mesheryctl/internal/cli/root/design/import.gomesheryctl design import -f [file/URL] -s [source-type] -n [name]参数简写说明--file-f必填。本地文件路径或远程可下载 URLYAML / TGZ / OCI 格式--source-type-s可选。取值Helm Chart、Kubernetes Manifest、Meshery Design、Docker Compose--name-n可选。导入后的设计名称缺省时取文件名导入本设计本地文件或远程 URL 均可远程地址需为可直接下载的原始文件链接# 方式一本地文件 mesheryctl design import -f design.yml -n gke-online-serving-single-gpu # 方式二显式指定源类型 mesheryctl design import -f design.yml -s Meshery Design -n gke-online-serving-single-gpu导入成功后命令会输出类似The design file gke-online-serving-single-gpu has been imported. Design ID: truncated-id的日志其中包含的 Design ID 可用于后续的查看与部署。底层调用链从源码看design import的实现流程为import.go读取-f指定的路径若设计名未指定则取文件 basename若为 URL则构造FromMesheryPatternImportURLPayload若为本地文件则读取文件内容并构造FromMesheryPatternImportFilePayload通过utils.NewRequest向GET /api/pattern/import实际为POST {baseURL}/api/pattern/import见 import.go提交请求体解析响应集合返回第一个设计对象。请求体使用 schemas 生成的 oneOf union 类型构造字段名如 camelCase 的fileName与服务端契约严格对齐若返回集合为空会抛出ErrDesignInvalidApiResponse结构化错误而非 panic。该流程在 e2e 测试 01-design-import.bats 中有对应用例导入nginx.yaml后断言输出包含imported/Design ID/saved并校验非法路径会输出Error或no such file类错误信息可作为验证本命令行为的参考。导入后的部署流程导入成功后可以在 Meshery 用户界面Canvas中打开该设计核对画布上的 Namespace 与 Service 拓扑确认两个 Service 的标签选择器与命名空间归属然后一键部署Deploy到已连接的 GKE 集群。注意本设计只定义了 Namespace 与 Service 骨架实际的 GPU 推理 Deployment / StatefulSet含resources.limits: nvidia.com/gpu: 1请求需要你在画布上补充或将该设计作为蓝图与自有工作负载清单合并后统一部署。使用注意事项与最佳实践设计的 patternCaveats即 artifacthub-pkg.yml readme 中的 Caveats and Consideration 一节明确提示需要持续监控并优化 GPU 利用率与工作负载分布以维持最优性能并避免共享 GPU 资源的多个 Pod 之间产生资源争用。据此建议的实践要点GPU 监控利用 Triton Service 暴露的metrics8002端口接入 Prometheus跟踪gpu_utilization与gpu_memory_used等指标及时发现利用率瓶颈工作负载分布单 GPU 实例上若调度多个 Pod 共享 GPU如 MPS / MIG 模式需评估推理延迟与吞吐的相互影响必要时用节点亲和性或 Pod 反亲和将关键负载调度到独占 GPU 的节点池端口校验部署前核对tfserve-service/triton-service的 port 与 targetPort 映射与后端推理引擎实际监听端口一致成本与扩展该设计是单 GPU 起步形态流量增长后可在画布上横向扩展副本数或引入多个 GPU 节点池再配合 HPA按推理 QPS 或 GPU 指标扩缩容演进为生产级在线推理平台。延伸阅读更多同类扩容scaling场景设计docs/catalog/scaling 目录下共 16 份设计文档可横向对比不同扩容策略设计的展示元数据规范可参考 docs/catalog/_defaults.mdfrontmatter 字段模板设计概念与可视化画布的更多说明见 docs/content/en 下的相关概念页mesheryctl design全部子命令的源码入口在 mesheryctl/internal/cli/root/design。赞分享云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载相关推荐Meshery 设计模式实战在 GKE 上构建容错批处理工作负载Fault-tolerant Batch Workloads on GKEMeshery 设计模式实战在 GKE 上构建容错批处理工作负载Fault tolerant Batch Workloads on GKE 本文以 Mes云原生微服务运维DevOpsMeshery 设计实战在 GKE 上以 NVIDIA A100 80GB GPU 运行 JAX 多节点分布式「Hello World」Meshery 设计实战在 GKE 上以 NVIDIA A100 80GB GPU 运行 JAX 多节点分布式「Hello World」 本篇基于 Meshe云原生微服务运维DevOpsRay 在 Kubernetes 上使用 GPU五大托管集群GKE / EKS / AKS / ACK / GKE-TPU搭建实战指南Ray 在 Kubernetes 上使用 GPU五大托管集群GKE / EKS / AKS / ACK / GKE TPU搭建实战指南 导读 Ray 的人工智能分布式训练强化学习任务调度模型推理服务后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表