港大提出图结构大语言模型:GraphGPT

请添加图片描述

1. 引言

图神经网络(Graph Neural Networks)已经成为分析和学习图结构数据的强大框架,推动了社交网络分析、推荐系统和生物网络分析等多个领域的进步。图神经网络的主要优势在于它们能够捕获图数据中固有的结构信息和依赖关系。利用消息传递和聚合机制,图神经网络可以有效地在图中传播和组合信息,从而模拟复杂的关系并进行准确的预测。

近年来,各种图神经网络架构在图节点之间的信息交换和聚合方面引入了不同的创新。例如,图卷积网络(Graph Convolutional Networks)将卷积操作迁移到图结构数据,实现有效的图结构特征表示。图注意力网络(Graph Attention Networks)利用注意力机制为相邻节点分配不同的权重,实现更细粒度的信息聚合。然而,许多图神经网络方法的一个显著局限性是它们过于依赖监督学习,这可能导致在面对稀疏和噪声数据时鲁棒性和泛化能力不足。为了增强图神经网络的泛化能力,自监督学习(Self-Supervised Learning)已经成为图表示学习中的一种有前景的方法。这些方法的目标是生成可泛化到不同下游任务的图表示,但它们仍然需要使用下游图学习场景的标签进行微调。然而,这种对下游任务的标签数据的依赖可能会限制它们在实际情况中的泛化能力,特别是在难以获取高质量标签的情况下。

因此,本研究的目标是通过解决具有挑战性的实际零样本学习场景来提高图模型的泛化能力。受到大语言模型(Large Language Models)在自然语言处理任务中巨大成功的启发,本文将介绍香港大学数据智能实验室(https://sites.google.com/view/chaoh/group-join-us)提出的图结构大语言模型(GraphGPT),其能够在多种下游数据集和任务中实现高度的泛化。期待GraphGPT能够吸引更多的开源社区开发者参与讨论和实践,共同探索图结构数据挖掘领域新篇章。

论文链接: https://arxiv.org/abs/2310.13023

代码链接: https://github.com/HKUDS/GraphGPT

项目网站: https://graphgpt.github.io/

2.概述

总得来说,将大语言模型与图学习结合是一项重大的挑战。首先,在图的结构信息和语言空间之间实现适当的对齐需要深入的研究。同时,如何引导大语言模型有效地理解图的结构信息,以及如何赋予大语言模型对于图学习下游任务逐步推理的能力,都是当前面临的关键问题。

请添加图片描述

为了深入了解直接使用纯文本提示为大语言模型建模图结构的局限性,本文进行了一系列的实验和对比,如图1所示。这些实验揭示了仅依赖文本提示进行图结构建模时可能出现的潜在问题。相比之下,新框架GraphGPT能够有效地解决这些问题,通过保留和利用图的结构信息,实现了对文章类别的准确识别。此外,使用基于文本的图结构提示会导致输入token数大小增加,这在实际应用中带来了挑战。长token序列会导致更高的计算和内存成本,使其在实际应用中的可行性降低。同时,现有的大语言模型有输入长度限制,这进一步限制了用长文本提示进行大规模图结构建模的适用性。

为了应对这些挑战,本文提出了一个名为GraphGPT的全新框架,该框架旨在使用精心设计的图指令微调范式将大语言模型与图结构对齐。GraphGPT引入了文本-图结构对齐范式作为初始步骤,通过对比方式结合文本信息,实现了在图编码器中有效地对齐文本语义。进一步提出双阶段图指令微调范式,在第一阶段,利用无标签的图结构数据,通过自监督的图匹配任务,指导大语言模型获得与图数据相关的结构知识,从而增强了其对图结构的理解。在第二阶段,为了进一步定制大语言模型在多种下游图学习任务中的推理行为,使用特定任务的图数据指令对大语言模型进行微调,以提高模型的适应性。最后,通过思维链(Chain-of-Thought)将闭源大语言模型(如,ChatGPT)蒸馏整合到GraphGPT中,增强了其逐步推理能力,极大地改善了分布偏移带来的性能下降。

本研究的主要贡献如下

  • 将图领域特定的结构知识与大语言模型的推理能力对齐,以提高图学习的泛化。
  • 提出的方法旨在通过图指令微调范式将大语言模型与图结构数据对齐。此范式结合了自监督指令微调,增强了大语言模型对图结构知识的理解和推理能力。此外,引入了具体任务的指令微调,以提高模型在不同图学习任务中的适应性。
  • 实验评估了GraphGPT在有监督和零样本图学习任务上的表现。通过与最先进的基线进行比较,GraphGPT展现出在各种设置中优越的泛化能力。

3. 方法

这一部分,将阐述GraphGPT图指令微调范式的技术细节,其整体框架如图2所示:

请添加图片描述

3.1 用“文本-图”对齐编码结构信息

在GraphGPT中图结构编码器的选择可以非常灵活,使其能够利用从多种图预训练范式中获得的各种基础GNN架构。为了更有效地将大语言模型与图结构对齐,本节探索了能与大语言模型良好协作的图结构编码方式。受之前的研究启发,本文以对比的方式将文本信息融入图结构的编码过程中。本文直接将带有预训练参数的图编码器集成到GraphGPT模型框架中,从而无缝地整合图编码器的功能。具体来说,让一个图 G ( V , E , A , X ) \mathcal{G}(\mathcal{V}, \mathcal{E}, \mathbf{A}, \mathbf{X}) G(V,E,A,X)与原始文本内容 C = { c i ∈ R l i × d , 1 ≤ i ≤ N } \mathbf{C} = \{ c_i \in \mathbb{R}^{l_i\times d}, 1\leq i\leq N\} C={ciRli×d,1iN}对应,其中 N N N代表节点数, l i l_i li表示第i个结点的文本长度。通过任意图编码器 f G f_{\mathbf{G}} fG(例如graph transformer)和文本编码器 f T f_{\mathbf{T}} fT(例如普通transformer)得到编码后的图表示 H ^ ∈ R N × d \hat{\mathbf{H}}\in \mathbb{R}^{N\times d} H^RN×d和文本表示 T ^ ∈ R N × d \hat{\mathbf{T}} \in \mathbb{R}^{N\times d} T^RN×d
H = f G ( X ) , T = f T ( C ) , H ^ = norm ( H ) , T ^ = norm ( T ) \mathbf{H} = f_{\mathbf{G}} (\mathbf{X}), \mathbf{T} = f_{\mathbf{T}} (\mathbf{C}), \hat{\mathbf{H}} = \text{norm}(\mathbf{H}), \hat{\mathbf{T}} = \text{norm}(\mathbf{T}) H=fG(X),T=fT(C),H^=norm(H),T^=norm(T)
接着,通过对比学习进行不同维度的“文本-图”对齐:
Γ i = ( g i ( 1 ) ( H ^ ) g i ( 2 ) ( T ^ ) ⊤ ) ⋅ exp ⁡ ( τ ) L = ∑ i 1 2 λ i ( CE ( Γ i , y ) + CE ( Γ i ⊤ , y ) ) \Gamma_i = (g_i^{(1)}(\hat{\mathbf{H}}) g_i^{(2)}(\hat{\mathbf{T}})^{\top}) \cdot \exp (\tau) \\ \mathcal{L} = \sum_{i}\frac{1}{2} \lambda_i (\text{CE}(\Gamma_i, \mathbf{y}) + \text{CE}(\Gamma_i^{\top}, \mathbf{y})) Γi=(gi(1)(H^)gi(2)(T^))exp(τ)L=i21λi(CE(Γi,y)+CE(Γi,y))
其中 y = ( 0 , 1 , ⋯   , n − 1 ) ⊤ \mathbf{y} = (0, 1, \cdots, n-1)^{\top} y=(0,1,,n1)为对比标签, g i ( 1 ) g_i^{(1)} gi(1) g i ( 2 ) g_i^{(2)} gi(2)为不同对比策略的转换函数。

3.2 两阶段图指令微调

3.2.1 自监督指令微调

在图指令微调范式的第一阶段,引入了自监督指令微调机制,其将图领域特定的结构知识注入到语言模型中,提高其推理能力,并使其能够有效地理解图结构中的上下文信息。具体来说,本文设计了一个结构感知的图匹配任务,引导语言模型使用自然语言标记来区分不同的图结点。这个指令任务在准确地将图结点与其相应的文本描述关联起来方面起到了关键作用,从而加深了模型对图结构数据的理解。

指令设计

图匹配任务的指令包括三个部分:i) 图信息,ii) 人类问题,和 iii) GraphGPT的回应。在这个任务中,将图中的每个节点视为中心节点,并执行h跳的随机邻居采样,从而得到一个子图结构。大语言模型的自然语言输入是人类的问题。在图匹配任务的上下文中,指令包括指示符令牌 <graph> 和一个被打乱的节点文本信息列表。例如,在一个论文引用图中,节点文本信息对应于论文标题。大语言模型在图匹配任务中的目标是将每个图结点token与其相应的节点文本信息对齐。这需要根据图结点token的顺序重新排序节点文本信息列表,有效地将每个图结点token与其相关的文本描述关联起来。

微调策略

为了高效地优化微调过程,本文提出了一种轻量级对齐投影策略。在训练过程中,固定大语言模型和图编码器的参数,仅专注于优化投影器 f P f_{\textbf{P}} fP的参数。训练后,假设投影器已经成功地学会了将编码的图表示映射到图结点token,而大语言模型则擅长将这些图结点token与多种节点文本信息对齐。为了将图结点token与自然语言token对齐,使用一个投影器 f P f_{\textbf{P}} fP,它可以简单到用一个单一的线性层实现。这个投影器建立了图结点token和自然语言token之间的对应关系。通过在原始自然语言token序列中替换指示符token<graph>为对齐的图结点token序列{<graph_begin>, <graph_token>1, …, <graph_token>n, <graph_end>},从而得到了一个大语言模型的输入token序列。考虑到图匹配过程是无监督的,这将有机会利用来自不同领域的大量未标记的图数据,以增强学习到的投影器的泛化能力。

3.2.2 特定任务指令微调

在第二阶段,本文提出了特定任务指令微调,旨在定制模型的推理行为,以满足不同图学习任务的特定约束和要求,如节点分类或链接预测。通过使用任务特定的图指令对大语言模型进行微调,引导模型生成更适合当前图学习任务的响应,进一步提高了模型在处理各种图学习任务时的适应性和性能。

指令设计

为了为每个节点生成图信息,采用第一阶段相同的邻居采样方法。对于节点分类任务,人类问题指令包含指示符令牌<graph>和关于中心节点的特定文本信息。这个指令提示语言模型基于图结构数据和伴随的文本信息来预测中心节点的类别。在图3中可以看到不同任务的指令数据的模版。

请添加图片描述

微调策略

训练的第二阶段使用第一阶段训练得到的结构感知投影器的参数作为初始状态,在训练过程中,保持大语言模型和图编码器的参数不变,仅专注于优化前一阶段的投影器的参数,确保大语言模型进一步与下游任务对齐,增强其理解和解释图结构的能力。

完成上述的两个训练阶段后,GraphGPT已经获得了理解给定图结构并在提供的图上执行各种下游任务的能力。

3.3 思维链蒸馏

面对多样的图数据,语言模型可能会遇到新的或不熟悉的模式和结构。这种分布的变化可能在生成准确和连贯的回应时带来挑战,特别是当节点类的数量在不同类型的图数据中变化时。为了应对这一挑战并在分布变化的情况下提高准确性,为GraphGPT配备逐步推理能力是至关重要的。受思维链技术(Chain-of-Thought)技术的启发,提出通过整合思维链技术,提高GraphGPT生成文本的连贯性和一致性,使模型能够遵循逻辑上的思维发展,进一步增强其理解和推理给定图数据的能力。

然而,由于思维链技术的增益与模型参数规模强相关,如何在较小的模型参数下最大程度获得思维链技术的增益成为关键。为了克服这一点,从之前的研究中汲取灵感,从一个封闭源、强大的语言模型(如GPT-3.5,拥有超过2000亿的参数)中蒸馏得到思维链推理能力,使GraphGPT能够生成高质量准确的回答,并增强模型的逐步推理能力,同时避免增加参数。

对于引文图中的节点分类任务,将节点表示的论文的摘要、标题以及分类任务的描述作为输入的一部分,使用GPT-3.5语言模型进行逐步推理,通过顺序的思考过程得出最终答案。在生成的输出中,大语言模型不仅为节点类提供预测,而且为每个预测提供详细的解释,这确保了模型的推理和决策过程是透明和可理解的。为了进一步提高性能,将生成的思维链指令数据与之前为任务特定指令微调阶段设计的指令集成,进行图指令微调。

4. 实验

4.1 总体性能

Obs.1 总体性能优越性: GraphGPT在有监督和零样本场景中都稳定地超越了各种最先进的基线模型。值得注意的是,即使是最近开发的强大的基于GNN的模型,如NodeFormer、DIFFormer和GKD,在监督设置中都展现出了良好的结构建模能力,但当它们被转移到没有进一步训练的新数据集时,性能显著下降。相比之下,GraphGPT不仅在监督任务中超越了所有最先进的方法,而且在零样本图学习场景中实现了显著的2-10倍的准确率提升。此外,基于大语言模型的解决方案,如Baichuan-7B和Vicuna-7B在不同的数据集中都保持稳定的性能。然而,它们仅限于基于文本信息进行预测。相比之下,GraphGPT有效地保留了图结构信息,为图学习任务提供了更全面的解决方案。

Obs.2 结构感知的图匹配任务: 第一阶段指令微调的自监督图匹配任务,对于增强GraphGPT的零样本迁移能力起到了关键作用。第一阶段重点是将编码丰富结构信息的图结点token与语言 token对齐。这种对齐使模型能够更深入地理解图数据的固有结构特性。如果没有第一阶段,模型只进行特定任务的指令微调的第二阶段,模型往往更容易在特定数据集上过拟合。在这种情况下,模型的性能可能严重依赖于数据集特定的模式和特性,而不是对底层图结构的真正理解。这可能限制了模型对新的、未见过的数据集的泛化能力。

Obs.3 思维链蒸馏: “-std”和“-cot”变体表明,使用思维链蒸馏对更复杂的图学习任务有很大的帮助。使用标准指令数据集微调的模型在转移到较简单的任务时,如只有3个类的PubMed数据集,已经可以取得显著的结果,例如Arxiv-PubMed的准确率为0.7011。然而,当应用于如Cora数据集这样有70个类的复杂任务时,它们的性能往往只是中等的。通过思维链蒸馏利用闭源模型(GPT-3.5)的强大推理能力,模型可以整合这些知识和推理能力,并显著提高其在复杂图任务上的性能。

请添加图片描述

4.2 泛化性能力探索

更多的数据激发更强的迁移能力: 本节首先研究了数据量对GraphGPT迁移能力的影响,如表1中的"(Arxiv + PubMed)-Cora"列所示。在这个实验中,使用Arxiv和PubMed数据集的组合来训练模型,并在Cora数据集上进行零样本测试。结果显示,通过结合相对较小的PubMed数据集(包含20,000+项),GraphGPT在Cora上的转移性能得到了显著的提高。相比之下,单独在Arxiv和PubMed上训练的基于GNN的模型的转移性能却有所下降。

更多的数据但是不遗忘: 本节进一步验证了结合Arxiv和PubMed指令数据在原始Arxiv数据上的性能,如表1中的"(Arxiv + PubMed)-Arxiv"列所示。结果表明,大多数传统的基于GNN的方法在Arxiv上经过迭代训练后性能显著下降。相比之下,GraphGPT反而表现得更好。本文将这一现象归因于基于GNN的模型中发生的灾难性遗忘,即在较小的PubMed数据集上训练的模型的结构建模能力受到损害。然而,通过两阶段的图结构指令微调,模型有效地缓解了这一问题。这使得GraphGPT能够通过保留泛化的图结构模式来维持甚至增强其性能。

可泛化的多任务图学习器: 近期关于指令微调的研究表明,混合不同的指令微调数据可以进一步提高大语言模型的性能。在本研究中,确保指令条目的数量一致的情况下,混合了不同类型的指令数据,包括标准指令(“-std”)、思维链指令(“-cot”)、标准指令(50%)和思维链指令(50%)的混合(“-mix”),以及链路预测指令(“Link”)。结果分别在表2和表3中呈现。可以观察到,有效的数据混合方案可以显著提高GraphGPT在各种设置下的性能。添加链路预测指令后显著提高了模型在节点分类中的性能,在加入节点分类后,链路预测的性能也超过了现有模型。在混合了不同任务的指令后,模型展现出了有效处理各种图学习任务并将其知识转移到其他未见数据集的能力。

请添加图片描述
请添加图片描述

4.3 消融实验

请添加图片描述

图指令微调的效果: 在本小节的研究中,使用变体“w/o GS”探讨了将图结构信息纳入大语言模型的好处。在这个变体中,直接采用大语言模型基座(具体为Vicuna-7B-v1.5)在三个数据集上进行节点分类,而不纳入图结构信息。研究结果显示,GraphGPT明显优于缺乏结构信息的基座模型。这表明提出的图指令微调范式使大语言模型更有效地理解图结构信息。重要的是,这种性能的提高是在不改变大语言模型原始参数的情况下实现的。相反,它完全是通过轻量级对齐投影器来实现,该投影器通过一层线性投影操作对齐图结点token和自然语言token。

大语言模型增强语义推理的效果: 本小节通过仅使用默认的图编码器进行有监督和零样本预测,来评估大语言模型的推理能力对GraphGPT的影响,这个变体被称为“w/o LR”。研究结果表明,整合了大语言模型的GraphGPT显著提高了图编码器的性能,特别是在零样本条件下。这表明大语言模型注入的丰富语义信息为性能提供了显著的增益。

4.4 模型效率研究

请添加图片描述

训练效率: 提出的指令微调框架遵循两阶段的过程,其中大语言模型和图编码器的参数都被冻结,只有“图-文”对齐投影器被微调。在一个4卡40G Nvidia A100环境中,对冻结和微调大语言模型参数(分别用"-freeze"和"-tune"表示)进行了比较。该研究分析了在训练时间、微调参数的数量和GPU占用(每个GPU的MiB)方面的时间和空间效率。在相同的实验条件下,当调整大语言模型参数时,即使批处理大小为1,也会遇到GPU内存溢出(OOM)错误。然而,通过使用提出的微调策略,即使批处理大小为2,训练过程仍然稳定。此外,与全量微调大语言模型相比,提出的微调策略的参数数量减少了50倍以上。

请添加图片描述

推理效率: 本小节进一步通过与baichuan-7B、vicuna-7B-v1.1和vicuna-7B-v1.5进行比较,评估了GraphGPT的推理速度和准确性。实验使用单张40G Nvidia A100,测量了在Arxiv和Cora思维链指令数据集上的推理时间(每个响应所用的秒数),结果如图4所示。GraphGPT展示了卓越的效率和准确性。值得注意的是较低的推理时间并不一定意味着更好的性能:baichuan-7B提供快速但往往是不正确或不相关的答案,而vicuna-7B-v1.1和vicuna-7B-v1.5需要更长、更复杂的推理步骤来得到更好的答案。相比之下,GraphGPT通过简短的推理过程实现了准确的预测,提高了推理效率。

4.5 模型案例研究

本节对GraphGPT在下游图学习任务中的表现进行了详细分析,并使用不同类型的指令将其与传统大语言模型进行了比较。实验使用Arxiv数据提示ChatGPT和GraphGPT,不同类型的指令包括仅使用节点内容(标题和摘要)、带有基于文本的图结构的节点内容以及本文设计的图指令。结果如图5中所示,清楚地表明,尽管ChatGPT的参数数量巨大(超过200B),但仅基于节点文本信息或带有基于文本的图结构的节点内容进行准确预测仍然困难。尤其是处理具有高度交叉学科特性的论文时,如例子中所展示的机器学习和硬件架构的交叉。相比之下,GraphGPT始终提供准确的预测并提供合理的解释。这是因为GraphGPT接受一个带有103个节点的子图结构,允许它从邻近节点的引文关系中提取丰富的结构信息,从而实现准确的预测。

此外,使用图结点token来表示图结构作为输入到大语言模型的方法比自然语言解决方案更为高效。在一个103节点的子图的情况下,GraphGPT只需要将750个token输入到LLM中,而基于文本的方法需要4649个token。这种显著的token消耗减少转化为训练和推理资源需求的大幅减少。

5. 总结与未来工作

本文提出了一个有效且可扩展的图结构大语言模型,旨在提高图结构模型的泛化能力。所提出的框架,GraphGPT,通过双阶段图指令微调范式将图领域特定的结构知识注入到大语言模型中。通过利用一个简单而有效的图文对齐投影器,使语言模型能够理解和解释图的结构。在不同设置下的广泛评估证明了模型在监督和零样本图学习场景中的有效性。此外,该模型展现出强大的泛化能力,使其能够处理多种下游数据集和任务,而不会遭受灾难性的遗忘。未来的研究方向是探索修剪技术来压缩LLM的冗余或不太重要的参数,从而减少整体模型大小,同时保持其性能。

One More Thing

关于图基础模型的思考:最近基础模型(Foundation Models)在自然语言处理(NLP)和计算机视觉领域(CV)都有蓬勃的发展,涌现了许多不可思议的应用(如ChatGPT,Segment Anything)。然而,在图学习领域,如何构造基础模型,图学习领域的基础模型是否存在一直悬而未定。这是由于不同图结构的“语义”存在较大区别,无法用一个统一的模型做到跨数据集,多任务的图结构建模。我们的工作利用大语言模型强大的语义建模能力,同时用图指令微调的方法使大语言模型拥有结构理解能力,可以作为图基础模型的一个发展方向。

关于Data-Centric 图学习的思考:基础模型的发展展现了数据为中心的人工智能(Data-Centric AI)的有效性和优越性。然而,由于不同的图结构之间的“结构关系”无法像NLP中转换为统一的token表示或者CV中的像素表示,如何定义和开发Data-Centric 图学习一直尚无定论。我们在实验中发现,GraphGPT可以在混合多种数据的情况下彰显出更强的准确度,泛化性和多任务属性,缓解了传统图神经网络的灾难性遗忘问题。因此,我们相信所提出的图指令微调框架可以很好的作为Data-Centric 图学习的一个研究基础。

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

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

相关文章

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具&#xff0c;它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能&#xff0c;也可用于执行一些基本的浏览器操作任务&#xff0c;例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

大米自动化生产线的运作原理与科技创新

在当今科技飞速发展的时代&#xff0c;自动化生产线已经成为各个行业提高效率、降低成本的重要工具。而在粮食产业中&#xff0c;大米的自动化生产线更是以其独特的魅力&#xff0c;引领着粮食加工业的转型升级。星派将带您深入了解大米自动化生产线的运作原理&#xff0c;以及…

Docker 安装部署MySQL教程

前言 Docker安装MySQL镜像以及启动容器&#xff0c;大致都是三步&#xff1a;查询镜像–>拉取镜像–>启动容器 1、查询镜像 docker search mysql2、拉取镜像 拉取镜像时选择stars值较高的 docker pull mysql:5.7 #这里指定拉取对应的版本Mysql5.7&#xff0c;没有指…

【新手】在idea中配置tomcat服务器,并部署一个项目

目录 第一步&#xff1a;新建java项目第二步&#xff1a;新建完成后&#xff0c;按照步骤选择添加框架支持第三步&#xff1a;点击添加配置第四步&#xff1a;在web文件包下创建一个新的jsp第五步&#xff1a;在新建的jsp里编写java或者html 前言&#xff1a;本章学习的是在ide…

Ubuntu虚拟机的IP总频繁变化,导致Xshell断开连接

文章目录 一、IP变化的原因二、解决方法&#xff1a;固定IP三、参考文章 一、IP变化的原因 1.DHCP协议 虚拟机系统(Ubuntu、CentOS、UOS等Linux系统)启动后&#xff0c;加入本地局域网网络时&#xff0c;会向本地网络申请租约一个IP地址&#xff0c;租约时长不定。我这里租约时…

谁将主导未来AI市场?Claude3、Gemini、Sora与GPT-4的技术比拼

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

vscode 向下复制当前行(即visual studio 中的Ctrl + D)功能快捷键

参考:https://blog.csdn.net/haihui1996/article/details/87937912 打开vscode左下角键盘快捷键设置&#xff0c;找到copy line down&#xff0c;即可查看当前默认快捷键为“shift Alt ↓” 双击快捷键&#xff0c;输入自己想要的快捷组合&#xff0c;如CtrlD&#xff0c;然…

在 IntelliJ IDEA 中远程调试 Java 程序

1. 在idea中配置&#xff0c;如下图&#xff1a; 2. 配置启动脚本5005监听 启动脚本配置 nohup java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005-Duser.timezoneGMT08 -Dserver_name${appname} $JAVA_OPT -jar ${jarname} --spring.cloud.nacos.discover…

uniapp遇到的问题

【uniapp】小程序中input输入框的placeholder-class不生效解决办法 解决&#xff1a;写在scope外面 uniapp设置底部导航 引用&#xff1a;https://www.jianshu.com/p/738dd51a0162 【微信小程序】moveable-view / moveable-area的使用 https://blog.csdn.net/qq_36901092/…

计讯物联水库泄洪监测预警系统,保障水库安全度汛

近日&#xff0c;受台风外围环流影响&#xff0c;多地受到特大暴雨侵袭。因此水库泄洪是势在必行。泄洪作为水库防洪的重要方法之一&#xff0c;水库可通过其库容拦蓄洪水&#xff0c;在水库容量超出或下游需求的时候则开始实行泄洪&#xff0c;达到减免洪水灾害的目的&#xf…

【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息

文章目录 接上文MeshRenderer&#xff08;网格渲染器&#xff09;Materials&#xff08;材质&#xff09;Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes&#xff08;探针&#xff09;Ray Tracing&#xff08;光线追踪&#xff09;Additi…

Hive企业级调优

本质就是一个hadoop的客户端&#xff0c;将HIve SQL转化成MapReduce程序 一、企业级调优 这部分主要用在实际工作中和面试中 1、主要分为计算资源调优 & 执行计划调优 计算资源调优就是yarn资源的配置&#xff0c;和mapreduce的资源配置&#xff0c;分给多少内存&#xff…

基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

tar -xzf prometheus-2.7.0-rc.1.linux-amd64.tar.gzcd prometheus-2.7.0-rc.1.linux-amd64/./prometheus --config.fileprometheus.yml --web.listen-address:5555 Prometheus 默认监听端口号为 9090&#xff0c;为了不与系统上的其它进程监听端口冲突&#xff0c;我们在启动…

docker 部署nacos

docker 部署nacos 1、配置数据库表 -- 导出 nacos 的数据库结构 DROP DATABASE IF EXISTS nacos; CREATE DATABASE IF NOT EXISTS nacos; USE nacos;-- 导出 表 nacos.config_info 结构 DROP TABLE IF EXISTS config_info; CREATE TABLE IF NOT EXISTS config_info (id bigi…

【Flutter 面试题】怎么理解Flutter异步编程的async和await?

【Flutter 面试题】怎么理解Flutter异步编程的async和await&#xff1f; 文章目录 写在前面口述回答补充说明完整代码示例运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区…

GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)

GCNv2_SLAM-CPU详细安装教程-ubuntu18.04 前言一、安装第三方库1.安装Pangolin2.安装OpenCV3.安装Eigen4.安装Pytorch(c) 二、安装以及运行GCNv2_SLAM1.安装编译GCNv2_SLAM2.单目模式运行演示案例 总结 前言 paper:https://arxiv.org/pdf/1902.11046.pdf githup::https://gith…

2、鸿蒙学习-申请调试证书和调试Profile文件

申请发布证书 发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书&#xff0c;可保障软件代码完整性和发布者身份真实性。证书格式为.cer&#xff0c;包含公钥、证书指纹等信息。 说明 请确保您的开发者帐号已实名认证。每个帐号最多申请1个发布证书。 1、登录AppGa…

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型&#xff0c;并且具有幻想和创意色彩。 作者述&#xff1a;我选取了…

Windows,MacOS,Linux下载python并配置环境图文讲解

Windows 打开python官网 点击download 点击黄色按钮 另存为 打开文件 全选 配置安装路径 安装中 关闭路径长度限制 完成 验证 同时按住winr(win就是空格键左边的东西) 输入cmd 键入python,如果出现版本(红框)即安装成功 MacOS 同理打开python官网 点击最新版本 拖…

在Django中使用PyJWT实现登录及验证功能

目录 1、安装PyJWT 2、对信息加密及解密 3、配置登录视图和及url 4、登录装饰器 5、在验证有登录权限的的视图中登录 PyJWT的使用 1、安装PyJWT pip isntall pyjwt 2、对信息加密及解密 import jwt import datetime from jwt import exceptions# 加密盐 JWT_SALT &qu…