学习以任务为中心的潜动作,随地采取行动

25年5月来自香港大学、OpenDriveLab 和智元机器人的论文“Learning to Act Anywhere with Task-centric Latent Actions”。

通用机器人应该在各种环境中高效运行。然而,大多数现有方法严重依赖于扩展动作标注数据来增强其能力。因此,它们通常局限于单一的物理规范,难以学习跨不同具身和环境的可迁移知识。为了突破这些限制,UniVLA,是一个用于学习跨具身视觉-语言-动作 (VLA) 策略的全新框架。关键创新在于利用潜动作模型从视频中获取以任务为中心的动作表征,这样能够利用涵盖广泛具身和视角的海量数据。为了减轻与任务无关动态变化的影响,结合语言指令,并在 DINO 特征空间内建立一个潜动作模型。该通用策略基于互联网规模的视频学习,可以通过高效的潜动作解码部署到各种机器人上。在多个操作和导航基准测试以及实际机器人部署中均获得最佳结果。 UniVLA 的性能远超 OpenVLA,其预训练计算量和下游数据量分别不到 OpenVLA 的二十分之一和十分之一。随着异构数据(甚至包括真人视频)被纳入训练流程,性能持续提升。这些结果凸显 UniVLA 在促进可扩展且高效的机器人策略学习方面的潜力。

得益于大规模机器人数据集 [78, 63, 38, 18] 的出现,基于视觉-语言-动作模型 (VLA) 的机器人策略近期取得了令人鼓舞的进展 [9, 28, 39]。然而,这些策略通常依赖于真实动作标签进行监督,这限制了它们在利用来自不同环境互联网规模数据方面的可扩展性。此外,不同具身(例如,Franka、WidowX,甚至人手)和任务(例如,操作和导航)之间动作和观察空间的异质性,对有效的知识迁移构成了重大挑战。这引出了一个关键问题:能否学习一种统一的动作表征,使通用策略能够有效地进行规划,从而释放互联网规模视频的潜力,并促进跨不同具身和环境的知识迁移?

视觉-语言-动作模型。在预训练视觉基础模型、大语言模型 (LLM) 和视觉-语言模型 (VLM) 的成功基础上,VLA 已被引入用于处理多模态输入(视觉观察和语言指令),并生成用于完成具身任务的机器人动作。RT-1 [10] 和 Octo [28] 采用基于 Transformer 的策略,该策略整合各种数据,包括跨各种任务、目标、环境和具身的机器人轨迹。相比之下,一些先前的研究 [9, 39, 46] 利用预训练的 VLM,通过利用来自大规模视觉-语言数据集的世界知识来生成机器人动作。例如,RT-2 [9] 和 OpenVLA [39] 将动作视为语言模型词汇表中的 tokens,而 RoboFlamingo [46] 引入一个额外的策略头用于动作预测。在这些通用策略的基础上,RoboDual [12] 提出一种协同双系统,融合通用策略和专家策略的优势。其他研究则结合目标图像 [8] 或视频 [24, 82, 13] 预测任务,以语言指令为条件生成有效、可执行的规划,并利用这些视觉线索指导策略生成动作。然而,这些方法严重依赖于带有真实动作标签的交互式数据,这显著限制 VLA 的可扩展性。

跨具身学习。由于不同机器人系统的摄像机视角、本体感受输入、关节配置、动作空间和控制频率存在差异,训练通用机器人策略极具挑战性。早期方法 [86] 侧重于在导航和操作之间手动方式对齐动作空间,但操作时仅限于腕部摄像机。近期基于 Transformer 的方法 [28, 23] 通过适应不同的观测和动作解决这些挑战,其中 CrossFormer [23] 可在四个不同的动作空间中进行协同训练,而无需对观测空间施加限制或要求显式对齐动作空间。流表征(用于捕捉图像或点云中查询点的未来轨迹)已被广泛应用于跨具身学习 [81, 88, 26, 83]。ATM [81] 从人类演示中学习流生成,而 Im2Flow2Act [83] 则无需域内数据,即可从人类视频中预测物体流。同时,以目标为中心的表征 [32, 7] 提供了一种替代方法,SPOT [32] 可以在 SE(3) 中预测目标轨迹,从而将具身动作与感官输入分离。现有方法需要大量、多样化的数据集来涵盖所有可能的状态转换模式,并且需要明确的注释,导致数据利用率低下。

潜动作学习。一些先前的研究侧重于学习变分自编码器 [64, 76] 来构建新的动作空间,强调紧凑的潜表征以促进行为生成和任务自适应,例如 VQ-BeT [44] 和 Quest [59]。这些方法也被强化学习采用以加速收敛 [2]。最近的研究 [79, 74] 探索将矢量量化作为动作空间适配器,以便更好地将动作集成到大语言模型中。然而,这些方法的一个关键限制是它们依赖于真实动作标签,这限制它们的可扩展性。为了利用更广泛的视频数据,Genie [11] 通过因果潜动作模型提取潜动作,并以下一帧预测为条件。同样,LAPO [70] 和 DynaMo [20] 直接从视觉数据中学习潜动作,绕过在域内操作任务中使用显式动作标签的方法。LAPA [87] 和 IGOR [15] 引入无监督的预训练方法来教授 VLA 离散潜动作,旨在从人类视频中迁移知识。然而,这些方法对原始像素中的所有视觉变化进行编码,捕获了与任务无关的动态,例如相机抖动、其他智体的移动或新目标的出现,这最终会降低策略性能。

为了应对这些挑战,UniVLA,是一个通用策略学习框架,能够跨各种具身和环境进行可扩展且高效的规划。就像大语言模型 (LLM) 学习跨语言共享知识 [22, 17] 一样,目标是构建一个统一的动作空间,以促进跨视频数据的知识迁移,包括各种机器人演示和以自我为中心的人类视频。通才策略包含三个关键阶段:1)以任务为中心的潜动作学习,以无监督的方式从大量跨具身视频中提取与任务相关的动作表征。这是通过使用 VQ-VAE [76] 从成对帧的逆动态中离散化潜动作来实现的。2)下一个潜动作预测,使用离散化的潜动作 tokens 训练自回归视觉语言模型,赋予其与具身无关的规划能力。3)潜解码,将潜规划解码为物理行为,并专门化预训练的通才策略,以便有效地部署到未见过的任务中。

如图所示:

请添加图片描述

虽然最近的研究 [87, 15] 已经探索从网络规模视频中学习潜动作的可行性,但它们存在一个关键的局限性:它们基于重建的简单目标函数通常会捕捉与任务无关的动态,例如非自智体的移动或不可预测的摄像机移动。这些嘈杂的表征会引入与任务无关的干扰,从而阻碍策略预训练。为了解决这个问题,利用预训练的 DINOv2 特征 [62] 从像素中提取块级表征,提供空间和以目标为中心的先验知识,从而更好地捕获与任务相关的信息。通过使用现成的语言指令作为条件,进一步将动作分解为两个互补的动作表征,其中一个明确地表示以任务为中心的动作。

本文开发三个步骤来实现 UniVLA:1)(第三部分 A)利用基于语言的目标规范,以无监督的方式从大量视频数据集中提取逆动态,从而生成一组以任务为中心的离散潜动作,这些动作可泛化至不同的具体实现和领域;2)(第三部分 B)在此基础上,训练一个基于自回归 Transformer 的视觉-语言-动作模型,该模型以视觉观察和任务指令作为输入,在统一的潜空间中预测潜动作token;3)(第三部分 C)为了高效地适应各种机器人控制系统,引入专门的策略头,将潜动作解码为可执行的控制信号。

以任务为中心的潜动作学习

第一步通过生成伪动作标签(即潜动作 tokens)奠定了该框架的基础,这些标签是后续阶段训练泛化策略的基础。

潜动作量化。如图展示潜动作模型的两阶段训练流程和整体架构。从一对连续的视频帧开始,记为 {o_t,o_t+k},两个帧之间间隔为 k。为了确保不同数据集的时间间隔统一为大约 1 秒,帧间隔根据每个数据集特定的记录频率进行标定。为了从视频中得出潜动作,潜动作模型围绕基于逆动力学模型 (IDM) 的编码器 I(a_t|o_t,o_t+k) 和基于前向动力学模型 (FDM) 的解码器 F(o_t+k|o_t,a_t) 构建。编码器根据连续的观察推断潜动作,解码器经过训练,可以根据指定的潜动作预测未来的观察结果。遵循 Villegas [77] 的研究,将编码器实现为具有随意时间掩码的时空transformer [84]。一组可学习的动作 tokens a_q(具有预定义的维度 d)按顺序连接到视频特征以提取动态特征。

请添加图片描述

为了进一步压缩信息并使其与基于自回归 transformer 策略的学习目标 [66] 保持一致,对动作 tokens 应用潜量化。量化的动作 tokens a_z 使用 VQ-VAE [76] 目标进行优化,其码本词汇量为 |C|。解码器实现为空间 transformer,经过优化,仅使用量化的动作 tokens 即可预测未来帧。不将历史帧输入解码器,以防止模型过度依赖上下文信息或仅仅记忆数据集。

虽然最近的研究 [11, 27, 87] 使用原始像素进行预测,但像素空间预测会迫使模型关注嘈杂的、与任务无关的细节(例如,纹理、光照)[30]。这一问题在网络规模和众包视频数据集 [29] 中尤为突出,因为不受控制的捕获条件会引入进一步的变化。受联合嵌入预测架构 (JEPA) [4, 5, 96] 的启发,本文提出使用 DINOv2 [62] 空间块特征作为语义丰富的表征。它们以目标为中心和空间感知的特性使它们不仅适合用作输入,也适合用作潜动作模型的预测目标。自监督目标是最小化嵌入重构误差:||Oˆ_t+k − O_t+k||^2。用 {O_t, O_t+k} 来表示成对视频帧 {o_t, o_t+k} 的 DINOv2 特征。因此,紧凑的潜动作必须对观测值之间的变换进行编码,以最小化预测误差。

潜动作解耦。如前所述,在网络规模视频中,机器人的动作通常会与不相关的环境变化纠缠在一起。为了减轻与任务无关的动态特征带来的不利影响,将现成的语言指令融入到潜动作模型的第一训练阶段(如上图左)。语言输入使用预训练的 T5 文本编码器 [67] 进行编码,并作为编码器和解码器上下文中的条件信号。

向解码器发送任务指令提供了关于底层动作的高级语义指导。因此,量化的潜动作经过优化,仅编码环境变化和视觉细节[89],由于码本容量有限,省略与任务相关的高级信息[1]。此阶段建立一组潜动作,其中包含与任务无关的信息,例如新目标的出现、外智体的移动或摄像机引起的运动伪影。这些动态特征虽然对于将模型应用于视觉环境至关重要,但与任务的具体目标无关。

接下来,将在第 1 阶段训练的潜动作模型任务无关码本和参数重新用于下一阶段(如图右所示),其目标是学习一组新的以任务为中心的潜动作 aˆ_TC,并在此基础上训练策略。

基于已获取的与任务无关的表征,冻结相应的码本,使模型能够专注于细化和特化新的潜动作集合。这种特化有助于精确建模与任务相关的动态,例如目标(object)操控或目标(goal)导向的运动轨迹。隐性动作表征的显式解耦增强了泛化策略在不同环境和任务中的泛化能力。与简单的隐性动作学习方法(例如 LAPA [87])相比,仅基于以任务为中心的表征进行训练可以实现更快的收敛速度,同时实现稳健的性能,这表明这些隐性动作对于后续的策略学习更具参考价值。

泛化策略的预训练

基于上一步训练的潜动作模型,继续在给定 o_t+k 的情况下,用隐动作 a_z tokens 任意视频帧 o_t。然后,使用这些标签来开发泛化策略。为了与 Kim [39] 的研究保持一致,提出一种基于隐性动作的通才策略,建立在 Prismatic-7B [37] 视觉语言模型 (VLM) 之上。该架构集成源自 SigLip [90] 和 DINOv2 [62] 的融合视觉编码器、用于将视觉嵌入与语言模态对齐的投影层,以及 LLaMA-2 大语言模型 (LLM) [75]。与之前基于 LLM 的通才策略(即 RT-2 [9] 和 OpenVLA [39])不同,这些策略通过将 LLaMA token化器词汇表中不常用的词映射到 [-1, 1] 内均匀分布的动作区间来直接在低级动作空间中进行规划,而本文用 |C| 个特殊 tokens 扩展了词汇表,具体为 {ACT_1, ACT_2, ACT_3, …, ACT_C}。潜动作会根据其在动作码本中的索引投影到此词汇表中。这种方法保留了 VLM 的原始模型架构和训练目标,充分利用其预训练知识,并将其迁移到机器人控制任务中。具体来说,策略模型 π_φ 接收观测值 o_t、任务指令 l 以及潜动作 token 前缀 a_z,<i,并进行优化,以最小化下一个潜动作负对数概率之和。

此外,经验证据表明,压缩动作空间(例如,当 |C| = 16 时,动作空间从 OpenVLA [39] 中的 2567 减少到 16^4)可显著加速模型收敛。该方法仅需 960 个 A100 小时的预训练就取得具有竞争力的结果,与 OpenVLA 预训练所需的 21,500 个 A100 小时相比,大幅减少。
通过在统一的潜动作空间内训练策略,该模型充分利用从跨领域数据集中获得的可迁移知识。与 Yang [86] 的论文不同,该论文需要通过视觉上相似的自我中心运动(例如操作任务中的腕部摄像头运动和自我中心导航)手动调整动作空间,而该方法则省去了这一步骤。因此,UniVLA 扩展可用数据集的范围并提升整体性能,证明利用以任务为中心的潜动作表征进行可扩展策略学习的有效性。

部署后训练

潜动作解码。在下游自适应过程中,预训练的通用策略通过预测下游自适应过程中的下一个潜动作来保持其与具身无关的特性。为了弥合潜动作与可执行行为之间的差距,采用额外的动作解码器(如图所示)。具体来说,视觉嵌入序列首先通过多头注意池 [43] 聚合为单个 tokens,然后该 tokens 作为查询从潜动作嵌入中提取信息。

请添加图片描述

鉴于潜动作旨在表示大约一秒间隔内发生的动作,它们可以自然地解码为动作块 [93]。块大小可根据具身轻松定制,以实现更流畅、更精确的控制。

在实践中,利用 LoRA [33] 进行参数高效的微调,以实现高效的自适应。加上仅包含 12.6M 个参数的动作头,可训练参数总数约为 123M。整个模型采用端到端训练,优化下一个潜动作预测损失以及真实动作与预测低级动作之间的 L1 损失。

从历史输出中学习。历史观察已被证明在增强机器人控制的序贯决策过程中发挥着关键作用 [60, 42, 45]。然而,直接为大型视觉-语言-动作模型提供多个历史观测数据会导致显著的推理延迟,并导致视觉 token 中的信息冗余 [94, 45]。得到大语言模型 (LLM) 中成熟的思维链 (CoT) 推理范式 [80](可生成中间推理步骤来解决复杂任务)启发,本文提出利用历史潜动作输出来促进机器人控制中的决策制定。与 LLM 逐步解决问题类似,在部署过程中的每个时间步将过去的动作融入到输入提示中。这为机器人策略建立一个反馈回路,使策略能够从自身的决策中学习并适应动态环境。

为了将这种方法付诸实践,用潜动作模型来注释从历史帧中提取的动作。然后,这些带注释的动作被映射到 LLaMA tokens 词汇表中,并附加到任务指令中。在训练后阶段,历史动作输入被集成为输入,使模型具备上下文学习(ICL)能力。在推理时,除初始步骤外,每个时间步都会合并一个历史潜动作(编码为 N = 4 个 token)。实证结果表明,这种简单的设计能够提升模型性能,尤其是在长周期任务中。

实验1

基于操作数据、导航数据和人体视频数据(这三者分别是 Open X-Embodiment (OpenX) 数据集 [63]、GNM 数据集 [72] 和人体视频 (Ego4D [29]) 的子集)对完整潜动作模型进行预训练。LIBERO 基准 [48] 包含四个任务套件,专门用于促进机器人操作的终身学习研究。实验专注于在目标任务套件中进行监督微调,评估通过行为克隆训练的各种策略在成功任务演示上的表现。如图所示,实验设置包含以下任务套件,每个任务套件包含 10 个任务,每个任务包含 50 个人类遥控演示:

请添加图片描述

  1. LIBERO-Spatial 要求策略推断空间关系以准确放置碗,评估模型推理几何结构的能力;
  2. LIBERO-Object 保持相同的场景布局,但引入了目标类型的变化,以此评估策略在不同目标实例间的泛化能力;
  3. LIBERO-Goal 保持一致的目标和布局,同时分配不同的任务目标(goal),以此挑战策略展现面向目标的行为和适应性;
  4. LIBERO-Long 专注于涉及多个子目标的长期操作任务,结合异构目标、布局和任务序列来评估模型在复杂、多步骤规划中的能力。

选择的基线模型包括以下五个代表性模型,其中 OpenVLA 和 LAPA 与本文方法更为接近:
• LAPA [87] 引入一个无监督框架,用于从未标记的人类视频中学习潜动作。
• Octo [28] 是一种基于 Transformer 的策略,在多样化的机器人数据集上进行训练,它采用统一的动作表示来处理异构的动作空间。
• MDT [68] 利用扩散模型生成由多模态目标决定的灵活动作序列。
• OpenVLA [39] 是一种视觉-语言-动作模型,它利用包括 OpenX 在内的多样化数据集进行大规模预训练,以实现通用的机器人策略。
• MaIL [35] 通过整合选择性状态空间模型来增强模仿学习,从而提高策略学习的效率和可扩展性。

实验 2

另外,本实验在 VLN-CE 基准 [41] 上评估 UniVLA,以评估其在导航任务中的表现。这些基准提供一组语言引导的导航任务和连续环境,用于在重建的照片级真实感室内场景中执行低级动作。具体来说,专注于 VLN-CE 中的 Room2Room (R2R) [3] 任务,这是视觉和语言导航 (VLN) 领域最受认可的基准之一。所有方法均基于 R2R 训练集的 10,819 个样本进行训练,并基于 R2R val-unseen 集的 1,839 个样本进行评估。使用 oracle 成功率来评估导航性能。在 VLN-CE 中,如果智体到达目标 3 米以内,则认为该回合成功。

为了确保与 UniVLA 进行公平比较,评估仅基于 RGB 的方法,这些方法无需深度或里程计数据,可直接预测 VLN-CE 环境中的低级动作。选定的基准如下:
• Seq2Seq [40] 是一种循环的序列到序列策略,可根据 RGB 观测值预测动作。
• CMA [40] 采用跨模态注意机制,将指令与 RGB 观测值相结合,进行动作预测。
• LLaVA-Nav 是 LLaVA [49] 的改进版本,与 NaVid [91] 提出的数据进行协同微调,并使用“从观测到历史”的技术对历史记录进行编码。
• OpenVLA [39] 是一个视觉-语言-动作模型。引入一些特殊的 tokens 来 token 化导航动作,并在 R2R 训练样本上对模型进行微调。
• NaVid [91] 是一个基于视频的大型视觉-语言模型,它对所有历史 RGB 观测值进行编码。

实验 3

所有真实世界实验均采用 AgileX Robotics 的 Piper 机械臂进行,该机械臂具有 7 自由度动作空间和第三视角 Orbecc DABAI RGB-D 相机,仅使用 RGB 图像作为输入。为了评估策略,设计一套涵盖策略能力各个维度的综合任务,包括:

  1. 空间感知:拿起螺丝刀放入柜子并关上柜门(“存放螺丝刀”)。
  2. 工具使用和非抓握操作:拿起扫帚,将砧板上的物品扫入簸箕(“清洁砧板”)。
  3. 可变形目标操作:将毛巾对折两次(“折叠毛巾两次”)。
  4. 语义理解:先将中等大小的塔堆叠在大塔之上,然后将小塔堆叠在中等大小的塔之上。(“堆叠汉诺塔”)

对于每个任务,收集 20 到 80 条轨迹,并根据任务复杂度进行缩放,以微调模型。为了全面评估泛化能力,设计了涵盖多个未见过场景的实验,包括光照变化、视觉干扰和目标泛化(如图所示)。鉴于单凭成功率不足以反映策略性能或区分其能力,引入一个分阶式评分系统。对于四个任务中的每一个,分配最高 3 分,以反映任务执行过程中不同阶段的完成情况。

请添加图片描述

选择扩散策略 [16] 以及通用策略 OpenVLA [39] 和 LAPA [87] 作为基准。扩散策略以单任务方式训练,而通用模型则在所有任务上同时进行指令输入训练。为了公平起见,使用 Prismatic-7B VLM [37] 和动作解码器头复现LAPA,并将其架构与该方法保持一致。这种设置能够分离并强调以任务为中心潜动作空间的贡献。

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

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

相关文章

相关行业发展趋势写一个爬虫程序

前两篇我利用爬虫进行营销推广&#xff0c;并且写了一个品牌口碑爬虫的代码示例。现在根据转向行业发展趋势&#xff0c;可能是希望收集数据来分析市场动向、竞争对手动态或者新兴技术趋势。 技术实现方面&#xff0c;需要选择合适的工具和库。Python的requests和BeautifulSou…

MapReduce 实现 WordCount

在大数据处理领域&#xff0c;MapReduce 是一种极为重要的编程模型&#xff0c;它可以将大规模的数据处理任务分解为多个并行的子任务&#xff0c;从而高效地处理海量数据。WordCount&#xff08;词频统计&#xff09;是 MapReduce 中最经典的示例之一&#xff0c;通过它能很好…

GelSight Mobile 4.1 软件更新推出先进测量工具与报告功能

GelSight Mobile 4.1 软件完成版本更新&#xff0c;为表面分析领域带来重要功能升级。此次更新围绕测量工具与报告功能优化&#xff0c;助力用户更高效地量化材料表面特征&#xff0c;减少现场测量时间&#xff0c;优化生产流程。 新型测量工具&#xff0c;增强复杂曲面分析能力…

base64加密为何可以直接找三方网站解密

你问得非常关键&#xff1a;**Base64 为什么“加密”后还能被网上轻松“解密”&#xff1f;**这是一个很多人容易误解的点&#xff0c;下面我来用通俗的语言帮你彻底搞懂。 ✅ 1. Base64 根本不是加密算法 Base64 只是“编码&#xff08;Encoding&#xff09;”&#xff0c;不是…

IP地址、端口、TCP介绍、socket介绍、程序中socket管理

1、IP地址&#xff1a;IP 地址就是 标识网络中设备的一个地址&#xff0c;好比现实生活中的家庭地址。IP 地址的作用是 标识网络中唯一的一台设备的&#xff0c;也就是说通过IP地址能够找到网络中某台设备。 2、端口&#xff1a;代表不同的进程,如下图&#xff1a; 3、socket:…

【计算机网络】HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3汇总讲解,清晰表格整理面试重点对比

表格汇总 对比维度HTTP/1.0HTTP/1.1HTTP/2HTTP/3传输协议TCPTCPTCP/TLS&#xff08;默认加密&#xff09;UDP&#xff08;基于 QUIC 协议&#xff09;连接方式短连接&#xff08;每次请求/响应后断开&#xff09;引入持久连接&#xff08;Persistent Connection&#xff09;&a…

LLaMA-Factory微调大模型Qwen2.5

1、开始ModelScope社区GPU环境 训练或微调模型都是非常耗费算力的。如果电脑的配置不高,可使用一些云服务器来做这项工作。如ModelScope(魔搭)社区的GPU环境,目前提供36小时免费运算,足够微调一个大模型了。 注册ModelScope(魔搭)社区账号(可能还要注册或认证阿里云账号)…

Python 3.13.3 安装教程

原文来自&#xff1a;Python 3.13.3 安装教程 | w3cschool笔记 &#xff08;请勿标记为付费&#xff01;&#xff01;&#xff01;&#xff09; Python 是一种广泛使用的编程语言&#xff0c;广泛应用于 Web 开发、科学计算、数据处理、人工智能等领域。Python 3.13.3 作为 P…

sqli-labs靶场29-31关(http参数污染)

目录 前言 less29&#xff08;单引号http参数污染&#xff09; less30&#xff08;双引号http参数污染&#xff09; less31(双引号括号http参数污染) 前言 在JSP中&#xff0c;使用request.getParameter("id")获取请求参数时&#xff0c;如果存在多个同名参数&a…

npm cross-env工具包介绍(跨平台环境变量设置工具)

文章目录 cross-env&#xff1a;跨平台环境变量设置工具什么是cross-env&#xff1f;为什么需要cross-env&#xff1f;平台差异带来的问题 cross-env的工作原理核心功能技术实现 安装与基本使用安装步骤基本使用方法运行效果 高级使用技巧设置多个环境变量环境变量传递与链式命…

mac docker弹窗提示Docker 启动没有响应

一、原因分析 这台笔记电脑是Mac M3操作系统,安装Docker之后,Docker应用程序一直启动不起来。 二、解决办法 sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/Pri…

Golang基础知识—cond

cond 通常指 sync.Cond&#xff0c;它是标准库 sync 包中用于实现 条件变量 的同步原语。条件变量在多 goroutine 协作场景中非常有用&#xff0c;尤其在需要根据特定条件协调多个 goroutine 的执行顺序时。 sync.Cond 的核心作用 条件变量用于 等待某个条件满足 或 通知其他等…

MySQL 8.0 OCP 1Z0-908 题目解析(1)

题目001 Choose two. User fwuserlocalhost is registered with the SQL Enterprise Firewall and has been granted privileges for the sakila database. Examine these commands that you executed and the results: mysql> SELECT MODE FROM INFORMATION_SCHEMA.SQL…

【Tools】git使用详解以及遇到问题汇总

这里写目录标题 安装git安装 TortoiseGitgit github gitlab, Gitee 区别visual studio中使用gitgit使用步骤git命令git删除某些历史提交记录git找回丢失代码git上传文本和二进制和gitignore删除文件删不掉的问题 安装git https://blog.csdn.net/mukes/article/details/1156938…

画立方体软件开发笔记 js-pytorch xlsx 导出 excel pnpm安装

js-pytorch npm install -g pnpm pnpm add js-pytorch 放着&#xff0c;等我把模型训练好了再用这个对接 xlsx pnpm install xlsx ai写代码&#xff0c;一遍就通了 import * as XLSX from "xlsx"; import { linelist } from ./2dviewport.js; function export…

Kotlin并发请求的一些知识记录

private suspend fun fetchDataConcurrently(list: MutableList<MyType>,onRequestResult: (Int, List<MyType>?) -> Unit //高阶函数回调) {val deferredList mutableListOf<Deferred<MyType?>>()// 设定任务超时时间为12秒&#xff0c;并使用 …

配置VScodePython环境Python was not found;

Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases. 候试试重启电脑。 在卸载重装python后会出现难以解决的局面&#xff0c;系统变量&#xff0c;命令行&#…

OracleLinux7.9-ssh问题

有套rac环境&#xff0c;db1主机无法ssh db1和db1-priv&#xff0c;可以ssh登录 db2和db2-priv [rootdb1 ~]# ssh db1 ^C [rootdb1 ~]# ssh db2 Last login: Wed May 14 18:25:19 2025 from db2 [rootdb2 ~]# ssh db2 Last login: Wed May 14 18:25:35 2025 from db1 [rootdb2…

如何创建maven项目

1.IDEA 中创建 Maven 项目 步骤一&#xff1a;点击 File -> New -> Project&#xff0c;在弹出的窗口左侧选择 Maven&#xff0c;点击 Next&#xff1a; 步骤二&#xff1a;填写项目的 GroupId、ArtifactId、Version 等信息&#xff08;这些对应 pom.xml 中的关键配置&am…

Python爬虫实战:研究ajax异步渲染加密

一、引言 在当今数字化时代,数据已成为推动各行业发展的核心驱动力。网络爬虫作为一种高效的数据采集工具,能够从互联网上自动获取大量有价值的信息。然而,随着 Web 技术的不断发展,越来越多的网站采用了 AJAX(Asynchronous JavaScript and XML)异步渲染技术来提升用户体…