绝区柒--LLM简史

news2024/9/23 23:34:58

这是一系列LLM介绍的可成,分以下五个不分

  • 序言:大型语言模型LLM简史
  • 第一部分:代币化——完整指南
  • 第 2 部分:使用 Python 中的 Scratch 从零开始使用 word2vec 进行词嵌入
  • 第 3 部分:用代码解释自注意力机制
  • 第 4 部分:BERT 完整指南(附代码)


介绍

大型语言模型 (LLM) 在过去几年中一直是机器学习讨论的焦点,并在未来几年改变了人工智能的格局。本文是“从头开始构建 LLM”系列的序幕,该系列是理解和构建 LLM 的完整指南。假设您缺乏背景知识,本文旨在通过图表、动画、Python 代码和底层数学知识,从头开始直观地了解这些模型的工作原理。API 和在线用户界面使与 LLM 的交互变得像输入提示一样简单,但真正理解这些复杂模型的内部工作原理需要更仔细的检查。为了为接下来的文章奠定基础,我们将首先介绍 LLM 背后的背景:它们之前的模型、它们的局限性以及我们如何走到今天这一步。这样做的目的是为该系列的未来发展制定路线图。也就是说,这些文章将涵盖:Transformer 架构(LLM 的骨干)的每个主要组件、GPT-4 和 Llama 2 等最先进(SOTA)模型、如何使用 LLM 执行常见的自然语言处理(NLP)任务,例如命名实体识别(NER)和主题建模,以及其他关键主题,例如微调和检索增强生成(RAG)。

内容

1- Transformer 简介

2-走向大型语言模型

3 -结论

4 - 进一步阅读


1 — Transformer 简介

1.1 —什么是 Transformer?

在阅读有关 LLM 的文章时,无法避免使用“Transformer”一词。这两个概念似乎密不可分,至少到目前为止,它们确实如此。Transformer 是一种深度神经网络架构,构成了当今 LLM 的骨干。该架构最初是在 2017 年的论文“Attention is All You Need”中提出的 - 这是 Google Brain、Google Research 和多伦多大学 [2] 的合作成果。其目标是改进当时流行的基于循环神经网络 (RNN) 的模型,特别是对于机器翻译任务。也就是说,将一系列文本从源语言(例如英语)翻译成目标语言(例如法语)。生成的模型产生了 SOTA 结果,而不受基于循环的网络的限制。Transformer 不仅限于翻译任务,而且还在许多 NLP 任务(例如情绪分析、主题建模、对话聊天机器人等)上产生了 SOTA 结果。因此,这些类型的模型及其衍生物已成为当代 NLP 中的主导方法。随着 2022 年 11 月 ChatGPT 的发布,Transformer 最著名的用途可能是在 GPT-4、BERT 和 Llama 2 等 LLM 中的应用。

自 2020 年左右以来,Transformer 已被改编用于 NLP 领域之外。计算机视觉模型(例如 Vision Transformer (ViT))在自动驾驶应用中执行图像分割 [3],而诸如 iTransformer 之类的模型已用于时间序列预测 [4]。本文将重点介绍 Transformer 在 LLM 中的使用。

注意: “机器翻译”中的“机器”一词是 20 世纪 50 年代/60 年代人工智能术语的延续,因为当时在计算机解决的问题标题中包含“机器”是很常见的。机器翻译的第一个被广泛研究的用例出现在冷战期间,当时美国计算机科学家试图建立基于规则的模型将俄语文本翻译成英语。这些早期的语言模型效果有限,该项目最终被取消,尽管如此,它为未来的翻译工作奠定了基础。如果你有兴趣关于机器翻译的历史,2M Languages 在他们的博客 [5] 上有一个很好的总结。


1.2 —统计机器翻译(SMT)

要理解原始 Transformer 论文中的架构决策,我们首先需要了解作者试图解决的问题。考虑到这一点,让我们简要回顾一下机器翻译的历史、在此过程中开发的模型以及 Transformer 设计用于解决的问题。

在 Transformer 出现之前,机器学习的格局与现在大不相同,尤其是在 NLP 领域。在 20 世纪 60 年代基于规则的机器翻译系统衰落之后,研究停滞了大约 30 年。在 20 世纪 90 年代中期,研究工作重新兴起,并转向基于统计的方法,即统计机器翻译(SMT)。在这种方法中,源语言的文本被提取并使用对齐模型翻译成目标语言。这种“对齐”是指将一种语言中的单词或短语映射到另一种语言的过程,考虑到目标语言中单词的顺序和可能的遗漏/添加。让我们以日语到英语为例依次看一下这些:


日语至英语例句翻译。除非另有说明,所有图片均由作者提供。

  • 单词/短语顺序:日语是主语-宾语-谓语 (SOV) 语言,因此动词放在句子末尾。英语是主语-谓语-宾语 (SVO) 语言,因此动词放在宾语之前。这意味着逐字逐句地将日语句子翻译成英语会产生非常糟糕的结果,而且几乎总是语法错误。在上面的例子中,日语动词行く(“去”)位于句子末尾,但英语翻译将动词放在宾语“电影院”之前。在这种情况下,需要训练对齐模型以根据单词在句子中的功能正确排列单词。
  • 单词/短语省略:日语经常使用上下文来暗示句子的主语。例如,如果您正在与某人谈论您当天的计划,则无需说“将去电影院”或“将去游泳”。从上下文可以清楚地看出您是句子的主语,因此通常会省略“我”(私)这个词。这意味着在从英语翻译成日语时,在翻译中省略“我”会更自然,从而得到:“将去电影院”和“将去游泳”。
  • 添加单词/短语:同样,如果模型从日语翻译成英语,不添加主语会非常不自然。模型必须能够推断主语并自动为句子添加正确的主题,从而添加源句子中没有的额外单词。在本例中,在每个句子的开头插入主语“I”。

有时候还会发生单词省略/添加。例如,在某些语言中,一个概念可以用一个单词来表示,而其他语言可能需要多个单词(例如 电影館 与 “movie theatre”)。另一种情况是使用不定冠词和定冠词,例如英语中的“a”和“the”,而许多东亚语言中并不存在这些冠词。为了捕捉这些复杂性,基于对齐的 SMT 模型使用了许多单独设计的组件。这些组件包括用于提取输入句子的语言模型、用于生成输出序列的翻译模型、用于解释输入和目标语言不同词序的重新排序模型、用于捕捉所用动词/形容词形式的词形变化模型等等 [6]。使用像这样的许多组件的组合带来了挑战。首先,需要大量的特征工程(即,输入文本需要在传递给模型之前进行预处理)。其次,需要频繁的人为干预来维护模型并确保它们作为一个整体和谐地工作。第三(也许是最重要的),组件需要针对每对语言重新设计,这意味着最终的模型并不是通用的翻译器。对于早期的翻译包,英语到法语需要一个模型,英语到德语需要一个模型,等等。这些统计语言模型的表现参差不齐,但总体而言,它们已经足够成功,谷歌于 2006 年 4 月推出了谷歌翻译。


1.3 — 早期神经机器翻译(NMT)

2010 年代初,神经网络的发展开始加速。硬件能力增强,因此训练大型神经网络变得更加可行。2013 年,Kalchbrenner 和 Blunsom 成功应用卷积神经网络 (CNN) 将英语翻译成法语 [7]。此前,CNN 几乎只用于计算机视觉任务,例如图像识别和物体检测,因此这标志着 NLP 研究发生了重大变化。2014 年,世界各地的研究人员也独立利用 RNN 进行翻译,制作了架构更简单、结果最好的模型 [8–9]。总的来说,这些事件构成了我们现在所说的神经机器翻译(NMT) 的开端——当今占主导地位的翻译方法。


1.4 — 编码器-解码器架构

机器翻译问题更广泛地属于序列到序列建模的范畴,也称为序列传导seq2seq。序列到序列模型以一个序列作为输入(例如,组成句子的单词序列、组成图像的像素序列等),并输出另一个序列(例如,翻译、图像的标题等)。在具有里程碑意义的论文《使用 RNN 编码器-解码器学习短语表示进行统计机器翻译》中,作者展示了如何使用具有两个 RNN 的模型捕捉源语言和目标语言中“短语的语义和句法结构”以进行翻译 [8]。主要思想是,可以训练一个网络通过将源文本转换为嵌入向量来对其进行编码,可以训练另一个网络将模型的输出从嵌入解码为目标语言。这些网络分别称为编码器解码。将模型分为编码器和解码器的想法至少在 1997 年就被提出 [10],然而训练 RNN 来完成这些角色是一项突破性的进展。


1.5 早期 NMT 模型的局限性

传统的 RNN 存在一些重大限制,因此创建了长短期记忆 (LSTM) 模型来纠正其中的一些问题 [11]。但是,LSTM 仍然使用循环,因此基本问题尚未完全克服。为了生成更强大的模型,需要一个全新的架构:因此开发了 Transformer。从本质上讲,Transformer 旨在解决传统 RNN 和基于 LSTM 的模型的问题。为了了解这些问题是什么以及它们出现的原因,让我们简要了解一下 RNN 和 LSTM 的工作原理。


1.6 — 循环神经网络(RNN):

RNN 是一类基于您可能熟悉的典型前馈架构的神经网络。关键区别在于,循环神经元的输出在每个时间步骤中作为附加输入与输入序列中的下一个值一起传回。因此,RNN 中的信息流被称为双向的,在整个网络中向前和向后流动。这种区别也是术语“前馈”的来源,以明确网络何时不使用这种循环。

下面的动画展示了一个循环神经元,它有一系列输入X 。该序列由值x_t组成,其中t表示当前时间步长。在 NLP 环境中,输入序列可以是一个句子,其中每个值都是一个词嵌入。在第一个时间步长t=0,神经元的输入是x_0。这个输入首先像往常一样对前馈神经元进行处理:将输入乘以权重w_x,并添加偏置项b以形成加权输出。然后,加权输出通过激活函数,对于循环神经元来说,激活函数通常是 S 型或双曲正切函数tanh。然后,输出值y_0在下一个时间步长与输入序列中的下一个值x_1一起传回神经元。对序列中的每个值继续进行此操作,直到所有值都传递到神经元中。

注意:下图显示了一个简化的情况,其中每个词嵌入x_t都是一个数值,而不是一个向量。因此,在每个时间步骤中,我们都可以传入嵌入值,然后使用这个单个神经元迭代到下一个嵌入值。在实际模型中,使用多个循环神经元,每个嵌入维度一个神经元。这些神经元构成了 RNN 的输入层,并允许使用向量嵌入来编码每个词。


循环神经元的动画

y_0编码了序列中第一个值的一些信息,因此被称为隐藏状态。随着t 的增加,隐藏状态会编码更多关于输入序列中先前值的信息。对于我们的翻译任务,网络将一次传递一个单词的句子,并且每个神经元的输出将根据当前单词x_t以及隐藏状态y_t中编码的句子中的所有先前单词进行计算。与往常一样,权重和偏差项在训练期间使用反向传播迭代改进。循环神经元层连接起来形成 RNN。


1.7 — RNN 的问题:

RNN 有两个主要缺点:

梯度爆炸与消失:

  • 回顾一下 RNN 的结构,我们就可以理解这个问题。每个神经元的输出y_t都依赖于神经元的前一个输出y_{t-1}。如果当前输出很大(即大于 2),则下一个输出将会更大。即使只有几个输入,这也会产生复合效应。考虑一个接受 10 个单词的句子的神经元。较大的y_0值将生成更大的y_1值,经过 10 次迭代复合后将产生一个指数级大的结果。这称为梯度爆炸问题。这对于训练网络来说并不理想,因为它会导致梯度下降算法中出现大的发散步骤,而不是收敛到最佳权重和偏差值的小步骤。简单来说,网络将无法很好地训练,因此性能不佳。另一方面,如果当前神经元的输出很小(即小于 1),则所有后续输出都会较小,从而导致梯度消失问题。在这种情况下,梯度下降的步长会太小,因此权重和偏差项永远不会收敛到最佳值。同样,这将导致网络行为不佳。


有限上下文窗口:

  • 第二个问题与隐藏状态值有关。对于一个短句,你可以想象隐藏状态的单个浮点值可以捕获有关前面单词的大量信息。但是对于大段落(或整本书),隐藏状态值将不再依赖于早期时间步骤的值,而只捕获最近的输入。这称为有限上下文窗口,在 NLP 的上下文中可以被认为是网络“忘记”了前面的单词和句子。


1.8 - LSTM 的改进和缺点

LSTM 旨在解决上述传统 RNN 的两个问题,但从根本上讲,它仍然是一种循环网络,因此受到此类模型固有局限性的影响。在 LSTM 中,神经元通常被称为单位,以表示每个单元的复杂性增加。单元由三个关键组件组成:输入门、输出门和遗忘门。本文不会深入探讨 LSTM 的复杂性,但为了理解 Transformer,关键要点是与传统 RNN 相比,LSTM 改进了上下文窗口的大小。这意味着输入文本中较早出现的单词被更成功地捕获。但是,上下文窗口的大小仍然有限,因此模型在长输入序列中表现不佳。此外,由于 LSTM 引入了更多必须学习的参数,因此与传统 RNN 相比,训练需要更长的时间。

总而言之,Transformer 的设计是为了解决循环模型的两个局限性:

  • 训练时间缓慢
  • 有限的上下文窗口大小


2 — 迈向大型语言模型

2.1 — Transformers 如何克服 RNN 和 LSTM 的局限性

Transformers 通过使用巧妙的架构设计和利用并行计算克服了 LSTM 的两个主要问题。为了缩短训练时间,输入序列中的所有值都是同时而不是串行提取的。通过同时处理句子中的每个单词,该模型可以利用并行计算并将训练工作负载分配到 GPU 的多个核心(甚至多个 GPU)上。第二个重大进展是使用注意力机制,即模型如何确定哪些单词为其他单词提供上下文。使用注意力意味着该模型不依赖于随时间衰减的隐藏状态值,而是依赖于可以直接计算的注意力分数矩阵。如果有足够强大的计算机,这可以有效地将上下文窗口扩展到无限大小。

注:标题“Attention is All You Need”指的是之前的研究尝试将各种形式的注意力机制与其他组件相结合,但作者认为这是不必要的。因此,Transformer 是一个完全依赖注意力的模型。


2.2 — 创建“大型”语言模型

Transformer 利用并行化和注意力机制来实现高效训练。速度的提升使模型可以在网络中拥有更多层,从而可以学习输入数据的更复杂表示。因此,Transformer 可以比旧的网络架构大得多,并且包含更多参数(权重和偏差)。参数数量通常以数十亿计,而 Llama 2 7b(具有 70 亿个参数的模型)等模型被视为小型 LLM。使用大量模型参数是这些语言模型“大型”的特征,因此被称为“大型语言模型”。


2.3 — Transformer 的组件

本系列将详细介绍 Transformer 的每个主要组件,但目前,下面给出了一个高层次的总结。为简洁起见,这里省略了一些组件的更详细信息,并在后续文章中详细介绍。


编码器:

Transformer 基于编码器-解码器架构,就像之前基于 RNN 的翻译模型一样。下图取自“Attention is All You Need Paper” [2],分为两个块。左侧的块称为编码器,右侧的块称为解码器。模型的输入(在我们的例子中是句子中的单词)同时传递到编码器。与按顺序传递输入值的基于 RNN 和 LSTM 的模型相比,这显著提高了速度。因此,Transformer 还可以利用并行计算,从而进一步缩短训练时间。


输入嵌入:

输入序列首先被标记化,将句子分成单词和子单词片段(称为标记)。然后将标记映射到固定长度的向量表示(称为嵌入)。在此阶段,每个标记的嵌入都从预先训练的静态词嵌入查找表中提取。这些嵌入通常具有 512 或 768 维,并且至关重要的是,它们不是取自以前的词嵌入模型,例如 word2vec、GloVe 或 FastText。转换器的嵌入(通常称为转换器嵌入)是在模型的训练阶段学习的。一旦标记被映射到嵌入向量,它们就可以传递到下一个组件进行位置编码。


位置编码:

Transformer 同时处理输入,因此会丢失在 RNN 或 LSTM 等顺序模型中获得的词序的内在信息。为了解决这个问题,需要一个额外的组件来为每个输入添加位置信息。原始论文提出使用交替的正弦和余弦函数来编码位置信息,但一些研究表明,无需添加此类编码即可实现类似的性能 [12]。


注意力块:

注意力机制是 transformer 的关键组件,在很大程度上决定了它的成功。注意力是模型为输入和输出序列中的值提供上下文的方法。例如,这个词bank既可以表示储存钱的建筑物,也可以表示河边的草地。这个句子I withdrew money from the bank.有两个关键词,它们提供了我们理解这个句子所需的上下文:withdrew和money。同样,这个句子We sat on the bank and started fishing.通过这个词提供了上下文fishing。Transformer 使用两种注意力:

  • 自注意力- 模型确定输入序列中的单词应如何关注输入序列中的其他单词,以便得出上下文
  • 交叉注意- 模型确定输出序列中的单词应如何关注输入序列中的单词,以便得出上下文

解码器:

在第一个解码器时间步骤中,解码器接收编码的输入序列并生成一个输出标记。然后将编码的输入与下一个时间步骤的第一个输出标记一起传回解码器。此过程不断重复,直到解码器生成停止标记。然后将标记映射回自然语言单词以生成模型的最终响应。


Transformer 架构图 [2]

2.4 — LLM 的进化树

在《注意力就是你所需要的一切》发布后,一波研究开始改进和完善以注意力为中心的 Transformer 设计。

2018 年发布了两个革命性的模型,现在可以被视为第一批现代 LLM:GPT 和 BERT。GPT,即生成式预训练 Transformer(流行的 ChatGPT 的前身),由 OpenAI 于 2018 年 6 月在其论文《通过生成式预训练提高语言理解能力》[13]中发表。GPT 使用仅解码器架构,这意味着该模型忽略了原始 Transformer 设计的编码器部分。四个月后的 2018 年 10 月,谷歌在其论文《BERT:用于语言理解的深度双向 Transformer 的预训练》[14]中发布了他们的模型 BERT,即来自 Transformer 的双向编码器表示。与 GPT 不同,BERT 是一个仅编码器的模型,忽略了 Transformer 的解码器部分。从那时起,Transformer 设计出现了许多新思路,每年都会产生越来越多的架构。下面展示了 LLM“进化树”的图像,重点介绍了过去几年发布的一些比较著名的模型。每个模型都具有独特的架构和预训练目标。但大致可以分为以下几类:仅编码器、仅解码器和编码器-解码器架构。值得注意的是,树的仅解码器分支比仅编码器和编码器-解码器分支的总和还要密集。这可能部分归因于自回归语言建模目标的流行,以及优先生成连贯且上下文丰富的输出序列的任务。这些想法将在后面的文章中得到进一步发展。


大型语言模型的进化树 [1]

结论

本文回顾了语言模型的历史,从冷战时期的翻译工作一直追溯到当今基于 Transformer 的前沿模型。这样做的目的是激发本系列的后续文章,这些文章将分解 NLP 历史上一些最重要模型的内部工作原理。了解 Transformer 的创建条件有助于理解让我们走到今天这一步的设计决策。未来的文章将探讨使这些模型发挥作用的关键机制,例如自注意力,所以如果您有兴趣了解更多信息,请继续阅读!

欢迎你分享你的作品到我们的平台上: www.shxcj.com 或者 www.2img.ai 让更多的人看到你的才华。

创作不易,觉得不错的话,点个赞吧!!!


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

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

相关文章

揭秘“消费即赚”的循环购模式

大家好,我是吴军,今天我将带您深入探索一种颠覆传统的新型商业模式——循环购模式。在这个模式中,消费者不仅能享受到购物的乐趣,还能通过消费获得实实在在的回报,甚至实现“边消费边赚钱”的奇妙体验。您是否好奇&…

Floyd算法简单理解:不断加中转点更新最短路,实现多对多最短路径

目录 Floyd算法 简单理解 简单例子 Floyd算法简单理解:不断加中转点更新最短路,实现多对多最短路径 Floyd算法 又称为Floyd-Warshall算法,是一种用于求解带权有向图中任意两顶点间的最短路径的算法。该算法利用动态规划的思想,通过不断更新顶点对之间的最短路径来实现。…

Games101——光珊化——深度缓存——shading着色 1

深度缓存 如何解决远近的问题,能正确的覆盖 按照画作来说,先画出远处的物体,再画出近处的物体,近处会将其覆盖,这种算法叫做画家算法 但事实上,排序不仅要花更多的时间,而且排序并不容易&…

Simulink生成代码时端口名称乱码问题

写在最前: 在使用Simulink生成代码时发现端口名称与模型中定义的输如输出端口名称不一致,代码生成的端口名称为随机字符名称。 在生成的H文件中发现,端口定义的结构体名称与模型中实际定义的名称不符。 模型中的定义 检查后发现&#xff0c…

Dbeaver连接人大金仓

Dbeaver 连接 人大金仓。 1、新建驱动管理器 类名:com.kingbase8.Driver URL模板:jdbc:kingbase8://{host}[:{port}]/[{database}] (格式:jdbc:kingbase://IP地址:端口号/数据库名称); 默认端口&#x…

【学术会议征稿】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)

第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024) 2024 8th International Conference on Electrical, Mechanical and Computer Engineering 第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)将于2024年10月25日…

1区老牌神刊,仅37天录用!网友:“这审稿速度救了我一条命”!

关注GZH【欧亚科睿学术】,GET完整版2023JCR分区列表! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 期刊信息概况 【期刊类型】计算机科学类SCIE&EI 【出版社】ELSEVIER出版社 【期刊概况】IF:4.0-5.0,JCR1区,中科院3区…

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测(多输入多分类)

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测(多输入多分类) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯&#xff0…

工业机床CNC设备如何上云?

工业机床CNC设备如何上云? 工业机床的计算机数控(CNC)设备实现远程监控数据上云,是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程,还能通过大数据分析提升生产效率与产品质量&…

模型泛化与工程技巧-模型泛化

1. 模型存在问题 1.1 过拟合 过拟合(Overfitting):模型过于紧密或精确地匹配特定数据集,以致于无法良好地拟合其他数据或预测未来的观察结果的现象。通俗的来讲,就是训练的模型在训练集上的精确度很高,但是在测试集上的精确度却很差的现象。 1.2 如何防止过拟合—数据角度 …

汇聚荣拼多多实力怎么样?

汇聚荣拼多多实力怎么样?拼多多作为中国电子商务行业的后起之秀,其市场表现和商业策略引起了广泛的关注。在回答“汇聚荣拼多多实力怎么样?”这一问题时,我们可以明确地看到,拼多多通过其独特的商业模式和创新策略,在竞争激烈的…

1. CSS Grid 网格布局教程

CSS Grid 网格布局教程 一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器…

推三返一结合消费增值,高效裂变且稳定增值

在当今竞争激烈的商业版图中,企业正寻求创新的路径以吸引顾客、驱动增长。推三返一与消费增值模式作为两大创新策略,正以其独特的裂变机制,为企业开辟出一条通往成功的高速公路。 推三返一模式,其精髓在于通过消费者自身的社交网…

海外文摘杂志社《海外文摘》杂志社2024年第1期目录

作品选 封2,封3-封4 海外艺术 穿越色彩的维度康定斯基的艺术哲学 谢博文1-3 舍伍德安德森《小城畸人》中重复性女性形象塑造分析 吴燕佳 郭思霈4-6 文化艺术《海外文摘》投稿:cnqikantg126.com 浅谈文化润疆视域下的西域汉语诗学 蔡丽7-9 明清时期书法艺术发展 柏则…

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构,是一种特殊的文件,包含着对数据表里所有记录的引用指针,因为索引本身也比较大,所以索引一般是存储在磁盘上的,索引的种类有很多,不过如果没有特殊…

AI工具GitHub Copilot:GitHub和OpenAI联合打造的一款创新的智能代码辅助工具

GitHub Copilot是由GitHub和OpenAI联合打造的一款创新的智能代码辅助工具,它正改变着全球数百万开发者编写代码的方式。这个AI编程助手以其强大的代码补全和生成能力,帮助程序员们以更高的效率、准确性和速度完成编码任务。 喜好儿网查看更多 GitHub C…

leetcode:LCR 018. 验证回文串(python3解法)

难度:简单 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s "A man, a plan, a canal: Panama" 输出: t…

Windows Server 2012 R2查看IIS版本

文章目录 一、方法一1.win R 键打开运行窗口 → 输入 "regedit" → 点击【确定】2.HKEY_LOCAL_MACHINE → SOFTWARE → Microsoft → InetStp 二、方法二1.win R 键打开运行窗口 → 输入 "inetmgr" → 点击【确定】2.点击 【帮助】 → 选择【关于 Intern…

昇思大模型——MindFormers的使用----从零开始安装配置环境

MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。 MindSpore Transform…

短剧新风潮:海外制作的艺术与技术

海外短剧新风潮在艺术与技术两个维度上都展现出了显著的创新与进步。 艺术层面 1、内容创新: (1)多元化与包容性:海外短剧在内容创新上更加注重多元化和包容性,将不同地域、民族的文化元素融入创作中,展现丰…