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

在 LLM 架构中应用多专家模型

本文转载自:在 LLM 架构中应用多专家模型 2024年 3月 14日 By Kyle Kranen and Vinh Nguyen
https://developer.nvidia.cn/zh-cn/blog/applying-mixture-of-experts-in-llm-architectures/


文章目录

    • 一、概述
    • 二、LLM 架构领域的专家齐聚一堂
      • 1、模型容量
      • 2、MoE 在降低成本的同时训练更大的模型
      • 3、 MoE 可降低延迟
    • 三、MoE 架构的工作原理是什么?
    • 四、试验 Mixtral 模型
    • 五、实验结果
      • 1、负载均衡
      • 2、领域专家任务分配
      • 3、专家推荐的最佳令牌
      • 4、按令牌划分的首选专家
    • 六、总结


一、概述


img

多专家模型 (MoE) 大型语言模型 (LLM) 架构最近出现了,无论是在 GPT-4 等专有 LLM 中,还是在开源版本的社区模型中,如 Mistral Mixtral 8x7B。
Mixtral 模型的强劲相对性能引起了极大的兴趣,并引发了许多关于 MoE 及其在 LLM 架构中使用的问题。

那么,什么是 MoE,为什么它很重要?

多专家模型是神经网络的架构模式,它将层或运算 (例如线性层、MLP 或注意力投影) 的计算拆分为多个“专家”子网络。
这些子网络各自独立执行自己的计算,并组合其结果以创建 MoE 层的最终输出。
MoE 架构可以是密集的,这意味着每个专家都用于每个输入,也可以是稀疏的,这意味着每个输入都使用一个专家子集。

本文主要探讨MoE在LLM架构中的应用。

如需了解MoE在其他领域的应用,请参阅使用稀疏的专家混合模型扩展视觉、适用于多语言ASR流式传输的专家级混合转换器以及FEDformer:用于长期序列预测的频率增强型分解转换器。


二、LLM 架构领域的专家齐聚一堂

本节提供一些背景信息,并重点介绍在 LLM 架构中使用 MoE 的优势。


1、模型容量

模型容量可以定义为模型能够理解或表达的复杂程度。
通常情况下,(经过充分训练的) 具有更多参数的模型过去证明具有更大的容量。

如何将 MoE 分解为容量?
参数较多的模型通常具有更大的容量,而 MoE 模型可以通过将模型的各个层替换为 MoE 层 (其中专家子网络的大小与原始层相同),从而有效地增加相对于基础模型的容量。

研究人员已经对MoE模型的准确性进行了调查,该模型使用与全密集模型相似数量的标记进行训练(MoE大小:E+P参数与全密集大小相比:EP参数)。
尽管这仍然是一个活跃的研究领域,但全密集模型的表现普遍优于MoE模型。
有关更多详细信息,请参阅 适用于路由语言模型的统一扩展定律。

这就提出了一个问题,为什么不直接使用密集模型?
这里的答案在于稀疏 MoE,具体来说,稀疏 MoE 在每个使用的参数上都更高效。

请考虑 Mixtral 8x7B 是一个使用 8 位专家 MoE 的模型,其中每个令牌仅使用 2 位专家。
在这种情况下,在模型中单个令牌的任何给定前向传递中,批量中任何给定令牌使用的参数数量都要低得多 (共使用 460 亿个参数,其中使用 120 亿个参数)。
与使用所有 8 位专家或类似大小的全密集模型相比,这需要的计算量更少。
给定在训练中将令牌分批在一起,则使用大多数 (如果不是所有) 专家。
这意味着在此模式中,与相同大小的密集模型相比,稀疏 MoE 使用的计算量较少,且内存容量相同。

在一个 GPU 小时数备受追逐、时间和成本高昂的世界里,大规模训练全密集模型显得尤为昂贵。
据报道,Meta 训练的 Lama 2 模型集(全密集)耗费了 330 万 NVIDIA A100 预训练的 GPU 小时数。
具体来说,在 1024 个 GPU 上以全容量运行 330 万个 GPU 小时,不包括任何停机时间,大约需要 134 天。
这还不包括任何实验、超参数扫描或训练中断。


2、MoE 在降低成本的同时训练更大的模型

MoE 模型通过提高每个权重的触发器效率来降低成本,这意味着在具有固定时间或计算成本限制的机制下,可以处理更多令牌,并可以进一步训练模型。
鉴于具有更多参数的模型需要更多样本才能完全收,这基本上意味着我们可以在固定预算下训练比密集模型更好的 MoE 模型。


3、 MoE 可降低延迟

在大量提示和批量(其中计算是瓶颈)的情况下,MoE 架构可用于降低第一个令牌的服务延迟。
随着用例(例如 检索增强生成 (RAG) 和自主智能体可能需要多次调用模型,从而增加单次调用延迟。


三、MoE 架构的工作原理是什么?

MoE 模型有两个关键组件。
首先,构成混合模型的“专家”子网络,用于密集和稀疏 MoE.其次,稀疏模型使用路由算法来确定哪些专家会处理哪些标记。
在密集和稀疏 MoE 的某些公式中,MoE 可能包含一个加权机制,用于执行专家输出的加权平均值。
在本文中,我们将重点介绍稀疏案例。

在许多已发表的论文中,MoE 技术应用于 Transformer 模块内的多层感知器 (MLP).在这种情况下,Transformer 模块内的 MLP 通常被一组专家 MLP 子网络取代,这些子网络会结合其结果,使用平均值或求和生成 MLP MoE 输出。

研究还表明,MoE 的概念可以推广到 Transformer 架构的其他部分。
最近的论文 SwitchHead: 利用混合专家注意力加速 Transformer 建议 MoE 也可应用于投影层,这些层将输入转换为 Q、K 和 V 矩阵,以供注意力运算使用。
其他论文则建议将条件执行 MoE 概念应用于注意力头本身。

在特定输入的情况下,路由网络(或算法)用于确定哪些专家被激活。
路由算法可以是简单的(在张量平均值中统一选择或合并),也可以是复杂的,如在采用专家选择路由的多专家组合中所述。

在决定给定路由算法对问题的适用性的许多因素中,我们经常讨论两个核心因素:特定路由机制下的模型准确性和特定机制下的负载均衡。
选择正确的路由算法可以在准确性和触发器效率之间进行权衡。
完美的负载均衡路由算法可能会降低每个令牌的准确性,而最准确的路由算法可能会在专家之间分配不均的令牌。

许多提议的路由算法旨在最大化模型准确性,同时最小化任何给定专家提出的瓶颈。
虽然 Mixtral 8x7B 使用 Top-K 算法来路由令牌,但诸如 采用专家选择路由的多专家组合 引入概念,以确保专家不会被过度引导。
这可以防止瓶颈的形成。


四、试验 Mixtral 模型

在实践中,每位专家都会学习什么?他们专注于低级语言结构 (例如标点符号、动词、形容词等),还是精通高级概念和领域 (例如编码、数学、生物学和法律)?

为了进行实验,我们使用了Mixtral 8x7B 模型,该模型包含32个顺序Transformer块,每个块中的MLP层被替换为稀疏MoE块,每个MoE块包含8个专家,每个令牌只激活其中两个专家。
其他层,包括自注意力层和归一化层,由所有令牌共享。

值得注意的是,当读取 8x7B 的名称时,可以想象专家是 8 个独立的完整网络,每个网络都有 70 亿个参数,每个令牌都由这 8 个完整网络中的一个完全端到端处理 (图 1)。
这种设计将生成一个 8x7B=56B 的模型。


Diagram showing a possible interpretation of the Mixtral 8x7B model with eight separate full networks.

图 1.Mixtral 8x7B 模型的可能解释

虽然这无疑是合理的设计,但并不是 Mixtral 8x7B 中使用的设计。
图 2 描述了实际设计,每个令牌都处理了 70 亿个参数。
请注意,令牌及其副本 (由第二专家在每层处理) 总共仅处理 129 亿个参数,而不是 2x7B=14B.由于共享层的原因,整个网络仅处理 470 亿个参数,而不是 8x7B=56B 参数。


Mixtral 8x7B actual architecture, where the attention layers are shared, and MLP layers comprise eight experts each.

图 2.简化的 Mixtral 8x7B 模型架构


因此,每个通过网络的令牌都必须通过类似格点的结构,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传可能的网络实例化。

如果我们将每个实例化都视为“全栈专家”(处理端到端令牌的专家),是否有可能了解它们提供的专业知识?遗憾的是,由于 28%=32%是一个非常大的数字 (+2+10%=46%),它比用于训练 LLM 的所有数据 (大多数 LLM 的数据为+3T 到 10T 令牌) 大几个数量级,因此同一实例化很少会处理任何两个令牌。
因此,我们将研究每个层专家专门研究的是什么,而不是每个完整的专家组合。


五、实验结果

我们使用大规模的多任务语言理解(MMLU)基准测试来评估模型的性能。
该基准测试包括涉及57个主题的多项选择题,涵盖了广泛的领域,如抽象代数、世界信仰、专业法、解剖学、天文学和商业道德等。
我们记录了第1层、第16层和第32层8位专家中每个专家的令牌专家作业。

在解析数据后,有几项观察值得注意。


1、负载均衡

得益于负载均衡,专家可以获得均衡的负载,但最忙碌的专家仍可获得比最忙碌的专家多 40 – 60%的令牌。


Token distribution over experts show equalized distribution yet still some imbalances.

图 3.所有 MMLU 主题的专家加载分布


2、领域专家任务分配

某些领域比其他领域更能激活某些专家。

在第 32 层中,其中一个示例是抽象代数,它比其他示例更多使用专家 3 和专家 8、


Token distribution over expert in layer 32 showing experts 4 and 8 receiving most tokens.

图 4.在第 32 层中,抽象代数的令牌分布情况

另一方面,专业法领域主要激活专家 4,而相对来说使专家 3 和专家 8 静音。


Token distribution over expert in layer 32 for professional law showing expert four receiving most tokens.

图 5.在专业定律的第 32 层中,令牌在专家上的分布

另一个引人入胜的例子是世界性的教会,专家 7 收到的令牌比专家 8 少 5 倍多。


Token distribution over expert in layer 32 for world religions showing expert eight receiving far more tokens than expert seven.

图 6.针对世界性教会,在第 32 层中,令牌在专家上的分布

这些实验结果表明,专家的负载分布倾向于在不同的主题范围内保持一致。
但是,当所有样本都完全属于某个主题时,可能会出现很大的分布不平衡。


3、专家推荐的最佳令牌

图 7 中的“cloud”(云) 一词显示了每位专家最频繁处理的令牌。


Word cloud showing most common tokens processed by experts.

图 7.专家处理的最常见令牌


4、按令牌划分的首选专家

每个令牌是否都有首选专家?每个令牌似乎都有一组首选专家,如下示例所示。

令牌“:”和所有“:”令牌的专家分配在第 1 层由专家 1 和 7 处理,在第 32 层由专家 3 和 8 处理 (图 8)。
图 9、10 和 11 显示了各种令牌的专家分配。


Bar graphs showing expert assignment for token “:”

图 8.令牌“:”的专家分配


Bar graphs showing expert assignment for token “.”

图 9.令牌“。”的专家分配


Bar graphs showing expert assignment for token “what”

图 10.专家分配令牌“what”


Bar graphs showing expert assignment for token “who”

图 11.令牌“Who”的专家分配


六、总结

MoE 模型为模型预训练吞吐量提供了明显的优势,支持在与密集模型相同的计算量上训练更具表现力的稀疏 MoE 模型。
这将在相同的计算预算下生成更具竞争力的模型。
MoE 模型可以针对整个网络或现有网络中的特定层。
通常,应用带有路由的稀疏 MoE 以确保仅使用部分专家。

我们的实验探索了令牌的分配方式以及专家之间的相对负载平衡。
这些实验表明,尽管采用了负载平衡算法,但仍然存在很大的分布不平衡,这可能会影响推理效率低下,因为一些专家提前完成工作,而另一些则过载。
这是一个值得关注的积极研究领域。

您可以尝试 Mixtral 8x7B 指令模型 以及其他 AI 基础模型,这些模型可以在 NVIDIA NGC 目录中找到。


2024-05-28(二)

相关文章:

在 LLM 架构中应用多专家模型

本文转载自:在 LLM 架构中应用多专家模型 2024年 3月 14日 By Kyle Kranen and Vinh Nguyen https://developer.nvidia.cn/zh-cn/blog/applying-mixture-of-experts-in-llm-architectures/ 文章目录 一、概述二、LLM 架构领域的专家齐聚一堂1、模型容量2、MoE 在降低…...

C语言编程代码软件:深入探索与实战应用

C语言编程代码软件:深入探索与实战应用 在编程的广袤领域中,C语言以其独特的魅力吸引着无数编程爱好者。作为一种基础且强大的编程语言,C语言在软件开发、系统编程、嵌入式系统等领域发挥着不可替代的作用。而要想熟练掌握C语言,…...

【AIGC半月报】AIGC大模型启元:2024.06(上)

AIGC大模型启元:2024.06(上) (1) ChatTTS(语音合成项目) (1) ChatTTS(语音合成项目) 2024.06.01 ChatTTS 文本转语音项目爆火出圈,引来大家极大的关注。短短三天时间,在…...

两款 IntelliJ IDEA 的 AI 编程插件

介绍两款 IntelliJ IDEA 的 AI 编程插件:通义灵码和 CodeGeeX。 通义灵码 这是由阿里推出的一个基于通义大模型的 AI 编码助手。 它提供了代码智能生成、研发智能问答等功能。通义灵码经过海量优秀开源代码数据训练,可以根据当前代码文件及跨文件的上下…...

语义化版本控制:软件工程的实用之道

语义化版本控制:软件工程的实用之道 在软件开发过程中,版本控制是确保项目稳定、有序进行的关键环节。随着项目的发展,功能的增加、错误的修复以及API的修改变得日益频繁。为了有效管理这些变化,并确保团队成员、用户以及依赖该软…...

Java设计模式总结

《武林外传》老白曾经说过这样一句话。高手就是手里无刀,心中也无刀。 类似于设计模式,你不知不觉中已经融进你的代码中了,但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。 1:设计模式分类 总体来说设计模式分为…...

小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现方案 📒📝 操作步骤📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 小米设备的广告一直是用户头疼的问题,无论是开屏广告、应用内广告还是系统广告,都影响了用户体验。本文将详细介绍如何通过小米路由器实现去除广告…...

HCIP-Datacom-ARST自选题库__EBGP【18道题】

一、单选题 1.在排除EBGP邻居关系故障时,你发现两台直连设备使用Loopback口建立连接,故执行display current-configurationconfiguration bgp查看peer ebgp-max-hop hop-count的配置,下列哪项说法是正确的? hop-count必须大于2 hop-count…...

TypeScript算法每日一题:两数之和(167)

作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 题库:力扣 题目序号:167(简单) 题目: 给你一个下标从1开始的整数数组 numbers ,该数组已按非…...

用docker搭建的Vulfocus镜像管理界面没有镜像可以拉取解决办法

ps:截止到今天2023.4.2,kali和vps的docker拉取的vulfocus镜像会有版本的区别,虽然都是拉取的最新版,vps上镜像为3个月以前,kali上为16个月以前,所以在修改 views.py 文件时,可能会发现文件内容不…...

CSPM.pdf

PDF转图片 归档:...

多个短视频剪辑成一个视频:四川京之华锦信息技术公司

多个短视频剪辑成一个视频:创作中的艺术与技术 在数字时代,短视频以其短小精悍、内容丰富的特点,迅速成为社交媒体上的热门内容形式。然而,有时单一的短视频难以完全表达创作者的意图或满足观众的观赏需求。因此,将多…...

算法第三天力扣第69题:X的平方根

69. x 的平方根 (可点击下面链接或复制网址进行做题) https://leetcode.cn/problems/sqrtx/https://leetcode.cn/problems/sqrtx/ 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被…...

异常处理。

异常 是指程序运行中出现了错误。 捕获异常: 对bug进行提醒,使整个程序继续运行。 捕获所有异常: try:#可能出错的代码 except:如果出现异常执行的代码 可以输出异常的类型: try:a1bhuishprint(ab) except Exception as i:…...

MySQL—函数(介绍)—字符串函数(基础)

一、引言 提到函数,在SQL分类中DQL语句中有一个聚合函数,如COUNT()、SUM()、MAX()等等。这些都是一些常见的聚合函数,而聚合函数只是函数的一种,接下来会详细的学习和介绍一下函数的应用场景和以及 mysql 当中文件的函数有哪些。 …...

CTF本地靶场搭建——静态flag题型的创建

静态flag题型的创建 首先这里要说的是静态flag和动态flag。 在CTF(Capture The Flag)比赛中,静态flag的使用通常与特定的赛制或题目类型关联,而不是直接与题型绑定。静态flag意味着这些flag是预先设定好的,不会随比…...

基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五)

上一篇:搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四) 下一篇:基于Django的博客系统之增加类别导航栏(六) 功能概述 添加搜索框用于搜索博客。 需求详细描述 1. 添加搜索框用于搜索博客 描…...

开源VS闭源:大模型发展路径之争,你站哪一派?

文章目录 引言一、数据隐私1.1开源大模型的数据隐私1.2 闭源大模型的数据隐私1.3 综合考量 二、商业应用2.1 开源大模型的商业应用2.2 闭源大模型的商业应用2.3 商业应用的综合考量 三、社区参与3.1 开源大模型的社区参与3.2 闭源大模型的社区参与3.3 综合考量 结论 引言 在人…...

Python | Leetcode Python题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution:def numDistinct(self, s: str, t: str) -> int:m, n len(s), len(t)if m < n:return 0dp [[0] * (n 1) for _ in range(m 1)]for i in range(m 1):dp[i][n] 1for i in range(m - 1, -1, -1):for j in range(n …...

STM32高级控制定时器应用之检测输入PWM周期和占空比

目录 概述 1 PWM 输入模式 1.1 原理介绍 1.2 应用实例 1.3 示例时序图 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM占空比函数 3.2 输入捕捉回调函数 4 功能测试 4.1 测试软件框架结构 4.2 实验实现 4.2.1 测试实…...

[AI Google] 三种新方法利用 Gemini 提高 Google Workspace 的生产力

Workspace 侧边栏中的 Gemini 现在将使用 Gemini 1.5 Pro&#xff0c;新的 Gemini for Workspace 功能即将登陆 Gmail 移动应用&#xff0c;等等。 Gemini for Google Workspace 帮助个人和企业更好地利用 Google 应用——从在 Gmail 中撰写邮件到在 Sheets 中组织项目计划。过…...

【U-Net验证】逐元素乘积将特征投射到极高维隐式特征空间的能力

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需使用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言网络结构编码结构解码结构代码 实验实验设置w/o-ReLU的性能比较with-ReLU的性能比…...

快团团大团长帮卖如何导出单个团购的订单?免费教程教你怎么做!

一、小程序端如何导出单个团购的订单&#xff1f; 进入团购页面&#xff0c;在订单管理——订单导出中&#xff0c;点击订单数据表格&#xff0c;可导出到邮箱&#xff0c;或通过在浏览器中查看下载链接 二、电脑端如何导出单个团购的订单&#xff1f; 1、如何自定义选择订单信…...

services层和controller层

services层 我的理解&#xff0c;services层是编写逻辑代码语句最多的一个层&#xff0c;非常重要&#xff0c;在实际的项目中&#xff0c;负责调用Dao层中的mybatis&#xff0c;在我的项目中它调用的是这两个文件 举例代码如下 package com.example.sfdeliverysystem.servic…...

Pycharm编辑器下自定义模块导入报错:no module named问题

相信很多使用pycharm 社区版编写python 程序的初学者都会遇到这样一个看似简单但是一时半刻找不到解决头绪的问题&#xff1a; 在同个目录下导入自己编写的模块到主程序的过程中&#xff0c;直接import的时候会报错&#xff1a;ModuleNotFoundError。 通过各种方法尝试以后还是…...

C#使用GDI对一个矩形进行任意角度旋转

C#对一个矩形进行旋转GDI绘图&#xff0c;可以指定任意角度进行旋转 我们可以认为一张图片Image&#xff0c;本质就是一个矩形Rectangle,旋转矩形也就是旋转图片 在画图密封类 System.Drawing.Graphics中&#xff0c; 矩形旋转的两个关键方法 //设置旋转的中心点 public v…...

打印机的ip不同且连不上

打印机的ip不同且连不上 1.问题分析2.修改网段3.验证网络 1.问题分析 主要是打印机的网段和电脑不在同一个网段 2.修改网段 3.验证网络...

关于linux程序的查看、前台运行、后台运行、杀死的管理操作。

前言 在Linux中&#xff0c; 程序&#xff08;program&#xff09;是放在磁盘上的程序&#xff0c;是不会执行的。 进程&#xff08;process&#xff09;是程序被触发&#xff0c;从而加载到内存中的&#xff0c;会被CPU随机执行。 Linux中&#xff0c;有非常多的进程在实时运…...

STM32作业设计

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…...

PHPSTOM配置Laradock,xdebug,phpunit

原理图&#xff1a; 片面理解&#xff1a; phpstorm启用一个9000端口&#xff0c;这个端口用来接收到信息后&#xff0c;启用xdebug功能。服务器端(docker), 当客户端访问laravel项目域名后, 并读取xdebug.ini的配置, 把调试的请求数据, 向配置里面的端口发送消息, 配置里面的端…...

使用Java进行数据分析和处理:应用在实际业务场景中的技术

在当今数据驱动的时代&#xff0c;数据分析和处理已经成为各行各业中不可或缺的一部分。Java作为一种广泛应用于企业级开发的编程语言&#xff0c;也在数据领域展现出了强大的能力。本文将探讨如何使用Java进行数据分析和处理&#xff0c;以及在实际业务场景中应用的技术。 ##…...

C++中的List

摘要 C 标准库中的 std::list 是一种双向链表容器&#xff0c;它允许在常数时间内进行插入和删除操作&#xff0c;每个元素包含一个指向前一个和后一个元素的指针。这给我们开发提供了高效的插入和删除操作。 引入头文件 要使用 std::list&#xff0c;需要包含头文件 <li…...

go map 如何比较两个 map 相等

go map 如何比较两个 map 相等 都为 nil非空、长度相等&#xff0c;指向同一个 map 实体对象相应的 key 指向的 value 相等 直接将使用 map1 map2 是错误的。这种写法只能比较 map 是否为 nil。因此只能是遍历map 的每个元素&#xff0c;比较元素是否都是深度相等。...

牛客网刷题 | BC108 反斜线形图案

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi学习了循环&am…...

数据的表示和运算

目录 一.各进制间的相互转换 1.各进制转化为10进制 2.二进制和八进制&#xff0c;十六进制之间地相互转化 3.十进制转换为其他进制 二.BCD码&#xff08;Binary-Coded Decimal&#xff0c;用二进制编码的十进制&#xff09; 1.8421码 2.余3码 3.2421码 三.无符号整数 …...

【爬虫工具】油管视频批量采集软件

一、背景介绍 1.1 爬取目标 我用Python独立开发了一款爬虫软件&#xff0c;作用是&#xff1a;通过搜索关键词采集ytb的搜索结果&#xff0c;包含14个关键字段&#xff1a;关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评…...

【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名

【LeetCode刷题】Day 14 题目1&#xff1a;153.寻找旋转排序数组中的最小值思路分析&#xff1a;思路1&#xff1a;二分查找&#xff1a;以A为参照思路2&#xff1a;二分查找&#xff0c;以D为参照 题目2&#xff1a;LCR 173.点名思路分析&#xff1a;思路1&#xff1a;遍历查找…...

使用python绘制小提琴图

使用python绘制小提琴图 小提琴图效果代码 小提琴图 小提琴图&#xff08;Violin Plot&#xff09;是一种结合了箱线图和核密度估计图的图形&#xff0c;用于显示数据分布的情况。它不仅展示了数据的四分位数、最大值和最小值&#xff0c;还通过密度曲线展示了数据的分布形状。…...

【C++】6-7 你好,输出的格式控制(三角形)

6-7 你好&#xff0c;输出的格式控制&#xff08;三角形&#xff09; 分数 10 全屏浏览 切换布局 作者 向训文 单位 惠州学院 完善程序&#xff1a;输入行数rows&#xff08;大于0&#xff09;&#xff0c;第一行输出rows个*&#xff0c;接下来每行的*个数减1&#xff0c;直…...

力扣每日一题 6/1

2928.给小朋友们分糖果[简单] 题目&#xff1a; 给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友&#xff0c;确保没有任何小朋友得到超过 limit 颗糖果&#xff0c;请你返回满足此条件下的 总方案数 。 示例 1&#xff1a; 输入&#xff1a;n 5, limit 2 …...

决定短视频打开率的要素:成都鼎茂宏升文化传媒公司

​ 在当下这个短视频盛行的时代&#xff0c;无论是个人创作者还是企业品牌&#xff0c;都希望通过短视频平台获得更多的曝光和关注。然而&#xff0c;如何让自己的短视频在众多内容中脱颖而出&#xff0c;吸引用户的点击和观看&#xff0c;成为了摆在我们面前的重要问题。成都…...

解决通过包管理器下载 Sharp 时遇到的二进制文件下载问题

sharp 是一个流行的 Node.js 库&#xff0c;用于高性能的图片处理。它依赖于预构建的 libvips 二进制文件&#xff0c;这些文件通常是从官方仓库下载的。 但在某些地区的网络环境下&#xff0c;直接下载可能会因为网络限制而失败。 通过在命令行中分别执行以下两行内容即可&a…...

反序输出c++

题目描述 输入n个数,要求程序按输入时的逆序把这n个数打印出来&#xff0c;已知整数不超过100个。也就是说&#xff0c;按输入相反顺序打印这n个数。 输入 输入一行共有n个数&#xff0c;每个数之间用空格隔开。 输出 如题要求&#xff1a;一行&#xff0c;共有n个数&…...

C++ 封装线程池(结合QT支持信号机制)

纯C风格线程池 纯C 风格线程池可参考这篇文章 https://llfc.club/category?catid225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2c2IJUcCUOfzEQQRRdOXYIZuCjP 视频教程 相关线程池和并发编程的视频可以看看这个连接&#xff1a; https://www.bilibili.com/video/BV1Xt421H7M7/?vd_s…...

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型...

【ros2】入门

ros2 在机器人控制&#xff0c;无人机飞行控制&#xff0c;自动驾驶领域&#xff0c;ros2可是如日中天的存在。无论是学习其架构设计&#xff0c;还是使用ros2开发机器人&#xff0c;ros2的是一个很错的选择。 安装 在ros2的,推荐“小鱼”的工具 wget http://fishros.com/i…...

网络安全基础技术扫盲篇 — 名词解释之“数据包“

用通俗易懂的话说&#xff1a; 数据包就像是一个信封。当你写信给某个人时&#xff0c;你将内容写在一张纸上&#xff0c;然后将纸叠起来并放入信封中&#xff0c;就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址&#xff0c;还有一些其他必要的信息&…...

26 _ 虚拟DOM:虚拟DOM和实际的DOM有何不同?

虚拟DOM是最近非常火的技术&#xff0c;两大著名前端框架React和Vue都使用了虚拟DOM&#xff0c;所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了&#xff0c;React和Vue框架本身所蕴含的知识点非常多&#xff0c;而且也不是我们专栏的重点&#xff0c…...

C语言(内存函数)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#xff0c;在这里撰写成文一…...

JVM之【执行引擎】

执行引擎 执行引擎是JVM的核心组件之一&#xff0c;它负责将Java字节码文件转换为机器指令并执行。这一过程涉及多个组成部分&#xff0c;各部分协同工作来完成字节码到机器指令的转换和执行。以下是执行引擎的主要组成部分及其作用&#xff1a; 1. 解释器&#xff08;Interp…...