AIGC参数量节节攀升,对存储带来的挑战如何解决?

引言

近期,AIGC 相关产品如同雨后春笋一般不断涌现。但在技术层面,大家普遍的关注点更多集中在性能方面,却经常忽略了存储对推理和训练效率的影响,以及 AIGC 内容可能带来的合规风险。我们特邀腾讯云存储的产品负责人 崔剑老师和益企研究院创始人、腾讯云 TVP 张广彬老师(狒哥)围绕以上话题展开讨论。

AIGC 大模型需要经过多年的积累和海量数据训练,才能达到目前的阶段。它是一个非常复杂的技术工程,涉及到顶层的训练框架,中间的管控调度,以及底层的计算存储网络等各个层面的资源支持。

下面从存储的角度来探讨,为了让 AIGC 成长得更快,我们需要做哪些具体的工作。

存储方案是AIGC模型业务落地的重要支撑

崔剑:

想请教一下狒哥,你从事存储领域这么多年,应该接触过不少业界应用 AIGC 技术的团队。您能分析一下存储方案对于整体 AIGC 模型的实际应用和商业化,到底有多大的影响力呢?

张广彬:

现在大家都在讨论大模型的参数量大小和 GPU 算力、网络等方面,而我们作为存储领域的从业者,会很容易地考虑到海量数据的存储访问。在 ChatGPT 刚兴起的时候,我也看到一些存储厂商试图通过吸引人的标题来讨论大模型,然而阅读文章后却发现只是蹭热度的内容,让我感到失望。

如果我们真正深入探究,会发现大模型对存储的性能要求非常高。举例来说,像英伟达的参考架构中,就提到了要有专门的存储网络,而且存储网络最好为 GPU 服务器提供 40 GB 的单节点(读)带宽。当然,这个要求还因应用类型而有所不同。以自然语言处理(NLP)为例,一个节点需要 4 GB/s的读取性能,写入则需要 2 GB/s。如果是压缩图像处理,比如 ImageNet,要求可能会高一倍,而如果处理的是高清视频或无压缩图像,则最好是 10 倍,即(读)40 GB/s 和(写)20 GB/s。这是非常高的性能要求,如果应用到单个计算节点上,会给系统带来非常大的压力。即使深度学习任务中主要以读取为主,但这种压力也非常巨大。我认为这是一个物理集群级别的问题,当然,你也可以在云上构建,但我认为这样的性能级别和要求在云上也是一样的。

崔剑:

是的,站在云解决方案的角度来看,腾讯云及其存储团队今年上半年收到了许多中国初创公司和大公司的需求,希望建立基于云资源的大型模型训练平台。我们作为云服务商,也为他们提供了很好的资源储备和解决方案。

例如我们为国内一些领先的文生文和文生图平台提供存储服务。这些平台层级很高,这里的“高”并不仅仅指数据量的大小,还包括高质量的半结构化数据,因为他要训练模型的话,素材物料的准确性和精度很重要,这里的数据来源分两种。他们会从欧洲、北美一些成熟资源提供方获取一些已经训练好的半结构化数据,让自己的大模型平台完成从 0~1 的冷启动。之后会再根据业务垂直的场景,基于自己这些场景下的积累,产出一些新的素材来喂给大模型。整体的这些半结构化数据素材量其实是很大的,针对这些海量数据,我们的第一步是帮助用户解决原始素材的集中和传递的问题,因为这些素材可能来自不同的资源口,例如海外网站或本地 IDC。在这一步,我们提供了完善的腾讯云存储迁移服务,通过离线、在线、增量和全量等方式,帮助开发者们将训练素材集中在一起。

资源汇集过来以后,我们比较推荐将素材存储到腾讯云的对象存储 COS 中,素材存储到 COS 存储桶之后,会进行一些前置的清洗和标注工作,类似于自动驾驶中的数据筛选,然后选择出高质量和准确的数据,进一步传输到之前提到的 GPU 节点中。此外,因为读取大量训练素材对带宽的需求很高,所以我们还在 COS 存储桶和 GPU 计算之间提供了完善的加速缓存层。其实在 AIGC 大模型训练中,先不说后面的工程环节,在第一步素材的收集整理就已经是一项相当具有挑战性的任务,好在我们通过集团内部积累,以及对外服务 to B 客户的经验总结,已经沉淀了成熟的解决方案,也希望后续能帮助更多客户解决类似的问题。

大模型对存储带来了全新挑战?

大模型训练过程中,集群内的 GPU 成千上万,过程旷日持久,服务器或 GPU 等环节发生故障难以避免,故障恢复面临两难:回滚时间段过长会影响项目工期,过短又对存储系统的写入性能提出了很高的要求……

张广彬:

以前大家经常说高性能计算是计算机皇冠上的明珠,AI、云计算和大数据都从中受益。我也有个惯性思维,会把它套到一些大的科学计算里面去,认为大模型训练把数据装进去以后,中间生成中间结果,会不断地就往回写的,并且觉得它的频率相对来说在它整个任务期间比例并不是很高。但是,我前段时间与一些从事大模型训练的朋友聊了聊之后有了新的认识,他们告诉我,我的想法不对。像 ChatGPT 这样的模型就用了 1 万个 GPU,并且在高负载下连续工作数十天甚至更长时间进行训练。在如此庞大的规模下,每天可能会有 GPU 卡或 GPU 服务器发生故障。为了应对故障,就要设置 Checkpoint。以前大家可能每天设置一个检查点,但在大模型训练的场景下,万一故障可能需要回滚 24 小时,这样的(时间)损失是无法承受的。

因此,现在倾向于把 Checkpoint 设得更短。比如腾讯可能是每 15 分钟写一个检查点,听说文件大小可达到 TB 级别。虽然不是频繁写入,但仍需要同步写入。如果写入时间过长会影响训练工作的正常进行,因此对写入的性能要求非常高。某个厂商提供的方案显示,一个检查点的写入需要 65 GB/s 的写入性能。尽管不是频繁发生,但每一次写入的峰值会越来越高,这是非常庞大的工作量。

崔剑:

从 to B 服务方的角度看,我和狒哥了解得完全一致。 大模型训练确实需要进行 Checkpoint 回滚的过程,原因狒哥已经很透彻地解释了,因为在训练过程中可能会出现废单或需要回退到某个阶段,回退并非为了退步,而是为了前进。只有保留 Checkpoint 这种备份机制,当出现问题时,我才能快速回退到之前的状态,然后基于回退点继续进行新的训练和分析。如果停下来的话,会浪费宝贵的 GPU 时间,因为 GPU 卡很昂贵,我们希望充分利用它们。为了提高利用率,我们需要提前创建一系列 Checkpoint 备份机制,以备不时之需。所以这个环节对于国内外各家平台都是必要的,但是也给基础设施层面提出了挑战。

狒哥提供的数据非常有参考价值,特别是 Checkpoint 回写的频率。从每天一次回写到几小时一次,甚至一小时多次回写,我看到的是客户回写速度越来越快,这也代表着他们的算力和卡的数量越来越高。因为在相同的训练框架下,如果 GPU 算力高、卡多或者上层训练框架调优得好,就能更快地达到下一个阶段,需要更频繁地进行 Checkpoint 回写。我们很高兴看到客户在上层调优方面越来越完善,回写速度越来越快,这代表着共同的发展。

尽管回写得越来越快对于云服务来说是一个挑战,但我们愿意接受这个挑战。其实这也是云的优势之一,云能提供较大的写入带宽,无论是几十 MB 还是几十 GB 都能做到。相比之下本地 IDC 搭建环境,为了存储资源的 IO 速度与底层资源的能力去“堆硬盘”,从成本角度来看很难做到很高的天花板。而我们的云服务背后是整个腾讯云的集群,具备很大的弹性释放能力。所以我很乐意见证开发者朋友们的平台成长,同时我们团队也在不断地优化底层能力与解决方案,以匹配大家对底层存储越来越高的弹性和资源诉求。希望通过我们的努力,以及我们腾讯云团队、计算网络各个团队的共同作用下,能让大家做大模型训练的效率越来越高。

高并发带来存储资源不足“症”多级加速+弹性方案是良药

COS 是开发者非常熟悉的底层对象存储服务,然而实际情况可能需要我们进一步探讨原生对象存储的可行性。例如,当面临大数据集超出显存限制、大型模型频繁进行数据交换导致 IO 瓶颈等问题时,我们需要寻找更多的解决方案。

张广彬:

我们会更关注硬件方面,就是 IaaS 层以下的部分,当然也包括云存储。以英伟达提供的参考架构为例子,它实际上是分为三层,即分级存储或缓存策略。本地 GPU(俗称显卡)服务器内部的内存一般是 TB 级别的,比如可以配备 2TB 内存,带宽可以超过 200GB/s。这是除 GPU 显存以外性能最好的存储,它在性能上表现优秀,但容量较小,适合存放一些不是特别庞大的自然语言处理模型的数据集。

那么对于更大的数据集,应该如何处理呢?GPU 服务器本地配备了 NVMe 存储(俗称固态盘即 SSD,NVMe 是其中较不错的通讯协议),容量一般为几十 TB 级别,带宽大约为五六十 GB/s。虽然容量大了一个数量级,但性能和带宽相对较低,它非常适用于一些压缩图像处理任务,比如 ImageNet 等应用的数据集可以存放在本地缓存中,从而避免频繁访问外部存储。

但如果数据集非常大,比如像 4K 视频或未压缩的高清图片,或者一些离线推理任务,本地缓存无法容纳,那可能仍需访问(外部)存储,无论是 COS 还是其他存储方式。这可能是数据集读取一次的情况。根据我了解的情况,如果按照这个数量级,数据集可能在几十 TB 以上,单个节点超过几十 TB 以上,就不再适合本地缓存了。不知道在云上,这种情况是否能得到一些改善或加强?

崔剑:

腾讯云的用户往往是大规模的,考虑云的原因是因为他们有大量的资源消耗。因此,腾讯云需要提供解决大规模存储、吞吐和加速的方案。展开说一下,腾讯云对象存储 COS 是腾讯云存储的底层服务,海量数据全部都存储在 COS 里面,它承载全量数据作为一个源站。

在模型训练过程中,我们对 GPU 进行了模型训练,GPU 位于算力集群的前端,而  COS 则在其后。通常情况下,我们需要将一批数据(例如三天为一批)一次性从  COS 中加载到算力集群的本地,然后再在本地进行一些向量化的 AI 训练。首先,一次性的拉取动作其实消耗蛮大的,同时数据到了本地或者本地的某个环境后,又会进行多次的数据交换。因此,我们充分考虑了客户的痛点,提供了整体的数据库存储三级加速解决方案。第一级加速是在机房级别预热数据,确保用户的训练数据提前加载到 GPU 算力所在的机房;第二级加速是通过类似 HDFS 的命名空间来处理大数据批处理清洗的工作,避免直接在对象存储上进行操作;第三级加速是通过 GooseFS 文件系统将数据部署到用户的 GPU 集群本地,以提升 IO 性能。这三级加速方案帮助用户解决了大数据处理和 AI 训练中的痛点,并显著提升了吞吐能力。腾讯云成功地帮助了许多 AIGC 平台实现高带宽读取需求。如果您对这些方案感兴趣,可以试用使用相关产品。

GooseFS 可以灵活地部署到用户的本地GPU集群。如果通过上层的算力去读一个远端的 COS 的话,尽管 COS 弹性资源很多,但由于各家云都会有一个单通道带宽限制,腾讯云是每个 Bucket 会给您 15GB/s 的读带宽,听起来可能是不太够的。所以说如果选用近计算端的这套文件系统缓存的方案以后,把您 GPU(节点)本地的 NVMe 的盘全部用起来,充分地释放本地盘的性能,整体的吞吐能力可以从 15GB/s 的带宽涨到 TB 级别的吞吐能力,直接提升一个数量级,帮助了 AIGC 的平台更好地去承接住海量高带宽要求。这里也是简单地做一个分享,如果大家有一些兴趣的话也可以去了解一下我们相关的产品。

另外在数据管理方面,腾讯云提供了多级存储解决方案,包括从“热到冷"的标准存储、低频存储、归档存储和深度归档存储,共涉及 5~6 档存储。腾讯云根据不同档位的存储需求匹配性能和容量,同时在硬件和软件层面进行创新。软件层经过多个版本的迭代,从三副本到现在的 EC 技术,腾讯云在应对数据冗余方面积累了丰富经验。例如 QQ 空间海量的图片小文件,腾讯云采用的 Block EC 技术在小文件写入时先写副本,副本状态下能让用户以比较快的速度去读。多个小文件副本停留一段时间以后,通过引擎把它拼成个大文件,然后大文件再一点一点地刷新版本。通过这样的办法,把海量小文件的管理成本降下去。在海量数据管理这块,我们腾讯云深耕了很多年,也愿意把这些技术红利释放出来,让更多的用户体验到技术创新带来的价值与便利。

数据多方交互,成倍的内容合规风险如何治理?

在 AIGC 领域,除了成本管理和容量性能外,推理产物的管理也是一个关键考虑因素。用户在使用过程会沉积出庞大的内容库,这里里面难免会滋生一些涉黄、涉政、恐怖主义等不良内容,针对这个问题,我们该如何解决?

张广彬:

以前是用户去产生内容,即 UGC;现在变成了 AIGC。AI 只要它响应了,就可以不断地生成内容,未来它的内容量可能会超过 UGC。此外,AIGC 有时候也会受到人为引导的影响,人们会有意诱导机器回答一些问题,甚至问一些敏感的问题。当越来越多人使用 AIGC,其内容库将更容易产出危险内容,如色情、恐怖主义等等。

另外,我认为保密也是风险方面要考虑的因素。比如,之前三星的某位工程师向 ChatGPT 提问,结果导致一些机密泄露。无论是保护机器、AIGC 平台还是用户方,都需要强有力的措施,否则使用 AIGC 技术所带来的风险可能会超过收益。可以分享一下腾讯云在这方面的一些经验吗?

崔剑:

腾讯云存储团队在 AIGC 浪潮之前,已经在数据处理和审核领域积累了多年经验。我们服务的腾讯内外部的业务中,在搭配 CDN 分发之前就进行了相关的预处理,包括基础处理和数据审核。腾讯云提供的产品——数据万象,就是提供这方面的服务,它能够处理和审核存储在腾讯云上的数据,为用户提供多样化的处理能力。比如,压缩图片体积、调整视频和图片的尺寸、格式转换、添加水印等都可以轻松实现。国内对数据的审核环节非常的严格,特别是对于涉黄涉暴和政治敏感等违规内容的审查,腾讯云的解决方案建议用户将推理产物经过数据万象的审核和"绿化"处理。

腾讯云给 AIGC 平台企业提供服务时发现,下游的用户不仅包括个人,还包括企业,这意味着需要为 B 端用户提供闭环解决方案,以管理为下游企业的客户提供的推理产物。对此,腾讯云企业网盘可能是一个合适的解决方案,它可以处理企业内部协同编辑、分发和备份的需求。

腾讯云企业网盘是一个企业级的产品,与个人网盘不同,它可以满足企业的需求。企业使用网盘可以解决三个痛点:协同编辑、分发和备份。协同编辑可以通过类似腾讯文档的功能实现多人同时编辑一个文档。分发方面,通过网盘生成外链,可以安全地将文件分发给团队成员,并可配置安全码、密码和有效期等参数。备份方面,企业可以在网盘中同步员工电脑上的数据,使核心资料统一备份并避免信息泄露的风险。

观众提问环节

可实现国内的训练数据资源统一或者单纯进行大规模训练吗?

崔剑:

从辩证的角度来看,我认为这位观众的想法是有道理的。他想通过整合全球可获得的非计划和半计划训练数据,通过强大的训练来提升模型的效果,使其变得更加智能。

如果我们国内有这样一个平台,并且希望不断改进和发展,我们需要统一各类训练数据资源。这是一个发展方向。当前看,各方面都在迅速发展,但我认为未来可能会涌现出一些强势的领导者,通过合作、行业合作或政府合作方式,获取获取更多高质量的训练素材,成为领域的引领者,为我们的用户提供更好、更高质量的推理结果。

另一方面,我们也看到一些特定领域的玩家,比如气象、娱乐、生物医疗等垂直领域,他们在垂直领域中运营。他们首先不需要这个领域之外的信息,这些信息只会干扰他们。他们首先需要大量素材,但在我个人看来,当垂直应用出现时,除了素材堆积外,追求素材的质量也很重要。

这些领域的厂商需要在质量上下功夫,并且需要在原始素材的筛选上下工夫。在之前的一次分享中,我与开发者朋友们讨论过一些相关问题,例如,他们认为如何进一步提高训练效果?除了计算能力和更好的模型调优之外,原始素材的质量也很重要,这取决于标注的准确性。在 AIGC 领域的标注与传统的自动驾驶或生物计算领域的标注不完全相同。因此,我认为我们需要提出更专业、直接的问题,并通过问答的方式获得一组问题和答案,以更好地训练我们的大脑使之更聪明。

所以,我们需要同时关注资源和素材的堆积,并重视素材的质量,这是我的观点。

张广彬:

大数据时代中的那句"进来的是垃圾,出去的也是垃圾"在这里还是确实适用。

AIGC技术在其它场景的性能和效果如何?是否受到特定因素限制?

崔剑:

对于 AIGC 技术在其他场景中的性能和效果如何评估,我们关注一些量化指标。比如,运行一轮物料所需的时间,整体带宽等。更通俗些讲,我们考虑一个问题,在相同的任务下,它能在 8 小时内完成还是 6 小时内完成?

对于两小时的差距,可能是背后花了 2000 个小时或者经过长时间的思考才将性能提升。这里的提升可能是多方面的,前面我们讨论了存储层面的优化,选择更好的云存储和多级加速,以确保存储不耽误计算时间。此外,高性能网络涉及各种协议、容器技术、高性能 GPU 服务器也都是重要的因素。

另外,训练框架是一方面,我们通常使用开源框架。其中有许多参数和技巧,打开某个参数可能会受到其他参数的影响,这与数据库调优类似,需要经验的积累,所以我认为这是一项复合性的工作。

张广彬:

是的,所以相比数据库调优,这可能更加复杂,否则怎么叫炼丹呢?甚至 OpenAI  也承认存在一定偶然性。

不同类型的数据,对存储和计算资源的需求是否不同?

张广彬:

前面我们有提到过,原则上来说数据越大所需资源性能越高。

崔剑:

理解文字实际上就是将其切分为问与答的形式,将问题和答案中的词语进行分词。然后将这些关键词转化为向量,并在训练过程中存储到向量数据库中等等。

文生图要更难一点,需要我们先去帮助 GPU “大脑”去理解这张图,其实前期做的标注工作很重要,我们先需要去通过一些前置的 AI 处理,去把这个图片里面的关键元素提取出来,“告诉它”这张图里各元素具体的含义。视频相当于把每一帧看做一个图片,所以视频相比图片难度又提升了一个量级。从这个逻辑来看,文本、图像、视频难度是递增的。

如何评估存储技术在训练大型模型的性能表现?是否有参考标准?

崔剑:

我主要从可用性、成本和性能三个方面来评估:

  • 可用性:在选择存储解决方案时,首要关注的是其稳定性和数据保护能力。云上的对象存储服务如腾讯云的对象存储(COS)提供了高于 99.995% 的可用性和 12 个 9 的可靠性。确保存储底座的可用性和可靠性水平是核心。

  • 成本:商业化的存储解决方案需要考虑关注的是——单位存储的成本,例如每 GB 每月或每 GB 每天的费用。我们官网上有对应的报价,可以通过横向对比来评估云上对象存储的价格水平。腾讯云多年来专注于降低底层成本,并将成本优势传递给客户,综合商业化评估来看,我们价格和性能表现还是不错的。

  • 性能:存储解决方案的性能表现直接影响计算效率和体验。关注的指标包括 IO 带宽、延迟和读写性能。特别是对于大规模的 AI 模型工程训练平台,例如 GPU 集群,对存储的访问性能要求高。衡量存储对计算效率的影响,存储速度快则计算效率高,带宽和 IOPS 等指标可用于评估性能是否达到预期。

计算资源受限时,如何合理分配利用资源实现最佳训练效果?

崔剑:

AIGC 训练的计算部分非常重要,其中核心是使用 GPU 训练大型模型。在 GPU 之前,还有数据清洗和标注等环节,可以采用弹性化的算力方案来避免计算资源成为瓶颈。对于训练环节来说,GPU 卡目前比较稀缺,所以主要取决于您可用的卡片数量。如果卡片更多,计算能力可能更高,但如果卡片有限,您需要合理规划和安排。首先要测试每张卡的性能,并根据测试结果合理安排任务,以避免达不到预期并影响结果输出。总体而言,调度合理和资源利用率是主要方向。

结语

AIGC 领域的存储方案在推理和训练效率中起着重要支撑作用。我们必须关注存储资源对大模型、高并发和多方交互带来的挑战,并妥善处理内容合规风险。

未来,多级加速和弹性方案将成为解决存储资源不足的关键,同时需要考虑特定因素限制和不同数据类型的需求差异。通过建立评估标准和合理分配资源,推动存储技术创新,为 AIGC 领域带来更高效、可靠和可持续的发展,推动人工智能的边界不断拓展。

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

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

相关文章

C++ QT qml 学习之 做个登录界面

最近在学习QT,也初探到qml 做ui 的灵活性与强大,于是手痒痒,做个demo 记录下学习成果 主要内容是如何自己编写一个按钮以及qml多窗口。 参考WX桌面版,做一个登录界面,这里面按钮是写的一个组合控件,有 按下,释放,以及正常 三种状态。 import QtQuick 2.0 import QtQ…

数据在内存中的存储——练习3

题目&#xff1a; 3.1 #include <stdio.h> int main() {char a -128;printf("%u\n",a);return 0; }3.2 #include <stdio.h> int main() {char a 128;printf("%u\n",a);return 0; }思路分析&#xff1a; 首先二者极其相似%u是无符号格式进行…

【Linux】—— 在Linux上进行读写文件操作

前言&#xff1a; 在之前&#xff0c;我已经对进程的相关知识进行了详细的介绍。本期开始&#xff0c;我们将要学习的是关于 “基础I/O”的知识&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;C文件接口 &#xff08;二&#xff09;系统文件I/O 1、接…

WebDAV之π-Disk派盘 + BubbleUPnP

BubbleUPnP是一款功能强大的Android播放器,支持UPnP/DLNA多屏互动。它可以将手机内容投屏到电视大屏上,与家人和朋友一起共享。此外,BubbleUPnP还提供了丰富的音乐和影视资源,您可以在线搜索并播放喜欢的内容。 以下是BubbleUPnP的一些主要特点: 1. 支持Chromecast和转码…

android java读写yaml文件

目录 申请读写权限&#xff1a; build.gradle中添加库引用&#xff1a; android java读写yaml文件 java修改yaml文件 YamlFile&#xff1a; 修改yaml文件方法2 Yaml&#xff1a; 删除值&#xff1a; 申请读写权限&#xff1a; <uses-permission android:name"and…

WebGL 绘制矩形

上一节绘制了圆点&#xff0c;调用的绘制方法如下&#xff1a;gl.drawArrays(gl.POINTS, 0, 1); 第一个参数明显是个枚举类型&#xff0c;肯定还有其他值&#xff0c;如下所示&#xff1a; POINTS 可视的点LINES 单独线段LINE_STRIP 线条LINE_LOOP 闭合线条TRIANGLES 单独三…

计算机网络篇之域名

计算机网络篇之域名 介绍 一个域名是一个由点分割的字符串序列&#xff0c;用于标识一组IP地址或互联网上的计算机&#xff0c;域名用于在因特网上标识和定位特定的网站或服务 组成 域名由两个主要部分组成&#xff1a;顶级域和二级域&#xff0c;顶级域是域名的最高级别&a…

Codeforces Round 895 (Div. 3) (A~G)

A. Two Vessels 题意&#xff1a;你有两个无限容量杯子A,B&#xff0c;分别装了a&#xff0c;b升的水&#xff0c;此外你还有一个容量为c的杯子C&#xff0c;你可以将一杯的水先倒入C中&#xff0c;再倒入另一个杯子&#xff0c;问你最少需要操作几次能使得A B杯的水量相同。 …

【题解】2596. 检查骑士巡视方案

题解&#xff1a; class Solution {int n,m;bool st[100][100];int flag;int dx[8]{-1,-2,-2,-1,1,2,2,1};int dy[8]{-2,-1,1,2,2,1,-1,-2}; public:bool checkValidGrid(vector<vector<int>>& grid) {m grid.size();n grid[0].size();dfs(grid,0,0,0);ret…

运行时链接

基本概念 运行时链接&#xff0c;是在程序运行时&#xff08;而非编译时或加载时&#xff09;将程序代码与其依赖的库代码进行链接的过程。动态链接在程序启动时或实际运行过程中通过API函数完成。这种方式的主要优点是它允许程序在运行时加载和卸载不同的库模块&#xff0c;从…

在Python中解决自定义类型比较的问题

1 问题原因 在Python编程中&#xff0c;当我们尝试对自定义类型进行比较时&#xff0c;可能会遇到这样的错误&#xff1a;TypeError: < not supported between instances of User and User 这个错误的原因是Python不知道如何对你的自定义类型进行比较。为了解决这个问题&a…

redisson常用api

redisson提供了很多对象类型的api&#xff0c;下面介绍下一些常用的对象api。 RBucket 可操作任何对象的api&#xff0c;前提是要确定好泛型&#xff0c;方法比较少。大小限制为512Mb。 RBucket<AnyObject> bucket redisson.getBucket("anyObject");bucket…

vue3中的吸顶导航交互实现 | VueUse插件

目的&#xff1a;浏览器上下滚动时&#xff0c;若距离顶部的滚动距离大于78px&#xff0c;吸顶导航显示&#xff0c;小于78px隐藏。使用vueuse插件中的useScroll方法​​​​​​​和动态类名控制进行实现 1. 安装 npm i vueuse/core 2. 获得滚动距离 项目中导入&#xff0…

@Resource 注入为null 的解决方法

Resource Resource可以用于注入对象 一般我们在编码中都会使用Resource来注入一个实例对象&#xff0c;但是特殊情况下可能会是null。 这个时候可以用SpringUtil.getBean()来手动获取 代码示例 private HbaseProperties hbaseProperties SpringUtil.getBean(HbasePropertie…

在python程序中用windows的icon

这个exe的弹窗功能会使用到一个ico文件&#xff0c;如图&#xff1a; 用软件GreenfishIconEditorProPortable或者使用在线软件将你需要的图片制作成windows的icon 用程序将ico文件生成文本文件 import base64picture_name "logo.ico" open_pic open("%s…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…

神经反馈设备使用感受2:采集Muse的EEG原始数据(转自知乎)

神经反馈设备使用感受2&#xff1a;采集Muse的EEG原始数据 转自知乎&#xff0c;内容很好&#xff0c;怕之后找不到 想了一下&#xff0c;单写一部分来介绍一下Muse在数据采集方面的操作。同时也解释一下我自己的EEG数据是从哪里采集的。 关于Muse EEG数据的精度&#xff0c;在…

vue2实现自定义主题webpack-theme-color-replacer

需求&#xff1a;根据element的自定义主题色&#xff0c;之后改变element的全局所有颜色&#xff0c;解决页面刷新后主题色失效问题&#xff0c;这个需要把颜色存入到浏览器的存储中&#xff0c;如果换个浏览器就得重新选择了哈&#xff0c;如果需要在不同的浏览器保持一致的主…

将AI融入到SEO中—基于Python的实现思路

在当今数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于网站和在线业务的成功至关重要。然而&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;我们可以利用它来提升SEO策略并取得更好的效果。本文将介绍如何通过使用Python编…

WordPress wp-file-manager 文件上传漏洞 CVE-2020-25213

1.漏洞复现 WordPress 6.2 插件&#xff1a;wp-file-manager 6.0&#xff0c;File Manager (advanced view) – WordPress plugin | WordPress.org &#xff08;https://wordpress.org/plugins/wp-file-manager/advanced/&#xff09; 复现 后台&#xff0c;安装、启动插件…