当前位置: 首页 > news >正文

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

导读:这篇论文针对在资源受限的边缘设备上部署检索增强生成 (RAG) 系统的挑战,提出了一种名为 EdgeRAG 的高效方法。EdgeRAG 通过巧妙地结合预计算在线生成缓存策略,有效地解决了在边缘设备上部署 RAG 系统的内存和延迟问题,为在资源受限的设备上运行更强大的 LLM 提供了一种可行方案。

>> 背景痛点:在边缘设备上部署 RAG 系统面临两大主要挑战:

内存限制:边缘设备的内存有限,无法容纳大型向量数据库,导致内存抖动和性能下降,即使使用两级倒排文件 (IVF) 索引,也可能出现这个问题。

计算能力限制:边缘设备的计算能力有限,在线生成嵌入向量会带来高延迟,特别是对于大型集群,延迟会非常显著,形成长尾延迟。

>> 具体的解决方案:EdgeRAG 提出了一种针对边缘设备的内存高效 RAG 系统,通过以下策略解决上述问题:

选择性索引存储:对 IVF 索引的第二级嵌入向量进行剪枝,只存储计算成本高的集群的嵌入向量,其余嵌入向量在检索时在线生成。

自适应成本感知缓存:对在线生成的嵌入向量进行缓存,优先缓存生成成本高的嵌入向量,避免重复计算,提高效率。

>> 核心思路步骤:EdgeRAG 的核心思路包含以下步骤:

索引阶段:对文本数据进行分块、生成嵌入向量,使用 K-means 聚类算法进行聚类,存储第一级索引(聚类中心)和第二级索引(数据块引用以及嵌入向量生成延迟)。如果一个集群的嵌入向量生成延迟超过预设阈值 (SLO),则预先计算并存储该集群的嵌入向量;否则,只存储数据块引用,在检索时在线生成嵌入向量。

检索阶段:收到查询后,先查找最相似的聚类中心,然后检查该集群的嵌入向量是否已预先计算并存储。如果已存储,则直接加载;否则,检查缓存,如果命中则加载;如果未命中,则在线生成嵌入向量,并更新缓存。最后,检索相关数据块并传递给 LLM 生成答案。

>> 优势:EdgeRAG 的主要优势在于:

● 内存效率:通过剪枝第二级嵌入向量,减少了内存占用,使大型数据集能够在边缘设备上运行。

● 低延迟:通过预计算大型集群的嵌入向量和缓存生成的嵌入向量,降低了检索延迟,特别是长尾延迟。

● 保持生成质量:虽然进行了优化,但 EdgeRAG 保持了与基线系统相似的生成质量。

>> 结论和观点:

● 论文通过在 Nvidia Jetson Orin Nano 上的实验结果表明,EdgeRAG 平均将检索延迟提高了 1.8 倍,对于大型数据集,提高了 3.82 倍,同时保持了与基线系统相似的生成质量。

● EdgeRAG 成功地将多个超过边缘设备内存容量的数据集加载到内存中,避免了内存抖动

● 论文讨论了 EdgeRAG 与其他 RAG 系统的集成以及利用硬件加速器的潜力。

● 论文认为 EdgeRAG 提供了一种在边缘设备上高效部署 RAG 系统的方法,尤其适用于那些内存和计算能力受限的场景。

目录

《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

Abstract

1、Introduction

Figure 1:RAG Pipelines

Figure 2:Retrieval process of Inverted File Index

Conclusion


《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

地址

论文地址:https://arxiv.org/abs/2412.21023

时间

2024年12月31日

作者

弗吉尼亚大学、滑铁卢大学、Google

Abstract

Deploying Retrieval Augmented Generation (RAG) on resource-constrained edge devices is challenging due to limited memory and processing power. In this work, we propose EdgeRAG which addresses the memory constraint by pruning embeddings within clusters and generating embeddings on-demand during retrieval. To avoid the latency of generating embeddings for large tail clusters, EdgeRAG pre-computes and stores embeddings for these clusters, while adaptively caching remaining embeddings to minimize redundant computations and further optimize latency. The result from BEIR suite shows that EdgeRAG offers significant latency reduction over the baseline IVF index, but with similar generation quality while allowing all of our evaluated datasets to fit into the memory.

在资源受限的边缘设备上部署检索增强生成(RAG)具有挑战性,因为这些设备的内存和处理能力有限。在本研究中,我们提出EdgeRAG,它通过在簇内修剪嵌入以及在检索期间按需生成嵌入来解决内存限制问题。为避免为大型尾部簇生成嵌入时的延迟,EdgeRAG 会预先计算并存储这些簇的嵌入,同时自适应地缓存其余嵌入以减少冗余计算并进一步优化延迟。BEIR 套件的结果表明,EdgeRAG 相较于基线 IVF 索引显著降低了延迟,同时生成质量相似,并且使我们评估的所有数据集都能适配内存。

1、Introduction

Large Language Models (LLMs) enable new applications such as smart assistants (Google, 2024; Microsoft,). The processing of these powerful LLMs is usually offloaded to the datacenter due to the enormous resources required. However, the latest mobile platforms enable smaller LLM to run locally. These lightweight models cannot directly compare with the state-of-the-art hundred-billion parameter LLMs. To enhance these models to process users’ custom data and applications, a promising solution is to build a compounding system. By integrating LLMs with Retrieval Augmented Generation (RAG), these smaller models can leverage local personal data to generate high-quality responses.

Even though RAG removes the requirement for a heavy-weight LLM for generation, retrieval still has a high overhead. The core of a RAG system is a vector database that enables vector similarity search. Different from LLMs, the overhead of RAG mainly comes from its memory footprint. For example, a Flat Index stores and sequentially searches every vector representation of the data chunks to identify the closest match to the query. For example, in fever(Thorne et al., 2018) dataset, a vector database that holds 5.23 million records has an index size of 18.5 GB. In comparison, mobile devices tend to have 4-12 GB of main memory (Wiens, 2024; Sam, 2024). Thus even using the whole memory on a mobile platform is not sufficient to run a large vector database. On the other hand, storing the vector database on disk introduces substantial access latency, impacting performance.

Our research focused on the challenges of implementing Retrieval Augmented Generation (RAG) on edge systems—mainly the overhead of the vector similarity search. We find that naively keeping the entire index in the main memory would not fit into the memory of mobile platforms. A Flat index which performs sequential search of all embeddings not only expensive in term of computation, but also trash memory leading to poor performance. On the other hand, Two-level Inverted File (IVF) index clusters embeddings of data chunks into centroids. The retrieval process first searches for the closest centroid and then performs a second search within the cluster. Thus, avoid expensive sequential search of all embeddings. However, keeping all embeddings in memory still leads to excessive memory thrashing and increased latency. Thus, keeping the first-level centroid in memory and generating the second level online can be a promising solution. Through further profiling the RAG on mobile platforms using widely-used RAG benchmarks (Thakur et al., 2021), we find that both the data access pattern and the access latency are highly skewed. First, most of the embedding vectors are not searched during the retrieval process. Second, the cost of generating the embedding vector is not the same for all clusters and has an extreme tail distribution. These skewness leave space for further optimizations.

大型语言模型(LLMs)催生了诸如智能助手(谷歌,2024 年;微软)等新应用。由于这些强大的 LLM 需要大量资源,其处理过程通常被转移到数据中心。然而,最新的移动平台使得较小的 LLM 能够在本地运行。这些轻量级模型无法与最先进的百亿参数 LLM 相提并论。为了增强这些模型以处理用户的自定义数据和应用,一个有前景的解决方案是构建一个复合系统。通过将 LLM 与检索增强生成(RAG)相结合,这些较小的模型能够利用本地个人数据生成高质量的响应。

尽管 RAG 消除了生成过程中对重型 LLM 的需求,但检索仍具有较高的开销。RAG 系统的核心是一个向量数据库,它支持向量相似度搜索。与 LLM 不同,RAG 的开销主要来自其内存占用。例如,平面索引会存储并按顺序搜索每个数据块的向量表示,以确定与查询最接近的匹配项。例如,在 Fever(Thorne 等人,2018 年)数据集中,一个包含 523 万条记录的向量数据库的索引大小为 18.5GB。相比之下,移动设备通常只有 4 至 12GB 的主内存(Wiens,2024 年;Sam,2024 年)。因此,即使使用移动平台上的全部内存也不足以运行大型向量数据库。另一方面,将向量数据库存储在磁盘上会引入大量的访问延迟,从而影响性能。

我们的研究重点在于在边缘系统上实现检索增强生成(RAG)所面临的挑战——主要是向量相似性搜索的开销。我们发现,简单地将整个索引保留在主内存中无法适应移动平台的内存。执行所有嵌入的顺序搜索的平面索引不仅计算成本高昂,而且浪费内存,导致性能不佳。另一方面,两级倒排文件(IVF)索引将数据块的嵌入聚类到质心。检索过程首先搜索最近的质心,然后在聚类内进行第二次搜索。因此,避免了对所有嵌入进行昂贵的顺序搜索。然而,将所有嵌入都保留在内存中仍会导致过多的内存抖动和增加的延迟。因此,将第一级质心保留在内存中,并在线生成第二级质心可能是一个有前景的解决方案。通过在移动平台上使用广泛使用的 RAG 基准(Thakur 等人,2021 年)对 RAG 进行进一步的性能分析,我们发现数据访问模式和访问延迟都高度倾斜。首先,在检索过程中,大多数嵌入向量未被搜索。其次,生成嵌入向量的成本对于所有簇来说并不相同,并且具有极端的尾部分布。这些倾斜性为进一步的优化留下了空间。

In this work, we develop a mobile RAG system, EdgeRAG that enables RAG-based LLM on mobile platforms, by fitting the vector database in the limited mobile memory while ensuring that the response time meets the service level objectives (SLOs) of mobile AI assistant applications. Based on these observations, our key ideas are the following: First, we prune the vector embedding of the data embeddings within centroid clusters which are only used for second-level search to save the memory capacity. EdgeRAG then generates the vector embedding online during the retrieval process. However, due to limited computing on edge systems, generating vector embedding online could suffer from long embedding generation latency from large tail clusters. To overcome this challenge, our second solution is to pre-compute and store the embeddings of large tail clusters to avoid long tail latency of generating vector embeddings of data within those tail clusters. Then, EdgeRAG can adaptively cache the remaining vector embeddings to minimize redundant computation and improve overall latency, based on the spare memory capacity and SLO requirements.

We evaluate EdgeRAG on a mobile platform based on Nvidia Jetson Orin Nano equipped with 8 GB of shared main memory, similar to a mobile edge platform that has neural processing capabilities (Sam, 2024). We use 6 workloads from the BEIR benchmark suite (Thakur et al., 2021) and tune the retrieval hyperparameters to normalize the recall against the Flat index baseline. We also evaluate the generation quality using GPT-4o (OpenAI,) LLM as an LLM evaluator (Saad-Falcon et al., 2023). We use the time-to-first-token (TTFT) latency as the main metric. The result shows that EdgeRAG offers 1.8 × faster TTFT over the baseline IVF index on average and 3.82 × for larger datasets. At the same time, EdgeRAG maintains a similar generation quality with recall and generation scores within 5 percent of the Flat Index baseline while allowing all of our evaluated datasets to fit into the memory and avoid memory thrashing.

在本工作中,我们开发了一个移动 RAG 系统 EdgeRAG,它能够在移动平台上实现基于 RAG 的 LLM,通过在有限的移动内存中适配向量数据库,同时确保响应时间满足移动 AI 助手应用程序的服务水平目标(SLO)。基于这些观察结果,我们的关键思路如下:首先,我们修剪质心簇内仅用于第二级搜索的数据嵌入的向量嵌入,以节省内存容量。EdgeRAG 在检索过程中在线生成向量嵌入。然而,由于边缘系统计算能力有限,在线生成向量嵌入可能会因大型尾部簇而导致嵌入生成延迟过长。为克服这一挑战,我们的第二个解决方案是预先计算并存储大型尾部簇的嵌入,以避免生成这些尾部簇内数据的向量嵌入时出现长尾延迟。然后,EdgeRAG 可以根据空闲内存容量和 SLO 要求自适应地缓存剩余的向量嵌入,以减少冗余计算并降低整体延迟。

我们在基于英伟达 Jetson Orin Nano 的移动平台上对 EdgeRAG 进行评估,该平台配备 8GB 共享主内存,类似于具备神经处理能力的移动边缘平台(Sam,2024)。我们使用来自 BEIR 基准测试套件(Thakur 等人,2021)的 6 个工作负载,并调整检索超参数以将召回率与 Flat 索引基线进行标准化。我们还使用 GPT-4o(OpenAI)LLM 作为 LLM 评估器(Saad-Falcon 等人,2023)来评估生成质量。我们采用首次生成标记的时间(TTFT)延迟作为主要指标。结果表明,EdgeRAG 的 TTFT 平均比基线 IVF 索引快 1.8 倍,对于较大的数据集则快 3.82 倍。同时,EdgeRAG 保持了相似的生成质量,其召回率和生成得分与 Flat 索引基线相差在 5%以内,同时使所有评估的数据集都能适配内存,避免了内存碎片化。

In summary, the contributions of this work are the following:

• We identify two key challenges of implementing RAG on edge devices: First, limited memory capacity does not allow loading large embedding vector database in the memory leading to memory thrashing and poor performance. Although only a small subset of embeddings are searched for two-level IVF index. Second, limited computing power of edge devices which slows down online embedding generation especially on few large tail and repeatedly used clusters.

• To enable scalable and memory-efficient RAG on edge systems, we propose EdgeRAG which improves upon IVF index by pruning second-level embeddings to reduce memory footprint and generate the embedding online during retrieval time. EdgeRAG mitigates long tail latency from generating the embeddings of heavy cluster by pre-computing and storing those tails. To further optimize latency, EdgeRAG selectively caches generated embeddings to reduce redundant computation while minimizing memory overhead.

• We implement EdgeRAG on Jetson Orin edge platform and evaluate our system with datasets from BEIR benchmark. The results show that EdgeRAG significantly improves the retrieval latency of large datasets with embedding sizes larger than the memory capacity by 131% with slight reduction in retrieval and generation quality.

总之,本工作的贡献如下:

• 我们指出了在边缘设备上实现 RAG 的两个关键挑战:首先,有限的内存容量无法将大型嵌入向量数据库加载到内存中,从而导致内存抖动和性能不佳。尽管在两层 IVF 索引中仅搜索嵌入的小子集。其次,边缘设备的计算能力有限,这会减慢在线嵌入生成的速度,尤其是在少数大型尾部和频繁使用的簇上。

• 为了在边缘系统上实现可扩展且内存高效的 RAG,我们提出了 EdgeRAG,它通过修剪第二层嵌入来改进 IVF 索引,以减少内存占用,并在检索时在线生成嵌入。EdgeRAG 通过预先计算并存储这些尾部来缓解生成重尾簇嵌入的长尾延迟。为了进一步优化延迟,EdgeRAG 选择性地缓存生成的嵌入,以减少冗余计算,同时将内存开销降至最低。

• 我们在 Jetson Orin 边缘平台上实现了 EdgeRAG,并使用来自 BEIR 基准的 数据集对我们的系统进行了评估。结果表明,EdgeRAG 显著降低了嵌入尺寸大于内存容量的大数据集的检索延迟,提高了 131%,但检索和生成质量略有下降。

Figure 1:RAG Pipelines

Figure 2:Retrieval process of Inverted File Index

Conclusion

In this work, we propose EdgeRAG, a novel RAG system designed to address the memory limitations of edge platforms. EdgeRAG optimizes the two-level IVF index by pruning unnecessary second-level embeddings, selectively storing or regenerating them during execution, and caching generated embeddings to minimize redundant computations. This approach enables efficient RAG applications on datasets that exceed available memory, while preserving low retrieval latency and without compromising generation quality. Our evaluation results show that EdgeRAG improves retrieval latency by 1.22× on average and by a substantial 3.69× for large datasets that cannot fit in the memory.

在这项工作中,我们提出了 EdgeRAG,这是一种新型的检索增强生成(RAG)系统,旨在解决边缘平台的内存限制问题。EdgeRAG 通过修剪不必要的二级嵌入、在执行期间有选择地存储或重新生成它们以及缓存生成的嵌入来优化两级 IVF 索引,从而最大限度地减少冗余计算。这种方法使得在超出可用内存的数据集上也能高效运行 RAG 应用程序,同时保持低检索延迟且不降低生成质量。我们的评估结果表明,EdgeRAG 平均将检索延迟提高了 1.22 倍,对于无法完全装入内存的大数据集,检索延迟更是大幅提高了 3.69 倍。

相关文章:

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读

LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读 导读:这篇论文针对在资源受限的边缘设备上部署检索增强生成 (RAG) 系统的挑战,提出了一种名为 EdgeRAG 的高效方法。EdgeRAG 通过巧妙地结合预计算、在线生成和缓存策…...

宇泰串口卡驱动在Ubuntu22.04编译、安装汇总

从官网下载驱动官网地址 上传到Ubuntu, 目录结构如下: 驱动源代码: 驱动代码是基于开源项目编译来的 编译路径不能有中文路径,否则可能有类似错误 源码是基于Linux2.3内核编译,我当前是6.8.0-51,数据结构有升级,需要调…...

python管理工具:conda部署+使用

python管理工具:conda部署使用 一、安装部署 1、 下载 - 官网下载: https://repo.anaconda.com/archive/index.html - wget方式: wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…...

(三)html2canvas将HTML 转为图片并实现下载

将 HTML 转为图片并实现下载,通常可以使用一个叫做 html2canvas 的 JavaScript 库。html2canvas 能够将 HTML 元素及其样式渲染成一个画布 (Canvas),然后将该画布转换为图片格式(如 PNG 或 JPEG),最终提供下载功能。 …...

安装Docker流程

1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2.配置Docker的yum库 首先要安装一个…...

flutter 使用google_mlkit_image_labeling做图片识别

在AI横行的如今,相信大家或多或少都做过跟AI接轨的需求了吧?今天我说的是关于图片识别的需求,flutter的专属图片识别插件google_mlkit_image_labeling。 google_mlkit_image_labeling它是Google旗下的Google Cloud Vision API中分支出来的一部…...

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常

宝塔的依赖问题导致的问题,最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语~ 建议:不要一直升级宝塔版本,升级前备份或者开服务商的实例镜像,方便恢复,不然,可就GG了&#xff5…...

python中的RPA->playwright自动化录制脚本实战案例笔记

playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器:cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令: playwright codegen…...

Python在DevOps中的应用:自动化CI/CD管道的实现

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,DevOps理念的引入极大地提升了开发与运维的协作效率,而持续集成&#xff08…...

Centos 离线安装杀毒软件

离线部署实现: 1、去官网下载对应的软件包,centos就下载 .rpm软件包。https://www.clamav.net/downloads2、将下载的软件包上传到服务器后使用rpm命令进行安装,软件包里面已经将相关依赖这些打包好了,直接安装就行。 rpm -ivh --…...

TiDB使用过程中需要注意的坑点:避免踩雷

TiDB使用过程中需要注意的坑点:避免踩雷 TiDB作为一个分布式数据库,虽然在许多场景下表现出色,但在使用过程中也有一些“坑”需要开发者特别注意。尤其是在生产环境中,踩雷可能会导致性能问题,甚至系统宕机。今天&…...

Mysql--实战篇--大数据量表的分页优化(自增长主键,子查询主键主查询全部,查询条件加索引,覆盖索引等)

当Mysql数据表存储大量数据时(百万级别数据),分页查询的性能问题是一个常见的挑战。特别是当使用LIMIT和OFFSET时,随着OFFSET的增加,查询性能会显著下降。原因在于MySQL需要扫描并跳过前面的行,这会导致I/O…...

Datawhale组队学习笔记task1——leetcode面试题

文章目录 写在前面刷题流程刷题技巧 Day1题目1、0003.无重复字符的最长子串解答:2.00004 寻找两个正序数组的中位数解答:3.0005.最长回文子串解答4.0008.字符串转换整数解答: Day2题目1.0151.反转字符串中的单词解答2.0043.字符串相乘解答3.0…...

【快速入门 LVGL】-- 1、STM32 工程移植 LVGL

目录 一、LVGL 简述 二、复制一个STM32工程 三、下载 LVGL 四、裁剪 源文件 五、工程添加 LVGL 文件 六、注册 显示 七、注册 触摸屏 八、LVGL 心跳、任务刷新 九、开跑 LVGL 十、控件的事件添加、响应处理 十 一、几个好玩小事情 十 二、显示中文 ~~ 约定 ~~ 在…...

Mac使用-快速开始总结(持续更新)

目录 Mac使用-快速开始总结常用快捷键 Mac使用-快速开始总结 第一次使用mac,发现很多细节上和windows不一样,以下是自己遇到的常用总结,帮助自己快速熟悉mac的使用~ 常用快捷键 复制、粘贴 快捷键? 复制:…...

Kubernetes (K8s) 入门指南

Kubernetes (K8s) 入门指南 什么是Kubernetes? Kubernetes,通常简称为 K8s(因为从 “K” 到 “s” 之间有八个字符),是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌设…...

归纳webpack

常用配置项 const HtmlWebpackPlugin require(html-webpack-plugin); // 通常用于生成HTML const MiniCssExtractPlugin require(mini-css-extract-plugin);// 用于分离CSS const cssMinimizerWebpackPlugin require("css-minimizer-webpack-plugin"); // 用于压…...

Web APP 阶段性综述

Web APP 阶段性综述 当前,Web APP 主要应用于电脑端,常被用于部署数据分析、机器学习及深度学习等高算力需求的任务。在医学与生物信息学领域,Web APP 扮演着重要角色。在生物信息学领域,诸多工具以 Web APP 的形式呈现&#xff…...

SpringBoot之OriginTrackedPropertiesLoader类源码学习

源码解析 /*** 作用是从给定的资源(如文件或输入流)中加载 .properties 文件,* 并将属性键值对转换为带有来源信息(origin)的 OriginTrackedValue 对象。*/ public class OriginTrackedPropertiesLoader {private fin…...

Flask学习入门笔记

Flask学习入门笔记 前言1. 安装Flask2. 创建一个简单的Flask应用3. 路由与视图函数3.1 基本路由3.2 动态路由3.3 HTTP方法 4. 请求与响应4.1 获取请求数据4.2 返回响应 5. 模板渲染5.1 基本模板渲染5.2 模板继承 6. 静态文件6.1 静态文件的目录结构6.2 在模板中引用静态文件6.2…...

List 接口的实现类

在 Java 中,List 是一个非常常用的接口,提供了有序、可重复的元素集合。List 接口有多个实现类,每个实现类都有其特定的特性和适用场景。以下是 Java 中主要实现了 List 接口的类及其详细介绍。 1. 常见的 List 实现类 1.1 ArrayList 简介&…...

SpringCloud-基于Docker和Docker-Compose的项目部署

一、初始化环境 1. 卸载旧版本 首先,卸载可能已存在的旧版本 Docker。如果您不确定是否安装过,可以直接执行以下命令: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logro…...

【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着机器学习在各行业的广泛应用,模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习&am…...

Kafka 超级简述

Kafka 就是一个 分布式的消息系统,它帮助不同的系统和应用之间传递信息。可以把它想象成一个超级高效的 “邮局”: 生产者(Producer) 就是把信息(消息)送到这个 “邮局” 的人。消费者(Consume…...

tomcat项目运行后报500

HTTP状态 500 - 内部服务器错误 类型 异常报告消息 实例化Servlet类[com.mdy.servlet_02.LifeDemoServlet]异常描述 服务器遇到一个意外的情况,阻止它完成请求。例外情况jakarta.servlet.ServletException: 实例化Servlet类[com.mdy.servlet_02.LifeDemoServlet]异常…...

Chapter1:初见C#

参考书籍:《C#边做边学》; 1.初见C# 1.1 C#简介 C # {\rm C\#} C#编写了许多完成常用功能的程序放在系统中,把系统中包含的内容按功能分成多个部分,每部分放在一个命名空间中,导入命名空间语法格式如下: /…...

SQL-leetcode—620. 有趣的电影

620. 有趣的电影 表:cinema ------------------------ | Column Name | Type | ------------------------ | id | int | | movie | varchar | | description | varchar | | rating | float | ------------------------ id 是该表的主键(具有唯一值的列)。 每行包含…...

《鸿蒙Next平台:决策树面对噪声数据的鲁棒性逆袭》

在机器学习领域,决策树是一种强大的模型,但训练数据中的噪声往往会影响其性能和鲁棒性。在鸿蒙Next平台上,我们可以采用多种策略来增强决策树模型在面对噪声数据时的鲁棒性。 数据预处理层面 数据清洗:利用鸿蒙Next平台的数据处理…...

minio https配置

如果使用了官网的教程 使用minio-user作为启动用户 准备好:文件名要定死,因为minio只认识key和crt文件 将xxxxx.key重命名为private.key 将xxxxx.pem重命名为public.crt 将这两个文件放到/home/minio-user/.minio/certs/ 目录下 chown -r minio…...

Windows重装后NI板卡LabVIEW恢复正常

在重新安装Windows系统后,NI(National Instruments)板卡能够恢复正常工作,通常是由于操作系统的重新配置解决了之前存在的硬件驱动、兼容性或配置问题。操作系统重装后,系统重新加载驱动程序、清理了潜在的冲突或损坏的…...

Spring Initializr创建springboot项目 “java: 错误: 无效的源发行版:19”

我用的1.8的jdk,排查发现这是jdk和springboot版本冲突导致的。 1、File->Project Structure->Module->source和dependancies改成相应的版本 2、File->Setting->Build,Execution,Deployment->Compiler->Java Compiler->target bytecode ver…...

Vue computed属性原理及其惰性求值特点

1,computed属性 在 Vue.js 中, computed 属性是 Vue 响应式系统的一个核心特性,它允许开发者声明式地描述一个依赖其他响应式属性的计算值。 computed 属性是基于它们的依赖进行缓存的,只有当依赖发生变化时,它们才会…...

关于在 Kotlin DSL 中,ndk 的配置方式

在 Kotlin DSL 中,ndk 的配置方式有所不同,取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分,需要通过正确的上下文调用。 错误代码: ndk {abiFilters("ar…...

机器学习(一)

一, Supervised Machine Learning (监督机器学习) 1,定义:学习X到Y或输入到输出的映射的算法,学习算法从正确答案中学习。即教机器 如何做事情(数据集学习算法模型),根据已有的数据集,知道输入和输出结果 之间的关系,并根据这…...

得物App再迎开放日,全流程体验正品查验鉴别

近日,得物App超级品质保障中心再度迎来了开放日活动。近60位得物App的用户与粉丝齐聚超级品质保障中心,全流程体验正品查验鉴别。开放日当天,参与者有机会近距离观察得物App的商品质检区、鉴别区、收发流转区、实验室和正品库等关键功能区&am…...

《leetcode-runner》【图解】【源码】如何手搓一个debug调试器——表达式计算

前文: 《leetcode-runner》如何手搓一个debug调试器——引言 《leetcode-runner》如何手搓一个debug调试器——架构 《leetcode-runner》如何手搓一个debug调试器——指令系统 《leetcode-runner》【图解】如何手搓一个debug调试器——调试程序【JDI开发】【万字详解…...

Flink概述

一、Flink是什么 二、Flink特点 三、Flink vs SparkStreaming 表 Flink 和 Streaming对比 Flink Streaming 计算模型 流计算 微批处理 时间语义 事件时间、处理时间 处理时间 窗口 多、灵活 少、不灵活(窗口必须是批次的整数倍) 状态 有 …...

【Linux】信号

目录 一、信号的概念二、信号的产生2.1 通过键盘进行信号的产生2.2 通过系统调用进行信号的产生2.2.1 kill函数2.2.2 raise函数2.2.3 abort函数 2.3 通过异常的方式进行信号的产生2.4 通过软件条件的方式进行信号的产生2.4.1 关闭管道读端2.4.2 alarm函数 2.5 Core Dump&#x…...

【漏洞分析】DDOS攻防分析

0x00 UDP攻击实例 2013年12月30日,网游界发生了一起“追杀”事件。事件的主角是PhantmL0rd(这名字一看就是个玩家)和黑客组织DERP Trolling。 PhantomL0rd,人称“鬼王”,本名James Varga,某专业游戏小组的…...

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…...

【VUE】计算属性+动态样式方法封装

【VUE】父子组件联动实现动态样式控制 【VUE】页面跳转实现动态样式控制 在utils下创建文件夹styleController 编写通用的方法 /*** 样式控制* 本文件主要提供一些动态控制样式的方法*//*** 控制表格表头中的 某些列 是否显示星号** param showStarActions boolean 当值为True时…...

Mac玩Steam游戏秘籍!

Mac玩Steam游戏秘籍&#xff01; 大家好&#xff01;最近有不少朋友在用MacBook玩Steam游戏时遇到不支持mac的问题。别担心&#xff0c;我来教你如何用第三方工具Crossover来畅玩这些不支持的游戏&#xff0c;简单又实用&#xff01; 第一步&#xff1a;下载Crossover 首先&…...

【后端面试总结】tls中.crt和.key的关系

tls中.crt和.key的关系 引言 在现代网络通信中&#xff0c;特别是基于SSL/TLS协议的加密通信中&#xff0c;.crt和.key文件扮演着至关重要的角色。这两个文件分别代表了数字证书和私钥&#xff0c;是确保通信双方身份认证和数据传输安全性的基石。本文旨在深入探讨TLS中.crt和…...

【Axure】配色库

配色库是一个专为设计师和创意工作者打造的在线资源平台&#xff0c;旨在提供丰富的色彩解决方案&#xff0c;帮助用户轻松找到或创造美观和谐的色彩搭配。其中&#xff0c;一个典型的配色库包含了以下几个核心元素&#xff1a; 渐变色&#xff1a;提供多样化的渐变色方案&…...

PL/SQL语言的语法糖

PL/SQL语言的语法糖 引言 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle公司为其数据库管理系统&#xff08;DBMS&#xff09;设计的一种过程化语言。作为一种扩展SQL的语言&#xff0c;PL/SQL不仅支持数据的查询和操作&#xff0c;…...

Pytorch|YOLO

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…...

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…...

ZooKeeper 常见问题与核心机制解析

Zookeeper集群本身不直接支持动态添加机器。在Zookeeper中&#xff0c;集群的配置是在启动时静态定义的&#xff0c;并且集群中的每个成员都需要知道其他所有成员。当你想要增加一个新的Zookeeper服务器到现有的集群中时&#xff0c;你需要更新所有现有服务器的配置文件&#x…...

期权懂|场内期权合约行权价格是如何设定制度的?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 场内期权合约行权价格是如何设定制度的&#xff1f; 场内期权合约的行权价格是期权合约中的一个关键要素&#xff0c;它决定了期权买方在期权到期日或之前买入&#xff08;对于…...

处理 SQL Server 中的表锁问题

在 SQL Server 中&#xff0c;表锁是一个常见的问题&#xff0c;尤其是在并发访问和数据更新频繁的环境中。表锁会导致查询性能下降&#xff0c;甚至导致死锁和系统停滞。本文将详细介绍如何识别、分析和解决 SQL Server 中的表锁问题。 什么是表锁&#xff1f; 表锁是 SQL S…...