[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?

1. 论文简介

论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。
在这里插入图片描述

  • 论文: https://arxiv.org/abs/2409.12889
  • 代码和数据: https://varp-agent.github.io/
  • DEMO视频: https://live.csdn.net/v/425911

在这里插入图片描述

论文创新点

  • 提出了VARP框架,该框架不依赖游戏API,而是直接使用游戏截图作为输入,通过VLMs进行推理,生成控制游戏角色的动作。
  • 定义了一套针对ARPG游戏的基准任务,并构建了相应的人类操作数据集,为未来研究提供了宝贵的资源。
  • 引入了自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),提高了代理在复杂任务中的性能和泛化能力。

核心算法模型

  • VARP框架:由动作规划系统和人类引导轨迹系统组成,能够处理视觉输入并生成复杂的动作输出。
  • 动作规划系统:包含基础VLMs组、自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),用于动作推理和生成。
  • 人类引导轨迹系统:利用人类操作数据,通过检索和学习人类行为,指导代理完成复杂任务。

关键实验数据

  • 基准任务:在《黑神话:悟空》游戏中定义了12个任务,其中75%与战斗相关。
  • 数据集:收集了包含1000条记录的人类操作数据集,包括鼠标键盘操作和游戏截图。
  • 性能:VARP代理在没有人类引导的情况下,在简单和中等难度的战斗任务中达到了90%的成功率,接近新手玩家的表现。

附论文内容简要翻译, 仅供学习参考~~~

摘要

近期,基于大型语言模型(LLM)的代理在各个领域取得了显著进展。其中最受欢迎的研究领域之一是将这些代理应用于视频游戏。传统上,这些方法依赖于游戏API来获取游戏环境和动作数据。然而,这种方法受到API可用性的限制,并且不反映人类玩游戏的方式。随着视觉语言模型(VLMs)的出现,代理现在具备了增强的视觉理解能力,使它们能够仅使用视觉输入与游戏互动。尽管取得了这些进展,当前方法在动作导向任务中仍面临挑战,尤其是在动作角色扮演游戏(ARPGs)中,强化学习方法虽然普遍,但泛化能力差,需要大量的训练。为了解决这些限制,我们选择ARPG《黑神话:悟空》作为研究平台,探索现有VLMs在需要视觉输入和复杂动作输出的场景中的性能边界。我们在游戏内定义了12个任务,其中75%专注于战斗,并引入了几个最先进的VLMs到这个基准测试中。此外,我们将发布一个包含游戏玩法视频和操作日志(包括鼠标和键盘动作)的人类操作数据集。此外,我们提出了一个新颖的VARP(视觉动作角色扮演)代理框架,包括动作规划系统和视觉轨迹系统。我们的框架展示了执行基本任务的能力,并在90%的简单和中级战斗场景中取得成功。这项研究旨在为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。

1 引言

近年来,基于LLM的代理在各个领域取得了重大突破,尤其是通过工具和记忆模块的整合,如AutoGPT和Reflection中所见。其中,将基于LLM的代理应用于视频游戏已成为最受欢迎的研究领域之一。这些方法将视频游戏的信息输入到LLM中,然后通过代理框架进行复杂的推理和整合,最终产生可以直接与游戏互动以完成任务的键盘和鼠标命令。先前的工作大多集中在访问视频游戏API以读取游戏环境和动作信息。例如,Wang等人提出的框架已成功应用于Minecraft游戏。代理可以在游戏内实现自主挖掘、建造和攻击敌人。然而,这种方法并不与人类玩游戏的方式一致,而且大多数游戏并不提供开放的API,这限制了这种方法的广泛应用。最近,像GPT-4o这样的视觉语言模型的出现,进一步增强了这些代理的视觉理解能力,展示了在移动应用和游戏中更广泛的潜力。例如,Cradle框架已在Red Dead Redemption 2 (RDR2)中实现。它直接使用RDR2的游戏截图作为输入,而不是使用API读取游戏内存信息。然而,Cradle在很大程度上依赖于游戏截图中的基于文本的引导信息来创建新技能。对于任务或游戏中文本引导较弱的情况,例如一些动作角色扮演游戏(ARPG),Cradle无法利用VLMs的有效性能。对于ARPG,许多研究人员采用强化学习方法,为特定任务预定义了惩罚和奖励。经过广泛的训练期和多次迭代后,训练有素的代理可以完成给定的特定任务。然而,基于RL的代理只能在它们被训练的环境中完成任务,并且很难转移到其他任务。ARPG包含大量的专业任务,这对RL代理的泛化能力提出了重大挑战。我们在表1中对比了一些代表性的方法。

在这里插入图片描述

因此,大多数现有研究都集中在相对简化的设置上。这种简化主要源于两个重大挑战:1)即时视觉输入。由于环境数据并不总是通过游戏API可访问,从视觉输入中学习成为一种更直接的策略,特别是在AAA游戏中(以大量时间、大量资源、大量金钱为特点),理解即时视觉输入至关重要。2)动作导向任务。动作游戏在玩家中非常受欢迎;然而,在这个领域,基于RL的代理仍然占据主导地位,它们需要大量的训练时间并且泛化能力差。对于基于VLM的代理来说,ARPG的游戏界面提供的文本提示非常少,大多数动作需要通过经验和自我创新来学习。因此,以前的代理发现很难从视觉输入中提取有效的指导信息。

在本文中,我们将选择AAA ARPG《黑神话:悟空》作为我们的研究平台,进行广泛的实验。我们致力于建立一个基于VLM的代理框架,彻底调查现有模型(例如GPT-4o、Gemini)在需要视觉输入和复杂动作输出的场景中的性能边界。其中,视觉输入仅指模型通过理解和分析游戏截图来做出决策,而复杂动作输出则需要模型执行复杂和连续的动作,如战斗场景中的精确操作。

为了实现这一目标,我们在游戏《黑神话:悟空》中定义了12个任务,其中75%的任务与战斗相关。几个最先进的VLM模型,包括GPT-4o,将被纳入这个基准测试,以全面探索它们的性能边界。随后,为了推进基于VLM的代理在AAA动作游戏的发展,我们将开源一个人类操作数据集,其中包含鼠标和键盘命令记录以及游戏玩法录像。最后,我们创新性地提出了一个VARP(视觉动作角色扮演)代理框架,包括一个动作规划系统和一个人类引导的轨迹系统。具体来说,动作规划系统负责生成适合战斗场景的动作组合,而人类引导的轨迹系统通过检索从人类数据中学习。通过广泛的评估,我们提出的框架展示了完成基本任务的能力,如捡起物品和打开宝箱,同时在90%的简单和中级战斗中取得成功。我们希望这项研究能为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。本文主要贡献:

  • 基准测试:我们基于游戏《黑神话:悟空》定义了12个任务,其中75%专注于战斗。我们将几个最先进的视觉语言模型(VLMs),包括GPT-4o,纳入此基准测试中,以全面探索它们的能力边界。
  • 数据集:我们发布了一个包含游戏玩法视频及相关操作日志(包括鼠标移动、点击和键盘动作)的数据集,包含1000条记录。
  • 框架:我们提出了一个名为VARP的代理框架,它由动作规划系统和人类引导的轨迹系统组成。通过这些系统,代理能够执行复杂动作组合并从人类操作中学习。

2. 算法方法

2.1 概述

我们提出了一个名为VARP代理的新颖框架,它直接以游戏截图为输入。通过一组视觉语言模型(VLMs)的推理,最终生成可以直接操作游戏角色的Python代码形式的动作。每个动作都是由各种原子命令组合而成的序列。这些原子命令包括轻攻击、躲避、重攻击、恢复健康等。同时,VARP代理维护三个库:情境库、动作库和人类引导库。这些库可以被检索和更新,以存储用于自我学习和人类指导的密集知识。总体而言,VARP代理分为两个系统:动作规划系统和人类引导的轨迹系统,如图1所示。在动作库中,“def new_func_a()”表示由动作规划系统生成的新动作,而“def new_func_h()”表示由人类引导的轨迹系统生成的新动作。“def pre_func()”表示预定义的动作。以下各节将详细阐述每个系统。
在这里插入图片描述

2.2 动作规划系统

动作规划系统主要用于动作推理和生成。该系统使用情境库和可更新的动作库作为知识检索基础。在输入游戏截图的引导下,系统使用一组VLMs选择或生成适合当前情境的动作。生成的情境和动作被存储或更新在这两个库中。此外,我们提出了可分解任务特定辅助模块,以将大型任务分解为更小的子任务,然后由多个VLMs分布式处理,以减少模型遗忘和幻觉的发生。我们还引入了一个自我优化动作生成模块,以鼓励VLMs针对某些困难任务生成新的动作,从而更有效、更高质量地完成复杂任务。

2.2.1 基础VLMs组

受Cradle启发,我们的主要流程继续采用Cradle中的五个基础模块,其中一些基础模块调用VLM进行推理,形成一个基础的VLMs组。在初始化期间,我们手动预定义了一些动作,并将它们放入动作库作为先验知识。每个动作都是一个带有详细文本注释的Python函数,我们计算了这些注释的嵌入以便存储。信息收集负责从采样的游戏截图中收集信息,包括与情境和动作相关的文本和视觉信息。文本信息主要包括文本指南、文本标签和通知;视觉信息主要涵盖环境位置、角色动作和界面图标。前者借助OCR工具进行文本识别,后者使用目标检测工具进行视觉定位。自我反思以情境库中最后一段视频中的几个游戏截图为输入,评估上次执行的动作是否成功产生了正确的效果以及当前任务是否已完成。如果执行失败,该模块需要提供失败原因以指导下一步动作生成。任务推理基于前述模块的结果推断出要执行的当前任务,并生成任务描述。技能策划计算任务描述的嵌入与动作库中文本注释嵌入之间的相似度,以找到一些匹配的动作,这些动作形成候选动作集。决策制定利用思维链(Chain of Thought, CoT)方法,通过深入分析多个顺序问题(例如是否启用战斗模式、恢复健康或选择可用的法术技能等),最终从候选动作集中推断出最合适的动作,执行Python代码,并操作键盘和鼠标来控制玩家角色以完成任务。这五个基础模块将每个中间产品记录到情境库中。

2.2.2 自我优化动作生成模块

基础VLMs组只能从预定义的动作库或具有清晰文本提示的游戏截图中获取动作。对于ARPG中的某些任务,如实时战斗,这种方法无法学习新动作。因此,我们提出了一个自我优化动作生成模块(SOAG),允许VARP代理在战斗中总结敌人的动作,从而优化现有动作并生成新动作以反击敌人攻击。新动作是两个原子命令的组合:躲避和轻击。优化目标是最大化躲避敌人攻击的能力以及在最小化玩家角色健康损失的同时击中敌人。

具体来说,在SOAG中,我们引入了一个负责动作函数生成的组件。该组件以信息收集和自我反思的结果以及当前和上次的游戏截图为输入。它分析当前任务下敌人的特征,如名称、外观、武器等。最重要的是,它需要分析敌人当前和之前的动作。例如,对于名为Bullguard的强敌,其攻击动作大致可以分为:“用斧头向前冲”和“连续向下砍三次斧头”等。因此,该组件需要基于当前敌人的动作推断新的躲避和反击动作。例如,对于“用斧头向前冲”,新动作应该是先躲避一次,然后连续攻击;对于“连续向下砍三次斧头”,新动作应该是在躲避三次后再反击。生成的新动作是“躲避”和“轻攻击”原子操作的排列组合。生成的动作存储在动作库中,并附有详细的文本注释。

2.2.3 可分解任务特定辅助模块

在ARPG中,尤其是在BMW游戏中,VLM的推理涉及大量的标记,包括多个图像和长文本。VLM使用的注意力机制为长文本中的所有标记分配注意力。随着输入长度的增加,注意力分布变得越来越稀释。在基础VLMs组中,由于每个模块的输入标记过多,模型可能无法有效关注关键信息,导致遗忘和幻觉等错误。这个问题在决策制定模块中尤为明显,VLM在回答多个问题时经常出错。

为了解决这个问题,我们将基础模块分解,并为特定任务添加了多个并行辅助子模块,然后由VLM进行集成。结构类似于MLP。具体来说,如图1中的动作规划工作流程所示,我们将原来处理多个任务的决策制定模块分解为5个子模块。1)敌人子模块用于分析敌人的状态(如其健康、位置等)和动作描述,协助代理获取敌人的详细信息。2)战斗子模块通过观察游戏屏幕右下角的重攻击状态来决定使用哪种战斗方式,包括轻攻击或重攻击。3)健康子模块负责不断监控玩家的健康条。如果健康消耗过多,它通过优先恢复健康的动作来协助代理。4)法术技能子模块在同时分析战斗状态下的情况的同时监控玩家的法术技能状态,以确定使用可用法术技能的适当时机。5)集成子模块负责整合所有子模块的输出,并推理以确定当前特定任务的候选动作集中的最佳动作。可分解任务特定辅助模块将长标记分解并专注于每个单独的问题,显著提高了决策制定模块的准确性。
在这里插入图片描述

2.3 人类引导轨迹系统

人类动作被视为有价值的数据,隐含着丰富的物理和游戏世界知识,这可以引导非常复杂任务的高级动作组合,例如寻路任务和高难度战斗任务。为了从这些隐含数据中学习人类经验,我们首先收集了人类数据集,然后使用它来提高VARP代理的性能。人类操作数据的收集过程和数据集分析将在第3.1节中详细说明,包括鼠标键盘日志和游戏截图记录。在本节中,我们关注如何使用它来实现人类引导的轨迹系统。在本节中,我们将我们注释的数据集称为人类引导库。它是由游戏截图和人类操作组成的对集合,每对都有唯一的时间戳。

对于游戏中非常困难的任务,我们首先截取当前游戏界面的截图。基于这个游戏截图,我们在人类引导库中查询最相似的截图。然后我们将这个截图以及随后的n帧截图及其相应的操作输入到人类引导轨迹系统中。该系统将使用VLM分析和总结输入的图像和操作,最终输出一个新的人类引导动作,然后存储在动作库中供动作规划系统选择和执行。

3 实验

3.1 数据集收集

我们收集了一个包含鼠标和键盘日志以及游戏截图记录的人类操作数据集。具体来说,我们招募了200名志愿者来玩《黑神话:悟空》游戏并记录他们的操作,其中大约70%的人是第一次体验这款游戏。为确保数据集的质量,我们淘汰了未完成任务的志愿者的无效数据。在两周的时间里,我们最终收集了总共1000条有效数据条目。具体来说,超过90%的任务11(即击败游荡的亡灵)被丢弃,表明即使是玩家也难以在一次尝试中击败这个boss。此外,我们观察到志愿者在注释过程中表现出多余的动作,如过度的鼠标点击和滚动。因此,一些志愿者将被要求再次玩游戏以识别最优动作,这些精炼的数据将在我们的发布数据集中被标记为“清洁”。更多细节请参考补充材料。
在这里插入图片描述

3.2 基准和任务定义

为了调查现有视觉语言模型(VLMs)在玩动作游戏方面的能力,我们根据游戏的叙事定义了10个基本任务和2个挑战任务,其中75%的任务发生在战斗场景中。如图2所示,所有任务都集中在游戏的第一章,这是由于VLMs的理解和推理能力有限。在基准测试方面,我们允许代理测试每个任务5次,并计算每个任务的成功率。对于战斗任务,如果玩家角色击败了敌人,则认为任务成功;如果玩家角色被敌人击败并杀死,则认为任务失败。我们已经手动评估了12个任务的难度,并将它们分类为简单、中等、困难和非常困难。由于《黑神话:悟空》游戏中缺乏地图和指引,并且存在许多“隐形墙”,我们将任务12,自主导航(即在五分钟内从出生点移动到牛头怪的位置)归类为非常困难的任务。即使是对人类新手来说,这也是一个具有挑战性的任务。我们使用这个基准的成功率来评估VARP代理和各种VLMs的性能。

3.3 实施细节

所有评估都在配备NVIDIA RTX 4090 GPU的机器上执行,运行Windows操作系统。我们使用三个最受欢迎的VLM来驱动我们的代理:GPT4o-2024-05-13、Claude 3.5 Sonnet和Gemini 1.5 pro。我们还利用OpenAI的textembedding-ada-002模型为每个动作生成嵌入。BMW游戏的游戏界面大小设置为1920×1080。在VLMs推理期间,我们使用照片模式暂停游戏。我们使用Grounding DINO进行游戏截图中的人物和物体检测,以协助VLMs更好地提取有用信息。

3.4 性能评估

为了评估没有人类引导的VARP代理的性能,我们在我们的提议基准上进行了实验,同时禁用了VARP代理的人类引导轨迹系统。在这次性能评估中,我们只测试了基准,并与人类新手玩家进行了比较。

我们计算了由不同VLMs驱动的VARP代理和人类新手玩家在完成每个任务时的成功率。如图3所示,VARP代理和人类新手玩家在任务1到8上的成功率都很高,大多数任务的成功率接近100%。在任务9中,VARP代理的平均成功率为40%,这也证实了它的“中等”难度。任务10中的敌人是玩家在游戏中遇到的第一个boss级怪物。对于人类新手玩家,这项任务的成功率为15.63%,而VARP代理的平均成功率为20%。任务11被归类为“非常困难”,因此人类新手和VARP代理的成功率都很低。具体来说,VARP代理受到VLMs推理速度的限制,无法实时输入每一帧游戏画面,只能在第二级时间间隔输入关键帧。在ARPG中,这很容易导致错过敌人攻击的关键信息。因此,任务11对代理来说特别具有挑战性。在自主导航方面,人类可以轻易地在五分钟内找到关卡的最终boss敌人,但对于VLMs来说,这是一个几乎不可能完成的任务。没有人类引导,成功率为0%。由于游戏没有为导航任务提供指引或提示,并且包含许多“隐形墙”,VLMs缺乏在没有人类帮助的情况下感知3D场景中正确路径的能力。

总之,VARP代理在任务1到11的表现已经接近新手人类玩家。然而,在3D场景感知和先验知识方面,VARP代理仍然远远不如人类。
在这里插入图片描述
在这里插入图片描述

4 结论

在本研究中,我们探索了当前视觉语言模型(VLMs)在复杂动作角色扮演游戏(ARPGs)中的潜力,以《黑神话:悟空》作为实验平台。我们提出的VARP框架引入了一种新颖的游戏互动方法,利用仅视觉输入进行ARPG环境中的动作规划。VARP框架通过在基本和中等战斗场景中实现90%的成功率,展示了其潜力,表明VLMs可以有效利用在传统上由强化学习主导的任务中。我们提出的基准可以有效评估视觉代理在《黑神话:悟空》游戏中的性能。此外,我们提供的人类操作数据集为未来研究提供了宝贵的资源,使得在视觉复杂环境中研究类似人类的游戏玩法和动作决策成为可能。我们的发现强调了多模态代理在提高动作导向任务中的泛化能力和性能方面的潜力。展望未来,这项研究的见解可能为更复杂的代理设计铺平道路,这些代理能够处理ARPGs及其它领域中更广泛的挑战。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过logstash同步elasticsearch数据

1 概述 logstash是一个对数据进行抽取、转换、输出的工具,能对接多种数据源和目标数据。本文介绍通过它来同步elasticsearch的数据。 2 环境 实验仅仅需要一台logstash机器和两台elasticsearch机器(elasticsearch v7.1.0)。本文用docker来模…

人工智能不是人工“制”能

文/孟永辉 如果你去过今年在上海举办的世界人工智能大会,就会知道当下的人工智能行业在中国是多么火爆。 的确,作为第四次工业革命的重要组成部分,人工智能愈发引起越来越多的重视。 不仅仅是在中国,当今世界的很多工业强国都在将…

HarmonyOS 速记

目录 装饰器Entry(入口)Component(组件)Builder(构建)State(状态)Prop(属性)Preview(预览)PreviewerInspector 结构体structbuild自定义组件自定义 Custom 组件 export(导出) & import(导入) Page(页面)生命周期aboutToAppear 数据Array(数组/集合)Map(映射) 容器&#xff…

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具,使用 wireshark 工具抓包分析,是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境,另外一种就是应用比较多的互联网环境,也就是连接…

nginx模块篇(四)

文章目录 四、Nginx的扩展模块4.1. Lua4.1.1 概念4.1.2 特性4.1.3 应用场景4.1.4 Lua的安装4.1.5 Lua的语法4.1.5.1 第一个Lua程序4.1.5.2 Lua的注释4.1.5.3 标识符4.1.5.4 关键字4.1.5.5 运算符4.1.5.6 全局变量&局部变量4.1.5.7 Lua数据类型nilbooleannumberstringtablef…

Windows本地连接远程服务器并创建新用户详细记录

前提可知: (1)服务器IP地址:x.x.x.x (2)服务器名称:root(一般默认为root,当然也有别的名称) (3)服务器登陆密码:**** 一、…

都市女生热衷找搭子的原因?只因对生活的热爱和追求

在繁华的都市中,有一个叫小悠的女生。她独自在这个忙碌的世界里闯荡,常常感到孤独。 有一天,小悠想去看一场期待已久的演唱会,可是身边的朋友要么没时间,要么对这场演唱会不感兴趣。就在她感到失落的时候,她…

使用llama.cpp 在推理MiniCPM-1.2B模型

llama.cpp 是一个开源项目,它允许用户在C中实现与LLaMA(Large Language Model Meta AI)模型的交互。LLaMA模型是由Meta Platforms开发的一种大型语言模型,虽然llama.cpp本身并不包含LLaMA模型的训练代码或模型权重,但它…

html 几行的空间分成3个区域

1.代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>三个区域示例</title> …

【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop

总结 Deskpins 功能单一&#xff0c;拖到窗口上窗口就可以置顶并且标记钉子标签&#xff0c;大小 104 KB&#xff0c;开源位置&#xff1a;https://github.com/thewhitegrizzli/DeskPins/releases WindowTop 功能完善全面强大&#xff0c;包括透明度、置顶、选区置顶等一系列功…

【我的 PWN 学习手札】tcache extend

目录 前言 一、利用手法 二、流程演示 &#xff08;1&#xff09;三块物理相邻的堆块 &#xff08;2&#xff09;溢出修改 size &#xff08;3&#xff09;释放该 chunk &#xff08;4&#xff09;重新申请该 chunk &#xff08;5&#xff09;释放第三块 chunk&#x…

Leetcode - 139双周赛

目录 一&#xff0c;3285. 找到稳定山的下标 二&#xff0c;3286. 穿越网格图的安全路径 三&#xff0c;3287. 求出数组中最大序列值 四&#xff0c;3288. 最长上升路径的长度 一&#xff0c;3285. 找到稳定山的下标 本题就是找[0&#xff0c; n-2]中&#xff0c;height[i]…

升级你的HarmonyOS体验:一窥功能引导与拖拽交换的独家技巧

文章目录 前言项目目录结构开发流程主要步骤讲解关键配置Index.ets 页面讲解高光组件相关HeaderApp 总结 前言 在当今的移动应用开发领域&#xff0c;为了提供更加友好和直观的用户体验&#xff0c;开发者们通常会集成多种交互功能来增强应用的互动性和易用性。在这些功能中&a…

故障诊断│GWO-DBN灰狼算法优化深度置信网络故障诊断

1.引言 随着人工智能技术的快速发展&#xff0c;深度学习已经成为解决复杂问题的热门方法之一。深度置信网络&#xff08;DBN&#xff09;作为深度学习中应用比较广泛的一种算法&#xff0c;被广泛应用于分类和回归预测等问题中。然而&#xff0c;DBN的训练过程通常需要大量的…

go 读取excel数据存储到mysql

一、安装依赖 go get github.com/go-sql-driver/mysql go get github.com/jmoiron/sqlx 二、main.go package mainimport ("fmt""github.com/jmoiron/sqlx""log" ) import "github.com/tealeg/xlsx" import _ "github.com/go-s…

【LeetCode热题100】位运算

这篇博客先介绍了常见位运算操作&#xff0c;然后记录了关于位运算的几道题&#xff0c;包括判定字符是否唯一、丢失的数字、两整数之和、只出现一次的数字2、消失的两个数字。 在这一部分&#xff0c;我们不妨先来总结一下常见位运算操作&#xff1a; 1.基础位运算 >>…

C++——模拟实现string

1.再谈string string为什么要被设计成模板&#xff1f;日常使用string好像都是char*&#xff0c;char*不够使用吗&#xff0c;为什么要设计成模板呢&#xff1f; 1.1 关于编码 //计算机的存储如何区分呢&#xff1f;int main() {//比如在C语言中&#xff0c;有整型//如果是有…

craco-less使用问题

craco-less使用问题 问题背景 前端是用React搭建&#xff0c;使用craco配置&#xff0c;相关库或插件版本如下 "craco/craco": "^7.1.0","react-scripts": "^5.0.1","craco-less": "^3.0.1"在生产环境&#xff…

P9235 [蓝桥杯 2023 省 A] 网络稳定性

*原题链接* 最小瓶颈生成树题&#xff0c;和货车运输完全一样。 先简化题意&#xff0c; 次询问&#xff0c;每次给出 &#xff0c;问 到 的所有路径集合中&#xff0c;最小边权的最大值。 对于这种题可以用kruskal生成树来做&#xff0c;也可以用倍增来写&#xff0c;但不…

国内可以使用的ChatGPT服务【9月持续更新】

首先基础知识还是要介绍得~ 一、模型知识&#xff1a; GPT-4o&#xff1a;最新的版本模型&#xff0c;支持视觉等多模态&#xff0c;OpenAI 文档中已经更新了 GPT-4o 的介绍&#xff1a;128k 上下文&#xff0c;训练截止 2023 年 10 月&#xff08;作为对比&#xff0c;GPT-4…