当前位置:   article > 正文

从零开始学习大模型-第四章-如何创建一个大模型_大模型构建的步骤

大模型构建的步骤

本章我们以大语言模型(LLM)为例,来介绍如何创建一个大语言模型,本章前部分主要以理论知识来讲如何创建大语言模型,后部分内容以实际例子来部署运行一个开源大语言模型。

构建一个商业化的大语言模型是一项庞大而复杂的任务,需要大量的计算资源、数据集、专业知识和团队合作。尽管一个人理论上可能进行这样的尝试操作,但在实际中,单个人完成这样的任务是非常困难的。

下面我们简单介绍一下大语言模型是如何实现的:

大模型的创建,需要大量的数据作为训练集,首先要做的是对数据的收集,数据包括公开的网络文本、书籍、学术论文、社交媒体内容、新闻报道等。数据需要多样化,需涵盖各种主题、语境、语法结构和风格。

数据收集完成后,需要对数据进行预处理,对数据进行清洗,去除噪声、格式错误的信息和无关信息。对数据进行分词(Tokenization),将文本转换成模型可以理解的形式。可能还需要进行词汇表构建、填充或截断序列、以及对特殊字符和未知词进行处理。

什么是分词(Tokenization):

分词(Tokenization)在自然语言处理(NLP, Natural Language Processing)领域中是指将连续的文本序列分割成有意义的、可处理的基本单元的过程。这些基本单元通常被称为“tokens”,可以是单个词语、字符、子词或短语等,具体取决于应用场景和目标语言的特点。

Tokenization 的目的是为了将原始文本转化为计算机程序能够理解和处理的形式,使得后续的文本分析、信息检索、机器翻译、情感分析、语法分析等一系列自然语言处理任务得以顺利进行。此外,Tokenization 还包括对特殊符号、数字、标点符号等非词汇元素的识别和处理,它们同样可以被视为独立的 tokens。

完成数据预处理后,我们需要选择一个适合大规模训练的架构,如Transformer(如GPT系列、BERT)或其他先进的神经网络模型。设计模型的层级结构,确定隐藏层、注意力机制、自回归或双向编码器结构等。

自然语言处理架构发展历程:

神经网络语言模型(Neural Network Language Model,NNLM)是一种利用神经网络来建模自然语言的统计模型。它可以用来预测文本序列中下一个词或者一段文本的概率分布,从而实现自然语言的生成、词语预测、文本分类等任务。

多任务学习(Multi-Task Learning,MTL)是一种机器学习方法,旨在通过同时学习多个相关任务来提高整体性能。在多任务学习中,模型被设计成可以同时处理多个任务的输入,并通过共享底层表示来提取数据中的共享信息和模式。

词嵌入(Word Embeddings)是一种将词语映射到连续向量空间中的技术。它是自然语言处理领域中的一项重要技术,被广泛应用于词语表示、文本分类、语义分析等任务中。词嵌入的基本思想是将每个词语表示为一个固定长度的向量,使得相似含义的词语在向量空间中的距离较近,而不相似的词语在向量空间中的距离较远。通过这种方式,词嵌入能够捕捉词语之间的语义和语法信息,提供更丰富的词语表示。

自然语言神经网络,此阶段包含了循环神经网络(Recurrent Neural Networks,RNN)、长短期记忆网络(Long Short-Term Memory,LSTM)、门控循环单元(Gated Recurrent Unit,GRU)、卷积神经网络(Convolutional Neural Networks,CNN)等。

序列到序列模型(Sequence-to-Sequence,Seq2Seq)是一种常用的神经网络架构,用于处理序列数据,特别适用于自然语言处理任务,如机器翻译、文本摘要、对话系统等。

注意力机制_(Attention Mechanism)是一种用于神经网络模型的技术,主要用于处理序列数据和对应关系。它允许模型动态地分配注意力(权重)给输入序列中的不同部分,以便模型在处理序列时能够更加关注重要的部分,从而提高模型性能和泛化能力。_Transformer是一种基于注意力机制的神经网络架构,由Vaswani等人于2017年在论文《Attention is All You Need》中提出。它在自然语言处理领域取得了巨大的成功,并成为了一种广泛应用于序列建模任务的标准架构之一。Transformer的核心思想是完全抛弃了传统的循环神经网络(RNN)或者卷积神经网络(CNN),而是采用了自注意力机制(Self-Attention Mechanism)。自注意力机制允许模型在计算序列的表示时,对序列中的不同位置进行加权,从而能够更好地捕捉长距离依赖关系,并且能够并行地处理输入序列中的所有位置。

预训练语言模型(Pre-trained Language Models)是指在大规模文本数据上进行预训练的神经网络模型,旨在学习丰富的语言表示。这些模型通常采用无监督或半监督的方式,在海量的文本数据上进行自监督学习,从而学习到了丰富的语言知识和语义表示预训练语言模型的兴起始于2018年,随着Transformer架构的发展,以及更大规模的数据和更强大的计算资源的可用性,预训练语言模型在自然语言处理领域引起了巨大的关注和重大的进展

完成模型的选择后,我们需要对模型进行配置及训练准备,首先要定义模型参数量,根据可用计算资源决定模型大小,准备硬件设备或云计算资源,大模型通常需要GPU集群或者专门的AI加速器(如TPU)。设置训练参数,如学习率、优化器、损失函数、批次大小等。

在准备完成上述操作后,我们使用准备好的数据集来训练模型,这需要大量的计算资源和时间,以及合适的超参数调优。大量数据需要在分布式环境中训练,通过数据并行、模型并行等方式加速训练过程。持续监控训练过程,调整超参数以达到最佳性能。

进行模型训练之后,我们使用验证集或测试集来评估模型的性能,并对模型进行调试和优化。这可能涉及到对模型进行微调、调整超参数等操作。

最后我们对模型部署及应用模型,将训练好的模型集成到应用程序中,提供API服务或是嵌入到终端产品中。需要考虑模型的推理速度、内存占用及实际应用中的伦理、隐私和社会影响等问题。

我们经常用的GPT(Generative Pre-trained Transformer)是基于Transformer架构的。GPT是由OpenAI提出的一系列预训练模型,其核心架构是Transformer。Transformer是一个使用自注意力机制来处理序列数据的深度学习模型,它在2017年的论文《Attention is All You Need》中被提出,并在自然语言处理领域取得了巨大的成功。

GPT模型使用了Transformer的编码器-解码器结构,但在解码器部分采用了自回归(autoregressive)的方式,使得模型能够生成连续的文本序列。GPT系列模型在预训练阶段使用大规模文本数据进行训练,然后通过微调或迁移学习来适应特定的自然语言处理任务。因此,可以说GPT是建立在Transformer架构之上的,并在此基础上做出了进一步的创新和优化。

论文首页截图:

讲述概念性知识后,我们要动手实践一下,我们先安装一个大模型,来体验大模型的使用效果,后续再讲其工作原理。

我们使用开源的大模型ollama,此模型支持CPU及GPU部署。

ollama支持的模型如下:

模型安装:

ollama的官网地址为https://ollama.com,如下图:

此大模型支持macOS,Linux,和Windows,点击下载按键,选择合适你的操作系统版本下载。

或者我们采用Docker安装:

安装CPU版本:

docker pull ollama/ollama``   ``docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama``   
  • 1

如果您主机存在Nvidia GPU,则执行如下安装命令:

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \`    `| sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo``   ``   ``sudo yum install -y nvidia-container-toolkit``   ``sudo nvidia-ctk runtime configure --runtime=docker``sudo systemctl restart docker``   ``docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
  • 1

用户界面安装:

我们使用open-webui作为用户接口,

github地址:

https://github.com/open-webui/open-webui

电脑本机部署环境要求

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签