面向智算服务,构建可观测体系最佳实践

作者:蓟北

构建面向 AI、大数据、容器的可观测体系

(一)智算服务可观测概况

对于越来越火爆的人工智能领域来说,MLOps 是解决这一领域的系统工程,它结合了所有与机器学习相关的任务和流程,从数据管理、建模、持续部署的到运行时计算和资源管理。下图是开源 ML-Ops 平台 MLReef 在 2021 年发布的 ML 市场相关工具和平台玩家。时至今日,相关工具与平台玩家数量保持着持续高速增长。当前,随着大语言模型(LLM)从新兴技术发展为主流技术,以大模型为核心技术的产品将迎来全新迭代。

图片

近期,阿里云战略进行了一定调整,确立“AI 驱动,公有云优先”核心战略。在 AI 领域有哪些产品布局呢?

  • 基础设施及服务 IaaS 层

    在计算、存储、网络、安全产品中提供以“灵骏”智算服务为特色的软硬件一体化的算力集群服务;

  • 容器即服务 CaaS 层

    laaS 层之上以 Kubernetes 为代表的容器技术,已成为云计算的新界面, “ACK 灵骏托管集群”+“云原生 AI 套件” 产品组合可以高效管理异构资源,提供 AI、HPC 等高性能计算场景下的云原生增强能力;

  • 平台即服务 PaaS 层

    CaaS 之上的平台即服务 PaaS 层构建了以 “人工智能平台 PAI” 为核心,提供一站式机器学习解决方案;

  • 模型即服务 MaaS 层

    提供 “灵机模型服务 DashScope” 、通义大模型和各行业生态大模型、企业专属定制大模型及 ModelScope 魔搭社区供业内交流,围绕 AI 各领域模型,通过标准化 API 提供模型推理、模型微调训练在内的多种服务。

图片

AI 时代下有新技术栈,包括新技术、新数据类型及新工作流。目前可观测领域产品更多服务于应用开发者,针对 ML 开发者也需要配套的工具来更好地进行调试、运维及发布模型服务。为了更好的帮助大家理解,我们先讲讲可观测行业头部企业 DataDog 如何做 AI 可观测。所谓的 AI 端到端可观测即从 Infrastructure,Vector Database 再到 Model 和 orchestration framework。DataDog 早已推出了 OpenAI 即 model 这一层的可观测能力,包括 api 费用、接口响应及 prompt,收获了非常多小客户。

本次 2023 Dash 大会将模型从 OpenAI GPT 模型延伸到了更多模型,基本上实现上面所有模型的可观测能力。随着各种大模型不断丰富,每一次请求涉及到的链路会非常复杂,对于使用方来说都是黑盒。因此 DataDog 推出 LLM Model Catalog,方便开发者去观测链路上各个节点的异常,界面非常类似 APM 服务列表和链路查询功能。基于 Catalog,不仅可以按照模型提供方维度,服务维度,环境维度等进行浏览,清晰看到不同模型性能、请求延迟、请求量以及费用。还可以针对 prompt 进行监控,增加了统一的反馈功能,来对 prompt 结果统一分析。接下来,我们看看国内厂商针对 AI 场景在做进行哪些探索。

图片

(二)Prometheus 云产品可观测监控生态

既然围绕 AI 的可观测要有一套标准体系,谁来做 AI 可观测更为合适呢?我们的回答是 Prometheus,因为他天生契合了云原生架构,在开源领域 Prometheus 处于 Metrics 事实规范的市场地位。

当今多种行业都在做云原生化改造背景下,Prometheus 在架构、功能维度与 Kubernetes 天然集成。它具有自动服务发现、多层次采集能力、生态强大、通用多模指标模型及强大的 PromQL 查询语法等特点。下图是阿里云所提供的全栈可观测能力,里面囊括了上百款阿里云产品的监控,覆盖基础设施、容器、中间件、应用等各个层面,而这些产品监控都由 Prometheus 支撑。

图片

阿里云 Prometheus 集成的众多云产品业务指标,针对云产品多租需求提供了一整套完整的解决方案。每个阿里云云产品除对产品自身指标监控外,同时需要对产品售卖租户指标进行监控。云产品针对租户资源划分主要分为租户独占资源、租户共享资源两种模式,可以给资源打租户标签或云产品自行添加租户信息方式来区分租户。

阿里云Prometheus 监控相对开源 Prometheus 采用采集、存储查询分离架构,采集端具备多租识别和分发能力,存储端内置多租能力,租户之间资源是完全隔离的。阿里云 Prometheus 会每个阿里云用户创建一个 Prometheus 云服务实例来存储用户对应的阿里云产品指标,真正解决了以往监控系统数据分散形成数据孤岛的问题,同时为每个云产品提供了深度定制、开箱即用的大盘和告警能力。

图片

下图是阿里云 Prometheus 接入云产品监控的完整架构,包含以 Pull 模式为主、Push 模式为辅的全场景覆盖。Pull 模式支持云产品以 Kubernetes 或 ECS 部署模式,通过指标暴露、日志或云监控方式来对接;Push 模式支持以 Prometheus 标准的 Pushgateway、Remote Write 协议将指标推送过来,所有接入模式均支持云产品面向自身和租户的两层监控能力。我后面讲到的阿里云 AI 产品可观测就是综合运用了多种接入模式完成相关产品可观测监控接入的。

图片

(三)阿里云 AI 可观测最佳实践

下面我详细讲下阿里云 AI 产品体系如何做端到端可观测体系建设。

最底层 IaaS 层,阿里云以 “灵骏” 智算服务为特色的软硬件一体化设计的算力集群服务,灵骏底层硬件核心由磐久服务器以及高性能 RDMA 网络两部分组成,这里面就包括提供 NAVIDIA A100 高性能 GPU 服务器。灵骏本身是以节点交付的,灵骏集群内可以划分多个分组,分组内包含计算节点。

节点上的计算资源 GPU、RDMA、Nimitz 等组件监控数据自身以 Pushgateway 协议上报的 Prometheus,指标中携带租户标来实现多个租户的隔离。内置的监控大盘支持集群级、节点级 GPU、RDMA 等资源的监控能力,涵盖 IaaS 层常规 CPU、Mem、Disk、Net 以及算力方面的一千余个指标。

图片

高性能算力之上 CaaS 层,ACK 灵骏托管集群提供全托管和高可用的控制面的标准 Kubernetes 集群服务,它作为支持机器学习平台 PAI 的云原生底座。ACK 灵骏集群会默认启用云原生 AI 套件,向下封装对各类异构资源的统一管理,向上提供标准 K8s 集群环境,提供高效、灵活的一站式 AI 平台。

ACK 灵骏托管集群支持对灵骏节点管理,纳入到灵骏节点池。AI 套件增强对异构资源调度,通过 GPU 共享调度和 GPU 拓扑感知调度可以高效地管理 GPU 程序以及 GPU 隔离。GPU 监控 2.0 基于 NVIDIA DCGM 来构建。ACK 灵骏集群内置 Prometheus 监控集成,可以一键获取整个 K8s 集群全部资源、组件的监控采集。节点上安装了 ACK 团队增强的 gpu-exporter 将 DCGM 服务以指标暴露出来,并内置了集群、节点、Pod 维度 GPU 大盘。

这里有一点需要说明,常规 GPU 利用率指标采用 nvidia-smi 查询到整张卡的 GPU 利用率。但 GPU 利用率目前存在一些局限性,如不能告知用户有多少 SM 在使用,用户写的代码到底是真忙还是假忙,代码到底在做单双精度浮点运算(FP32/64)还是在拷贝数据?此时就需要做一些 Profiling 指标,去查看更细粒度的指标信息。

图片

在 PaaS 层,阿里云人工智能平台 PAI,提供了一站式机器学习解决方案。他包含基础设施,计算引擎和容器,计算框架,ML 从数据准备、模型开发与训练及模型部署阶段的全流程产品,应用于金融、医疗、教育等各领域。

PAI 的可观测也是最复杂的,我们需要囊括 PAI 各自产品、容器、节点等相应层面的监控覆盖,每一层的架构、部署方式都有极大差异,接入方式也各不相同。但 Prometheus 存储、查询侧我们做到了一致的解决方案,以各子产品为隔离粒度的面向租户的存储,垂直形成一个租户逻辑实例,单实例支持 100w/s 写入,每个产品可以根据业务情况切分实例单独扩容,逻辑实例可以付费升级成租户独享实例支持用户定义更长存储周期和更高的隔离粒度确保稳定性。如果用户想要所有 PAI 产品的监控数据还可以定义全局聚合实例会返回所有产品监控信息而不占用存储空间。

图片

我们实现了 PAI 产品的全栈可观测能力,支持 EAS 在线推理指标,DLC 训练作业级、节点级、LRN 级资源指标的透出,以及容器组件、节点、Pod 等集群所有资源指标,还有底层基础设施算力节点的全部监控数据采集、存储、展示等全方位能力。

图片

最上层 MaaS 层,模型服务灵机 DashScope 围绕 AI 各领域模型,通过标准化 API 提供模型推理、模型微调训练在内的多种模型服务。内置包括通义千问、白川开源大语言模型在内的 20+ LLM,支持模型推理、定制,并结合 ModelScope 魔搭社区打造下一代模型及服务共享平台。

灵积的监控是通过日志中转方式实现的,灵机将各种 LLM 大模型以及业务网关监控数据写到日志系统,Prometheus 通过内部的流式 ETL 工具实时将日志转成指标数据分发到各租户名下,形成了灵机模型 API 层面的监控覆盖。

图片

正如前面讲到的 AI 时代下有新技术栈,目前的可观测领域产品更多服务于应用开发。当前的 AI 可观测虽然做到了 IaaS、CaaS、PaaS、MaaS 不同层面核心产品覆盖,但整套 AI 体系还有更多可观测需要挖掘和覆盖的场景,真正做到 AI 端到端全栈可观测任重而道远。

可观测借助 AI 实现自身数据的深入洞察

(一)Smart Metrics

可观测离不开告警,告警里有两个核心痛点。一是无效告警太多,AIOps 对告警数据做了统计之后发现真实意图的告警比例仅为 3.05%,典型无效告警配置包括用固定阈值遍历所有应用/接口,敞口告警可能最初配置没问题,运行一段时候后业务变化了告警就失效了。二是告警难配,典型的告警页面仅支持配静态阈值,而真实的指标(比如 QPS)往往是随着业务周期变化的,基于静态阈值的告警配置难、维护难。

图片

Smart Metrics 为了解决上述告警痛点而生,基于历史数据中学习 Metrics 特征,并对未来一段时间内 Metrics 正常变化范围做出预测,生成上下基线。他具有开箱即用免运维、效果可视、准确率高,支持 Grafana 原生告警能力等特征。

事实上用单一模型是难以满足多种曲线类型的,我们采用自研分类算法 + 多模型融合方式,用户可以自定义灵敏度事件等,多模型可以为每种曲线寻找最合适的算法,让我们的产品足够“Smart”。

图片

这里简单介绍两个使用场景。

场景 1: 针对 QPS 波动性明显指标,静态阈值是没法配置的,智能算法可以一键产生上下边界,超出边界的值我们才认为是可以报警的,这样就帮用户解决了如 QPS 等起伏不定指标的告警难配问题。

图片

场景 2: CPU 使用率等一般平稳型指标,会随着新应用上线发生较大变化。传统做法需要对发布后更新阈值,Smart Metrics 可以每天自动更新模型,自动学习新环境,自动生成上下边界,有效减少“敞口告警”问题产生。

图片

(二)Text2PromQL 问答机器人

如果说用算法预测监控曲线基本上成为每款监控产品的必备能力,那 Text2PromQL 则是使用 LLM 解决可观测提效问题的利器。

为什么我们需要自然语言转 PromQL 的智能机器人?PromQL 是 Prometheus 专属查询语言,和传统 SQL 有本质的不同。PromQL 是几乎所有 K8s 应用的运维工程师最经常使用的查询语句,没有之一。写 PromQL 不是一件简单的事,用三个 C 来形容它的复杂性。第一个"C"是"Complex",PromQL 语法其实是比较复杂的;第二个"C"是"Confusing", PromQL 是由指标名、算子和 label 组成,指标名有时候会非常难懂。

每个公司都有自己的命名方式,甚至有一些指标是用户自定义的。监控领域关注的指标又多又杂,有时候看文档都看不明白那些指标到底什么意思;第三个"C"是"Commenly",PromQL 是一个非常常用的查询语言。它不仅能提供运维相关的指标,也可以统计点击率、转换率、SLA 等业务指标,运维、开发、产品、运营都可以用它。综上,PromQL 语法不好学、指标名又复杂,日常工作中用得又多,为了减轻 SRE 工作、降低服务工单,也为了 Promethues、K8s 的推广,我们需要一款自然语言转 PromQL 的机器人。

图片

我们第一步要做的事情是,先看看 ChatGPT 是不是就可以完成自然语言到 PromQL 的翻译了。如果大模型本身就可以很好地完成这个任务,那我们不用开发了。就等着通义千问做大做强,我们直接调用他们的 API 就行。我们做了一些实验,发现 ChatGPT 和通义千问,都不能很好地完成这个工作。以 ChatGPT 为例,我问他“给我写个 PromQL,帮我查一下过去 5min,平均响应时间最长的 10 个应用是啥”。

它给我的回答是:topk(10,avg_over_time(application_response_time_seconds[5m]))

图片

我们看下它哪里错了,首先是指标名的事情,在我们的系统中,根本没有一个叫"application_response_time_seconds"的指标。其次,对平均响应时间的理解也是不对的,正确的例子:

topk(10,sum by (service)(sum_over_time(arms_http_requests_seconds{}[5m]))/sum by (service)(sum_over_time(arms_http_requests_count{}[5m])))

总的来说,通用的 LLM:

  1. 它给的 PromQL 语法上是正确的。

  2. 它对我们的系统一无所知,不知道我们的指标名,当然它对别的公司提供的监控系统也不知道。

  3. 它其实不大了解用户问这个问题真正的意图,因为它在这里的背景知识太少了。

也就是说,看起来 LLM 需要更多的知识…

图片

为了给 LLM 灌知识,我们也做了一些调研。总的来说,有 2 种方案:

第一种是 Fine-tuning: 就是你用足够的语料,对大模型进行微调,这里的微调指的是,你已经改了模型本身的一些参数,或者你在大模型外接了一个小模型,总之除了 LLM 本身自带的参数之外,已经有了你自己任务相关的神经网络和参数了。

第二种方案是 Prompt Engineering,提示词工程:就是我们不会增加或修改大模型本身任意一个参数,我们做的只是在用户问问题的时候,给它带一点上下文,作为额外的知识,来提升回答的准确性。

这两种方案本身没有优劣之分,我们画了一颗决策树,希望能给想要做 LLM-based 应用的同行们一些我们的经验。

既然选择了 Prompt Engineering 提示词工程,下一个问题就是,什么样的提示词是有用的。

我们花了好几个月的时间,尝试了 5 种的提示词,终于,把 Text2PromQL 准确率从 5% 以下,提升到了百分之 70-80%。我们的探索过程使用过 PromQL 官方文档、Stack Overflow 社区问答、阿里云 ARMS 内部客户 QA 问答(这里包含了我们自己系统的指标名信息)、ARMS 内部 PromQL 问答示例 + ChatGPT 生成的 PromQL 解释等手段准确率可以到 20% 左右。

直到引入 Chain-of-Thought 格式 PromQL 问答示例,准确率一下子提升到 60-70%,终于迎来了第一个拐点。最后我们基于 Chain-of-Thought 格式 PromQL 问答+通义千问,准确率原地涨了 10%,达到 80% 左右。即使不完全对的场景,也给了指标名、该用的算子等非常有用的信息,而且语法基本不会错了。通义千问确实很厉害!

图片

Chain-of-Thought 是 Google Brain 实验室提出来算法,本来用来增强 LLM 推理能力的,它的提示词是带有推理步骤的知识。推理过程很像解小学数学题。

图片

普通提示词:

Q:Roger 有 5 个羽毛球,他又买了 2 桶,每桶有 3 个,那他现在有几个。

A:答案是 11。

理论上,LLM 应该能照葫芦画瓢回答出来,但是他的答案是错误的。

Google 给的 Chain-of-Thought 提示词:

Q:Roger 有 5 个羽毛球,他又买了 2 桶,每桶有 3 个,那他现在有几个。

A:Roger 本来有 5 个球,买了 2 桶,每桶 3 个的球,也就是 6 个球。5+6=11。所以答案是 11。

这里就是给了例子中的推导过程。

然后,奇迹发生了,GPT 居然就会了,给了正确的答案。

图片

下面我们来介绍 CoT 算法,在 Text2PromQL 场景下是怎么使用的。

这是我们的架构图,我们拥有一个离线系统和一个在线系统。在离线系统中,我们将 ARMS 多年沉淀的,大量用户关于 Text2PromQL 的问答示例,通过 Chain-of-Chain Prompting 算法,转换成 Chain-of-thought 格式 Q&A 示例,然后进行文本切割,得到 Q&A 示例。然后通过 embedding,将文字转换为数字组成的向量。再把这些向量存到数据库中;在线系统中,当一个用户提问,比如写一个 PromQL,查平均响应时间最长的 10 个应用,我们会把这些文字通过 embedding 转换成数字组成的向量。

现在我们拥有了用户问题转换出来的向量以及离线系统中数据库中一系列向量。那么,我们就可以在数据库中检索和当前用户问题最相似的 topk 个向量,把这个 k+1个数字组成的向量还原为文字,然后把用户的问题以及 k 个最相似的历史 Q&A 作为提示词输入到大模型中,从而可以得到最终 PromQL。可以看到,我们这个系统初始的输入是用户的 PromQL 问答示例,所以当用户问得越多,我们能覆盖的场景也越多,准确率也会越高,总的来说,我们的机器人会越问越聪明。

图片

我们当前覆盖了 20+ 场景,准确率 76.9%。即使在没有覆盖的场景下,也能给出非常多有用的信息。更重要的是,因为我们是 Prompt Engineering,通过给提示词增加模型的准确率,所以覆盖新场景非常快,只要给它生成 CoT 格式的提示词就好。目前 Smart Metrics 和 Text2PromQL 已经在阿里云可观测可视化 Grafana 版上线,欢迎开发者体验。

图片

每月 50GB 免费额度让 Prometheus 成本更低、更可控

图片

近期,可观测监控 Prometheus 版发布新计费模式,屏蔽原有上报指标采样点数量、存储时长等计费项,以实际写入数据量(GB)进行计费。

image.png

新计费模式单价 & 免费额度:

image.png

Prometheus 包含基础指标、自定义指标。其中,基础指标以容器服务产生的基础指标举例,默认存储 7 天且免费,不占用 50GB 免费额度。自定义指标以云服务器 ECS 实例举例,每日上报指标量 24.5 万/实例,每日数据写入量约 0.093GB/实例。

计算器:https://armsnext.console.aliyun.com/price-gb#/overview

老用户如何基于新计费模式进行成本预估

1)基本条件

1 条上报指标约 0.5KB;

🔔 注:不同使用模式下存在一定数据量差异,实际使用时请关注。

2)新老对比

以中小企业通常每日上报自定义指标 15000 万条 ,数据保存 30 天举例。

  • 新计费(按量付费)

    每月成本:150000000(条) * 0.00000048 (GB/条) * 0.4(元/GB)* 30(天)= 864 元

  • 旧计费(按量付费)

  • 阶梯一部分:50000000 条 * 0.0000008(元/条)* 30(天)= 1200元
  • 阶梯二部分:100000000 条 * 0.00000065(元/条)* 30(天)= 1950元
  • 总计成本:1200 + 1950 = 3150元

对比两种计费方式,新计费节省 70% 以上。

点击此处,了解更多 Prometheus 能力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt程序设计-读写CSV文件

本文实例演示Qt读写CSV文件实现 创建项目 添加两个按钮和一个显示路径的label 界面如下 UI界面 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>MainWindow</class><widget class="QM…

[BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析

保护 ida 这里使用mmap函数创造了一个内存映射区域 从地址0x123000开始&#xff0c;大小位0x1000 权限为可写可执行&#xff08;可读0x1&#xff0c;可写0x2&#xff0c;可执行0x3&#xff09; 设置为私有映射&#xff08;MAP_PRIVATE&#xff09;和匿名映射&#xff08;MAP…

【buuctf--被偷走的文件】

将 ftp 流量过滤下来&#xff0c;追踪 ftp 流量&#xff0c;得到下图 先解释一下这四行什么意思&#xff1a; PASV&#xff1a; 这是FTP的命令&#xff0c;用于告知服务器在数据连接中使用被动模式&#xff08;Passive Mode&#xff09;。在被动模式下&#xff0c;数据连接的…

Java Stram 流对于返回对象的处理 (结束流)

Java Stram 流对于返回对象的处理 &#xff08;结束流&#xff09; package com.zhong.streamdemo.showdownstreamdemo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.*; import java.util.stream.Collectors; im…

【golang】24、go get 和 go mod:indrect 与 go mod tidy

文章目录 go get 会执行如下操作&#xff1a; 操作 go.mod 文件&#xff08;add、update、remove&#xff09;下载依赖到 $GOPATH/pkg/mod 中若已安装&#xff0c;则更新该包&#xff0c;到最新版本 试验前置准备&#xff1a;首先删除已下载的依赖&#xff0c;rm -rf $GOPATH…

MySQL篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?二、锁的优化策略三、索引的底层实现原理和优化四、什么情况下设置了索引但无法使用前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…

OpenId、UnionId

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. OpenId1.1 概念1.2 公众号OpenId&#xff08;简称 wxopenid&#xff09;同一个微信用户在小程序和公众号上的openid是不同的 1.3 openid的获取方式方式1. 调用wx…

图片视频上传压缩的考察

本文仅做上传 / 纯客户端压缩功能的调研 上传 能否在上传时就限制图片的张数&#xff1f;移动端不能使图库变成禁止状态&#xff0c;用户点击完成之后才能进行校验。 能否限制上传的文件格式&#xff1f;可以限制&#xff0c;PC端能够完美限制&#xff0c;移动端只能部分限制…

《Docker极简教程》--Docker环境的搭建--在Linux上搭建Docker环境

更新系统&#xff1a;首先确保所有的包管理器都是最新的。对于基于Debian的系统&#xff08;如Ubuntu&#xff09;&#xff0c;可以使用以下命令&#xff1a;sudo apt-get update sudo apt-get upgrade安装必要的依赖项&#xff1a;安装一些必要的工具&#xff0c;比如ca-certi…

Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案

目录 发现问题 解决办法 第一步 第二步 第三步 第四步 最后一步 问题解决 发现问题 如果大家也遇到下面这种问题&#xff0c;可能是没有include文件夹中没有bits/stdc.h 解决办法 第一步 打开一个C项目&#xff0c;鼠标移动至头文件上右击&#xff0c;选择转到文档或…

怎么能批量验证收件箱有效性

批量验证收件箱有效性是确保邮件营销活动成功送达目标受众的关键步骤。以下将介绍几种方法来实现这一目标。 首先&#xff0c;可以使用专业的邮件验证服务。这些服务通常提供API接口或批量上传功能&#xff0c;能够快速检查大量邮件地址的有效性。它们通过验证邮件地址的语法、…

能源管理师——为能源可持续发展护航

能源管理师是在能源管理领域具有专业知识和技能的专业人士&#xff0c;他们的工作对于实现能源的有效利用和可持续发展至关重要。 能源管理师的主要职责是协助企业或组织进行能源管理&#xff0c;包括能源规划、能源审计、节能措施的实施和能源绩效的评估等。他们通过对能源使…

Merging of neural networks

Merging of neural networks 论文链接&#xff1a;https://arxiv.org/pdf/2204.09973v2.pdf源码链接&#xff1a;https://github.com/fmfi-compbio/neural-network-merging 简介 典型的神经网络训练从随机初始化开始&#xff0c;并进行训练&#xff0c;直到在某些局部最优中…

Win32 SDK Gui编程系列之-- 读写初始化文件(INI文件)

读写初始化文件(INI文件) 1、初始化文件(INI文件) INI文件是一种结构简单的文本文件,是配置文件的事实标准。这种文件主要在Windows中使用,但也可在其他操作系统中使用。INI文件的名称来源于这种文件的扩展名“.INI”(initialization的缩写)。扩展名还包括configuration(…

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

Kubernetes 是什么?

介绍 Kubernetes 是一个强大的开源系统&#xff0c;最初由谷歌开发&#xff0c;并得到云原生计算基金会&#xff08;CNCF&#xff09;的支持&#xff0c;用于在集群环境中管理容器化应用程序。它旨在提供更好的方法来管理相关的、分布式的组件和服务&#xff0c;跨越各种基础设…

Sublime Text 3配置 Node.js 开发环境

《开发工具系列》 Sublime Text 3配置 Node.js 开发环境 一、引言二、主要内容2.1 初识 Sublime Text 32.2 初识 Node.js2.3 接入 Node.js2.3.1 下载并安装 Node.js2.3.2 环境变量配置 2.4 配置 Node.js 开发环境2.5 编写 Node.js 代码2.6 运行 Node.js 代码 三、总结 一、引言…

【MySQL】-11 MySQL 架构及优化原理

MySQL 架构及优化原理 1 MySQL逻辑架构2 MySQL逻辑架构整体分为三层 :3 MySQL查询过程MySQL 整个查询执行过程&#xff0c;总的来说分为 5 个步骤 :3.1 客户端/服务端通信协议3.2 查询缓存3.3 查询优化3.4 查询执行引擎3.5 返回结果给客户端 4 查询系统性能1 分析查询语句2 索…

Kubernetes实战(二十七)-pod内多容器运行

1 在一个pod中创建多个容器 1.1 YAML文件示例 # cat multi-pods.yaml --- apiVersion: v1 kind: Pod metadata:name: multi-pods spec:containers:- name: blue-pod-containerimage: busybox:1.31.1command: ["sleep"]args: ["1000"]- name: green-p…

05 06 Verilog基础语法与应用讲解

05. 1. 位操作 计数器实验升级&#xff0c;设计8个LED灯以每个0.5s的速率循环闪烁&#xff08;跑马灯&#xff09; 1.1 方法1&#xff1a;使用移位操作符<<来控制led灯的循环亮灭 设计代码 Verilog中&#xff0c;判断操作的时候不加位宽限定是可以的&#xff0c;比如i…