深入LLM与RAG 原理、实现与应用教程

kuaidelasi · · 344 次点击 · 开始浏览    置顶

一、了解LLM大模型(/s/1Ol42_KOmcon0sc4ze22Ytg 提取码: r53p) LLM大模型,入GPT-3、BERT等,是通过深度学习技术训练的,能够处理、理解和生成自然语言文本的模型。这些模型通常具有数十亿甚至数万亿参数,因此被称为“大模型”。 大模型数据训练:LLM模型使用大规模的文本数据集进行训练,使其能够捕捉到语言的细微差别。 多样性任务适应:经过适当的微调(fine-tuning),LLM可以适用于各种自然语言处理任务,如文本分类、问答系统、文本生成等。 强大的语言理解能力:LLM模型通常具有较好的语言理解能力,能够进行复杂的推理和分析。 二、大模型特点 1、巨大的规模: LLM通常具有巨大的参数规模,可以达到数十亿甚至数千亿个参数。这使得它们能够捕捉更多的语言知识和复杂的语法结构。 2、预训练和微调: LLM采用了预训练和微调的学习方法。它们首先在大规模文本数据上进行预训练(无标签数据),学会了通用的语言表示和知识,然后通过微调(有标签数据)适应特定任务,从而在各种NLP任务中表现出色。 3、上下文感知: LLM在处理文本时具有强大的上下文感知能力,能够理解和生成依赖于前文的文本内容。这使得它们在对话、文章生成和情境理解方面表现出色。 4、多语言支持: LLM可以用于多种语言,不仅限于英语。它们的多语言能力使得跨文化和跨语言的应用变得更加容易。 5、多模态支持: 一些LLM已经扩展到支持多模态数据,包括文本、图像和声音。这意味着它们可以理解和生成不同媒体类型的内容,实现更多样化的应用。 6、涌现能力: LLM表现出令人惊讶的涌现能力,即在大规模模型中出现但在小型模型中不明显的性能提升。这使得它们能够处理更复杂的任务和问题。 7、多领域应用: LLM已经被广泛应用于文本生成、自动翻译、信息检索、摘要生成、聊天机器人、虚拟助手等多个领域,对人们的日常生活和工作产生了深远的影响。 三、LLM能为我们做什么 总体可以概括为:创作内容、处理和分析数据、自动化任务、智能客服 写作:写邮件、计划书、宣传文案、简单的故事等,可以模仿小红书风格、指定作家风格,尤其适合写长篇套话,但目前要写出完整且有趣的小说还比较难。 润色:提供大纲或已有文本,由LLM来扩写、改写,适用于洗稿、避免被查重等场景。 总结:提供会议记录、文章,由LLM自动总结要点和待办。 翻译:多语言翻译、白话文和文言文翻译,结合特定prompt进行多轮翻译可以实现惊艳的结果。 数据分析:从报告中提取数据、分析数据,做成可视化图表。 编程:Github Copilot,程序员都应该用。 提取结构化信息:从用户的自然语言中,提取出结构化的信息,方便传给程序做自动化处理。 智能助手:利用Agent实现工作流 智能客服:基于RAG实现智能客服 四、大模型是厚积薄发的 大模型不是一蹴而就的,发展的早期阶段被称为预训练模型阶段,其核心技术是迁移学习。当目标应用场景的数据不足时,模型首先在大规模的公开数据集上进行训练,然后迁移到特定场景中,并通过少量的目标场景数据进行微调,以达到所需的性能。这种在公开数据集上训练的深度网络模型,被称为“预训练模型”。使用预训练模型可以显著减少下游任务对标注数据的依赖,有效处理数据标注困难的新场景。 2018年,大规模自监督神经网络的出现标志着一次真正的革命。这类模型的核心在于通过自然语言句子创造预测任务,例如预测下一个词或预测被掩码的词或短语。这使得大量高质量的文本语料成为自动获取的海量标注数据源。通过从自身预测错误中学习超过10亿次,模型逐渐积累了丰富的语言和世界知识,从而在问答、文本分类等更有意义的任务中展现出优异的性能。这正是BERT和GPT-3等大规模预训练语言模型的精髓,也是所谓的“大模型”。 五、分词(tokenization)是把输入文本切分成有意义的子单元(tokens)。通过以下代码,根据我们的数据生成一个新的分词器: from tokenizers import Tokenizer from tokenizers.models import BPE from tokenizers.trainers import BpeTrainer from tokenizers.normalizers import NFKC, Sequence from tokenizers.pre_tokenizers import ByteLevel from tokenizers.decoders import ByteLevel as ByteLevelDecoder from transformers import GPT2TokenizerFast # 构建分词器 GPT2 基于 BPE 算法实现 tokenizer = Tokenizer(BPE(unk_token="<unk>")) tokenizer.normalizer = Sequence([NFKC()]) tokenizer.pre_tokenizer = ByteLevel() tokenizer.decoder = ByteLevelDecoder() special_tokens = ["<s>","<pad>","</s>","<unk>","<mask>"] trainer = BpeTrainer(vocab_size=50000, show_progress=True, inital_alphabet=ByteLevel.alphabet(), special_tokens=special_tokens) # 创建 text 文件夹,并把 sanguoyanyi.txt 下载,放到目录里 files = ["text/sanguoyanyi.txt"] # 开始训练了 tokenizer.train(files, trainer) # 把训练的分词通过GPT2保存起来,以方便后续使用 newtokenizer = GPT2TokenizerFast(tokenizer_object=tokenizer) newtokenizer.save_pretrained("./sanguo")

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

344 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传