论文阅读_Search-R1_大模型+搜索引擎
英文名称:Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning
中文名称:Search-R1:训练大型语言模型进行推理并利用搜索引擎的强化学习
链接: http://arxiv.org/pdf/2503.09516v2
代码: https://github.com/PeterGriffinJin/Search-R1 (1.4K Star)
作者: Bowen Jin, Hansi Zeng, Zhenrui Yue, Dong Wang, Hamed Zamani, Jiawei Han
机构: 伊利诺伊大学厄巴纳-香槟分校,马萨诸塞大学阿默斯特分校
1 读后感
由于大语言模型(LLM)的知识更新不够迅速,LLM 结合搜索的应用场景变得非常普遍。未来的发展趋势可能会是“小而美”的 LLM 与强大的 Agent、工具、搜索、RAG 等结合,而不是追求“大而全”的 LLM 来解决所有问题。
这篇文章主要探讨大模型与搜索的结合策略:如何判断何时需要检索、如何调用检索功能,以及如何整合检索结果。
具体研究方法对比了 PPO 和 GRPO,展示了强化学习在特定应用中的实际应用和探索过程。对我而言,关键启发性点包括:在每个步骤中判断是否需要检索,不限定具体过程而专注于优化整体结果,以及发现模型自我进化过程中,自主验证搜索内容是否存在矛盾。实验细节和结果都具有启发性。
(下文中斜体为个人观点,正常字体以翻译为主)
2 摘要
- 目标:提高大型语言模型(LLMs)在推理和文本生成中的外部知识获取和及时信息处理能力。
- 方法:引入 Search-R1 模型,通过强化学习自行生成搜索查询,优化多轮搜索交互,利用检索的标记屏蔽进行稳定的强化学习训练。
- 结论:在七个问答数据集上的实验表明,Search-R1 在性能上提高了 26%(Qwen2.5-7B)、21%(Qwen2.5-3B)和 10%(LLaMA3.2-3B),相较于强基线显著提升。由于大模型自带丰富的知识,因此选择小模型进行实验能更加明显地体现效果
3 Search-R1 方法
我先用简单但不太严谨的语言解释一下主图:上面是 PPO 方法(传统强化学习),下面是 GRPO 方法(DeepSeek 方法)。
上图中绿色的块是已知模型,黄色是训练过程中被调参的模型,蓝色为搜索引擎,白色是流动的数据。
先看 PPO:每个步骤的输入是 q,通过策略模型 Policy LLM 和搜索引擎 Search Engine,得到输出 o,把 o 代入价值评价模型 Value LLM(通过训练过程得到),奖励函数 Reward Model(已有)和参考策略 Reference LLM(现有的,效果还可以但不是最优的策略,可以理解为基于这个策略优化);通过它们计划出奖励 r 和价值 v,再代入 GAE 广义优势估计;然后一方面用其结果优化价值模型 ValueLLM,一方面得到下一步的行为 A;再进行下一步的策略选择和搜索,以此类推。
GRPO 与 PPO 不同的是:每一步计算出一组输出 o1…oG;这里省去了价值函数,而只有事先已知的奖励函数 Reward Model 和参考模型 Reference LLM。参考模型用于计算 KL 散度,作为惩罚项,以免模型变化太大;Reward Model 则用于评价组中每个输出的好坏,根据每组内输出的相对奖励计算优势(效果好的权重大),以此决定下一步的行为 A,再开始下一步的策略选择和搜索,以此类推。
3.1 使用搜索引擎进行强化学习
基本公式如下:
其中 πθ 是策略 LLM,πref 是参考 LLM,rφ 是奖励函数,DKL 是 KL 散度。公式中πθ(· | x; R) 显式地结合了检索交错推理(推理 + 检索),(注意:这里的大写 R 指的是搜索引擎,小写 r 是奖励函数)
3.1.1 计算 Loss 时遮蔽搜索结果
在基础的 PPO 和 GRPO 中,令牌级别的损失是在整个推出序列上计算的。在 SEARCH-R1 中,推出序列包括 LLM-generated token 和从外部通道中检索到的 token。虽然优化 LLM-generated token 增强了模型与搜索引擎交互和执行推理的能力,但对检索到的 token 应用相同的优化可能会导致意外的学习动力学(dynamics)问题。为了解决这个问题,我们为检索到的 token 引入了损失掩码,确保仅在生成的 token 上 LLM 计算策略梯度目标,从优化过程中排除检索到的内容。这种方法稳定了训练,同时保留了搜索增强生成的灵活性。
3.1.2 PPO + 搜索引擎
展示近端策略优化(PPO)是一种流行的 actor-critic 强化学习算法,它通常是在 RL 的场景下 finetune 大模型。在我们的推理加搜索引擎调用场景中,它通过最大化以下目标来 LLMs 优化:
这里的 x 是输入样本,y 是模型输出,它结合了从搜索引擎 R 中检索; I(yt) 是上述的损失掩码操作,如果 yt 是 LLM 生成的令牌,则 I(yt)= 1,如果 yt 是检索到的令牌,则 I(yt)= 0。 ε 是 PPO 中引入的与剪辑相关的超参数(clip 用于截断,如果低于 1-ε,则使用 1-ε;如果超出 1+ε,则使用 1+ε,以避免过度变化),用于稳定训练。优势估计 At 是使用广义优势估计(GAE)计算的,基于未来奖励 {r≥t} 和已学习价值函数 Vφ。
3.1.3 GRPO + 搜索引擎
为了提高策略优化的稳定性并避免使用额外的价值函数近似,引入了群体相对策略优化(GRPO)。GRPO 与 PPO 的不同之处在于,它利用多个采样输出的平均奖励作为基线,而不是依赖学习到的值函数。具体来说,对于每个输入问题 x,GRPO 从参考策略 πref 中抽取一组响应 {y1,y2,…,yG}。然后通过最大化以下目标函数来优化策略模型:
其中 ε 和 β 是超参数,ˆAi,t 表示优势,该优势是根据每组内输出的相对奖励计算的。这种方法避免了在 ˆAi,t 的计算中引入额外的复杂性,使用 I(yi,t)是令牌损失掩码作(计算方法同上)。此外,GRPO 通过将训练策略和参考策略之间的 KL 背离直接添加到损失函数中来进行正则化。在计算 KL 背离损失 DKL 时,也应用检索到的令牌掩码。
3.2 使用交错多轮搜索引擎调用生成文本
Rearch-R1 采用了一种迭代框架,其中 LLM 在文本生成和外部搜索引擎查询之间交替进行。具体来说,系统指令会引导 LLM 在需要外部检索时,将搜索查询封装在两个指定的搜索调用标记 <search>
和 </search>
之间。在生成的序列中检测到这些标记后,系统会提取搜索查询,向搜索引擎查询,并获取相关结果。检索到的信息会被放在特殊的检索标记 <information>
和 </information>
中,并附加到当前的展开序列里,作为下一步生成的附加上下文。这个过程会持续进行,直到以下任一条件满足:(1)搜索引擎调用的预算用尽,或(2)模型生成了最终响应,并将其封装在指定的答案标记 <answer>
和 </answer>
之间。完整的流程在算法 1 中进行了说明。
简单解释一下伪代码:首先初始化一个空的探索序列 y 和已用资源 b 为 0。在资源限制 B 内循环,直到找到答案(第 16 行判断是否找到答案),最终返回探索序列 y。核心在第 4-15 行:通过当前策略计算出当前步的 yt(可能包含 answer),将 yt 加入序列 y;若 yt 中指定需要搜索,则提取搜索内容 q,使用搜索引擎 R 搜索,并将搜索结果以 information 标签加入 y,同时增加资源消耗 b+1。
3.3 训练模板
输入给模型的提示如下:
3.4 奖励建模
采用基于规则的奖励系统,该系统仅由最终结果奖励组成,这些奖励评估模型响应的正确性。例如,在事实推理任务中,使用基于规则的标准(如精确字符串匹配)来评估正确性。
这里没有纳入格式奖励,因为学习的模型已经表现出很强的结构一致性。此外,故意避免训练神经奖励模型用于结果或过程评估。其动机是神经奖励模型在大规模强化学习中对奖励黑客攻击的敏感性,以及重新训练这些模型带来的额外计算成本和复杂性。
4 实验
SEARCH-R1 的性能始终优于强大的基线方法。使用 Qwen2.5-7B、Qwen2.5-3B 和 LLaMA3.23B 分别实现了 26%、21% 和 10% 的平均相对改进。
对比 PPO 和 GRPO 可见:GRPO 收敛快,PPO 相对更稳定。
分析原因:GRPO 收敛快是因为并行进行多种探索;PPO 一直与之前的模型做比较,所以不会跳变很快,更稳定;最终结果其实差不多。
相关文章:
论文阅读_Search-R1_大模型+搜索引擎
英文名称:Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning 中文名称:Search-R1:训练大型语言模型进行推理并利用搜索引擎的强化学习 链接: http://arxiv.org/pdf/2503.09516v2 代码: https://g…...
零成本AI抠图终极指南:蓝耘元生代AIDC OS+ComfyUI实现商业级效果
引言:AI抠图革命已经到来 在数字内容创作爆炸式增长的今天,高质量的图像处理已成为刚需。无论是电商平台的商品展示、自媒体博主的封面设计,还是摄影爱好者的后期处理,抠图都是最基础也是最繁琐的工作之一。 传统抠图方式面临三…...
深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
引言 在现代Web开发中,CSS3已经成为构建响应式、美观且高性能网站的核心技术。它不仅提供了更强大的布局系统(Flexbox和Grid),还引入了令人惊艳的动画效果和精准的媒体查询能力。本文将深入探讨这些关键技术,帮助您提…...
VLM-E2E:通过多模态驾驶员注意融合增强端到端自动驾驶——论文阅读
《VLM-E2E Enhancing End-to-End Autonomous Driving with Multimodal Driver Attention Fusion》2025年2月发表,来自香港科大广州分校、理想汽车和厦门大学的论文。 一、核心问题与动机 现有端到端(E2E)自动驾驶系统直接从传感器输入映射到…...
蓝牙BLE
1、简介 蓝牙BR/EDR和BLE是蓝牙技术的两个重要分支,它们各自具有独特的特点和应用场景。 1.1、蓝牙BR/EDR 蓝牙BR(Basic Rate) 定义:蓝牙技术的首个开发版本,采用高斯频移键控(GFSK)调制技术…...
在VS2022中使用Lua与c交互(二)
一、核心交互机制:Lua 虚拟栈 Lua 与 C 的交互通过一个 虚拟栈(Stack) 完成,所有数据传递、函数调用均通过此栈实现。栈的每个元素可以是任意 Lua 类型(如数字、字符串、表、函数等)。 栈的结构与…...
论文阅读_Citrus_在医学语言模型中利用专家认知路径以支持高级医疗决策
英文名称:Citrus: Leveraging Expert Cognitive Pathways in a Medical Language Model for Advanced Medical Decision Support 中文名称:Citrus:在医学语言模型中利用专家认知路径以支持高级医疗决策 链接: http://arxiv.org/pdf/2502.18…...
浅谈PCB传输线(一)
前言:浅谈传输线的类型,以及传输线的一些行为特性。 1.传输线的种类 2.互连线被视为传输线的场景 3.传输线的行为特性*** 1.传输线的种类 PCB 中的信号传输线通常有两种基本类型: 微带线和带状线。此外,还有第三种类型–共面线(没有参考平面…...
Spring-全面详解(学习总结)
一:概述 1.1 为什么学 解决了两个主要问题 1. 2 学什么 1.3 怎么学 二:系统架构 作用:web开发、微服务开发、分布式系统开发 容器:用于管理对象 AOP:面向切面编程(不惊动原始程序下对其进行加强) 事…...
突破JVM边界:类加载三重门与栈帧的生存法则
类加载子系统 文件验证阶段 类加载子系统在加载Class文件时,首先会验证文件格式规范,检查文件开头的魔数标识,确保这是一个合法的JVM字节码文件。 职责边界 该子系统仅负责将Class文件加载到内存中,并不关心后续能否成功执行—…...
VSCode 查看文件的本地修改历史
1. 使用时间线视图(Timeline) 新版 VSCode 内置了一个叫 Timeline(时间线) 的功能,可以查看: 本地文件修改记录(包括保存历史)Git 提交历史(如果仓库是 Git 管理的&…...
在QGraphicsView中精确地以鼠标为锚缩放图片
在pyqt中以鼠标所在位置为锚点缩放图片-CSDN博客中的第一个示例中,通过简单设置: self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) 使得QGraphicsView具有了以鼠标为锚进行缩放的功能。但是,其内部应当是利用了滚动条的移动来…...
【Python数据驱动决策】数据分析与可视化全流程实战指南
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比二、实战演示环境配置要求核心代码实现案例1:销售数据清洗案例2:月度销售趋势分析案例3:产品关联分析(热力图)运行结果验证三、性能对…...
报错解决:ModuleNotFoundError: No module named ‘triton.ops‘
报错原因:2024.5.21之后, triton.ops 被移动到另一个工程 triton-lang/kernels中。 参考链接:官方解释 解决方案:换用2024.5.21之前发布的版本。 pip3 install triton2.3.0...
相机-IMU联合标定:相机-IMU外参标定
文章目录 📚简介🚀标定工具kalibr🚀标定数据录制🚀相机-IMU外参标定📚简介 在 VINS(视觉惯性导航系统) 中,相机-IMU外参标定 是确保多传感器数据时空统一的核心环节,其作用可概括为以下关键点: 坐标系对齐(空间同步),外参误差会导致视觉特征点投影与IMU预积…...
Qt C++数据库实验
一、实验目的和要求 1、掌握Qt中数据库SQL类数据库的查询、插入和更新操作。 2、熟悉Qt界面设计中常用的控件。 3、了解数据库相关类。 二、实验内容 1、设计一个数据库操作软件,完成数据库的相关操作。 2、建立按钮的信号与槽函数,实现点击按钮进…...
相机-IMU联合标定:IMU标定
文章目录 📚 简介🚀标定工具安装📌 IMU标定工具 code_utils📌 IMU标定工具 imu_utils:🚀标定数据录制🚀IMU标定📚 简介 在 VINS(Visual-Inertial Navigation System,视觉惯性导航系统) 中,IMU标定 是确保系统高精度运行的关键环节。IMU(惯性测量单元)本身…...
榕壹云信用租赁系统:基于ThinkPHP+MySQL+UniApp的全链路免押租赁解决方案
信用租赁时代的全流程数字化革新 随着共享经济与信用体系的深度融合,传统租赁行业正面临效率与信任的双重挑战。榕壹云信用租赁系统依托ThinkPHP高性能框架、MySQL数据库与UniApp跨平台开发技术,构建了一套覆盖设备租赁全生命周期的数字化解决方案。通过整合多因子身份认证、…...
C语言中的指针详解
指针是C语言中非常强大且复杂的特性之一,它为我们提供了更灵活的内存管理方式,使得程序能够直接操作内存,提升效率和性能。尽管指针非常强大,但如果不理解它的概念和使用方式,很容易出现错误。因此,理解指针…...
NIPS2021 | 视觉 Transformer 的有趣特性
Intriguing Properties of Vision Transformers 摘要-Abstract引言-Introduction相关工作-Related Work视觉Transformer的有趣特性-Intriguing Properties of Vision Transformers视觉Transformer对遮挡具有鲁棒性吗?-Are Vision Transformers Robust to Occlusions…...
贪心算法-2208.将数组和减半的最小操作数-力扣(LeetCode)
一、题目解析 这里要注意恰好这个字眼,说明对任意数减小一半是不需要向上取整的,所以我们需要定义double类型的数据。 二、算法解析 我们需要将数组和减小为一半的次数最少,所以根据贪心算法,我们需要取数组中最大的数进行减半操…...
如何搭建spark yarn 模式的集群集群。
下载 App 如何搭建spark yarn 模式的集群集群。 搭建Spark on YARN集群的详细步骤 Spark on YARN模式允许Spark作业在Hadoop YARN资源管理器上运行,利用YARN进行资源调度。以下是搭建步骤: 一、前提条件 已安装并配置好的Hadoop集群(包括HDF…...
嵌入式开发面试典型编程题解析:排序算法、指针操作、字符处理、递归原理等基础原理的深度解析。
在嵌入式开发面试中,编程题是常见的考察形式,旨在检验求职者对基础编程知识的掌握和应用能力。以下是几道典型的嵌入式面试编程题及详细解析,帮助新手逐步理解和掌握相关知识点。 一、用交换法对学生成绩降序排序 题目描述 在嵌入式系统开…...
DeepSeek+即梦:AI视频创作从0到1全突破
目录 一、开启 AI 视频创作大门:前期准备1.1 注册与登录1.2 熟悉工具界面1.3 硬件与网络要求 二、用 DeepSeek 构思视频脚本2.1 明确创作主题与目标2.2 编写优质提示词2.3 生成并优化脚本 三、即梦 AI 实现画面生成3.1 文生图基础操作3.2 调整参数提升画质3.3 保持人…...
npm init、换源问题踩坑
文章目录 一、 问题复现二、问题解决 一、 问题复现 成功安装nodejs 以及 npm 版本如下: > node -v > v20.18.0 > npm -v > 10.8.2使用 npm init 命令时延时过长,考虑换源,使用指令 npm config set registry https://registr…...
TRex 控制台命令解析
TRex 是一种高性能的网络测试工具,用于生成和分析网络流量。以下是对这些命令的简要解释: 一、help Console Commands(控制台命令) capture:管理 PCAP 捕获。debug:用于开发的内部调试器。events&#x…...
【Shell 脚本入门】轻松上手的实战指南
🌈 个人主页:Zfox_ 🔥 系列专栏:Shell脚本编程 目录 一:🔥 什么是 Shell 🦋 常见的 Shell 类型 二:🔥 什么是 Shell 脚本 🦋 Shell 脚本规则🦋 第…...
数据结构*栈
栈 什么是栈 这里的栈与我们之前常说的栈是不同的。之前我们说的栈是内存栈,它是JVM内存的一部分,用于存储局部变量、方法调用信息等。每个线程都有自己独立的栈空间,当线程启动时,栈就会被创建;线程结束,…...
零基础制作Freertos智能小车(教程非常简易)持续更新中....
从现开始,将陆续推出各类简单的DIY电子设计,由简入深,将自己的制作过程全部分享出来,巩固自己知识的同时希望借此机会认识更多喜欢电子设计的小伙伴。 本次小车的主控芯片采用stm32f103c8t6,主要是便宜好用&am…...
Leetcode - 双周赛155
目录 一,3527. 找到最常见的回答二,3528. 单位转换 I三,3529. 统计水平子串和垂直子串重叠格子的数目四,3530. 有向无环图中合法拓扑排序的最大利润 一,3527. 找到最常见的回答 题目列表 本题是一道模拟题࿰…...
详解RabbitMQ工作模式之工作队列模式
目录 工作队列模式 概念 特点 应用场景 工作原理 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 编写消费者2代码 先运行生产者,后运行消费者 先运行消费者,后运行生产者 工作队列模式 概念 在工作队列模式中&#x…...
QGIS+mcp的安装和使用
QGISmcp的安装和使用 安装qgis_mcp 下载qgis_mcp: git clone https://github.com/jjsantos01/qgis_mcp.git安装uv uv是一个由Rust语言编写的python包管理工具,旨在提供比传统工具(如 pip)更高效的依赖管理和虚拟环境操作。 p…...
Java基础361问第16问——枚举为什么导致空指针?
我们看一段代码 public enum Color {RED, BLUE, YELLOW;public static Color parse(String color) {return null;} }public static void main() {Color color Color.parse("");// 极具迷惑性,大家日常开发肯定这么写过switch (color) {case RED:break;c…...
在 C# .NET 中驾驭 JSON:使用 Newtonsoft.Json 进行解析与 POST 请求实战
JSON (JavaScript Object Notation) 已经成为现代 Web 应用和服务之间数据交换的通用语言。无论你是开发后端 API、与第三方服务集成,还是处理配置文件,都绕不开 JSON 的解析与生成。在 C# .NET 世界里,处理 JSON 有多种选择,其中…...
CentOS7——Docker部署java服务
1、安装Docker 首先要确保系统已安装 Docker,若未安装,可以参考我的另一篇文章现在CentOS7上安装Docker,文章地址如下: CentOS7系统安装Docker教程-CSDN博客 Docker当中要安装必备的软件,比如Java运行必要的JDK&#…...
Python-Part2-集合、字典与推导式
Python-Part2-集合、字典与推导式 1. set集合 ⽆序,去掉重复数据。 set1 {1,2,3,4,5,5,4,3,2,1}print(type(set1))print(set1)set2.add(66666)set2.remove(55)#不能使用下标访问set,所以修改操作一般为remove操作 add操作2.dict 字典 字典ÿ…...
《AI大模型应知应会100篇》第39篇:多模态大模型应用:文本、图像和音频的协同处理
第39篇:多模态大模型应用:文本、图像和音频的协同处理 摘要 随着人工智能技术的发展,多模态大模型(Multimodal Large Models)已经成为AI领域的热点之一。这些模型能够同时处理文本、图像、音频等多种模态数据…...
kvm学习小结
安装相关包 安装虚拟化相关包 apt install qemu-kvm qemu-system libvirt-clients libvirt-daemon-system vlan bridge-utils 安装界面相关包 apt install xinit gdmd 配置机器允许root登录 检查cpu是否支持虚拟化 egrep -o vmx|svm /proc/cpuinfo 执行命令systemctl s…...
k8s基本概念-YAML
YAML介绍 YAML是“YAML Aint a Markup Language” (YAML不是一种置标语言)的递归缩进写,早先YAML的意思其实是:“Yet Another Markup Language”(另一种置标语言) YAML是一个类似XML、JSON的标记性语言。YAML强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义…...
wps批注线条怎么取消去掉wps批注后有竖线
wps批注线条怎么取消去掉wps批注后有竖线 问题 图片 解决方案 图片 word批注线条取消的方法: 1.打开Word文档,点击需要删除的批注。 2.然后点击工具栏“审阅”选项。 3.接着点击“接受“ 4.接受对文档所做的所有修订(H)...
深度解析算法之分治(归并)
48.排序数组 题目链接 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。 示例 1: 输入: nums [5,2,3,1] 输出&am…...
僵尸进程是什么?
僵尸进程(Zombie Process)是指在 Unix/Linux 系统中,一个子进程已经终止,但其父进程尚未对它进行善后处理(即没有读取其退出状态),导致子进程的进程表项仍然保留在系统中。由于这个进程已经结束…...
城市群出行需求的时空分形
城市群出行需求的时空分形 原文:He, Zhengbing. “Spatial-temporal fractal of urban agglomeration travel demand.” Physica A: Statistical Mechanics and its Applications 549 (2020): 124503. 1. Introduction(引言) 城市区域的重…...
LangChain入门(二)安装开发环境
1.安装conda Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 Anaconda是一个开源的Python发行版本,其包含了conda、python等软件包,numpy、pandas、scipy等科学…...
如何开展有组织的AI素养教育?
一、AI素养的定义与核心内涵 AI素养是智能时代个体适应与创新能力的综合体现,其内涵随着技术发展动态扩展,包含以下核心维度: 知识体系:理解AI基本原理(如算法、数据、算力)、技术边界及发展趋势ÿ…...
InnoDB对LRU算法的优化
标准 LRU 算法的核心思想是:当缓存空间不足时,淘汰掉最近最少使用的数据块(Page)。它通常用一个链表来实现,链表头部是最近访问的 Page,链表尾部是最久未访问的 Page。 然而,在数据库系统中直接…...
云原生--核心组件-容器篇-7-Docker私有镜像仓库--Harbor
1、Harbor的定义与核心作用 定义: Harbor是由VMware开源的企业级容器镜像仓库系统,后捐赠给 CNCF (Cloud Native Computing Foundation)。它基于Docker Registry扩展了企业级功能,用于存储、分发和管理容器镜像(如Docker、OCI标准…...
TypeScript 实用类型深度解析:Partial、Pick、Record 的妙用
需求背景:在后台系统的用户管理模块中,我们常遇到这样的场景:修改用户资料时只需要传部分字段,展示用户列表时要隐藏敏感信息,快速查找用户需要ID索引等等,这些业务需求都可以通过 TypeScript 的实用类型优…...
【Pandas】pandas DataFrame rmod
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
如何搭建spark yarn 模式的集群集群
以下是搭建Spark YARN模式集群的一般步骤: 准备工作 - 确保集群中各节点安装了Java环境,并配置好 JAVA_HOME 环境变量。 - 各节点间能通过SSH免密登录。 - 安装并配置好Hadoop集群,YARN作为Hadoop的资源管理器,Spark YARN模式需要…...