【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载TensorFlow 是一个使用数据流图进行数值计算的开源软件库。本指南以当前仓库 incubator/tensorflow-inception 目录下的 Chart 为核心讲解如何用 Helm 将一个预训练的 Inception 图像分类模型服务部署到 KubernetesChart 会创建一个对外暴露的 LoadBalancer Service 与一个 Deployment运行 TensorFlow Serving 的 model server并用 inception_client 提交图片完成在线推理。读完本文你将掌握该 Chart 的安装方式、全部可配置参数、values.yaml 覆写方法以及从模型服务到客户端推理的完整调用链。注意本 Chart 与整个 helm/charts 仓库一样已于 2020 年 11 月 13 日起停止更新参见仓库根目录 README.md 与 incubator/README.mdChart.yaml 中deprecated: true亦明确标注其已弃用。以下内容用于了解其设计与运行原理生产环境请评估维护状态。一、Chart 概述与部署目标该 Chart 的名字是tensorflow-inception版本为0.4.3对应appVersion: 1.4.0出自 Chart.yaml。它的设计初衷是简化 TensorFlow Serving 官方的 Inception 部署文档serving_inception.html让开发者只需一条helm install命令就能获得可用的 Inception 图像识别服务。Chart 部署后会在集群中创建以下资源见 tensorflow-inception.yaml1 个 Deployment默认运行 1 个副本replicas: 1滚动更新策略RollingUpdate容器启动后直接执行tensorflow_model_server加载 Inception 导出模型1 个 Service默认类型为LoadBalancer将9090端口servicePort转发到容器的9090端口containerPort供集群外部访问所有资源通过component: release-name-tensorflow-inception标签作为 Deployment 与 Service 之间的选择器纽带这也是 README 中「1 x TensorFlow inception model server on an external LoadBalancer」的含义。从模板可以推断Service 与 Deployment 都带上了helm.sh/created注解以及heritage、release、chart、component四类标准标签便于 Helm 与 Kubernetes 追溯资源来源。二、安装 Chart2.1 添加仓库并安装按 README.md 中的安装说明需要先添加 incubator 仓库再以my-release作为 release 名安装$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator $ helm install --name my-release incubator/tensorflow-inception需要注意的是README 中给出的仓库地址为历史地址仓库当前归档说明incubator/README.md建议使用helm repo add incubator https://charts.helm.sh/incubator并配合helm search repo incubator检索。这是 Helm v2 风格的--name安装写法若使用 Helm v3请改用helm install my-release incubator/tensorflow-inception形式。2.2 安装后的第一件事安装完成后模板 NOTES.txt 会提示用户LoadBalancer 的 IP 可能需要几分钟才能就绪可以执行以下命令观察 Service 状态并拿到对外 IPexport INCEPTION_SERVICE_IP$(kubectl get svc --namespace namespace my-release-tensorflow-inception -o jsonpath{.status.loadBalancer.ingress[0].ip})然后用宿主机上挂载的图片目录启动 inception_client 容器提交推理请求echo docker run -v ~/Downloads:/downloads quay.io/lachie83/inception_serving /serving/bazel-bin/tensorflow_serving/example/inception_client --server$INCEPTION_SERVICE_IP:9090 --image/downloads/dog.jpg三、可配置参数一览README 给出了完整的参数表结合 values.yaml 的默认值实际可配置项如下ParameterDescriptionDefaultimage.repository容器镜像名称quay.io/thomasjungblut/tfs-inceptionimage.tag容器镜像标签tfs-1.8.0-cpuimage.pullPolicy镜像拉取策略来自 values.yamlIfNotPresentreplicask8s Deployment 副本数1componentk8s selector 标签键值tensorflow-inceptionresources为 Pod 分配和允许的资源{}servicePortk8s Service 对外端口9090containerPort容器监听端口9090serviceTypeService 类型来自 values.yamlLoadBalancerenv.ldLibraryPathLD_LIBRARY_PATH环境变量值来自 values.yaml/usr/lib/x86_64-linux-gnu/3.1 通过--set指定参数使用--set keyvalue[,keyvalue]参数覆盖任意配置项例如$ helm install --name my-release --set image.tagtfs-1.8.0-gpu --set replicas2 incubator/tensorflow-inceptionNote如需 GPU 版本请使用image.tagtfs-1.8.0-gpu。模板 tensorflow-inception.yaml 中image由{{ .Values.image.repository }}:{{ .Values.image.tag }}拼装因此切换 tag 即可切换到 GPU 镜像。3.2 通过 values.yaml 文件覆写更推荐的做法是编写独立的 YAML 文件并在安装时传入$ helm install --name my-release -f values.yaml incubator/tensorflow-inception-f指定的文件会与 Chart 内置的 values.yaml 合并未覆写的项继续使用默认值。四、values.yaml 默认值逐项解读默认 values.yaml 内容如下其中注释部分揭示了资源声明的推荐写法包括 GPU 资源serviceType: LoadBalancer servicePort: 9090 containerPort: 9090 component: tensorflow-inception replicas: 1 image: repository: quay.io/thomasjungblut/tfs-inception tag: tfs-1.8.0-cpu pullPolicy: IfNotPresent env: ldLibraryPath: /usr/lib/x86_64-linux-gnu/ resources: {} # limits: # nvidia.com/gpu: 1 # cpu: 100m # memory: 256Mi # requests: # nvidia.com/gpu: 1 # cpu: 100m # memory: 256Mi4.1 resources 的写法resources默认是空对象{}。模板通过{{ toYaml .Values.resources | indent 12 }}原样渲染进 Pod 规格因此可按 Kubernetes 标准格式声明 limits 与 requests。若使用 GPU 镜像可按 values.yaml 注释中的方式申请nvidia.com/gpu: 1资源。4.2 env.ldLibraryPath 的作用模板 tensorflow-inception.yaml 中有一段条件渲染逻辑{{- if .Values.env.ldLibraryPath }} env: - name: LD_LIBRARY_PATH value: {{ .Values.env.ldLibraryPath }} {{ end }}也就是说只要env.ldLibraryPath非空容器就会获得LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu/环境变量用于在部分系统环境下正确加载 TensorFlow 所需的动态链接库将该值置空则可跳过这一环境变量注入。五、模板源码解析Deployment 与 Service 是怎么生成的核心模板 tensorflow-inception.yaml 由两个 Kubernetes 资源组成理解它能帮助你在排障或二次开发时精准定位问题。5.1 Deployment 的关键字段副本数与策略replicas: {{ default 1 .Values.replicas }}strategy.type: RollingUpdate升级时不会中断服务镜像与启动命令容器镜像为repository:tag拼装imagePullPolicy取自image.pullPolicy启动命令通过 shell 执行tensorflow_model_server --port{{ .Values.containerPort }} --model_nameinception --model_base_path/serving/inception-export即由 TensorFlow Serving 的 model server 加载/serving/inception-export目录下的inception模型并监听containerPort默认 9090就绪探针配置了readinessProbe使用 TCP 探针检测containerPortinitialDelaySeconds: 15、timeoutSeconds: 1——容器启动后 15 秒才开始探测确保模型加载完成前不会被流量击中资源resources由toYaml渲染如前所述。5.2 Service 的关键字段端口映射port: servicePort对外→targetPort: containerPort容器内选择器selector.component release-name-component与 Pod 模板标签一一对应类型type: {{ .Values.serviceType }}默认LoadBalancer。5.3 命名辅助函数_helpers.tpl 定义了命名模板tensorflow-inception.name默认取.Chart.Name可用nameOverride覆盖并截断到 24 字符tensorflow-inception.fullname由release-name-chart-name拼接同样截断到 24 字符注释说明这是受 DNS 命名规范中 Kubernetes 名称字段长度限制所驱动并去掉结尾多余的-。因此helm install --name my-release ...后Deployment 与 Service 的实际名称是my-release-tensorflow-inception。六、运行示例用 inception_client 做图像分类README 给出了完整的端到端示例。假设已将图片dog.jpg放到宿主机的~/Downloads目录运行docker run -v ~/Downloads:/downloads quay.io/lachie83/inception_serving /serving/bazel-bin/tensorflow_serving/example/inception_client --server$INCEPTION_SERVICE_IP:9090 --image/downloads/dog.jpg其中-v ~/Downloads:/downloads将宿主机图片目录挂载进客户端容器--server$INCEPTION_SERVICE_IP:9090指向上一节获取的 LoadBalancer 地址--image/downloads/dog.jpg指定待分类图片。模型服务会返回两类输出classes分类标签DT_STRINGoutputs { key: classes value { dtype: DT_STRING tensor_shape { dim { size: 1 } dim { size: 5 } } string_val: golden retriever string_val: cocker spaniel, English cocker spaniel, cocker string_val: clumber, clumber spaniel string_val: tennis ball string_val: Labrador retriever } }scores置信度得分DT_FLOAToutputs { key: scores value { dtype: DT_FLOAT tensor_shape { dim { size: 1 } dim { size: 5 } } float_val: 9.7533788681 float_val: 6.67022132874 float_val: 6.18963956833 float_val: 5.90754127502 float_val: 5.4464302063 } }输出显示模型对这张 dog.jpg 给出的 Top-5 结果中置信度最高的是golden retriever9.75其余依次为可卡犬、克伦伯猎犬、网球和拉布拉多犬——这正是 Inception 模型在 ImageNet 数据集上的典型分类表现。示例末尾的E1028 ... close_transport ... FD shutdown日志是客户端与服务端会话正常结束时的 gRPC 传输层关闭信息属预期输出不影响推理结果。七、小结与注意事项核心成果一条helm install即可在 Kubernetes 上获得「1 个 LoadBalancer Service 1 个 Inception model server Deployment」的完整推理链路客户端用官方inception_serving镜像即可调用参数覆盖既可用--set内联覆盖也可用-f values.yaml文件覆写GPU 场景切换image.tagtfs-1.8.0-gpu并申请nvidia.com/gpu资源源码级佐证Deployment 启动命令、就绪探针、LD_LIBRARY_PATH 注入、命名规则等行为均可从 tensorflow-inception.yaml、_helpers.tpl 与 values.yaml 中直接验证弃用提醒该 Chart 自 2020 年 11 月起不再维护镜像 tag如tfs-1.8.0-cpu与 Helm v2 安装语法均已过时本文内容仅用于理解其设计与工作原理。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐RKNN-Toolkit2 转换 TensorFlow Inception V3 QAT 量化模型实战指南RKNN Toolkit2 转换 TensorFlow Inception V3 QAT 量化模型实战指南 导读 本文基于 RKNN Toolkit2 仓库中的人工智能推理引擎模型量化模型优化边缘计算开发工具TensorFlow-Tutorials迁移学习实战基于Inception模型的图像分类优化TensorFlow Tutorials迁移学习实战基于Inception模型的图像分类优化 你是否遇到过这样的困境想用深度学习做图像分类却受限于设备性能教程深度学习Kubernetes 上部署 ZooKeeper 集群incubator/zookeeper Helm Chart 实战指南Kubernetes 上部署 ZooKeeper 集群incubator/zookeeper Helm Chart 实战指南 本指南围绕 Helm Chart上一篇GhostTrack 快速上手OSINT 追踪工具实操指南下一篇Islands架构的幕后推手Astro Compiler如何编译client:load等客户端指令创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考