文本生成
文章平均质量分 81
文本生成
征途黯然.
Hold me hard and mellow.
展开
-
【langchain】langchain调用huggingface本地模型基础demo
目前网上的langchain教程大多数都是关于如何调用OpenAI等远程模型,对于本地模型的调用示例写法比较少。而且langchain也在不停迭代,文档也比较杂。因此,本文将向大家介绍如何使用Langchain调用Hugging Face本地模型的基础demo,帮助大家快速开始langchain的“Hello World”。【注意】事先安装langchain_huggingface、langchain,并下载好模型权重。相关写法参考的是langchain官方文档。原创 2024-06-10 23:33:49 · 1768 阅读 · 193 评论 -
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并
SSE前后端一切正常,但是`fetchEventSource `的`onmessage`回调函数只在所有流都发送完毕后,才会执行一次。原创 2024-05-18 23:16:59 · 1583 阅读 · 99 评论 -
【EventSource错误解决方案】EventSource的onmessage回调函数不触发
客户端发送请求后,使用的`fetchEventSource `的`onmessage`回调函数不触发,根本就拿不到数据,但是`onopen`函数可以正常执行。原创 2024-05-18 23:05:27 · 1808 阅读 · 26 评论 -
【Qwen模型】QWEN TECHNICAL REPORT
在阅读了本篇论文和`transformers`库里面的`Qwen2Model`源码之后,我观察到模型用的组件tricks有RoPE(苏剑林提出)、RMSNorm、SwiGLU、SdpaAttention等等;原创 2024-04-19 16:54:38 · 3289 阅读 · 98 评论 -
【mT5多语言翻译】之一——实战项目总览
【注】我的显卡是8GB显存的4060,现在电脑好像都有GPU专用内存(在内存里划nGB专门给显卡使用),我的GPU专用内存是8GB,所以算下来可以提供16GB显存,即使是全量参数微调电脑也是可以跑的,大家可以试一下。【注】官方只提供了mT5模型的无监督训练参数,并没有放出微调任务的参数,因此我们想直接开箱使用是不可以的,必须要自己微调一下才可以输出正常的文本。这一点和T5模型比较不同。只要是上述102种语言之间的翻译任务,mT5都可以训练。如果需要本项目的源代码,请扫描关注我的公众号,回复“多语言翻译”。原创 2024-04-11 01:20:09 · 1996 阅读 · 61 评论 -
【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计
因为训练方式有全量参数微调和PEFT微调两种,不同方式保存的模型不同。前者是全量参数,后者是PEFT添加的少量参数。【注】直接加载PEFT保存的少量参数,也可以加载到mT5模型本身的预训练参数。这是因为在peft模型保存的文件夹中有一个。在分别使用全量参数微调和PEFT微调训练完模型之后,我们来测试模型的翻译效果。然后就能去浏览器快乐地测试玩耍了。文件,里面保存了基座模型的地址。[2] 第三方接口设计。[1] 模型翻译推理。[1] 模型翻译推理。原创 2024-04-11 01:18:57 · 1988 阅读 · 27 评论 -
【mT5多语言翻译】之五——训练:中央日志、训练可视化、PEFT微调
但是由于我们的数据集很大,即使模型在验证集上的loss不再下降,也不应该主动把模型停止。因为大模型的训练可以抽象为“压缩数据”的概念,它没见过的数据就是不会产生相应的知识,所以最好还是让模型一直训练下去,直到把数据集训练完。使用PEFT只需要在原来的基础上加两行代码即可,其他模型训练阶段的代码完全不需要改变。因此,我们需要设计一个日志功能,让模型即可以实时的打印输出,又能同时记录输出到文件中,以便于我们后期查看。还有一个待解决的问题是,项目中不同文件的输出日志,我们需要将其定位到同一个log日志中。原创 2024-04-11 01:18:32 · 2094 阅读 · 13 评论 -
【mT5多语言翻译】之四——加载:加载数据集与模型
库也提供了非常友好的代码训练api,可能都不用写多少代码,即可开始自定义任务、模型的训练。但是在使用过程中,还是遇到了一些问题:1)莫名其妙的多消耗显存,由于封装的功能太多,我很难定位到哪里出了问题;2)它提供的训练配置中有很多我不需要的功能,比如检查点保存、内部日志等等,同样也是集成的功能太多,但是我不需要。这里选择手搓的原因是我觉得手搓的数据加载器更轻,可以非常直观的进行自定义,虽然代码少但是完全满足我们项目的功能需要。在训练过程中,我想使项目代码尽可能的“轻量化”,并且直观、易于修改。原创 2024-04-11 01:17:52 · 1392 阅读 · 5 评论 -
【mT5多语言翻译】之三——数据集:多语言翻译数据集与预处理
【注】由于很多语言存在不同的版本,尤其是中文,有:lzh lzh_Hans nan wuu yue_Hans yue_Hant zho zho_Bopo zho_Bopo_CN zho_Bopo_TW zho_CN zho_Hans zho_Hans_CN zho_Hans_TW zho_Hant zho_Hant_CN zho_Hant_TW zho_TW这么多种版本或者方言,【注】Tatoeba翻译数据集里面提供的都是通用领域的数据,如果对领域知识有要求的,还是要使用自己的打标数据效果更好。原创 2024-04-11 01:17:12 · 2244 阅读 · 6 评论 -
【mT5多语言翻译】之二——模型:T5模型与mT5模型与前置知识
【注】具体来说,代码中把编码器、解码器整合到了T5Block里,又把交叉注意力和自注意力整合到了T5Attention里,所以在阅读源码的时候,得判断什么时候是解码器在运行、什么时候是编码器在运行,什么时候在算自注意力、交叉注意力。在编码器阶段,解码序列的id、mask没有,所以计算注意力时,会传输入序列的hidden_states、mask,这里的。之后,编码器会进行交叉注意力的计算,此时解码器已经拿到解码序列的自注意力向量hidden_states了,所以它不再需要解码序列的mask,所以此时的。原创 2024-04-11 01:16:09 · 3010 阅读 · 4 评论 -
Transformer原理与代码实现
在通过线性层学习QKV向量之后,Q和K经历点积矩阵乘法以产生得分矩阵:得分矩阵决定了一个单词在其他单词上的关注程度。因此每个单词都有一个与时间步长中的其他单词相对应的分数。分数越高,注意力越集中。这就是Q映射到K的方式:然后,分数通过除以Q和K的维度的平方根而缩小。这是为了获得更稳定的数据,否则可能会产生爆炸效果。下一步,使用softmax来得到注意力权重,返回0到1之间的概率值。通过做softmax,高分得到提高,低分受到抑制。这样模型可以决定对哪些单词的注意力更高哪些单词的注意力比较低。原创 2024-01-15 15:04:05 · 4627 阅读 · 88 评论 -
n-gram语言模型——文本生成源码
在自然语言处理的领域中,n-gram语言模型是一种基础而强大的工具。它通过考虑词汇的序列来预测文本内容,从而有效地用于文本生成任务。这篇博客中将探讨如何利用n-gram模型,特别是在处理中文文本时,使用jieba进行分词和nltk库进行模型构建。原创 2023-11-11 18:00:20 · 4663 阅读 · 37 评论 -
【古诗生成AI实战】之五——加载模型进行古诗生成
这部分是项目中非常激动人心的一环,因为我们将看到我们的模型如何利用先前学习的知识来创造出新的古诗文本。这是一个重要的里程碑,因为训练好的模型是我们进行文本生成的基础。* 生成文本:从初始文本(例如“天”)开始,逐字生成新的文本,直到达到指定长度(如32个字符)。在这部分内容中,我们将探讨如何使用预训练的模型来生成文本,例如古诗。:输入四个字ABCD,手动在第1、9、17、25个位置赋值A、B、C、D,其余部分由模型生成。现在,接下来的步骤是加载这个训练好的模型,然后使用它来生成古诗。原创 2023-11-27 00:10:12 · 3480 阅读 · 16 评论 -
【古诗生成AI实战】之二——项目架构设计
值得注意的是,虽然第三方Word2Vec库通常非常庞大,大约有1GB的大小,并且包含了30万到100万个单字和词汇,但我们的字典大小大约只有7千左右(比如,Bert的词典大小也只有3万)。例如,如果输入序列是[B,床,前,明,月,光,E],那么我们将这个序列向左偏移一个单位作为训练标签,即目标序列是[床,前,明,月,光,E,E]。这个生成过程非常有趣,因为它不仅展示了模型学习古诗的结构和语言风格的能力,而且还允许我们以创造性的方式使用模型,无论是模仿经典古诗风格,还是创作全新的诗句。原创 2023-11-27 00:09:03 · 3086 阅读 · 3 评论 -
【古诗生成AI实战】之三——任务加载器与预处理器
在构建词汇表的过程中,预处理器会在每个文本样本的前后分别添加开始和结束标记,这有助于模型理解文本的边界。这种设计不仅适用于我们当前的古诗生成任务,还可以方便地应用于其他类型的文本任务,比如文本分类任务,或是适配transformers库中的模型(例如Bert、GPT)。在本项目中,由于我们只使用了大约7千个词,所以我们需要从这些庞大的word2vec库中提取出仅与我们词典中存在的字词相对应的向量。的类,这个类的核心作用是处理不同类型的数据集,比如训练集、验证集和测试集,以及对单个文本样本的特定处理。原创 2023-11-27 00:09:27 · 2931 阅读 · 0 评论 -
【古诗生成AI实战】之四——模型包装器与模型的训练
中存储的正是这些词的概率。为了生成文本,我们提取每个位置上概率最高的词的索引,然后根据这些索引在词典中查找对应的词。此外,为了提高配置的灵活性和可维护性,我们将所有的配置项(如批量大小、数据集地址、训练周期数、学习率等)抽取出来,统一放置在一个名为。为此,我们采取了进一步的措施:在模型外面再套上一个额外的层,我称之为模型包装器。的含义是:对于每个批次中的文本,每个文本在序列的每个位置上,都有vocab_num个可能的词可以填入,而。类是围绕一个神经网络语言模型的封装器,提供了模型的初始化和数据处理的方法。原创 2023-11-27 00:09:50 · 3073 阅读 · 3 评论 -
【古诗生成AI实战】之一——实战项目总览
了解PyTorch的基本操作,如张量的处理、模型的构建和训练过程,对于后续实战项目至关重要。这些知识不仅是本项目的基础,也是进入AI领域的基本要求。无论你是AI领域的新手,还是有一定基础的学习者,这个项目都能为你提供宝贵的学习机会。这些技术不仅可以应用于古诗创作,还能为你日后的相关AI项目打下坚实的基础。准备好这些知识后,你将更有信心和能力投入到实战项目中,不仅能够理解项目的核心机制,还能够根据自己的需求进行创新和调整。这不仅有助于优化古诗生成的效果,还能让你更好地理解和掌握AI模型的工作原理。原创 2023-11-27 00:08:25 · 3302 阅读 · 1 评论