LLM的工程实践思考

news2024/11/23 12:54:08

陆奇博士的主题演讲《新范式 新时代 新机会》非常震撼人心。我远程参加了深圳站和北京站两场演讲,深受感触。虽然了解大模型的机制和原理以了解新的范式非常重要,但是“行胜于言”,基于大模型的众多应用都需要工程技术才能落地。然而,工程技术的重要性往往被忽视,认为只要有资源就可以实现。实际上,这可能是对技术本身缺少了敬畏。

那么,LLM在工程实践中会涉及哪些问题和挑战呢?

1. 从机器学习实践到大模型的工程实践

从工程实现的角度来看,“机器学习的持续交付”可以参见下图:

1534b8765c36deedd2d7d116283b588d.png

在《机器学习系统架构的10个要素》一文中,也描述了机器学习系统架构的工程流水线。其中,模型的监控是指从数据科学和操作角度追踪和了解我们的模型在生产环境中的性能。监控不充分可能会导致在生产环节中留下不正确的模型、陈旧模型或模型中的细微错误随着时间的推移而累积,却未被发现。当机器学习是业务核心时,无法捕捉到这些错误可能会导致重大的事故。

LLM 工程实现指在生产环境中管理和部署LLM的最佳实践、工具和技术集合,下面的图片展示了基于大模型的工程架构。

33d30af9c41a304474a0b9d6ba93d066.png

实现大模型的工程涉及到一系列任务,包括数据预处理、模型训练、模型管理、部署和监控。由于大模型的尺寸和复杂性较大,同时需要确保其可靠性、安全性和可解释性,因此大模型的工程实践可能面临更多的挑战。

2. LLM工程实践的关键环节

LLM工程实践涉及了诸多环节,主要包括训练、模型管理、数据管理、调试和故障排除、部署以及生产环境中的LLM。其中涉及到的关键点包括硬件选择、数据预处理、算法选择、版本控制、数据隐私和合规性、负载均衡、自动扩展、容器化、K8S、监控工具、持续集成和持续交付等。

2.1 LLM 的训练

LLM需要大量的计算资源来进行训练。选择正确的硬件可以对训练时间和成本产生重大影响。GPU、TPU和基于云的计算是LLM训练的常见选择。

数据预处理是LLM训练的重要步骤。因为它可以影响模型的质量和性能。预处理技术,如标记化、规范化和清理等,可以提高训练数据的质量。优化训练数据流程也可以加快训练过程并降低成本。

LLM可以使用各种算法进行训练,如LSTM、Transformer和BERT。每种算法都有其优点和缺点。选择正确的算法和超参数对于实现良好的性能并避免过度拟合或欠拟合至关重要。

监控训练进度很重要,以确保模型正在收敛而不是陷入局部最小值。跟踪损失、准确度和困惑度等度量指标可以帮助尽早识别问题并改善训练过程。

2.2 LLM 的模型管理

从保存和加载到版本控制,再到可重现性,需要深入探讨管理大语言模型的最佳实践。

保存和加载LLM模型是模型管理的重要部分,它使模型得以重复利用,减少了重新训练的需求。TensorFlow的 SavedModel和ONNX等格式通常用于保存LLM模型。

版本控制LLM模型对于跟踪变更和保持可重复性至关重要。Git和MLFlow等工具可以帮助管理LLM模型的版本控制。

在科学和业务应用中,可重复性非常重要。容器化、虚拟化和可重复的流程等技术可以帮助确保LLM模型的可重现性。

2.3 LLM的数据管理

数据是LLM开发的支柱,有效管理对于开发准确可靠的LLM模型至关重要。在LLM Ops中进行数据管理时,一些关键考虑因素包括:

  • 准备和清洗数据:准备和清洗数据涉及将原始数据转换成可用于LLM训练和推理的格式。这包括数据归一化、特征工程和数据增强等任务。

  • 确保数据质量和一致性:确保数据高质量和一致性对于开发准确的LLM模型至关重要。这涉及数据验证和质量控制措施,如异常值检测和数据分析。

  • 管理数据隐私和合规性:在处理敏感或个人数据时,数据隐私和合规性是必要的考虑因素。这包括实施数据安全措施,如加密和访问控制,并遵守数据隐私法规,例如GDPR和《个保法》。

有效的数据管理需要数据科学家、工程师和利益相关者之间的协作,以确保数据清洁、可靠和道德采集。投资于数据管理工具和流程可以帮助简化数据准备和验证任务,并提高LLM模型的质量。

2.4 LLM的调试和故障排除

调试和故障排除是LLM开发过程中必不可少的部分。以下是一些解决LLM常见错误的策略:

  • 识别和解决LLM常见错误:LLM中常见的错误可能包括输入数据的问题、模型架构的问题以及代码中的错误。仔细的测试和调试可以帮助识别和解决这些问题。

  • 调试LLM训练和推断问题:调试LLM训练和推断问题可能很具有挑战性,因为这些问题可能与数据、模型架构或优化过程有关。重要的是要仔细监控训练过程并使用诊断工具及时识别问题。

  • 开发强大的LLM测试策略:测试对于确保LLM的可靠性和准确性至关重要。强大的测试策略应包括单元测试和集成测试,以及对输入和输出数据的全面验证。

2.5 LLM的部署

部署LLM需要可靠且可扩展的基础设施,可以处理LLM推理的计算需求。AWS、GCP、Azure、百度云等云解决方案是部署LLM的流行选择。

LLM的部署涉及将负载分布在多个服务器或节点上,以处理高流量并确保低延迟。负载均衡、自动扩展和分片等技术可以帮助扩展LLM部署。

管理和监控LLM部署对于确保可靠性、安全性和性能至关重要。容器化、Kubernetes和监控工具(如Prometheus和Grafana)等技术可帮助管理和监控LLM部署。下面的架构描述了AWS上的一般部署流程。

8eff15cda77579027b763c4e991e17e7.png

2.6 生产环境中的LLM

在生产环境中部署LLM模型需要对软件开发流程、版本控制和测试进行仔细管理。为了实现LLM模型的持续集成和持续交付,需要考虑以下内容:

4291ef454ec73810a39935084eb050db.png

将 LLM 模型集成到现有工作流程中,需要将其集成到现有的软件开发工作流程中,例如基于 Git 的版本控制系统和持续集成平台。自动化集成和交付(CI/CD)是 LLM 整体工作流程的重要组成部分。为了确保 LLM 模型能够高效、有效地部署,将它们集成到现有工作流程并自动化部署流水线非常重要。这允许持续交付新的 LLM 模型和更新现有模型,确保它们始终保持最新状态并执行最佳。

为了将 LLM 模型集成到现有工作流程中,重要的是要清楚地了解 LLM 模型的依赖关系和要求,以及现有基础架构和系统。这可能涉及与 IT 团队和 DevOps 工程师密切合作,以确保 LLM 模型可以无缝、安全地部署。

自动化部署管道是 LLM 的 CI/CD 的另一个重要方面。这涉及使用工具和技术,例如 Jenkins、Travis CI 或 GitLab CI/CD,自动化 LLM 模型的构建、测试和部署过程。这可以帮助减少错误,并确保 LLM 模型在不同环境中快速且一致地部署。

管理 LLM 模型的版本和回滚也是至关重要的,以确保 LLM 模型始终按预期执行。这涉及使用版本控制系统,如 Git,跟踪对 LLM 模型的更改,并在必要时回滚到以前的版本。这还涉及使用监控和日志记录工具来跟踪 LLM 模型在生产中的性能并快速识别问题。

总体而言,CI/CD 是 LLM 工程实践的关键部分,它确保了 LLM 模型快速高效地部署,并始终保持最新且性能最佳。通过将 LLM 模型集成到现有工作流程中,自动化部署管道以及管理版本和回滚,团队可以确保其 LLM 模型安全可靠地部署。

3. LLM 工程实践中的非功能性需求

LLM 工程实践中的非功能性需求主要包括处理模型和数据的安全性、提高模型的可解释性和解释能力、以及性能优化的关键策略,包括微调LLM、压缩、量化和知识蒸馏LLM模型、优化推理时间、使用缓存等技术。

3.1 LLM的安全性考量

基于尺寸、复杂性和敏感数据的处理能力,LLM面临着独特的安全挑战。为了确保LLM模型和数据的安全,需要考虑以下问题:

  • 保护LLM模型和数据:这包括实施访问控制、加密和安全数据存储,以防止未经授权的访问LLM模型和数据。

  • 审计LLM使用情况:重要的是要跟踪谁在访问LLM模型和数据以及为什么目的。这有助于检测和防止LLM的未经授权使用或滥用。

  • 管理对LLM模型的访问:需要确保只有经过授权的用户和应用程序才能访问LLM模型。这涉及设置身份验证和授权机制,以及实施防火墙和网络隔离。

3.2 LLM的可解释性和解释能力

由于其复杂性和缺乏透明度,LLM通常被认为是“黑匣子”。然而,其可解释性和解释能力对于确保LLM模型的信任和问责是必不可少的。

为了实现可解释性和解释能力,需要考虑下图中展示的原则:

a3717fa0aa46fbf1bb7746acacf5a98a.png

我们需要了解LLM模型的内部工作原理,以解释其输出并向利益相关者解释决策。这包括使用特征重要性分析、归因方法和可视化等技术来了解LLM模型如何进行预测。我们还需要利用可解释性工具,如LIME、SHAP和集成梯度,来分析LLM模型并确定改进的领域。

3.3 LLM 的优化技术

优化LLM一般包括三个方面:微调LLM以适用于特定任务,压缩、量化和知识蒸馏LLM模型以提高其可扩展性和部署性,以及优化LLM性能的关键策略,包括优化推理时间、使用缓存等技术以及在准确性和速度之间权衡。

3.3.1 LLM的微调

LLM可以通过在特定任务上训练它们来进行微调,以便利用预训练LLM模型所学习的知识和参数来进行特定应用。为了微调LLM,需要考虑以下内容:

  • 选择合适的预训练LLM模型,并使用特定任务的数据集对其进行微调。

  • 尝试不同的微调方法和超参数,以获得最佳结果。

  • 使用适当的指标和验证技术评估微调的LLM模型的性能。

3.3.2 LLM的模型优化

由于LLM(语言模型)可能需要大量计算和资源,这可能会限制它们在生产环境中的可扩展性和部署。为了优化LLM,需要考虑以下几点:

  • 压缩LLM模型:这涉及使用修剪、量化和知识蒸馏等技术来减小LLM模型的大小,而不会影响其性能。

  • 量化LLM模型:这涉及将LLM模型从浮点算术转换为定点算术,以减小它们的内存占用并提高它们的推理时间。

  • 对LLM使用知识蒸馏:这涉及训练一个较小、更简单的模型(学生)来模仿一个较大、更复杂的模型(教师)的行为。

3.3.3 LLM的性能优化

LLM通常需要大量的计算资源,因此优化它们的性能是确保它们能够在实际应用中有效使用的关键。以下是一些优化LLM性能的关键策略:

  • 优化LLM推理时间:影响LLM性能的主要因素之一是处理输入和生成输出所需的推理时间。有许多技术可以优化推理时间,包括修剪未使用的神经元,减少精度和使用高效硬件加速器。

  • 对LLM使用缓存和记忆化技术:缓存和记忆化可以通过存储先前计算的结果并在可能时重复使用它们来减少LLM推理过程中所需的计算量。这对于处理具有高度重叠的输入的LLM尤其有效。

  • 在LLM的准确性和速度之间权衡:在某些情况下,为了实现更快的推理时间,可能需要牺牲一定程度的准确性。在优化LLM性能时,需要仔细考虑准确性和速度之间的权衡。

4. LLM与边缘计算

随着人工智能领域的不断发展,实时决策和推理在网络边缘的需求变得越来越重要。这导致了边缘计算的出现。边缘计算指的是在网络边缘的设备上处理数据,而不是在集中式数据中心中处理。

LLM具有在边缘计算中极具潜力的优势,因为它们能够实时处理自然语言输入并快速生成准确的响应。然而,在边缘设备上部署LLM模型还存在一些必须解决的挑战。

为了在边缘设备上部署LLM模型,首先必须将其优化为在计算资源有限的设备上高效运行。这包括缩小模型的大小并最小化其内存和处理要求。一旦模型被优化,它就可以部署在边缘设备上。

在边缘设备上运行LLM的主要挑战之一是这些设备上可用的计算资源有限。LLM模型通常非常大,需要大量的存储器和处理能力来运行。为了克服这个挑战,可以使用模型压缩、量化和修剪等技术来减小模型的大小并使其更加高效。另一个挑战是在边缘设备上运行LLM时需要保持数据隐私和安全。这可以通过联邦学习等技术来解决,该技术允许在边缘设备上训练模型而不暴露敏感数据。

在物联网和机器人等行业中,LLM在边缘设备上具有许多潜在的用例和好处。例如,LLM可以用于实时处理自然语言输入并在智能音箱、聊天机器人和语音助手等设备上生成响应。在机器人领域,LLM可以用来使机器人能够实时理解和响应自然语言输入,使它们更具响应性和易于交互。LLM也可以用于物联网设备,以实现传感器数据的实时自然语言处理,从而更容易实时监控和控制设备。

总体而言,在边缘设备上部署LLM模型既带来了挑战,也带来了机会。通过为边缘计算优化LLM模型并解决数据隐私和安全等问题,可以释放LLM在物联网和机器人等行业的潜力,并在网络边缘实现实时自然语言处理。

5. LLM 工程实践中的非技术问题

在LLM工程实践中,有效的协作与沟通至关重要,可以通过版本控制、代码审查和问题跟踪等工具来促进。同时,确保LLM模型符合伦理和公正使用也是必要的,包括确保公正性和无偏见、减轻意外伤害的风险和遵守道德和法律标准等方面。

5.1 LLM工程实践中的协作与沟通

有效的协作与沟通是成功的LLM工程实践的关键。不同团队和利益相关者之间的协作对于确保LLM有效开发和部署至关重要。版本控制、代码审查和问题跟踪等工具可以帮助促进协作。重要的是以易于理解和接受的方式向非技术人员传达LLM的结果。这可能需要使用可视化、摘要或其他工具来传达复杂信息。

这是一个不断发展的领域,重要的是拥抱实验和持续改进的文化。这可能涉及尝试新技术、测试新想法并向利益相关者征求反馈。

5.2 LLM 工程实践中的公正与伦理

LLM模型有可能对人们的生活产生重大影响。因此,确保它们符合伦理和公正使用至关重要。

  • 确保LLM模型公正和无偏见:LLM模型的公正性和准确性对其有效使用至关重要。偏见可能会由于各种因素而潜入LLM模型,例如有偏见的训练数据或不适当的特征选择。有必要定期审计LLM模型,以识别和减轻偏见。

  • 减轻LLM模型意外伤害的风险:LLM模型有可能造成意外伤害,例如侵犯隐私、安全漏洞以及对弱势群体产生负面影响。有必要进行彻底的风险评估,以识别潜在的伤害,并采取适当的措施予以减轻。

  • 遵守LLM的道德和法律标准:LLM模型必须遵守道德和法律标准。这包括遵守数据隐私规定,在LLM模型的决策过程中确保透明度,并考虑LLM模型对社会的潜在影响。组织必须采取积极的措施,确保其LLM模型符合道德和法律标准。

下面的图片详细描述了人工智能伦理的各种原则。

1e8d23e23ab8f03e25863b1c04887387.png

6. LLM 工程实践面临的其他挑战

基于LLM的工程实践是一个不断发展的领域,不断有新的趋势和进展。跟上新研究和新开发的节奏对于保持相关和竞争力同样至关重要。一些新兴趋势包括:

  • AutoML:AutoML工具可以自动化LLM开发的几个方面,从数据预处理到超参数调整。这可以使LLM开发更快速和更可访问。

  • 联邦学习:联邦学习是一种隐私保护的LLM训练方法,允许在设备上本地训练数据而不离开设备。这有潜力改善隐私和数据所有权,同时也减少了训练所需的数据量。

  • Few-Shot和Zero-Shot学习:这些技术旨在训练具有有限或没有数据的模型,在低资源环境中可以有益。

  • 多模态学习:多模态学习涉及训练LLM理解不同类型的数据,例如文本、图像和音频。这对于开发更复杂和多样化的应用程序非常有用。

然而,新的进步带来了新的挑战,这些挑战包括:

  • 模型偏差:LLM模型中的偏差可能由各种因素引起,例如有偏的训练数据或有偏的模型架构。这可能导致意外后果和不公平的结果。

  • 模型可解释性:随着LLM模型变得越来越复杂,了解它们如何做出决策可能是一个挑战。模型可解释性技术对于确保LLM模型能够被理解和信任至关重要。

  • 安全和隐私:随着LLM模型变得越来越有价值,确保它们的安全和隐私变得更加关键。这包括保护LLM模型和数据、管理对LLM模型的访问以及审核LLM使用。

为了为未来的LLM工程实践做好准备,需要跟上新兴趋势和技术的步伐,同时解决即将出现的挑战。投资研究和开发、采用新技术和工具、确保LLM模型的道德和公正使用,这些都是保持领先地位的必要条件。

7.小结

LLM 已经彻底改变了人工智能领域。LLM 的工程实践是确保这些模型有效开发、部署和管理的关键方面。LLM 在改善各种应用的能力方面具有巨大的潜力,但也提出了独特的挑战。面向数据管理、模型训练和调整、部署、解释、测试、安全、CI/CD、监控和日志记录以及治理和合规等关键领域,我们需要确保 LLM 在生产环境中的可靠性、安全性和性能。

随着 LLM 在各个行业的日益普及,保持与最新的 LLM 进展和最佳实践的同步是至关重要的,以确保这些模型在遵守道德和法律标准的同时提供准确可靠的结果。

【参考资料与关联阅读】

  • Continuous Delivery for Machine Learning,https://martinfowler.com/articles/cd4ml.html

  • Deploy Models for Inference,https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html

  • 文心·NLP大模型,https://wenxin.baidu.com/wenxin/nlp

  • 一文读懂“语言模型”

  • 解读Toolformer

  • 解读TaskMatrix.AI

  • 知识图谱的5G追溯

  • 图计算的学习与思考

    老码农眼中的大模型(LLM)

  • AI系统中的偏差与偏见

  • 面向AI 的数据生态系统

  • 机器学习与微分方程的浅析

  • 神经网络中常见的激活函数

  • 老码农眼中的大模型(LLM)

  • 《深入浅出Embedding》随笔

  • 机器学习系统架构的10个要素

  • 清单管理?面向机器学习中的数据集

  • DuerOS 应用实战示例——机器狗DIY

  • 《基于混合方法的自然语言处理》译者序

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

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

相关文章

Ndk c++层 crash问题分析

首先你要从设备上拿到墓碑文件:tombstone,这里面会记录系统崩溃时的信息。位置在/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号&…

FlashAttention和PagedAttention

FlashAttention FlashAttention一般指的是FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness这篇,当然Transformer Quality in Linear Time这篇里非要说FLASH Fast Linear Attention with a Single Head,命名有点无语&…

JavaScript数据存储方式

内置对象 js内部提供的对象,包含各种属性和方法给开发者调用 document.write() console.log() Math Math对象是js提供的一个 “数学”对象,提供了一系列做数学运算的方法 max找最大值Math.max(3,8,5,4) 返回8min找最小值Math.min(3,8,5,4) 返回4ab…

printf不一样的玩法

Printf不一样的玩法 ❝ 在使用linux终端命令的时候,我们可以看到像more命令,它的显示方式与一般的字符串不同,是用了反显。同样,linux C下printf还有很多其他不常见的格式化输出形式。本文主要为你盘点这些形式。 ❞ 先看下效果&a…

MySQL:单行函数(全面详解)

MySQL:单行函数 前言一、函数的理解1、什么是函数2、不同DBMS函数的差异3、MySQL的内置函数及分类 二、数值函数1、基本函数2、角度与弧度互换函数3、三角函数4、指数与对数5、进制间的转换 三、字符串函数四、日期和时间函数1、获取日期、时间2、日期与时间戳的转换…

Bpmn.js流程建模结合业务整合工作流(二)

上一篇文章讲述了bpmn.js的基本搭建使用过程,下面介绍工具栏的按钮使用 以及右侧属性如何绑定到节点保存的 保存方法 /** 保存xml */async save() {await this.getNewXML() //获取最新的xmlawait this.getRootElement() //获取流程基本信息 节点信息const params = {name: th…

SSM+校园网上订餐系统 毕业设计-附源码211510

校园网上订餐系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园网上订…

API 接口协作,swagger不再是第一选择了

目录 一、前言 1.1. 场景一、后端视角: 1.2. 场景二、前端视角: 1.3. 场景三、测试视角: 二、Apifox 2.1 场景一、后端视角: 漂亮的接口文档 2.2 场景二、前端视角: 2.3 场景三、测试视角: 三、总…

SOAP教程

参考 SOAP 教程 1、介绍 SOAP 中文解释为:简单对象访问协议。 SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。 SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。或者更简单地说:SOAP…

ASP.NET Core Web API之Token验证

在实际开发中,我们经常需要对外提供接口以便客户获取数据,由于数据属于私密信息,并不能随意供其他人访问,所以就需要验证客户身份。那么如何才能验证客户的身份呢?今天以一个简单的小例子,简述ASP.NET Core…

一、枚举类型——使用枚举类型分发

如果将 RoShamBo1.java 直接转换为基于枚举的实现版本,则会出现问题。因为枚举实例并不是类型,所以无法重载 eval() 方法,你无法将枚举实例作为参数类型。不过,还有别的方法可以利用枚举来实现多路分发。 一种方法是通过构造方法…

实战:SonarQube平台安装配置-2023.6.24(安装成功)(docker方式)

实战:SonarQube平台安装配置-2023.6.24(安装成功)(docker方式) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 实验环境 sonarqube:9.9.0-community (docker方式部署) SonarScanner 4.8.0.2856 (部署在宿主机上)实验软件 链接&…

开关电源-PFC驱动电路的工作原理

PFC驱动电路的工作原理 由于PFC的控制地和MOS管组成的双向开关的源极不共地,因此需要解决开关管浮地驱动问题。 图2 驱动电路图 电路图说明: PFCPWM是DSP的PWM信号;VCC_4V和AGND是DSP侧的电源和控制地;Vccp_14V和AGND_DRV是MO…

echarts 的 一个图表容器,使用grid存放多个折线图,并配置x轴联动

效果图 配置参数 // prettier-ignore const data [["2000-06-05", 116], ["2000-06-06", 129], ["2000-06-07", 135], ["2000-06-08", 86], ["2000-06-09", 73], ["2000-06-10", 85], ["2000-06-11",…

开关电源- 用PFC拓扑电路对比

用PFC拓扑电路对比 最基本的有桥boost PFC电路 有桥boostPFC电路是最基本的电路,就不叙述了。 双Boost无桥PFC 双boost无桥拓扑的优点是使用功率元件比较少, 两个管子可以一起驱动, 这简化了驱动电路的设计, 同时让直接使用传统APFC的控制芯片成为可能.但是这种拓扑…

3.41 - haas506与esp8266-01s的串口通信(TCP透传)

haas506与esp8266-01s的串口通信 PC端调试wifi模块1.接线(与电脑通信)2.模式案例3.指令演示 开发板与wifi模块通信1.接线(TTL串口通信)2.代码测试 PC端调试wifi模块 esp8266-01s 1.接线(与电脑通信) 与电脑通信时引脚连接,wifi模块需要稳定3.3v供电,…

一个618项目的复盘总结反思

一、前言 618期间上线一个活动项目。但上线不顺利,当天就出现了性能问题,接口超时,用户无法打开网页,最后不得的临时下线。花了三天两夜,重构了后台核心代码,才让活动进行下去。 回头看了一下自己的时间记…

【零基础入门学习Python---Python条件和循环语句】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

OpenCV下载、环境变量配置

https://sourceforge.net/projects/opencvlibrary/files/ 选择合适的版本下载即可 这里使用opencv-3.1.0.exe执行 将需要bin目录加入到环境变量Path D:\opencv\31\opencv\build\x64\vc14\bin #include<opencv2/opencv.hpp> #include <iostream> using namespace …

【学习日记2023.6.25】之ElasticSearch搜索引擎

文章目录 分布式搜索引擎1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2 ELK技术栈1.1.3 elasticsearch和lucene1.1.4 为什么不是其他搜索技术&#xff1f;1.1.5 总结 1.2 倒排索引1.2.1 正向索引1.2.2 倒排索引1.2.3 正向和倒排 1.3 es的一些概念1.3.1 文档和字…