ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

预训练大语言模型(GPT)实战:从文本生成原理到 Zero-Shot 任务解决

预训练大语言模型(GPT)实战:从文本生成原理到 Zero-Shot 任务解决 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本文是 AI-For-Beginners 课程《Pre-Trained Large Language Models》一课的完整技术解读配套文档位于 translations/da/lessons/5-NLP/20-LangModels/README.md。课程以 GPTGenerative Pre-Trained Transformer家族为核心讲解大语言模型如何在不做任何下游微调的情况下仅凭文本生成这一任务形式解决多种 NLP 问题。读完本文你将掌握文本生成的概率本质与困惑度Perplexity指标、GPT-2/GPT-3/GPT-4 家族能力演进、Prompt Engineering 的核心思想以及基于 Hugging Facetransformers库用 OpenAI-GPT 模型进行文本生成、采样策略调节与微调准备的一整套可运行实战方案。从标注数据 针对性训练到无下游训练的通用能力在课程此前的所有任务中我们的做法都是准备一个带标签的数据集训练神经网络去完成某个特定任务。即便采用 BERT 这类大型 Transformer 模型其标准流程也是先以自监督语言建模方式构建语言模型再通过额外的领域特定训练微调去适配具体的下游任务。而本课要介绍的 GPT 打破了这个惯例——大量研究表明大型语言模型可以不经过任何领域特定训练直接解决许多任务。这类模型家族的统称就是GPTGenerative Pre-Trained Transformer生成式预训练 Transformer。这一思想在论文《Language Models are Unsupervised Multitask Learners》中被系统阐述理解文本的本质就是能够生产文本因此预测下一段文字这一通用任务形式可以承载大量其他任务又因为模型是在涵盖人类知识的海量文本上训练的它天然地知道了关于这个世界的广泛知识。正如课程文档中的比喻人类大量地通过阅读来学习GPT 网络也是如此——能理解并产出文本本身就意味着对周遭世界有所了解。GPT 的预训练范式与前序课程的承接关系可参考 语言建模一课CBoW、Skip-gram 等无监督词向量训练与 Transformer 一课自注意力、位置编码、多头注意力与 BERT 架构。GPT 正是站在 BERT 式自监督预训练与 Transformer 并行化架构之上进一步把语言建模本身变成了万能的任务接口。文本生成的概率本质与困惑度条件概率为什么预测下一个词就是理解世界文本生成网络的工作原理是预测下一个词的概率。对于一个词序列模型输出的核心是下一个词的无条件概率 $$P(w_N)$$而无条件概率大致对应这个词在语料库中出现的频率——这是 N-Gram 等经典方法的上限。GPT 的过人之处在于它能给出条件概率——在已知前文的前提下预测下一个词$$ P(w_N | w_{n-1}, \dots, w_0) $$也就是说模型不只统计词频而是学会了在什么上下文中该出现什么词这正是语言理解的关键。课程配套的 NLP 模块总览见 lessons/5-NLP/README.md其中把文本生成明确定义为根据某种文本提示预测下一个字母/词的分类任务并指出 GPT-3 这类先进模型可以借助 prompt programming / prompt engineering 技术解决分类等其他 NLP 任务。困惑度Perplexity不依赖任务数据集的内在质量指标如何在没有任务特定数据集的情况下评估一个语言模型的质量课程给出的答案是困惑度Perplexity——一种内在指标。它的直觉建立在句子的概率之上如果模型认为某句话像是真实文本就会给它高概率说明模型没有被这句话困惑反之对像Can it does what?这种病句模型应给出低概率。当我们把真实语料中的句子喂给模型时期望它们获得高概率从而对应低困惑度。数学上困惑度定义为测试数据集概率的归一化逆概率$$ \mathrm{Perplexity}(W) \sqrt[N]{1\over P(W_1,\dots,W_N)} $$困惑度越低模型对文本的预测能力越强。因为不需要任务专用标注它是衡量语言模型通用能力最常用的内在指标之一。快速体验GPT 驱动的文本补全编辑器如果你想立刻感受文本生成课程推荐使用 Hugging Face 提供的 GPT 驱动文本编辑器基于 GPT-2 large 模型进行实验输入一段文字的开头按下[TAB]键编辑器会给出若干补全建议如果建议太短或不合意再次按 [TAB] 即可获得更多选项包括更长的文本片段。这是体验条件概率采样最直观的方式也是后续用代码复现同样能力的铺垫。GPT 是一个家族而非单一模型GPT 并非一个模型而是由 OpenAI 开发并训练的一整套模型集合。课程给出了三代代表性模型的对比| GPT-2 | GPT-3 | GPT-4 | | -- | -- | -- | | 语言模型参数量最高达15 亿1.5 billion| 语言模型参数量最高达1750 亿175 billion| 参数量约100T可接受图像与文本输入并生成文本输出 |从这张表格可以看到两条清晰的演进主线规模曲线GPT-21.5B→ GPT-3175B→ GPT-4约 100T参数量跨数量级增长带来更强的通用能力模态扩展GPT-4 已从纯文本扩展到多模态输入图像 文本输出仍以文本为主。在部署层面GPT-3 与 GPT-4 同时提供两条商用路径作为 Microsoft Azure 上的认知服务Azure OpenAI Service以及通过 OpenAI API 调用。这也意味着课程中的实验既可以基于开源权重如openai-gpt、gpt2在本地推理也可以转向云端 API 使用更强大的闭源模型。Prompt Engineering用输入指令驱动任务GPT 在海量数据上训练学会了理解语言与代码因此它会根据输入prompt生成输出。这里的 prompt 就是提供给 GPT 的输入或查询其中包含模型需要完成任务的指令。要想获得理想结果你需要最有效的提示词——精心选择正确的词、格式、短语甚至符号这套方法即Prompt Engineering提示工程。Prompt Engineering 之所以存在正是因为 GPT 遵循的是文本生成这一通用范式不同任务的边界不再由架构决定而由提示词划出。你在提示中给出的例子、格式模板和约束会通过条件概率分布影响模型后续生成的每一个词。课程配套的实践 Notebook 用大量例子证明了只要设计得当openai-gpt 这样的早期开源模型也能在零微调的情况下临时扮演同义词生成器、情感分类器、翻译器和推荐系统。动手实验用 Hugging Face Transformers 玩转 OpenAI-GPT环境准备本文实验依赖 Hugging Facetransformers库与 PyTorch。课程 NLP 模块提供了两个依赖清单文件可按框架选择PyTorchlessons/5-NLP/requirements-pytorch.txt包含torch、transformers5.5.0、nltk等TensorFlowlessons/5-NLP/requirements-tf.txt安装方式# 使用本地 Python 环境运行本课程时 pip install -r lessons/5-NLP/requirements-pytorch.txt提示本模块部分示例会加载较大的模型建议在 GPU 机器上运行以减少等待时间若遇到 GPU 显存不足可考虑减小 minibatch 大小详见 lessons/5-NLP/README.md 中的 GPU 注意事项。第一步建立文本生成 Pipeline完整代码在课程 Notebook GPT-PyTorch.ipynb 中。核心代码如下from transformers import pipeline model_name openai-gpt generator pipeline(text-generation, modelmodel_name) generator(Hello! I am a neural network, and I want to say that, max_length100, num_return_sequences5)运行后会下载模型权重openai-gpt的model.safetensors约 479M及配套的vocab.json、merges.txt、tokenizer.json等词表文件。pipeline(text-generation, ...)会自动装配分词器与模型并把接续上文生成文本封装成一个可调用对象。调用时传入了两个关键参数max_length100生成文本的最大长度上限num_return_sequences5返回 5 条不同的补全结果。上述示例生成的 5 条续写尽管前缀完全相同Hello! I am a neural network, and I want to say that却走向了截然不同的叙事——道歉、祝福、战场对话、科考故事、战场决策——这正是模型在条件概率分布上多次采样的结果也直观体现了大语言模型懂语言更懂世界的覆盖面。从源码结构看Notebook 的第一次执行还会打印若干警告例如Some weights of OpenAIGPTLMHeadModel were not initialized ... [position_ids]提示position_ids是新建权重以及 xformers 未安装的提示。前者属于正常现象——position_ids属于无需训练的辅助张量后者表示若想加速训练可pip install xformers不影响基本推理。Prompt Engineering 实战四个零微调任务示例Notebook 在Prompt Engineering一节强调在不少场景中只要设计出正确的 promptopenai-gpt 生成能力可以直接拿来用。下面四个示例逐一展示了同一生成器如何扮演不同角色。示例 1同义词生成generator(Synonyms of a word cat:, max_length20, num_return_sequences5)输出示例片段Synonyms of a word cat: the same cat i used to stare at, and you inSynonyms of a word cat: cat of the woods, cat of the hills, cat ofSynonyms of a word cat: big cat. but how come, we didnt hear it前缀Synonyms of a word cat:已经把任务约定为列出 cat 的同义词模型无需训练即沿此语义续写。示例 2情感极性标注文本分类的生成式表达generator(I love when you say this - Positive\nI have myself - Negative\nThis is awful for you to say this -, max_length40, num_return_sequences5)这里用- Positive/- Negative的示例-标签格式给出情感分类范例模型将续写出下一条句子的极性判断尽管早期模型输出不稳定但范式完全成立。这正是 few-shot 提示的基本形态把标注样例直接写进提示词。示例 3机器翻译零样本跨语言generator(Translate English to French: cat chat, dog chien, student , top_k50, max_length30, num_return_sequences3)cat chat, dog chien是英文 法文的对译示例模型据此猜测student 之后应输出法语译文。此处首次出现top_k50参数——在采样时只从概率最高的 50 个候选词中挑选限制低概率怪词的干扰。示例 4推荐系统生成式协同过滤generator(People who liked the movie The Matrix also liked , max_length40, num_return_sequences5)模型在语料中学到过大量喜欢 X 的人也喜欢 Y的推荐文本模式因此能自然续写出类似的电影推荐语句。这展示了文本生成作为通用接口的灵活性——同一模型零参数改动切换任务只需切换提示。文本采样策略从贪婪到多样化的生成Notebook 在Text Sampling Strategies一节深入讲解了文本生成的采样策略这决定了从条件概率分布中挑哪个词的方式直接影响输出的多样性、连贯性与创造性。贪婪策略Greedy前面的所有示例默认使用贪婪采样每一步直接选取概率最高的下一个词。它确定性强、流畅度高但容易导致重复和单调。示例代码prompt It was early evening when I can back from work. I usually work late, but this time it was an exception. When I entered a room, I saw generator(prompt, max_length100, num_return_sequences5)同一条 prompt 得到的 5 段续写剧情走向差异明显朋友、母亲、黑暗房间、陌生女子、空桌椅说明即使在贪婪模式下早期模型对长文本的控制力也有限。束搜索Beam SearchBeam Search允许生成器同时探索多个方向的文本即多条beam最终选择整体得分最高的候选序列。启用方式是指定num_beams参数还可配合no_repeat_ngram_size惩罚模型重复特定大小的 n-gramgenerator(prompt, max_length100, num_return_sequences5, num_beams10, no_repeat_ngram_size2)与贪婪相比num_beams10同时维护 10 条候选路径生成结果明显更连贯、更少跑题no_repeat_ngram_size2则抑制 2-gram相邻双词的重复出现减少文本回绕。随机采样Sampling与温度Sampling非确定性地选择下一个词从模型返回的概率分布中进行随机抽取而不是死取最大值。启用方式是do_sampleTrue并可用temperature控制模型是更激进还是更保守generator(prompt, max_length100, do_sampleTrue, temperature0.8)temperature低于 1 会让概率分布更尖锐偏向高概率词更确定高于 1 会让分布更平坦低概率词更常被选中更有创造性等于 1 保持原始分布。示例中使用temperature0.8得到了一段连贯且带有人物对话的续写。top-k 与 top-p裁剪采样候选集除了温度采样还可附加两个裁剪参数top_k只从概率最高的前 k 个词中采样。例如top_k50表示候选词收缩到前 50 个降低生成奇怪低概率词的几率top_p核采样选取累计概率刚好超过 p的最小高概率词子集。例如top_p0.9即保留累计概率 90% 的高频词再在其中采样。两者目的一致——在多样性与文本质量之间取得平衡。你可以自由组合这些参数如do_sampleTrue, top_k50, top_p0.9, temperature0.8来反复实验观察输出风格的变化。模型微调在保留语言能力的前提下定制风格文本生成的采样参数只能影响生成时的风格无法改变模型学到的知识。若要真正定制输出风格例如让模型以特定口吻、特定领域术语写作就需要微调fine-tuning在你自己的数据集上继续训练模型。微调的关键价值在于既定制了文本风格又保留了语言模型的核心能力即不会像从零训练那样丢失通用语言理解。课程 Notebook 明确指出了这条路径——基于 Azure OpenAI 服务的微调功能用自有数据集对模型进行二次训练。对开源模型而言Hugging Facetransformers同样提供Trainer/TrainingArguments等工具完成同类工作且本模块的依赖见 requirements-pytorch.txt已包含相关库。总结Zero-Shot 与 Few-Shot 时代的语言模型本课的核心结论是新一代通用预训练语言模型不仅仅建模语言的结构其内部还蕴藏了海量的自然语言知识。因此它们可以在zero-shot零样本不提供任何示例或few-shot少样本在 prompt 中给出少量示例的设置下直接、有效地解决相当一部分 NLP 任务。回顾全课的关键知识链范式转变从标注数据 下游训练走向预训练 文本生成即任务GPT 家族评估指标用困惑度Perplexity在不依赖任务数据的情况下度量模型质量提示工程通过精心设计词、格式与示例让同一个生成器切换任务角色采样策略贪婪、束搜索、随机采样、温度、top-k / top-p 决定生成的多样性与质量微调在保留语言能力的基础上用自有数据定制输出风格。继续深入学习可直接运行课程 Notebook GPT-PyTorch.ipynbGenerating text with OpenAI-GPT and Hugging Face Transformers逐一复现上述代码与实验NLP 模块其余课程词向量、语言建模、RNN、生成网络、Transformer、命名实体识别等的完整目录见 lessons/5-NLP/README.md。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐PaddleNLP 中的 ERNIE-M 多语言预训练模型从回译预训练原理到跨语言任务实战PaddleNLP 中的 ERNIE M 多语言预训练模型从回译预训练原理到跨语言任务实战 导读 ERNIE M 是百度提出的一种基于回译机制的多语言语言模型人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP GPT 混合并行训练与 Zero-shot 文本生成实战指南PaddleNLP GPT 混合并行训练与 Zero shot 文本生成实战指南 本指南以 PaddleNLP 仓库 slm/model_zoo/gpt 3/p人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP预训练大语言模型实战从 GPT 文本生成、困惑度到提示工程AI-For-Beginners 课程预训练大语言模型实战从 GPT 文本生成、困惑度到提示工程AI For Beginners 课程 导读 本篇文章是 AI For Beginners ht教程人工智能机器学习深度学习上一篇猫抓 Cat-Catch 2.7三步保存网页视频音频资源嗅探扩展 10 分钟上手指引下一篇Corrosion让Rust与CMake无缝集成的终极工具彻底解决跨语言项目难题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表