ARTICLE DETAIL

资讯详情

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

预训练大语言模型实战:从 GPT 文本生成、困惑度到提示工程(AI-For-Beginners 课程)

预训练大语言模型实战:从 GPT 文本生成、困惑度到提示工程(AI-For-Beginners 课程) 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载导读本篇文章是 AI-For-Beginners 课程 NLP 章节「20-LangModels」的完整技术讲解核心主题是预训练大语言模型Pre-trained Large Language Models为什么 GPT 这类模型无需下游任务专项训练就能解决大量 NLP 任务如何用困惑度Perplexity衡量生成质量如何通过提示工程Prompt Engineering与采样策略Sampling Strategies控制文本生成效果。读完本文你将掌握基于 Hugging Facetransformers库调用 OpenAI GPT 模型进行文本生成与提示工程的完整实操方法并理解 GPT 家族、beam search、temperature、top-k / top-p 等核心概念在实际代码中的含义。从「专用模型」到「通用模型」GPT 的范式转变在本课程此前的任务中参见 13-TextRep、15-LanguageModeling、16-RNN、18-Transformers 等章节我们一直在用带标签的数据集训练神经网络去完成某一特定任务。而对于 BERT 这类大型 Transformer 模型则先以自监督self-supervised的语言建模方式构建语言模型再通过领域专属训练将其特化到具体的下游任务上——这一过程被称为迁移学习transfer learning。BERT 预训练时通过对大规模无标注语料WikiPedia 书籍执行预测被掩码的单词这一任务吸收了大量的语言理解能力见 18-Transformers/README.md。然而研究已经证明大型语言模型可以在完全没有领域专属训练的情况下解决许多任务。能够做到这一点的一族模型被称为GPTGenerative Pre-Trained Transformer生成式预训练 Transformer。这一思想集中体现在论文Language Models are Unsupervised Multitask Learners中其核心论点在于许多其他任务都可以用「文本生成」来建模——因为理解文本本质上就意味着能够生成文本而模型在海量涵盖人类知识的文本上训练自然也就具备了关于各个领域的广泛知识。理解并能够产出文本也意味着对周围世界有所了解。人类在很大程度上也是通过阅读来学习的GPT 网络在这点上与人相似。条件概率GPT 的生成原理文本生成网络的工作方式是预测下一个词的概率 $P(w_N)$。但下一个词的无条件概率只等于该词在语料库中出现的频率。GPT 能够给出的是在给定前文条件下的条件概率$$ P(w_N \mid w_{N-1}, \dots, w_0) $$正是这种根据前文预测下一个词的机制使模型在续写文本时展现出对世界知识的把握。文本生成质量度量困惑度Perplexity语言生成模型的质量可以用困惑度Perplexity来定义。它是一个内在指标intrinsic metric允许我们在不借助任何任务专属数据集的情况下衡量模型质量。其基础是句子的概率这一概念模型会给更像真实文本的句子分配高概率即模型不会被它搞糊涂反之对不太合理的句子如Can it does what?给出低概率。当我们把真实语料中的句子喂给模型时期望它们具有高概率、从而低困惑度。数学上困惑度被定义为测试集概率的归一化倒数$$ \mathrm{Perplexity}(W) \sqrt[N]{1\over P(W_1,\dots,W_N)} $$直观理解困惑度越低模型对真实文本的意外程度越低生成质量越好。GPT 是一个家族GPT 并非单一模型而是由 OpenAI 开发训练的一系列模型。课程文档给出的家族概览如下| GPT-2 | GPT-3 | GPT-4 | | -- | -- | -- | | 语言模型参数量最高 15 亿1.5 billion | 语言模型参数量最高 1750 亿175 billion | 100T 参数同时接受图像与文本输入并输出文本 |GPT-3 和 GPT-4 模型可通过 Microsoft Azure 的认知服务Azure OpenAI Service以及 OpenAI API 获取。提示工程Prompt Engineering由于 GPT 在海量数据上训练以理解语言和代码它会针对输入即提示 / prompt给出输出。提示是 GPT 的输入或查询用户通过它向模型下达要完成任务的指令。要获得期望的结果需要设计最有效的提示——这涉及选择合适的词、格式、短语甚至符号。这一方法即提示工程Prompt Engineering。在本仓库的配套 Notebook GPT-PyTorch.ipynb 中提示工程被直观地演示出来同一个openai-gpt生成器仅通过更换不同的提示前缀就能承担同义词查询、情感倾向预测、翻译示例、电影推荐等多种任务。实战一用 Hugging Face Transformers 实例化文本生成管线课程提供了完整的示例 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)执行后返回 5 段以给定前缀开头的续写文本例如[{generated_text: Hello! I am a neural network, and I want to say that i apologize for not coming to you yourself, for not helping you, ...}, ... ]参数说明| 参数 | 作用 | | -- | -- | |model_name| 使用的预训练模型标识符示例为openai-gpt即 OpenAI GPT 原始模型也可换为gpt2等 | |pipeline(text-generation, ...)| Hugging Face 提供的文本生成任务管线自动完成分词、模型加载与解码 | |max_length| 生成文本的最大长度含提示部分示例为 100 | |num_return_sequences| 一次返回的候选续写条数示例为 5 |首次运行会从 Hugging Face Hub 下载模型权重、词表vocab.json与合并规则merges.txt等文件。从 Notebook 中的输出可见加载openai-gpt时会出现类似Some weights of OpenAIGPTLMHeadModel were not initialized ... [position_ids]的提示这是该模型在库中新增的参数不影响直接做推理与生成。运行环境准备课程 NLP 章节建议在本地安装依赖后运行 NotebookPyTorch 与 TensorFlow 分别对应pip install -r lessons/5-NLP/requirements-pytorch.txt pip install -r lessons/5-NLP/requirements-tf.txt其中 PyTorch 依赖清单见 lessons/5-NLP/requirements-pytorch.txt包含transformers、torch、nltk、gensim、scikit-learn等 NLP 常用库。由于训练大模型耗时较长NLP 章节首页 特别提醒优先使用带 GPU 的机器运行 Notebook若遇到 GPU 显存不足可考虑减小 minibatch 大小老版本 TensorFlow 在一个 Python kernel 中训练多个模型时可能不释放显存可通过tf.config.experimental.set_memory_growth(physical_devices[0], True)配置按需增长式分配显存。实战二提示工程五连击在 Notebook 中同一个生成器通过设计不同提示即可零训练完成多种任务1. 同义词查询generator(Synonyms of a word cat:, max_length20, num_return_sequences5)2. 情感倾向zero-shot 分类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 / in-context learning用法。3. 翻译示例generator(Translate English to French: cat chat, dog chien, student , top_k50, max_length30, num_return_sequences3)4. 推荐系统式续写generator(People who liked the movie The Matrix also liked , max_length40, num_return_sequences5)5. 开放式故事续写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)以上示例均运行于 GPT-PyTorch.ipynb。值得注意的是早期openai-gpt模型的 zero-shot 翻译/情感能力相对有限输出会混入噪声新一代 GPT-3/GPT-4 在这些任务上的表现显著更强。提示格式的选择分隔符、示例数量、措辞会直接决定输出质量这正是提示工程的核心价值。实战三文本采样策略Sampling StrategiesNotebook 进一步演示了三种主流的解码/采样策略它们决定下一个词如何被选中1. 贪心策略Greedy这是最朴素的策略每一步都选择概率最高的词。优点是确定性缺点是一旦选错后续难以纠正容易产生重复、平庸的文本。前面大部分示例默认采用该策略。2. 束搜索Beam Search束搜索允许生成器同时探索多个方向束 / beams并最终挑选整体得分最高的候选得到更连贯、更合理的输出generator(prompt, max_length100, num_return_sequences5, num_beams10, no_repeat_ngram_size2)| 参数 | 作用 | | -- | -- | |num_beams| 同时探索的束的数量越大搜索越充分、开销越高 | |no_repeat_ngram_size| 惩罚模型重复指定大小的 n-gram。设为 2 表示避免连续出现相同的二元组显著降低文本重复 |3. 随机采样Sampling采样根据模型返回的概率分布非确定性地选取下一个词generator(prompt, max_length100, do_sampleTrue, temperature0.8)do_sampleTrue开启随机采样temperature控制随机性/确定性。temperature 越低模型越接近贪心、输出越保守越高则越发散、更具创造性。采样还可以配合两个剪枝参数使用| 参数 | 作用 | | -- | -- | |top_k| 只考虑概率最高的前 K 个候选词最小化选到奇怪的低概率词的概率 | |top_p| 选择概率之和刚好大于 p的最小候选子集核采样 nucleus sampling与 top-k 思路类似但更动态 |Notebook 明确鼓励读者自行实验top_k与top_p与上述参数组合观察对生成效果的影响。进阶Fine-Tuning 微调模型如果你希望调整生成文本的风格同时保留语言模型绝大部分能力可以对模型在你的数据集上进行微调fine-tuning。这是从通用语言模型走向领域/风格适配的常规路径也是课程所介绍的 GPT 使用方式的延伸——预训练提供语言与知识底座微调与提示工程则负责把能力引导到具体用途上。结语新的通用预训练语言模型不仅建模了语言结构还蕴含了海量的自然语言知识。因此它们可以在zero-shot零样本或few-shot少样本的设置下高效解决不少 NLP 任务——这正是一条与每个任务都要单独标注、单独训练完全不同的技术路线。本仓库配套的 GPT-PyTorch.ipynb 是理解这一范式的第一手实践材料建议在安装好 NLP 依赖 后动手运行逐一尝试提示工程与采样策略参数。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐fairseq 神经语言建模实战指南预训练模型加载、WikiText-103 训练与困惑度评估全流程fairseq 神经语言建模实战指南预训练模型加载、WikiText 103 训练与困惑度评估全流程 导读 本文基于本仓库 infoxlm/fairseq 中人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调在 generative-ai-for-beginners 课程中理解并实践 LLM 微调从 Few-Shot 提示到模型再训练在 generative ai for beginners 课程中理解并实践 LLM 微调从 Few Shot 提示到模型再训练 本篇技术指南基于 gener教程人工智能大模型generative-ai-for-beginners 第 18 课实战如何微调Fine-Tuning大语言模型——从训练数据准备到模型验证generative ai for beginners 第 18 课实战如何微调Fine Tuning大语言模型——从训练数据准备到模型验证 本篇技术指南教程人工智能大模型上一篇Kubernetes Python Client 文档本地构建指南基于 Sphinx 从源码生成 API 文档下一篇医疗影像开发的终极利器DCMTK完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表