- 博客(332)
- 资源 (6)
- 收藏
- 关注
原创 [LLM] 大模型基础|预训练|有监督微调SFT | 推理
向量来屏蔽不希望计算loss的部分,下面就是数据构造的一个示意:做的事情就是拼接prompt和answer,并在answer两侧添加一个开始和结束的符号,算一下prompt/instruction的长度,以及后面需要pad的长度,然后生成一个mask向量,answer部分为1,其他部分为0。,也就是transformer(X)的维度还是(1,10,768),接下来就是基于它来进行预测了,因为要预测哪个词,词的可能情况就是词表的大小,所以做的就是一个。通常LLM的预训练是无监督的,但微调过程往往是有监督的。
2024-03-18 16:45:22 374
原创 [LLM]大语言模型文本生成—解码策略(Top-k & Top-p & Temperature)
在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,我们需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。
2024-03-18 12:59:03 509
原创 [LLM]大模型训练(二)--DeepSpeed使用
在单节点情况下,DeepSpeed的配置更多地集中在指定的节点内,因此不需要显式指定hostfile,而可以通过命令行参数更灵活地控制使用的GPU资源。DeepSpeed模型训练的核心在于DeepSpeed引擎,它能够包装任意类型为torch.nn.module的模型,并提供了一组最小的API用于训练和模型检查点。在这些设置步骤中,DeepSpeed的启动脚本提供了多种命令行选项,使用户能够根据需求有效地控制分布式训练作业在多节点或单节点上使用的节点和GPU数量。
2023-12-31 11:34:24 2029
原创 Google Gemini With LangChain RAG
本实验使用llama.cpp的README.md作为我们需要进行询问的文档。我们创建一个简单的向量数据库,并存储几条文本。
2023-12-22 14:26:07 620
原创 [LLM]Streamlit+LLM(大型语言模型)创建实用且强大的Web聊天机器人
Streamlit 是一个开源框架,使开发人员能够快速构建和共享用于机器学习和数据科学项目的交互式 Web 应用程序。它还提供了一系列小部件,只需要一行 Python 代码即可创建,例如。对于我们创建一个简单的用于私人使用的聊天机器人网站来说,Streamlit 是一个非常合适的库,它还提供了第三方 Streamlit_chat 库,进一步方便我们生成“聊天式” Web 应用程序,因为我们不需要写大量的 HTML 元素和 CSS 内容。
2023-12-20 11:19:41 1374
原创 Google Gemini API快速上手(附申请步骤)
12月6日,谷歌发布新一代大模型Gemini的demo, 同时,Bard已将模型更新为Gemini Pro是谷歌目前最新最强的大语言模型,支持多模态(文字,图片,音频,视频等等)处理美国时间12月13日,Gemini API对公众开放,本文将教学Google Generative AI的简易使用流程。根据谷歌提供的价格信息,将会有两个收费方式,现阶段的免费版本可以每分钟60次请求,足够满足个人用户的需求了。至于收费版本,目前还不能用,但是收费标准已经公布了。
2023-12-18 11:49:19 10820 1
原创 [LLM]nanoGPT---训练一个写唐诗的GPT
原有模型使用的莎士比亚的戏剧数据集, 如果需要一个写唐诗机器人,需要使用唐诗的文本数据,这个数据集里面包含搜集到的唐诗,宋词,元曲小说文本数据。
2023-12-13 14:32:41 967 2
原创 [GPT]Andrej Karpathy微软Build大会GPT演讲(下)--该如何使用GPT助手
Andrej通过将提示工程中的技术和模型学习了什么结合起来,我觉得很好的解释了为什么那些提示工程是有效的。我印象最深刻的就是说模型只是一个标记模拟器,为了让他模拟的结果是我们想要的东西,得需要通过你的前文来限制一些内容使得他如果要完成这个文档补全,就需要按照你的说明来。我觉得这个甚至可以作为提示工程的核心guideline。
2023-12-10 08:57:19 1176
原创 [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
OpenAI的创始人之一,大神Andrej Karpthy刚在微软Build 2023开发者大会上做了专题演讲:State of GPT(GPT的现状)。他详细介绍了如何从GPT基础模型一直训练出ChatGPT这样的助手模型(assistant model)。作者不曾在其他公开视频里看过类似的内容,这或许是OpenAI官方第一次详细阐述其大模型内部原理和RLHF训练细节。难能可贵的是,Andrej不仅深入了细节, 还高屋建瓴的抽象了大模型实现中的诸多概念,牛人的洞察就是不一样。
2023-12-08 16:38:36 1162
原创 [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型-RAG
下载llama-cpp, llama-cpp-pythonLangChain是一个提供了一组广泛的集成和数据连接器,允许我们链接和编排不同的模块。可以常见聊天机器人、数据分析和文档问答等应用。sentence-transformer提供了简单的方法来计算句子、文本和图像的嵌入。它能够计算100多种语言的嵌入。我们将在这个项目中使用开源的all-MiniLM-L6-v2模型。Facebook AI相似度搜索(FAISS)是一个为高效相似度搜索和密集向量聚类而设计的库。
2023-11-07 21:52:39 3068 1
原创 [NLP] Llama2模型运行在Mac机器
下载Llama2 7B Chat的4位优化权重,将其放入llama.cpp的模型目录中,然后使用Apple的Metal优化器来构建llama.cpp项目。7B的权重应该可以在拥有8GB RAM的机器上运行(但如果你有16GB的RAM会更好)。像13B或70B这样的更大模型将需要更多的RAM。LLaMa2本身的模型不支持直接在Window或者Mac机器上调用,只能在Linux系统,支持N卡。直接把模型下载下来放到 刚刚Clone的 llama.cpp 目录下的models目录里面。
2023-11-05 19:44:41 1816
原创 解决MySQL导入数据量大速度慢问题
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.当sync_binlog =0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
2023-10-11 13:55:41 1807
原创 [NLP] LLM---<训练中文LLama2(五)>对SFT后的LLama2进行DPO训练
大型语言模型(LLM)使 NLP 中微调模型的过程变得更加复杂。最初,当 ChatGPT 等模型首次出现时,最主要的方法是先训练奖励模型,然后优化 LLM 策略。从人类反馈中强化学习(RLHF)极大地推动了NLP的发展,并将NLP中许多长期面临的挑战抛在了一边。
2023-09-17 08:42:14 1377
原创 [NLP] LLM---<训练中文LLama2(四)方式一>对LLama2进行SFT微调
其他参数(如:per_device_train_batch_size、training_steps等)是否修改视自身情况而定。训练方案也采用了LoRA进行高效精调,并进一步增加了可训练参数数量。在prompt设计上,精调以及预测时采用的都是原版。不带input的模版。对于包含input字段的数据,采用。为了测试,对数据进行了sample。指令精调阶段的任务形式基本与。首先,修改模型精调脚本。
2023-09-16 17:00:20 1357
原创 [NLP] LLM---<训练中文LLama2(三)>对LLama2进行中文预料预训练
由于第一阶段预训练会冻结transformer参数,仅训练embedding模型,因此,收敛速度较慢,如果不是有特别充裕的时间和计算资源,建议跳过该阶段。第二阶段预训练使用LoRA技术,为模型添加LoRA权重(adapter),训练embedding的同时也更新LoRA参数。,需预先执行下载其中一部分数据用于预训练或者使用其进行词表扩充训练。下载完之后,对其中的数据进行数据清洗,去除一些空行等。是如何从0到1进行中文词表扩充、模型预训练和微调的整个过程。本文预训练数据集使用一些。
2023-09-16 12:06:25 1290
原创 [NLP] LLM---<训练中文LLama2(二)>扩充LLama2词表构建中文tokenization
目前,大语言模型呈爆发式的增长,其中,基于llama家族的模型占据了半壁江山。而原始的llama模型对中文的支持不太友好,接下来本文将讲解如何去扩充vocab里面的词以对中文进行token化。一般的,目前比较主流的是使用sentencepiece训练中文词库。除了一些特殊符号外,还有我们自定义的foo和bar,其余的一些词是BPE训练得到,具体什么是BPE算法这里不作展开了。然后,我们准备好语料,这里我们使用的语料是斗破苍穹小说。加入了我们定义的词表后确实能够正确的对中文进行分词了。
2023-09-13 15:42:28 3107
原创 [NLP] LLM---<训练中文LLama2(一)>训练一个中文LLama2的步骤
然而,这将需要我们给人类发送一些样本,在每轮优化后计分,这个流程需要耗费大量人工,且需要大量数据集,而人类阅读和标注的速度有限。等),但是坦白讲,质量都不高,大家可自行下载并需要进行清洗,清洗SFT数据是个耗时耗力的工作,但根据作者微调经验,一份高质量的SFT数据是相当重要的‼️(如果不清洗SFT数据,可能无法获得满意的SFT效果,建议大家在这块多花些时间) 中文SFT语料网上最近很多,大家自行下载。因为在llama官方所提供的词表中,中文的部分只有700个,这也是llama中文能力聊胜于无的原因。
2023-09-13 13:34:11 2053
原创 [NLP]TRL 正式推出,来训练你的首个 RLHF 模型
PEFT(Parameter Efficient Fine-Tuning)是一种用于微调神经网络模型的技术,旨在在保持模型性能的同时,显著减少微调所需的计算资源和时间。PEFT 的主要思想是通过使用较小的学习率来微调模型的一部分参数,而不是对整个模型的所有参数进行微调。这样可以将微调的计算开销分布到多个小批次中,从而减少了每个小批次的计算负担,使得模型可以在较小的设备上进行高效微调。4-bit 在这里指的是四位量化(4-bit quantization),是一种将模型的权重量化为更低比特数的技术。
2023-09-11 13:27:54 368
原创 [NLP]LLM---大模型指令微调中的“Prompt”
之前推理的时候,发现不加训练的时候prompt,直接输入模型性能会变差的,这个倒是可以理解。(3)另外通过实验发现,如果模型微调的时候使用模板,那么推理的时候应该也使用模板,否则效果会影响,直观上就是生成效果不理想,生成比较短,甚至“驴唇不对马嘴”;或者有继续微调比较合适的方案也可以,不损失之前模型的效果(或者损失比较小),目前可以尝试Lora或者Qlora的方式微调底座模型,然后将训练好的Lora权重合并到原始模型,这样可以减轻多次微调对模型的影响。那高质量如何定义呢?和alpaca模板差不多。
2023-09-09 06:41:59 2242
原创 [NLP] LLM---<训练中文LLama2(四)方式二>对LLama2进行SFT微调
Let’s talk a bit about the parameters we can tune here. First, we want to load a model and train it on the (1,000 samples), which will produce our fine-tuned model . If you’re interested in how this dataset was created, you can check this notebook. Feel
2023-09-08 18:35:31 1431 1
原创 [NLP] LLM---<训练中文LLama2(六)>对LLama2离线推理
项目之后,基于GPU的部署非常简单。可以看出原生的LLAMA2模型对中文支持不好,回答的答案基本都是英文。提供了一些使用脚本,可以很方便的体验模型推理的过程。项目代码介绍,使用原生的llama2-hf。简单说明一下各个文件的作用。
2023-09-08 11:54:45 861
原创 [NLP]深入理解 Megatron-LM
数据并行模式会在每个worker之上复制一份模型,这样每个worker都有一个完整模型的副本。输入数据集是分片的,一个训练的小批量数据将在多个worker之间分割;worker定期汇总它们的梯度,以确保所有worker看到一个一致的权重版本。对于无法放进单个worker的大型模型,人们可以在模型之中较小的分片上使用数据并行。a)超过某一个点之后,每个GPU的batch size变得太小,这降低了GPU的利用率,增加了通信成本;
2023-08-26 09:52:33 2318
原创 [NLP]LLM--transformer模型的参数量
最近,OpenAI推出的ChatGPT展现出了卓越的性能,引发了大规模语言模型(Large Language Model, LLM)的研究热潮。大规模语言模型的“大”体现在两个方面:模型参数规模大,训练数据规模大。以GPT3为例,GPT3的参数量为1750亿,训练数据量达到了570GB。进而,训练大规模语言模型面临两个主要挑战:显存效率和计算效率。
2023-08-22 17:48:18 1886
原创 [NLP]LLM 训练时GPU显存耗用量估计
32位存储的意思就是1个参数用32个bit来存储。那么这个拥有1M参数量的模型所需要的存储空间的大小即为:1M * 32 bit = 32Mb = 1M * 4Byte = 4MB。现在的quantization技术就是减少参数量所占的位数:比如我用16位存储,那么:所需要的存储空间的大小即为:1M * 16 bit = 16Mb = 2MB。GPT-2含有1.5B个参数,如果用fp16格式,只需要1.5G*2Byte=3GB显存, 但是模型状态实际上需要耗费1.5B*16=24GB.
2023-08-12 09:56:07 4355 3
原创 [Kubernetes]Kubeflow Pipelines - 基本介绍与安装方法
答案是机器学习工作流。通过机器学习工作流,可以有效的将各个子系统串联起,每一个业务场景可以通过一个端到端的机器学习工作流来描述,同时通过工作流也可以追溯每一次模型产出或模型上线的元信息(例如数据、配置、base model等)。在工业界,比较成熟的机器学习工作流是Google 的Vertex AI Pipeline和Amazon的Sagemaker Pipeline,大家如果感兴趣可以自行去他们的官网体验。4.1 namespace范围资源卸载。4.2 cluster范围资源卸载。要下载对应image。
2023-08-10 11:23:24 785
原创 [深度学习] GPU处理能力(TFLOPS/TOPS)
TF32 采用了与半精度( FP16 )数学相同的10 位尾数位精度,这样的精度水平远高于AI 工作负载的精度要求,有足够的余量。同时, TF32 采用了与FP32 相同的8 位指数位,能够支持与其相同的数字范围。中的新数据类型,TF32 使用与半精度 (FP16) 数学相同的 10 位尾数,表明对于 AI 工作负载的精度要求有足够的余量。在某些情况下,还使用 TOPS/W 来作为评价处理器运算能力的一个性能指标,TOPS/W 用于度量在1W功耗的情况下,处理器能进行多少万亿次操作。
2023-08-02 10:51:04 5453
原创 [NLP]LLM高效微调(PEFT)--LoRA
在下游任务训练时,固定模型的其他参数,只优化新增的两个矩阵的权重参数,将W跟新增的通路W1两部分的结果加起来作为最终的结果(两边通路的输入跟输出维度是一致的),即h=Wx+BAx。当针对特定任务进行微调后,模型中权重矩阵其实具有很低的本征秩(intrinsic rank),因此,论文的作者认为权重更新的那部分参数矩阵尽管随机投影到较小的子空间,仍然可以有效的学习,可以理解为针对特定的下游任务这些权重矩阵就不要求满秩。关于秩的选择,通常情况下,rank为4,8,16即可。
2023-07-29 15:30:59 1591
原创 [NLP]LLaMA与LLamMA2解读
LLaMA是一个系列模型,模型参数量从7B到65B。在大部分的任务上,LLaMA-13B强于GPT-3(175B)。LLaMA-65B的性能,可以和最好的LM相媲美,如Chinchilla-70B 和 PaLM-540B。
2023-07-26 17:16:22 3997 2
原创 [NLP]使用Alpaca-Lora基于llama模型进行微调教程
Stanford Alpaca 是在 LLaMA 整个模型上微调,即对预训练模型中的所有参数都进行微调(full fine-tuning)。但该方法对于硬件成本要求仍然偏高且训练低效。因此, Alpaca-Lora 则是利用 Lora 技术,在冻结原模型 LLaMA 参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅微调的成本显著下降,还能获得和全模型微调(full fine-tuning)类似的效果。
2023-07-25 16:35:05 3810 1
原创 [NLP]Huggingface模型/数据文件下载方法
作为一名自然语言处理算法人员,hugging face开源的transformers包在日常的使用十分频繁。在使用过程中,每次使用新模型的时候都需要进行下载。如果训练用的服务器有网,那么可以通过调用from_pretrained方法直接下载模型。
2023-07-24 18:36:00 4144
原创 [LLM]大模型训练(一)--DeepSpeed介绍
DeepSpeed是由Microsoft提供的分布式训练工具,旨在支持更大规模的模型和提供更多的优化策略和工具。与其他框架相比,DeepSpeed支持更大规模的模型和提供更多的优化策略和工具。其中,主要优势在于支持更大规模的模型、提供了更多的优化策略和工具(例如 ZeRO 和 Offload 等)
2023-05-17 18:51:10 13314 3
原创 [深度学习]Ring All-reduce的数学性质
图 4 给出了环状 all-gather 的实现过程,我们就不详细描述了,值得注意的是,它的通信时间和通信量的分析与 reduce-scatter 一模一样:整个过程需要的时间是 Vsend / B ,如果p足够大,完成时间近似为V/B,这个时间和设备数p无关,当然,在所有设备间传递的数据量是(p-1)V,和设备数 p 成正比。不过,请注意在 reduce-scatter 里,V 都是完整矩阵的数据量,即 reduce-scatter 输入矩阵的数据量和 all-gather 输出矩阵的数据量。
2023-05-05 11:19:47 1561
原创 [深度学习]让你的PyTorch模型更快地训练的一些技巧
This blog post outlines techniques for improving the training performance of your PyTorch model without compromising its accuracy. To do so, we will wrap a PyTorch model in a LightningModule and use the Trainer class to enable various training optimization
2023-05-04 18:27:14 95
原创 [NLP]如何训练自己的大型语言模型
大型语言模型,如OpenAI的GPT-4或谷歌的PaLM,已经在人工智能领域掀起了一场风暴。然而,大多数公司目前没有能力训练这些模型,而且完全依赖少数几家大型科技公司作为技术提供者。在Replit,我们已经大量投资于所需的基础设施,以从头开始训练我们自己的大型语言模型。在这篇博文中,我们将概述我们如何训练LLM,从原始数据到面向用户的生产环境中的部署。
2023-04-25 19:13:04 7171
原创 [NLP] SentenceTransformers使用介绍
SentenceTransformers 是一个可以用于句子、文本和图像嵌入的Python库。可以为 100 多种语言计算文本的嵌入并且可以轻松地将它们用于语义文本相似性、语义搜索和同义词挖掘等常见任务。该框架基于 PyTorch 和 Transformers,并提供了大量针对各种任务的预训练模型。还可以很容易根据自己的模型进行微调。阅读论文 Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks,深入了解模型的训练方式。
2023-04-17 15:47:35 4941
原创 [Kubernetes]使用开源工具 k8tz设置 Pod 时区
然后将emptyDir挂载到 Pod 每个容器的 /etc/localtime和 /usr/share/zoneinfo。为了确保所需的时区有效,它向所有容器添加了 TZ环境变量。在主机的内核上运行,并获得时钟,但时区不是来自内核,而是来自用户空间。时区的不一致,会带来很多困扰。一些应用程序使用机器的时区作为默认时区,并希望用户设置时区。下载与保存相关文件copy到真正在安装的集群机器上。在一台可以联网的机器上下载与保存相关文件。中容器的时区不一致时,管理会很不容易。创建 Pod 的过程。
2023-03-27 14:23:43 421
原创 [机器学习]XGBoost---增量学习多阶段任务学习
同理,如果我们按时间把数据分成几部分,然后按从早到晚的顺序多次训练模型,每个模型在上一个模型基础上训练,也间接地参加了后期实例的权重。当我们的训练数据非常多,并且还在不断增加时,每次都用全量训练,数据过多,时间过长,此时就可以使用增量训练:用新增的数据微调校正模型。对于已存在的决策树,早期训练的实例决定了模型的结构(选择哪些特征及分裂点),后期的实例决定最终的结果(叶节点的权重和新加入的树)。尽量用全量数据训练,如果数据太多,必须增量时,尽量保证增量数据的质量和数量(均匀分布),以免带偏模型。
2023-02-23 16:59:22 2438 1
distributed-deep-learning-with-horovod.pdf
2020-06-29
Neural Networks and Deep Learning - 神经网络与深度学习 中英双版本
2017-12-13
数据结构的大量程序 相关面试题的源代码!
2009-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人