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

Octo—— 基于80万个机器人轨迹的预训练数据集用于训练通用机器人,可在零次拍摄中解决各种任务

概述

论文地址:https://arxiv.org/abs/2405.12213
在机器人学中,通常使用针对特定机器人或任务收集的数据集来学习策略。然而,这种方法需要为每项任务收集大量数据,由此产生的策略只能实现有限的泛化性能。利用其他机器人和任务的经验可以获得更广泛的泛化性能,并在下游任务中获得更好的性能,但这需要考虑其他机器人的形态、传感器配置、任务规格和环境,因此建立一个能做到这一点的"通用机器人模型 "被认为是非常困难的任务。是一项非常艰巨的任务。

在此背景下,一些研究提出了 “机器人基础设施模型”,可直接从机器人观察映射到行动。这些模型可将零射或四射泛化到新的领域和机器人,从而在不同的任务、环境和机器人系统中实现视觉运动控制。例如,GNM 模型可通用于不同的机器人导航场景,RoboCat 模型可处理不同机器人形态下以目标为导向的任务,RT-X 模型可执行以语言为导向的操作。

这些模型是向 "通用机器人模型 "迈出的重要一步,但仍有许多工作要做。在本文中,我们正在设计一个系统,为下游机器人应用中的各种界面预先学习通用机器人策略。

该系统的核心是一个转换器架构,可将任意输入标记(通过观察或任务创建)映射到输出标记(转化为行动)。这样就可以控制各种摄像机配置和机器人,无需额外学习,只需语言指令或目标图像即可。此外,通过添加适当的适配器和微调,还能以较小的数据集和计算成本调整新的机器人配置。

我们正在开发 Octo,这是一种基于变压器的策略,使用开放 X-Embodiment(X-实验)数据集中的 800 000 个机器人演示进行预训练。Octo是首个能够有效微调新观察结果和行动空间的机器人控制策略,也是一个完整的开源机器人控制策略,包括学习管道、模型检查点和数据。虽然 Octo 的各个组件(变压器主干、扩散头等)已在之前的工作中讨论过,但将这些组件集成到一个强大的通用机器人策略中是独一无二的新技术。

通过对九个机器人的广泛实验,本文提出的系统在单臂和双臂操纵任务中提供了最先进的多机器人控制性能,并可作为一种有效的初始化工具,用于具有新观测和行动空间的未知设置。本文还仔细研究了 GRP 预学习过程中设计决策的影响,以评估数据分布、模型架构和策略制定的选择如何影响预学习 GRP 的质量。评估结果证明了规模和灵活性的实用性。

请注意,本文公开了训练、使用、重现和微调 Octo 模型所需的所有资源,提供了 2700 万和 9300 万参数的预训练 Octo 模型检查点,支持多个 RGB 相机输入、语言和目标图像任务规范。它提供了一组可用于支持语言和目标图像任务规范的模型。此外,还提供了在新领域中微调这些模型的脚本、预训练管道、优化数据加载器、多模态输入的转换器实现以及监控训练进度的工具。

Octo 模型设计

论文开发了 Octo 模型,这是一种开源的通用机器人策略,可通过微调适应新的机器人和任务。论文还介绍了关键设计决策、学习目标、训练数据集和基础设施。

Octo 模型的设计注重灵活性和可扩展性。它是一个通用的可扩展模型,支持各种机器人、传感器配置和动作,并可在大量数据上进行训练。特别是,它采用自然语言指令、目标图像、观察历史和扩散解码来支持多模态行动预测;Octo 可以有效地适应新的行动空间以及具有不同摄像头和传感器组合的机器人。这种设计使 Octo 成为一种灵活多变的机器人策略,可用于各种机器人应用和研究项目。

Octo 的核心在于基于转换器的策略,它由三个主要部分组成:首先是输入标记器,它将语言指令、目标和观察序列转换为标记(下图,左);其次是转换器主干,它处理标记并将其转换成所需的输出(动作);第三是读出头,它生成所需的输出(动作)。第三部分是读出头,负责生成所需的输出(操作)。

任务定义(如语言指令或目标图像)和观察结果(如手腕或第三方摄像头数据流)通过特定模式的标记器转换为通用标记格式。语言输入经过标记化处理,并通过预先训练的转换器生成嵌入语言的标记序列。图像观察结果和目标会通过浅层卷积堆栈,并分割成一系列扁平化的斑块。

统一标记序列由变换器处理。这与之前基于观察和行动序列学习基于转换器的策略的工作相似:Octo 转换器的注意模式是逐块屏蔽的,因此观察标记只与同一时间步或更早的标记相连,而任务标记则只与更早的标记相连。只关注任务标记。这种模块化设计允许在微调过程中添加或删除观察和任务。

读出标记类似于 BERT 的 [CLS] 标记,是前一个观测序列的紧凑向量嵌入。一个实现扩散过程的轻量级 "行动头 "被应用于读出标记的嵌入。这个 "动作头 "会预测几个连续的 “动作块”。

这种设计允许在下游微调期间将新任务、观察输入或行动输出头灵活添加到模型中。通过保留转换器的预训练权重,只需添加新的位置嵌入、新的轻量级编码器或新的头部参数,就能适应添加新任务、观察结果或损失函数的要求。

这种灵活性是 Octo 成为通用模型的重要因素。在微调过程中调整 Octo 的输入和输出的能力是机器人界的一个多功能工具,因为在预训练过程中不可能涵盖所有的机器人传感器和动作配置。以往将标准变压器骨架或视觉编码器与 MLP 输出头融合在一起的模型设计会固定模型预期输入的类型和顺序,而 Octo 的观察和任务切换则不需要重新初始化模型的大部分内容。

这样,Octo 模型就能在各种机器人应用中展示其作为灵活多变的机器人策略的能力。

Open XEmbodiment Dataset 中的 25 个不同数据集用于训练 Octo 模型。该数据集收集了各种机器人训练数据。它包含来自不同机器人结构和场景的各种任务的演示数据。这些数据集不仅在机器人类型上存在差异,而且在传感器类型和标签(例如,有无腕部摄像头或有无口头指令)上也存在差异。

在创建训练数据集时,我们首先排除了不包含图像流或使用 delta 末端执行器控制的数据集。我们还排除了重复性过高、分辨率过低或过于偏重特定任务的数据集。剩下的数据集被分为 "多样性较高 "和 "多样性较低 "的数据集,"多样性较高 "数据集的权重在训练过程中会加倍。重复次数较多的数据集的权重也会降低,以确保混合物不会出现偏差。最后,对缺失的摄像机通道进行零填充,以统一机械手的动作空间。值得注意的是,虽然使用这种方法获得的训练数据集非常有效,但作者认为今后需要对数据集的质量进行更详细的分析。

本文研究了两种变体:使用 ViT-S 型变压器主干网的 Octo-Small,以及使用 ViT-B 型变压器主干网的 Octo-Base。

试验

在此,我们对 Octo 模型的性能进行了实验分析,以评估其作为通用机器人基本模型的能力。评估要点如下。

  • Octo 能否控制多种机器人形态,并解决语言和目标任务?
  • Octo 权重是否适合针对新任务和机器人进行数据高效的微调? 它们比从头开始学习或常用的预训练模型更好吗?
  • 在制定 Octo 通用机器人策略时,哪些设计决策最为重要?

Octo 的能力已通过四个不同机构的九个机器人学习设置进行了评估,如下图所示。与预训练数据相匹配的机器人设置用于测试语言和目标图像任务的零点控制能力。在这些设置中,所有机器人都使用三角洲末端执行器控制动作,观察空间为 RGB 图像。

此外,还将评估 Octo 针对新环境和新任务进行数据高效微调的能力。这包括新的观测(如 "伯克利插入 "中的力矩输入)、新的动作空间(如 "伯克利拾取 "中的关节位置控制)和新的机器人形态(如 "伯克利可乐 “和 “伯克利双臂”)。双臂”)。每个微调设置使用大约 100 个 Indomain 演示,在 NVIDIA A5000 GPU 上进行微调的时间不到 5 个小时。评估任务测试 Octo 与各种对象交互(如 “WidowX BridgeV2”)、解决长期任务(如 “斯坦福咖啡”)和执行精密操作(如 “伯克利插入”)的能力。

Octo 在零镜头控制多个机器人的能力与 RT-1-X 进行了比较,RT-1-X 是公开可用的最佳通用机器人策略;与 Octo 一样,RT-1-X 也是在 Open X-Embodiment 机器人数据集上预先训练的,与 Octo 一样,RT-1-X 被设计用于在零镜头控制中控制多个机器人。控制多个机器人。此外,Octo 的零次射击能力与 RT-2-X 的零次射击能力进行了比较,RT-2-X 是一个拥有 55 亿个参数的视觉语言模型;RT-2-X 在 Open X-Embodiment 数据集上进行了微调,并生成机器人动作;RT-1-X 和 RT-2-X 模型是在更为复杂的开放 X-Embodiment 数据集上训练的。-X 模型是在更有限的 350,000 集子集上训练的,而 Octo 的子集为 800,000 集。此外,Octo 作为用于数据高效微调的策略初始化的性能还与两种流行方法进行了比较:在目标领域演示中从头开始学习和使用预训练的视觉表征。

在微调过程中,我们发现从头开始学习大型变压器架构会导致小数据集的早期过度拟合。相反,通过使用标准策略架构从头开始学习,我们取得了更好的结果。该架构结合了具有 FiLM 语言调节功能的 ResNet 视觉编码器和在扩散目标上训练的小型变换器-动作解码器,参数为 2800 万,与 RT-1 类似。该架构被用作从零开始的基线(“ResNet+变换器划痕”)。按照 Majumdar 等人的方法,将 ViT-B 视觉编码器初始化为 VC-1 权重,使用以自我为中心的视频和在 ImageNet 上预先训练好的最先进的视觉表征,并结合 MLP 动作解码器。整个模型经过训练,可使用 MSE 损失预测专家动作。

下图比较了 Octo、RT-1-X 和 RT-2-X 的零点操作能力。评估从预先训练的数据集中选取了几项任务进行,例如拾放、用抹布擦桌子和开关抽屉。每个机器人都从相应的 OXE 数据集中选择了两个口头任务,每个任务在不同的初始条件下进行了 10 次试验。所选任务是预训练数据的 “非分布”,但需要对新的物体位置、照明条件、背景和干扰物体进行泛化。

在预学习环境中,所有方法都能很好地完成任务,但 Octo 的平均成功率比 RT-1-X (3500 万参数)高出 29%。性能相当。此外,RT-1-X 和 RT-2-X 只支持口头指令,而 Octo 还支持目标图像。使用目标图像评估 WidowX 任务的成功率比使用口头指令评估的成功率高 25%。这可能是由于目标图像提供了更多关于任务完成情况的信息。BridgeV2 领域对数据集中的设置以及新环境、场景和技能的零拍摄能力进行了详细分析。结果表明,Octo 模型对新物体的成功率很高,而对新场景和新行为(如翻转和精确插入)的成功率则略低。

在新领域进行数据高效微调的结果如下表所示,微调 Octo 比从头开始训练或使用预训练的 VC-1 权重能产生更好的策略。在所有设置中,Octo 的平均性能比次优基线高出 52%,这表明 Octo 作为默认设置更胜一筹。

Octo 还支持新的观测(如 "伯克利插入 "中的力矩输入)、新的动作空间(如 "伯克利拾取 "中的关节位置控制)和新的机器人形态(如 "伯克利可乐 “和 “伯克利双臂”)。双臂”)也是可能的。这证明 Octo 具有超越单一摄像头输入和末端执行器位置控制的灵活性,适用于广泛的单臂和双臂机器人操纵问题。

总结

Octo 是一种基于变压器的大规模策略,已在迄今为止最大的机器人操作数据集(800 000 个机器人轨迹)上进行了预训练。论文表明,Octo 能以零点的方式解决各种任务,而且 Octo 的构造性设计允许根据新的输入和操作空间进行微调,使其成为解决各种机器人控制问题的灵活初始设置。此外,还发布了训练和微调代码以及辅助大型机器人数据集学习的工具。

尽管 Octo 在零点测试和微调评估中表现出很高的性能,但目前的模型也存在一些不足。这些缺陷主要是由训练数据的特点造成的。首先,当前的 Octo 模型在处理腕式摄像机信息方面很吃力。通常情况下,仅使用第三方摄像头时的微调结果要好于结合腕部摄像头时的微调结果。此外,基于语言指令的策略和基于目标的策略在性能上也存在明显差异。在这种情况下,可能是由于训练数据中缺乏相应的模式。只有 27% 的数据包含腕式摄像头信息,56% 的数据包含语言注释。

扩大用于训练 Octo 的数据是一个自然的改进方向:Open X-Embodiment 数据集由最佳机器人演示组成,因此当前的模型是通过模仿来学习的。未来的研究应考虑从次优或在线交互数据中学习,并设定不同的目标。此外,尽管 Octo 目前只在单臂和双臂机械手上进行了训练和评估,但将其扩展到更多具有导航和移动操作功能的机器人集上仍有很大潜力。

Octo 代表着向构建通用机器人策略迈出了一步,该策略可在各种机器人设置下按原样运行,但要改进该模型仍有许多工作要做。Octo 为研究人员和从业人员提供了访问大型机器人数据集的途径,利用预先训练好的机器人模型高效地学习新任务,并提供了构建通用机器人策略的简单方法,该策略可用于各种机器人设置、希望这将成为未来广泛应用的一个简单起点。

相关文章:

Octo—— 基于80万个机器人轨迹的预训练数据集用于训练通用机器人,可在零次拍摄中解决各种任务

概述 论文地址:https://arxiv.org/abs/2405.12213 在机器人学中,通常使用针对特定机器人或任务收集的数据集来学习策略。然而,这种方法需要为每项任务收集大量数据,由此产生的策略只能实现有限的泛化性能。利用其他机器人和任务的…...

2022高等代数下【南昌大学】

设 ε 1 , ε 2 , ε 3 \varepsilon_1, \varepsilon_2, \varepsilon_3 ε1​,ε2​,ε3​ 是复数域上线性空间 V V V 的一组基,线性变换 σ \sigma σ 在 ε 1 , ε 2 , ε 3 \varepsilon_1, \varepsilon_2, \varepsilon_3 ε1​,ε2​,ε3​ 下的矩阵为 J = ( 2 0 0 1 2…...

UDP编程

UDP编程是指使用用户数据报协议(UDP)进行网络编程的过程。UDP是一种无连接的传输协议,它不保证数据的可靠性和顺序性。 在UDP编程中,程序可以使用套接字(socket)来进行数据的发送和接收。UDP套接字是一种用…...

论文阅读:Omnidirectional Image Super-resolution via Bi-projection Fusion

对于全景图像(ODIs)的超分辨率的技术有:等矩投影(ERP)但是这个没有利用 ODIs 的独特任何特性。ERP提供了完整的视场但引入了显著的失真,而立方体映射投影(CMP)可以减少失真但视场有限…...

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智行无忧停车场管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 车辆信息管理功能 5.0 停车位管理功能 6.0 入场登记管理功能 7.0 预约管理功能 8.0 收费规则功能 9.0…...

微服务的负载均衡可以通过哪些组件实现

微服务的负载均衡可以通过多种组件来实现,以下是一些常见的负载均衡组件及其特点: Nginx: Nginx是一款轻量级的HTTP和反向代理服务器,也是一个高性能的负载均衡器。它支持多种负载均衡算法,如轮询、加权轮询、IP哈希等…...

Spring Boot 支持哪些云环境?

Spring Boot 对云环境的支持非常广泛,它本身是为云原生应用设计的,能够很好地与多种云平台集成。以下是小编给大家列举的一些 Spring Boot 支持的一些主要云环境: Pivotal Cloud Foundry: Pivotal 是 Spring Boot 的创建者&#x…...

第31天:安全开发-JS应用WebPack打包器第三方库JQuery安装使用安全检测

时间轴: 演示案例: 打包器-WebPack-使用&安全 第三方库-JQuery-使用&安全 打包器-WebPack-使用&安全 参考:https://mp.weixin.qq.com/s/J3bpy-SsCnQ1lBov1L98WA Webpack 是一个模块打包器。在 Webpack 中会将前端的所有资源…...

word如何快速创建目录?

文章目录 1,先自己写出目录的各级标题。2、选中目标标题,然后给它们编号3、给标题按照个人需求开始分级4、插入域构建目录。4.1、利用快捷键插入域构建目录4.2、手动插入域构建目录 听懂掌声!学会了吗? 前提声明:我在此…...

关于linux 下的中断

1. /proc/irq/<irq_number>/ 下属性详解 在 Linux 系统中&#xff0c;每个中断号&#xff08;IRQ&#xff09;都有一个对应的目录 /proc/irq/<irq_number>/&#xff0c;包含与该中断相关的属性文件。这些文件用于查看和配置中断的具体行为。 以下是 /proc/irq/&l…...

两个畸变矩阵相乘后还是一个2*2的矩阵,有四个畸变元素。1、畸变矩阵吸收了法拉第矩阵。2、畸变矩阵也给法拉第旋转角带来模糊(求解有多种可能)

角度一&#xff1b;恢复畸变的时候也把法拉第旋转恢复了 角度二&#xff1a;求解法拉第旋转角的时候 前面乘的复系数的不同也会带来法拉第旋转角和畸变的不同解 注意&#xff1a;无论多少个畸变矩阵相乘&#xff0c;结果都是2*2的矩阵&#xff0c;也就是畸变参数可以减少…...

MCU利用单总线协议(1-wire)读取DHT11温湿度

第1章 硬件连接 硬件原理图 第2章 通讯过程 用户MCU发送一次开始信号&#xff0c;DHT11从低功耗模式转换到高速模式&#xff0c;DHT11等待主机开始信号结束。DHT11等待主机开始信号结束后&#xff0c;DHT11发送响应信号。DHT11发送响应信号后&#xff0c;紧接着送出40bit的数据…...

[保姆式教程]使用目标检测模型YOLO11 OBB进行旋转目标检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)

之前写了一个基于YOLOv8z做旋转目标检测的文章&#xff0c;内容写得不够好&#xff0c;内容也比较杂乱。现如今YOLO已经更新到11了&#xff0c;数据集也集齐了无人机和卫星的农业大棚&#xff0c;所以这次就写一个基于YOLO11 OBB的农业大棚旋转检测。 1. 下载源码配置环境 在h…...

【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义

文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代&#xff0c;安全问题已成为技术领域不可忽视的…...

Redis——个人笔记留存

今日内容 1. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redis Redis 1. 概念&#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL)&#xff0c;意即“不仅仅是SQL”&#xff0c;是…...

人工智能_大模型091_大模型工作流001_使用工作流的原因_处理复杂问题_多轮自我反思优化ReAct_COT思维链---人工智能工作笔记0236

# 清理环境信息&#xff0c;与上课内容无关 import os os.environ["LANGCHAIN_PROJECT"] "" os.environ["LANGCHAIN_API_KEY"] "" os.environ["LANGCHAIN_ENDPOINT"] "" os.environ["LANGCHAIN_TRACING_V…...

linux上jdk1.8安装elasticsearch6.8.5踩坑总结

先在windows上下载了elasticsearch8安装成功后&#xff0c;本来是想在linux上也安装一个一样的版本&#xff0c;然后发现各种启动不了&#xff0c;查了一天原来jdk版本不同&#xff0c;需要下载不同版本的elasticsearch&#xff0c;我测试了8&#xff0c;7&#xff0c;6&#x…...

Three.js教程_02场景、相机与渲染器全面解析

Three.js 场景、相机与渲染器全面解析 Three.js 是一个强大的 JavaScript 库&#xff0c;用于在网页上创建和渲染 3D 图形。本文将深入解析 Three.js 中的几个核心概念&#xff0c;并介绍它们的用法及拓展方法。内容包括场景、相机、渲染器、网格对象、光源、坐标轴、控制器和…...

【数据结构】动态规划-基础篇

针对动态规划问题&#xff0c;我总结了以下5步&#xff1a; 确定dp数组以及下标的含义&#xff1b; 递推公式&#xff1b; dp数组如何初始化&#xff1b; 遍历顺序&#xff1b; 打印dp数组&#xff08;用来debug&#xff09;&#xff1b; 以上5步适用于任何动态规划问题&#x…...

opencv读取展示图片

import time import cv2 # 创建窗口 cv2.namedWindow(window, cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE自动大小&#xff0c;不允许修改窗口大小 cat cv2.imread("./6.jpg", 0) # opencv默认读取bgr,0代表的是灰度图模式,1是彩色图 # 展示名字为window…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...