当前位置:   article > 正文

LLMs:业务角度路线—基于开源大模型实现对中文语料实战应用(企业级ChatGPT领域大模型-私有化实战八大步骤、提高LLMs模型中文性能的三大策略(直接原始LLMs进行指令微调/基于原始模型扩充词表_中文语料支持度高的llms

中文语料支持度高的llms

LLMs:业务角度路线—基于开源大模型实现对中文语料实战应用(企业级ChatGPT领域大模型-私有化实战八大步骤、提高LLMs模型中文性能的三大策略(直接原始LLMs进行指令微调/基于原始模型扩充词表再二次预训练/直采国内LLMs)、两条路线(国外模型方案LLaMA/Falcon/Chinese-LLaMA等、国内模型方案ChatGLM/BaiChuan等)的设计流程实战集合之详细攻略

本文章创建日期于2023年7月,当前版本是20240216版本,行业领域认知截止2024年2月,并于2024年5月8日23点,正式开源发布!

导读:ChatGPT的核心技术,因为基础的思路都是众所周知的(基于GPT-style+PFE+SFT),但是吊炸天的模型都是闭源,比如OpenAI最后的关键技术公开应该是RLHF技术

>> 常说通用模型的领域化可能是伪命题,那么领域大模型的通用化是否也是伪命题。比如盘古大模型只做事不做诗;

>> 领域大模型落地,任务场景要比模型能力更重要。如何对大模型进行包装,当模型能力不足的时候,如何让用户更好的体验

>> 所谓的领域大模型会更新的越来越快,越来越多;目前开源领域大模型集中在医疗领域、法律领域、金融领域和教育领域。

>> 100B以上参数量的模型研究很重要,但不代表7B或13B的模型(落地反而更友好)不重要。
>> 更大模型需要对应更充分的数据量:比如,有的团队,基于ChatGLM,对6B模型采用2万条数据,13B模型采用5万条数据,结果发现精度差不多;

>> 大树底下好乘凉:如果既想要中文词表,又没有很大的算力,那建议直接使用ChatGLM-6B/BaiChuan-7b,或者使用BELLE/Chinese-LLaMA-Alpaca/Colossal-LLaMA-2进行中文词表扩充后训练好的模型作为Base模型。

>> 关于选择训练框架:对于同一模型,选择不同的训练框架,对于资源的消耗情况可能存在显著差异(比如使用Huggingface TransformersDeepSpeed训练OPT-30相对于使用Alpa对于资源的消耗会低不少)。
>> 关于设计模型路线:进行大模型模型训练时,先使用小规模模型(如:OPT-125m/2.7b)进行尝试,然后再进行大规模模型(如:OPT-13b/30b...)的尝试,便于出现问题时进行排查。目前来看,业界也是基于相对较小规模参数的模型(6B/7B/13B)进行的优化,同时,13B模型经过指令精调之后的模型效果,已经能够到达GPT4的90%的效果。
>> 关于创建分布式训练环境:针对已有的环境进行分布式训练环境搭建时,一定要注意之前环境的python、pip、virtualenv、setuptools的版本。不然创建的虚拟环境即使指定对了Python版本,也可能会遇到很多安装依赖库的问题(GPU服务器能够访问外网的情况下,建议使用Docker相对来说更方便)。
遇到需要升级GLIBC等底层库需要升级的提示时,一定要慎重,不要轻易升级,否则,可能会造成系统宕机或很多命令无法操作等情况。

-----------近期更新版本:20240216版本,行业领域认知截止2024年2月---------

大模型垂直领域(拥有私域数据)落地应用三步走

第一步引入RAG赋能司内,创建或者优化现有数据输出方式,不管是搜索、知识图谱、还是 CMS(内容管理系统即企业信息化建设,比如网站【博客文章/留言板等】等)、内部文档,先用起来再说。

第二步打造司内Chat,把RAG使用过程中产生的数据和原有数据结合、清洗,找一个开源的大模型做底座进行微调,引入几个最新的优化技巧(你懂得),产生自己的行业 LLM(垂直一下),巴拉巴拉小吹一下(影响力)、干活(工程化)、发paper(创新性)、迭代V个版本(社区生态)、弄它个1000K的大窗口(炫技),开源个新基准data拉高一下分数(就我最强),有里有面(小有成就)。

第三步统一垂直领域,基于自己的垂直方向 XXX-GPT或XXX-Chat,提炼业务流程,采用自己写+开放社区共创的方式统一自己垂直领域里面的 SOP(标准作业流程),创建自己的业务大脑给到社区和业内。

目录

相关文章

LLMs:技术角度路线—预训练大模型六大步骤实现全流程详解(以LLaMA为例)—收集数据(增【收集3大方法及3大原则】+删【3大过滤+去除】)→数据预处理(文本标准化+token化+词表扩充)→模型预训练与评估→模型微调、评估、量化与推理→模型部署(硬件配置/Docker部署+模型使用)→落地应用实现复杂任务之详细攻略

LLMs:技术角度路线—大模型训练和使用的四大阶段系统性最强总结:构建基模型(预训练【创新性+通用知识】)→优化模型(有监督微调【增强性+继续优化到特定任务+领域知识】)→修正模型(指令微调【可控性/诱导性+遵循指令+指令任务】/RLHF【对齐性+与专家对齐+真实无害任务】+存在对齐税)→挖掘模型(Prompting提示工程【只是指导+约束生成+更好的理解用户意图+巧妙的提示信息+通用策略{无需训练}】

LLMs:业务角度路线—基于开源大模型实现对中文语料实战应用【企业级ChatGPT领域大模型】之两条路线(国外模型方案LLaMA/Falcon/Chinese-LLaMA等、国内模型方案ChatGLM/BaiChuan等)的设计流程(重在选型思路+核心技术+实现方案)之详细攻略

一、LLMs业务角度/产品角度的设计路线——企业级ChatGPT(领域大模型)私有化实战:

1、企业级ChatGPT—如何选择优质的应用场景:主流思路(产品与技术分开)、四大步骤(以问题为导向)、两种赋能(对做过的应用进行优化/提升业务环节的效率)

(1)、微调的场景—微调之前的业务场景思考:解决方案的选择(fine tuning还是优化prompt→LoRA还是全调)、RAG场景(开源方案基本一致)、垂直领域是否新场景(学习新概念?)

2、企业级ChatGPT:通用大模型到领域大模型的八大步骤:选择底座模型→准备数据→准备资源→模型迁移→模型评估→模型评价→模型修正→模型应用

第1步,选择底座模型:背景的两大痛点(中文不友好/领域知识不足)、两大选型(Base/Chat)、原则(不影响Base模型效果)

第2步,准备数据:两类数据集(领域数据集/指令数据集)

第3步,准备资源(多机多卡)+选择框架(DeepSpeed为主)

AI:人工智能领域之大模型部署两大设计方案(本地搭建服务器+调用云厂商服务)、服务器和硬件相关技术的简介(GPU/TPU、GeForce【3090-4090】/Tesla【A800-A100/V100】)、服务器搭建(GPU集群、节点、GPU卡/显卡)之详细攻略

第4步,模型迁移四种方法(增量预训练/高效参数训练/TCL/PL)

LLMs:工程角度路线—大模型爆发的两大原因、大模型训练和使用的四大阶段系统性最强总结:构建基模型(预训练【创新性+通用知识】)→优化模型(有监督微调【增强性+继续优化到特定任务+领域知识】)→修正模型(指令微调【可控性/诱导性+遵循指令+指令任务】/RLHF【对齐性+与专家对齐+真实无害任务】+存在对齐税)→挖掘模型(Prompting提示工程【只是指导+约束生成+更好的理解用户意图+巧妙的提示信息+通用策略{无需训练}】

第5步,模型评估(自身能力)

LLMs:LLMs大语言模型评估的简介(两标(NLUGR指标/REBT)+六性(理解性+生成性{PPL}+多样性+泛化性+能耗性+可解释性)+九维(2大能力域【理解/生成】+3性【丰富性/多样性/适应性】+4大子任务【逻辑推理/问题解决/对和聊天/情感分析】),大模型排行榜多种),两类基准——通用任务的基准(单任务【BLEU/ROUGE-MT-Bench/Chatbot Arena】、多任务【SuperGLUE/MMLU/BIG-bench/HELM/AGIEval/C-EVAL/Xiezhi】、基于工具【API-Bank/ToolBench】)、特定下游任务基准(MATH/CUAD/MultiMedQA/GaoKao/SOCKET/CVALUES)之详细攻略

第6步,评价模型(世界排名)

第7步,模型修正(偏应用)

第8步,模型应用(横向赋能应用):两大内容(模型量化降显存/加速推理框架)、两大场景(RAG/Agent)

PTM:大模型加速方法或框架(预训练阶段/推理阶段)的简介、常用框架(Megatron-LM/Colossal-AI/DeepSpeed等,FasterTransformer/FastLLM/vLLM/TurboTransformers等)、案例应用之详细攻略

(1)、大模型落地的两大应用场景:RAG (给LLM外挂知识库→处理企业私有知识,比如langchain的RAG实现)和 Agents(给LLM外挂工具集→获取最新的知识,比如langchain的Bing功能)

LLMs之RAG:知识检索增强生成方法(搭建本地知识库、利用外挂信息库增强LLMs自身能力的一种方法,外部知识检索+LLMs生成回复=知识问答任务)的简介、实现方法(LangChain/LocalGPT/embedchain等)、案例应用之详细攻略

LLMs之Agent:Agent的简介、实现案例(ChemCrow/AutoGPT/GPT-Engineer/Generative Agents等)、案例应用之详细攻略

3、企业级ChatGPT实战案例(纵向赋能场景,文旅/医学等垂直领域已有案例):让大模型做最后一公里

LLMs之Law:大语言模型领域行业场景应用之大模型法律行业的简介、主流LLMs(PowerLawGLM/ChatLaw)、经典应用之详细攻略

LLMs之Medical:大语言模型领域行业场景应用之大模型医疗行业的简介、主流LLMs(ChatGLM-Med/ChatDoctor/Radiology-GPT/Qilin-Med等)及其评估基准(包括数据集)、案例应用之详细攻略

二、思考:提高LLMs模型的性能

2.1、提升LLMs性能的三大工具:Prompt→RAG→FineTuning(PEFT)

(1)、三者对比(Prompt/FineTuning/RAG)——如何用好大模型?混合三种效果最佳

解决LLMs与生俱来的幻觉劣势:三大优化(RLHF拒绝/Prompt明文限制/RAG追根溯源技术)

LLMs之PE:大模型核心技术—提示工程(Prompt Engineering)的简介、常用工具、使用方法之详细攻略

LLMs之PEFT:大模型核心技术—PEFT(参数高效微调)的简介(指令微调/RLHF微调)、微调两大范式+三类五法—基于添加式(引入额外可训练参数或模块,如Adapter/Prefix/P-tuning/HINT)、基于规范化(冻结某些固有模型参数同时指定要调整的参数,如Delta-tuning)、基于重参数化(假设模型自适应的低秩性→权重可重新参数化为低维子空间,如LoRA/QLoRA/LOMO)之详细攻略

LLMs之RAG:知识检索增强生成方法(搭建本地知识库、利用外挂信息库增强LLMs自身能力的一种方法,外部知识检索+LLMs生成回复=知识问答任务)的简介、实现方法(LangChain/LocalGPT/embedchain等)、案例应用之详细攻略

2.2、提高LLMs模型中文性能的三大路线

T1、直接采用国外原始模型(比如LLaMA)+指令微调(含中文语料):比如Vicuna

T2、采用国外原始模型(比如LLaMA)+扩充中文词表+加持增量二次预训练:比如BELLE、Chinese-LLaMA-Alpaca、Colossal-LLaMA-2

2.1、词表扩充/扩展中文词表/扩展原始词表的概述(必须加持二次增量预训练阶段):四大作用(解决OOV+提高解码效率+提高中文上下文个数+完整性/价值性)、三大缺点(需二次预训练+高内存+无法被有效学习)

(1)、基于词表扩展的LoRA微调,选择训练整个embedding层还是只训练新增token的embedding?取决于新增词汇量的大小

LLMs之BELLE:源码解读(merge_tokenizers.py文件)扩充词表—训练和合并两个不同的SentencePiece分词模型—使用SentencePiece库来训练一个名为belle的BPE分词器→加载两个现有的分词器模型→合并词汇表→保存合并后的模型作为新的分词器模型

LLMs之Chinese-LLaMA-Alpaca:源码解读之merge_tokenizers.py文件实现词表扩充—合并原始的LLaMA分词模型+重训练的中文分词模型(可进一步对比两个模型各自对中文的分词效果)

LLM之Colossal-LLaMA-2:源码解读(init_tokenizer.py文件)实现基于源词表的扩展(中文标记的新词汇)进而实现持续预训练、(init_model.py文件)实现过计算均值来扩展模型的嵌入层以适应新的词汇表,然后保存扩展后的模型、(prepare_pretrain_dataset.py文件)将原始数据集进行处理和切片并保存为JSONL格式和 Arrow格式

LLMs之tokenizer:基于SentencePiece库训练自定义数据集→预处理→分词器训练/推理测试→基于LLaMA原始分词模型实现扩充中文词表→对比扩充前后对中文英文文本的分词效果实践之详细攻略

2.2、探究训练数据类别对模型性能的影响:词表扩充、数据质量、数据语言分布、数据规模等因素

LLMs之BELLE:BELLE(一款能够帮到每一个人的中文LLM引擎)的简介(基于Alpaca架构+中文优化+考察词表扩充/数据质量/数据语言分布/数据规模的量化分析)、使用方法、案例应用之详细攻略

2.3、7B级别的各种模型分词器获得的词表大小、压缩率对比:Colossal-LLaMA-2、LLaMA-2-7B、Baichuan-7B、Chatglm2-6B、InternLM-7B、Chinese-llama-2-7b

T3、直接采用国内LLMs大模型:比如ChatGLM-6B系列、Baichuan-7B系列、InternLM系列

三、模型选择

3.1、国内外大模型

☆☆T1、基于原始LLaMA及其系列的思路

T1.1、基于原始LLaMA

LLMs之LLaMA:《LLaMA: Open and Efficient Foundation Language Models》翻译与解读

LLMs之LLaMA:在单机CPU+Windows系统上对LLaMA模型(基于facebookresearch的GitHub)进行模型部署且实现模型推理全流程步骤【部署conda环境+安装依赖库+下载模型权重(国内外各种链接)→模型推理】的图文教程(非常详细)

LLMs之LLaMA-7B-QLoRA:基于Alpaca-Lora代码在CentOS和多卡(A800+并行技术)实现全流程完整复现LLaMA-7B—安装依赖、转换为HF模型文件、模型微调(QLoRA+单卡/多卡)、模型推理(对比终端命令/llama.cpp/Docker封装)图文教程之详细攻略

LLMs之LLaMA2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之LLaMA-2:源码解读之所有py文件(包括example_text_completion.py/example_chat_completion.py+model.py/generation.py/tokenizer.py)

LLMs之LLaMA-2:基于LocalGPT利用LLaMA-2模型实现本地化的知识库(Chroma)并与本地文档(基于langchain生成嵌入)进行对话问答图文教程+代码详解之详细攻略

LLMs之LLaMA-2:基于云端进行一键部署对LLaMA-2模型实现推理(基于text-generation-webui)执行对话聊天问答任务、同时微调LLaMA2模型(配置云端环境【A100】→下载数据集【datasets】→加载模型【transformers】→分词→模型训练【peft+SFTTrainer+wandb】→基于HuggingFace实现云端分享)之图文教程详细攻略

LLMs之LLaMA-2:基于text-generation-webui工具来本地部署并对LLaMA2模型实现推理执行对话聊天问答任务(一键安装tg webui+手动下载模型+启动WebUI服务)、同时微调LLaMA2模型(采用Conda环境安装tg webui+PyTorch→CLI/GUI下载模型→启动WebUI服务→GUI式+LoRA微调→加载推理)之图文教程详细攻略

T1.2、基于原始LLaMA+国外指令精调的版本:比如Alpaca、Vicuna,Phoenix、Chimera

2023年3月14日——Alpaca(Stanford):使用小成本训练大模型(只需廉价600美元)、利用GPT3.5模型生成高质量的指令数据【175 个prompts+52K指令遵循样本数据】去SFT的LLaMA-7B、 基于LLaMA-7B+微调【HuggingFace框架训练】+Self-Instruct指令跟随语言模型、全分片数据并行+混合精度训练+8个A100-80G三个小时、后期的微调优化Alpace-LoRA

LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读

2023年3月30日——Vicuna(Berkeley+CMU+Stanford):训练Vicuna13B仅300美元=8张A100耗费1天+PyTorch FSDP、ShareGPT收集7万段对话、基于Alpaca构建+内存优化(​梯度检查点gradient checkpointing+闪光注意力​flash attention​,最大上下文长度扩展到2048)+多轮对话+管理Spot实例(降低成本)+GPT4模型评估

LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读

LLMs:在Linux服务器系统上实Vicuna-7B本地化部署(基于facebookresearch的GitHub)进行模型权重合并(llama-7b模型与delta模型权重)、模型部署且实现模型推理全流程步骤的图文教程(非常详细)

 T1.3、LLaMA的汉化版本之BELLE:

2023年4月8日,LLMs之BELLE:BELLE(一款能够帮到每一个人的中文LLM引擎)的简介(基于Alpaca架构+中文优化+考察词表扩充/数据质量/数据语言分布/数据规模的量化分析)、使用方法、案例应用之详细攻略

☆T1.4、LLaMA的汉化版本之Chinese-LLaMA-Alpaca:词表扩充的预训练2阶段+指令微调

LLMs:《Efficient And Effective Text Encoding For Chinese Llama And Alpaca—6月15日版本》翻译与解读

LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略

LLMs之Chinese-LLaMA-Alpaca:LLaMA汉化版项目详细源码解读多个py文件-基于Ng单机单卡实现定义数据集(生成指令数据)→数据预处理(token分词/合并权重)→增量预训练(本质是高效参数微调,LoRA的参数/LLaMA的参数)→指令微调LoRA权重(继续训练/全新训练)→模型推理(合并LoRA权重,CLI、GUI【webui/LLaMACha/LangChain】→下游任务【检索式问答/摘要生成】

LLMs之Chinese-LLaMA-Alpaca:源代码解读run_clm_pt_with_peft.py文件实现模型增量预训练(CLI准备【命令行解析/设置日志】→文件设置准备【递增训练/种子/配置字典/分词字典】→数据预处理【文本标记/文本序列长度/token化/分组/切分数据集】→模型训练与评估【判断执行模式/预训练文件/调整词嵌入的大小/LoRA模型/输出可被训练的参数/替换state_dict/初始化Trainer/训练【续载训练/保存结果/度量指标/保存状态】→保存【LoRA模型/预训练配置信息/tokenizer】→验证【计算困惑度/记录评估指标】

LLMs之Chinese-LLaMA-Alpaca:源代码解读inference_hf.py文件基于验证数据集(拼接输入数据和模板指令+去空格+分词)利用合并模型(LLaMA+LoRA)实现模型推理(交互方式【实时输出】/非交互方式【导出生成结果和模型配置文件到本地】)

LLMs之Chinese-LLaMA-Alpaca:基于单机CPU+Windows系统实现中文LLaMA算法进行模型部署(llama.cpp)+模型推理全流程步骤【安装环境+创建环境并安装依赖+原版LLaMA转HF格式+合并llama_hf和chinese-alpaca-lora-7b→下载llama.cpp进行模型的量化(CMake编译+生成量化版本模型)→部署f16/q4_0+测试效果】的图文教程(非常详细)

LLMs:Chinese-LLaMA-Alpaca-2(基于deepspeed框架)的简介、安装、案例实战应用之详细攻略

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(处理【标记化+分块】+切分txt数据集)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(监督式任务的数据收集器+指令数据集【json格式】)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

T1.5、LLaMA的汉化版本之Colossal-LLaMA-2

LLMs之Colossal-LLaMA-2:Colossal-LLaMA-2的简介(基于LLaMA-2架构+中文优化+扩充词表+仅千美元成本)、安装、使用方法之详细攻略

T2、Bloom及其衍生的大模型:Bloomz、Phoenix等

LLMs:《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》翻译与解读

T3、Falcon:Falcon = 1B/7B/40B+基于因果解码器模型(侧重严格数据清洗的MRD流程)+基于RefinedWeb互联网数据集【5000B的token】和人工精选数据集(精选+过滤+去重)

LLMs之Data:《The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only》翻译与解读

LLMs之Falcon 180B:Falcon 180B的简介、安装、使用方法之详细攻略

3.2、国内大模型

T1、基于ChatGLM-6B系列

LLMs之GLM-130B/ChatGLM:《GLM-130B: AN OPEN BILINGUAL PRE-TRAINED MODEL》翻译与解读

 LLMs之ChatGLM:从头到尾手把手教大家利用ChatGLM-6B模型实现训练、部署、推理(CLI/Gradio交互界面)、微调(两个提效技巧【混合精度+ZeRO零冗余提效】+三种微调方法【fine-tuning/P-tuning v2改变参数分布/LoRA低秩近似降低要更新参数量】)图文教程之详细攻略

LLMs之ChatGLM:基于Langchain框架利用text2vec-large-chinese+ChatGLM大模型(Docker 部署)接入本地知识库(生成本地知识库/分割/向量化+基于问题【Embdding+向量化+匹配TopK作为上下文】=生成Prompt喂给大模型→LLMs响应)实现问答响应项目(CLI/WebUI/VUE)图文教程之详细攻略

LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tunin】)的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2:ChatGLM2-6B本地部署之单机推理(API/CLI/GUI)、低成本部署(GPU量化部署/CPU及其量化部署/Mac部署/多卡部署)、有限资源下高效微调(全参/P-tuning v2)、模型评估和推理之图文教程之详细攻略

LLMs之ChatGLM2:基于ChatGLM Efficient Tuning(微调工具包)实现对ChatGLM2进行LoRA微调并进行推理测试图文教程之详细攻略

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2:ChatGLM-Finetuning(基于DeepSpeed)的简介、使用方法(四种微调方法(Freeze方法/Lora方法/P-Tuning方法/全量参数)+单卡/多卡训练设置+显存资源占用对比)、案例应用(基于4张A800-80G+采用ChatGLM-6B模型+全量参数+基于DeepSpeed框架(ZeRO3的模型拆分技术)流水线实现)之详细攻略

LLMs之ChatGLM2:ChatGLM-Finetuning之源码解读(train.py文件)—解析命令行(模型路径+数据集相关【最大序列长度/最大输入长度】+训练参数相关【批次大小/学习率/权重衰减系数/训练轮数/梯度累计步数/学习率预热比例】+结果输出相关【输出路径/训练方式【四种方式微调,如Freeze/Lora/P-Tuning/全量参数】/进程标志/loss频率/保存模型频率】+否启用梯度检查点+DeepSpeed配置+LoRA/Freeze/P-tuning配置)及初始化设置(是否启用分布式GPU+加载DeepSpeed配置参数+日志写入器)→加载数据(加载tokenizer/训练集)→模型训练(载入优化器和学习率调度器并设置参数+判断启用梯度检查点+将模型和优化器包装到deepspeed中【DeepSpeed封装数据并行】+执行模型训练【训练epoch循环+迭代训练数据+计算loss+反向传播+梯度裁剪技术】)+模型保存(定期显示训练损失并保存模型,判断zero3训练时其模型参数需要合并保存)

T2、基于Baichuan-7B系列

 LLMs之Baichuan:Baichuan-7B/13B模型的简介、安装、使用方法之详细攻略

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

LLMs之Baichuan 2:Baichuan 2的简介、安装、使用方法之详细攻略

LLMs之Baichuan 2:《Baichuan 2: Open Large-scale Language Models》翻译与解读

LLMs之Baichuan2:源码解读(fine-tune.py文件,基于deepspeed )—解析命令行参数→数据预处理(对消息内容进行分词处理+if判断对话角色(来自用户还是助手)并为对话内容添加各自角色对应的特殊token进而生成对应的输入和标签+添加结束符token+截断或填充操作)→模型训练(LoRA优化)

LLMs之Baichuan2:基于RTX 4090-24GB硬件部署并测试Baichuan2-13B-BF16系列模型并对8bits/4bits两种量化模型的模型效果、推理速度图文教程之详细攻略

T3、基于InternLM系列

LLMs之InternLM:InternLM-7B模型的简介、安装、使用方法之详细攻略

LLMs之InternLM:InternLM-20B的简介、安装、使用方法之详细攻略

LLMs之InternLM-20B:源码解读(train.py文件)—初始化配置→数据预处理(txt/json/jsonl等需转换为bin/meta文件再入模)→模型训练(批处理加载+内存分析+支持在特定步数进行验证评估+TensorBoard可视化监控+支持分布式训练【多机多卡训练同步更新】)+模型评估(ACC+PPL)+性能监控(日志记录+性能分析+内存监控等)


相关文章

LLMs:技术角度路线—预训练大模型六大步骤实现全流程详解(以LLaMA为例)—收集数据(增【收集3大方法及3大原则】+删【3大过滤+去除】)→数据预处理(文本标准化+token化+词表扩充)→模型预训练与评估→模型微调、评估、量化与推理→模型部署(硬件配置/Docker部署+模型使用)→落地应用实现复杂任务之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131332074

LLMs:技术角度路线—大模型训练和使用的四大阶段系统性最强总结:构建基模型(预训练【创新性+通用知识】)→优化模型(有监督微调【增强性+继续优化到特定任务+领域知识】)→修正模型(指令微调【可控性/诱导性+遵循指令+指令任务】/RLHF【对齐性+与专家对齐+真实无害任务】+存在对齐税)→挖掘模型(Prompting提示工程【只是指导+约束生成+更好的理解用户意图+巧妙的提示信息+通用策略{无需训练}】

https://yunyaniu.blog.csdn.net/article/details/133801929

LLMs:业务角度路线—基于开源大模型实现对中文语料实战应用【企业级ChatGPT领域大模型】之两条路线(国外模型方案LLaMA/Falcon/Chinese-LLaMA等、国内模型方案ChatGLM/BaiChuan等)的设计流程(重在选型思路+核心技术+实现方案)之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131607074

一、LLMs业务角度/产品角度的设计路线——企业级ChatGPT(领域大模型)私有化实战:

1、企业级ChatGPT—如何选择优质的应用场景:主流思路(产品与技术分开)、四大步骤(以问题为导向)、两种赋能(对做过的应用进行优化/提升业务环节的效率)

背景

国内使用存在网信办审核风险—OpenAI两头堵:在国内使用ChatGPT属于是两头堵的状况,OpenAI对中国大陆用户是明确禁用的,国家对于非可控信源也是有严格的使用说明的。

(1)、如果你只是自己搭建在家里或者公司内容研究用,那可能风险相对较小。但是如果要基于LLM和RAG技术对外提供经营服务,那基本上你还是需要退回到使用国内经过网信办审核的大模型。

简介

选择优质的应用场景,应用场景的选择关系着大模型最终的价值呈现,企业可以逐步梳理能够与ChatGPT结合的业务场景,有序开展小规模的双果验证工作,便于在基座大模型上线后实现快速的场景应用迁移

主流思路

目前主流做法是将产品和技术分开,主流实现(目前主要是Chat形式,但最后还是要集成到业务系统中),逐步接受容忍度(效率提升而非准确的100%),以前是通过搜索得到精确解而现在AIGC给出的是近似解(可进一步带来启发)。

产品团队

产品团队,需求设计的时候不用考虑技术可实现性,而是可将GPT-4作为锚定点(拿着GPT-4或者文心一言来做效果验证)进而确定当前场景是否可行。

利用OpenAI接口做上线测试:一些已经在做RAG应用的企业,也是无一例外的在使用OpenAI。但这本身是正确的逻辑,因为先用当前的上限做测试,至少我们”未来可期,等以后国产大模型慢慢追上来。

技术团队

技术团队,基于目前的技术方案,需要多少SFT数据才能让效果接近于当前的GPT-4,效果验证后,回归到应用本身。

四大步骤

提出思路→方案设计→效果验证→应用落地

思路—以问题为导向

可靠性的基座大模型(保障模型生成精度)→丰富的数据准备(让LLMs提供行业服务能力)→清晰的场景设计(直观体现大模型的业务价值)

应用

T1、对做过的应用进行优化:如智能搜索(生成检索报告)、智能客服(生成回复话术)等;

T2、提升业务环节的效率:营销(生成回复话术)、设备(挖掘故障案例)等;

经验

(1)、模型训练要实现模块化/组件化,进而可以及时更新基座大模型。主要是因为我们自己做的模型,花了很久的训练,最后很可能不如最新的模型性能,比如最新的BaiChuan2模型。

(2)、需要为大模型本身的能力差距做很多辅助组件→来达到最优模型的性能:如果使用国产大模型,或本地部署的开源大模型,确实在整体效果上和OpenAI是存在一些差距的,有时候事倍功半。所以,需要为大模型本身的能力差距做很多”胶水组件“,其实就是很多中间件,比如表格处理,使用OpenAI的话我们可以直接使用开源的PandasAI,它会产生一些代码执行语句,给到ChatGPT,就能生产很好的结果。但是在国产大模型里面,没有这么强的程序执行能力,我们就需要做一些表格存储、处理和计算的额外功能,像这样的例子还有很多。

(3)、复杂场景利用CoT拆解技术解决—多次查询—朝着一个目标多次执行:思维链在一定程度上能够提升模型的效果,但对于比较复杂或者需要多次判断的任务,将步骤进行人为的拆解为多次执行,效果上比一次执行多个步骤要好一些。每个步骤都是简单的任务,模型能够更加理解输入,且对上下文长度的依赖有所降低。

(1)、微调的场景—微调之前的业务场景思考:解决方案的选择(fine tuning还是优化prompt→LoRA还是全调)、RAG场景(开源方案基本一致)、垂直领域是否新场景(学习新概念?)

简介以业务场景为导向:从更多的角度来思考怎么更好的完成具体的业务需求。

解决方案的选择

(1)、解决方案—fine tuning还是优化prompt优化prompt的输出可能比微调后的输出更优

>>如何优化prompt—比如prompt中提供更多的示例比prompt各种约束效果:但是这里的问题是大模型小概率可能会把一些例子的内容输出出来,这个除了规则过滤似乎没有更好的办法。

>>是否采用RLHF微调,感觉这个做的会少一点,但是有的场景还是比较有用的。比如实际应用的例子,RAG问答中,有很多问题在知识库中可能检索不到答案,你需要模型回复"我不知道",当然,你可以选择在SFT阶段随机创造一些这种数据,但是相比于在SFT阶段来对齐这个知识,通过RLHF让模型学会这种拒绝能力评测的效果更好。

(2)、微调的选择—LoRA微调还是全参微调

如果你没有足够的资源来进行全参数微调,并不是所有的任务使用LoRA 都能追齐全参微调的效果,比如gsm8k数学推理任务,全参微调与lora微调的差异就比较大。

LoRA微调的分析:因此,对于某些类型的任务来说, 一些数据集可能更容易对齐,而另一些数据集可能会有效果损失。相比之下,全参数微调则没有这个约束, 学习到的权重保留了原始模型的表达能力,可能简化了拟合不同数据的任务。

RAG场景

检索增强生成RAG场景:RAG是大模型时代的hello world项目了,但是开源的方案基本都比较一致,不过实际做下来也有比较多的坑要走。

垂直领域是否新场景

垂直领域是否学习新词汇概念—比如解决相应的任务是否是要让模型学习新的概念;

2、企业级ChatGPT:通用大模型到领域大模型的八大步骤:选择底座模型→准备数据→准备资源→模型迁移→模型评估→模型评价→模型修正→模型应用

第1步,选择底座模型:背景的两大痛点(中文不友好/领域知识不足)、两大选型(Base/Chat)、原则(不影响Base模型效果)

背景目前主流的开源基座大模型为Bloom、OPT、LLaMA  1&2及其汉化版本BELLE/Chinese-LLaMA-Alpaca1&2、FlanT5、GLM/ChatGLM 1&2BaiChuan 1&2、Qwen等。

两大痛点

语言不匹配—国外模型中文不友好——分词模型和LLMs模型:大多数开源基座对中文的支持都不太友好,例如:Llama、mpt、falcon 等,这些模型在英文上效果都很优秀,但在中文上却差强人意。

专业知识有限—中文领域知识不足:当我们需要一个专业领域的 LLM 时,预训练模型中的知识就尤为重要。由于大多数预训练模型都是在通用训练语料上进行学习,对于一些特殊领域(金融、法律等)中的概念和名词无法具备很好的理解。我们通常需要在训练语料中加入一些领域数据(如:xuanyuan 2.0),以帮助模型在指定领域内获得更好的效果。

选择最强基座

不少工作选择在一个较强的基座模型上进行微调,且通常效果不错,比如LLaMA、Alpaca、Vicuna等。但是,这有一个成功的前提,那就是预训练模型和下游任务的差距不大,预训练模型中通常已经包含微调任务中所需要的知识。

目标目标不影响Base模型效果上,再在特定任务的领域数据上继续提高模型效果。
选择原则

选择LLMs的标准前提是开源+可商用

如果没有私有化需求的话,国内可首选清华智谱的API。

(1)、以需求为导向:如果是RAG场景,着重考虑LLMs的归纳能力,我们不需要LLM在各个方面都很优秀,不需要它会很强的coding和复杂逻辑推理能力,在RAG场景中,最重要的还是出色的归纳能力;

(2)、以成本为考量:LLMs模型不需要太大,最好在13B及以下,因为再大就需要一张A100等专业显卡,或者要多张消费级显卡。很多业务的目标是一张RTX 4090可以解决问题,对很多客户来说,A卡很难买,而且价格太高了;

>>10B以下级别的选择:Chinese-LLaMA-Alpaca-2-7B、ChatGLM2-6B、Baichuan2-7B、BLOOM-7B;

>>10B级别的选择:Chinese-LLaMA-Alpaca-2-13B、Baichuan2-13B;

分类

1、基础模型版本的选择(利用SFT进行领域大模型迁移时):宗旨是在不影响Base模型效果上,再在特定任务上继续提高模型效果。一般基础模型都有两个版本:

>> Base版本:适合资源充足情况下,比如100w的数据量);

>> Chat版本:适合资源受限的情况下,比如0.5w的数据量;不建议采用全量参数训练会导致原理模型遗忘较多)。

(1)、非常不建议在Chat模型上做增量预训练,还是要在最原始的Base模型上做更好!在Chat模型上进行SFT时,请一定遵循Chat模型原有的系统指令&数据输入格式。

经验总结

大多的开源模型都会提供一个base版和一个chat版。

1、base版本更适合微调、chat版本更适合prompt工程

>> 基于base版本模型微调能在相应的任务上获得更好的效果,但是不能保证微调后的效果在这个任务上一定比chat版不进行特定任务微调效果好。不过,针对未微调的chat模型可能需要尝试一些适合的prompt来得到有效的效果;

>> 做了指令微调的chat模型也不一定会比base模型获得更好的效果,例如llama2-70B-chat效果低于base(8-shot)的效果,但是在base上微调之后的模型基本都会比不微调的base模型使用few shot prompt效果更好

2、微调很重要—微调后的模型在所有尺寸的base模型上都能获得最优的效果,同时推理的时候也可以用更短的prompt,推理速度也更快;

>>如果先让模型在mathqa(3w pair)上微调,再在gsm 8k上微调,尽管mathqa的答案是多项选择,而且质量更低,但是仍能获得大概10+%的准确率提升;

>>目前作者没进行chat模型的微调;

3、如何汉化国外优秀大模型如LLamA?

现状:一个较为普遍的问题是:国外大部分优秀的语言模型都没有进行充分的中文预训练

解决方案照搬BELLE/Chinese-LLaMA-Alpaca的思路,采用增量预训练方案。即在进行预训练之前,我们需要先选择一个预训练的模型基座。

主流思路:许多工作都尝试将在英语上表现比较优秀的模型用中文语料进行二次预训练,期望其能够将英语上的优秀能力迁移到中文任务中来。比如Chinese-LLaMA-Alpaca=基于原始LLaMA+词表扩充。

第2步,准备数据:两类数据集(领域数据集/指令数据集)

准备数据

准备领域数据集:原始行业数据集(清洗)→语义通顺数据集(过滤)→高质量数据集(去重)→非重复数据集(加工)→最终数据

领域技术标准文档或领域相关数据是领域模型Continue PreTrain的关键。领域数据训练后,往往通用能力会有所下降,需要混合通用数据缓解模型遗忘通用能力。领域模型Continue PreTrain时可以同步加入SFT数据,即MIP,Multi-Task Instruction PreTraining。

准备指令数据集:自动化生成、人工设计+机器生成、手工注入

经验

(1)、数据构造—混合数据集【通用数据集+领域数据集】:通用数据和领域数据的比例,BaiChuan模型验证了一般为5:1较好!

文旅行业预训练模型—从头自训练(没有使用原始权重+从CLM开始训练):基于BLOOM-7B+8块A100+PT阶段(200G通用数据+30G垂直领域数据)→SFT阶段(420W指令)→BLOOM-7B-Chat

参考地址:实战!私有化部署RAG,选ChatGLM2-6B还是Baichuan2-13B?

(2)、特定场景需要对应的数据集:多轮对话的复杂任务场景,需要构造多轮对话数据集;

第3步,准备资源(多机多卡)+选择框架(DeepSpeed为主)

痛点

大模型时代的硬件痛点:传统的单机单卡导致的内存墙通信墙→单机多卡或者多机多卡

大模型时代的变革。对于以Transformer、MOE结构为代表的大模型来说,传统的单机单卡训练模式肯定不能满足上千(万)亿级参数的模型训练,这时候我们就需要解决内存墙通信墙等一系列问题,在单机多卡或者多机多卡进行模型训练。

选择方案

配置计算资源:多机多卡,资源=数据占用+显卡占用,比如RTX309024G、RTX 409024G、A40-48G、A6000-48G、A800-80GB、H100-80GB、A100-80GB

选择框架选择训练框架:DeepSpeed、Megatron-LM、Clossal-AI、OneFlow
AI:人工智能领域之大模型部署两大设计方案(本地搭建服务器+调用云厂商服务)、服务器和硬件相关技术的简介(GPU/TPU、GeForce【3090-4090】/Tesla【A800-A100/V100】)、服务器搭建(GPU集群、节点、GPU卡/显卡)之详细攻略

AI:人工智能领域之大模型部署两大设计方案(本地搭建服务器+调用云厂商服务)、服务器和硬件相关技术的简介(GPU/TPU、GeForce【3090-4090】/Tesla【A800-A100/V100-CSDN博客

第4步,模型迁移四种方法(增量预训练/高效参数训练/TCL/PL)

模型迁移

模型领域迁移

>>增量预训练:

>>高效参数训练:

>>提示学习Prompt Learning(被动指示):
>>上下文学习In-context Learning(主动理解):

LLMs:工程角度路线—大模型爆发的两大原因、大模型训练和使用的四大阶段系统性最强总结:构建基模型(预训练【创新性+通用知识】)→优化模型(有监督微调【增强性+继续优化到特定任务+领域知识】)→修正模型(指令微调【可控性/诱导性+遵循指令+指令任务】/RLHF【对齐性+与专家对齐+真实无害任务】+存在对齐税)→挖掘模型(Prompting提示工程【只是指导+约束生成+更好的理解用户意图+巧妙的提示信息+通用策略{无需训练}】

https://yunyaniu.blog.csdn.net/article/details/133801929

第5步,模型评估(自身能力)

模型评估

领域大模型评估

T1、人工抽样评估

T2、自动评估工具:题型为选择题

LLMs:LLMs大语言模型评估的简介(两标(NLUGR指标/REBT)+六性(理解性+生成性{PPL}+多样性+泛化性+能耗性+可解释性)+九维(2大能力域【理解/生成】+3性【丰富性/多样性/适应性】+4大子任务【逻辑推理/问题解决/对和聊天/情感分析】),大模型排行榜多种),两类基准——通用任务的基准(单任务【BLEU/ROUGE-MT-Bench/Chatbot Arena】、多任务【SuperGLUE/MMLU/BIG-bench/HELM/AGIEval/C-EVAL/Xiezhi】、基于工具【API-Bank/ToolBench】)、特定下游任务基准(MATH/CUAD/MultiMedQA/GaoKao/SOCKET/CVALUES)之详细攻略

LLMs:LLMs大语言模型评估的简介(两标+六性+九维,大模型排行榜多种),两类基准—通用任务的基准(单任务【BLEU/ROUGE-MT-Bench/Chatbot Arena】、多任务【Super-CSDN博客

第6步,评价模型(世界排名)

模型评价

评价模型训练:训练评价模型;比如答案排序、多个任务答案、Prompt取样;

领域大模型评价策略

(1)、领域评测集时必要内容,建议有两份,一份选择题形式自动评测、一份开放形式人工评测。

(2)、三种方法

T1、模板做题客观规则自动打分:收集各种类型数据,构建各维度能力评价数据集;一般是多项选择题为主;

T2、GPT-4模型自动主观打分:对模型输出结果,利用GPT-4进行评价打分。

T3、竞技场PK:基于相同的输入,人工评价两个模型输出结果的好坏,给出胜-平-负;

第7步,模型修正(偏应用)

模型修正

人类偏好对齐:任务模型与评价模型相互迭代

主要方法可以采用RLHF【对齐性+与专家对齐+真实无害任务】+存在对齐税

第8步,模型应用(横向赋能应用):两大内容(模型量化降显存/加速推理框架)、两大场景(RAG/Agent)

简介领域大模型落地验证
加速推理

模型量化降显存技术:模型量化技术,采用4bit或8bit量化;

加速推理框架:比如FasterTransformer

两大场景

RAG场景

Agent场景

经验总结
PTM:大模型加速方法或框架(预训练阶段/推理阶段)的简介、常用框架(Megatron-LM/Colossal-AI/DeepSpeed等,FasterTransformer/FastLLM/vLLM/TurboTransformers等)、案例应用之详细攻略

PTM:大模型加速方法或框架(预训练阶段/推理阶段)的简介、常用框架(Megatron-LM/Colossal-AI/DeepSpeed等,FasterTransformer/FastLLM/vLLM_一个处女座的程序猿的博客-CSDN博客

(1)、大模型落地的两大应用场景:RAG (给LLM外挂知识库→处理企业私有知识,比如langchain的RAG实现)和 Agents(给LLM外挂工具集→获取最新的知识,比如langchain的Bing功能)
LLMs之RAG:知识检索增强生成方法(搭建本地知识库、利用外挂信息库增强LLMs自身能力的一种方法,外部知识检索+LLMs生成回复=知识问答任务)的简介、实现方法(LangChain/LocalGPT/embedchain等)、案例应用之详细攻略

https://yunyaniu.blog.csdn.net/article/details/130215772

LLMs之Agent:Agent的简介、实现案例(ChemCrow/AutoGPT/GPT-Engineer/Generative Agents等)、案例应用之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131255944

3、企业级ChatGPT实战案例(纵向赋能场景,文旅/医学等垂直领域已有案例):让大模型做最后一公里

高质量文案编写

高质量文案编写:控制成本前提下+利用LLMs高效生成高质量的文案(替代传统基于模板匹配规则的方法)

工业制造维修经验资产知识化

工业制造维修经验资产知识化:将专家的维修经验转为知识库让LLMs提供检修故障方案

在大型工厂的工业设备检修场景下,设备的复杂性和故障的多样性使设备检修对专家经验依赖度极高。可以利用现有的检修经验资产,基于检修经验构建知识图谱,为检修人员提供基于实际故障的处置建议(现有故障推理和结果匹配+类ChatGPT的生成能力对答案进行融合),为一线工人提供可执行的处理方案,提高一线检修工人的检修效率。

舆情风控—突发事件分析

舆情风控—突发事件分析:存在突发事件快速处置的需求+需要从大量记录中快速梳理事件脉络及核心要点+让LLMs以最小代、最快速输出可信的事件报告

文旅两阶段

文旅行业预训练模型=基于BLOOM-7B-CHat模型

增量预训练阶段CLM(200G通用数据+30G垂直数据)→指令微调阶段(SFT,420W指令数据)

医学三阶段

医学领域大模型=基于BaiChaun-7B

CPT无监督增量/持续预训练阶段【NSP任务】→SFT有监督微调阶段→RKHF的DPO直接偏好优化阶段(与医学领域的知识对齐)

2023年10月13日,Qilin-Med,基于BaiChuan-7B+多阶段训练方法(CPT增量/持续预训练阶段→SFT有监督微调阶段→RKHF的DPO直接偏好优化阶段)

LLMs之Law:大语言模型领域行业场景应用之大模型法律行业的简介、主流LLMs(PowerLawGLM/ChatLaw)、经典应用之详细攻略

LLMs之Law:大语言模型领域行业场景应用之大模型法律行业的简介、主流LLMs(PowerLawGLM/ChatLaw)、经典应用之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之Medical:大语言模型领域行业场景应用之大模型医疗行业的简介、主流LLMs(ChatGLM-Med/ChatDoctor/Radiology-GPT/Qilin-Med等)及其评估基准(包括数据集)、案例应用之详细攻略

LLMs之Medical:大语言模型领域行业场景应用之大模型医疗行业的简介、主流LLMs(ChatGLM-Med/ChatDoctor/Radiology-GPT/Qilin-Med等)及其评估基准(-CSDN博客

二、思考:提高LLMs模型的性能

2.1、提升LLMs性能的三大工具:Prompt→RAG→FineTuning(PEFT)

(1)、三者对比(Prompt/FineTuning/RAG)——如何用好大模型?混合三种效果最佳

图片地址:3 Ways To Improve Your Large Language Model - Maarten Grootendorst

痛点

随着人们对大型语言模型 (LLMs) 的兴趣激增,许多开发人员和组织正忙于利用其能力构建应用程序。然而,当开箱即用的预训练LLM没有按预期希望执行时,如何提高LLM应用的性能的问题。那么,如何充分用好大模型?

对比

考虑点:外部数据源、调整模型适配风格、减少幻觉性、训练数据的规模性、敏捷性(数据的动态性/模型保持最新的必要性)、决策的可解释性

Prompt

RAG

FineTuning

特点

最易上手、

简单而强大、

性价比更高、

提高LLM性能的起点

更高级、

性价比较高、

借助外部知识提高生成质量、

检索器+生成器

本质上优化LLM性能

微调LLM的参数来更好地适应特定领域

让LLM变得更加专业化和高度定制化

场景

各种场景

>>需要访问外部数据源的场景;

>>适合数据更新频率较高的场景(敏捷性);

>>可解释性,可追溯模型对特定数据源的答案

>>拥有大量的特定领域的标记数据;

>>需要适应特定领域风格的场景;

优势

可明文提示拒绝幻觉

可抑制幻觉(提供事实来源)

可减少幻觉但不能消除

劣势

数据静态性

可能引入更多延迟

成本最高、数据静态性

(1)、RAG比FineTuning更适合需要访问外部数据源的场景:如果应用程序需要利用外部数据源,使用RAG系统可能比仅仅试图通过FineTuning“融入”所需知识,更有效和可扩展。

>>RAG系统旨在通过在生成响应之前从知识源检索相关信息增强LLMs的能力。这使得该技术非常适合需要查询数据库、文档或其他结构化/非结构化数据存储库的应用程序。可以利用这些外部源优化检索器和生成器组件。

>>微调LLM虽然可以学习一些外部知识,但这需要大量来自目标领域的带标签的问答数据集。此数据集还必须随着基础数据的变化而不断更新,这对于频繁变化的数据源来说是不切实际的。

(2)、FineTuning比RAG更适合需要适应具体语言风格的场景(behaviour/writing/vocabulary):比如,如果我们希望模型听起来更像医学专业人士,或者以诗意的风格写作,或者使用特定行业的术语,那么对特定领域的数据进行微调可以让我们实现这些定制。

(3)、RAG更易引入延迟:与基于内化知识生成响应的微调LLM相比,RAG系统涉及在生成响应之前检索数据,可能会引入更多延迟。

使用经验总结

(1)、建议在进行微调之前尝试使用 RAG,如果能用低成本就不要去微调;因为RAG 更简单、更便宜,但其质量可能不匹配。可以从 RAG 开始,评估其性能,如果发现不足,则转向微调。

(2)、不同方案会有很大差别的项目规划和预算:RAG 和微调之间的细微差别涉及模型架构、数据要求、计算复杂性等。忽视这些细节可能会破坏你的项目时间表和预算。

解决LLMs与生俱来的幻觉劣势:三大优化(RLHF拒绝/Prompt明文限制/RAG追根溯源技术)

PTM:预训练大模型时代的多角度思考与辩论—大模型爆发原因、应用思考、数学思考(基于Transformer类的大模型本质上是否基于概率统计)、智能思考(GPT-4牛叉能力原因剖析/涌现能力/思维连)、-CSDN博客

LLMs之PE:大模型核心技术—提示工程(Prompt Engineering)的简介、常用工具、使用方法之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131237789

LLMs之PEFT:大模型核心技术—PEFT(参数高效微调)的简介(指令微调/RLHF微调)、微调两大范式+三类五法—基于添加式(引入额外可训练参数或模块,如Adapter/Prefix/P-tuning/HINT)、基于规范化(冻结某些固有模型参数同时指定要调整的参数,如Delta-tuning)、基于重参数化(假设模型自适应的低秩性→权重可重新参数化为低维子空间,如LoRA/QLoRA/LOMO)之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131333408

LLMs之RAG:知识检索增强生成方法(搭建本地知识库、利用外挂信息库增强LLMs自身能力的一种方法,外部知识检索+LLMs生成回复=知识问答任务)的简介、实现方法(LangChain/LocalGPT/embedchain等)、案例应用之详细攻略

https://yunyaniu.blog.csdn.net/article/details/130215772

2.2、提高LLMs模型中文性能的三大路线

T1、直接采用国外原始模型(比如LLaMA)+指令微调(含中文语料):比如Vicuna

简介

如果不扩充词表,对于中文效果怎么样?根据Vicuna官方的报告,经过Instruction Turing的Vicuna-13B已经有非常好的中文能力。

T2、采用国外原始模型(比如LLaMA)+扩充中文词表+加持增量二次预训练:比如BELLE、Chinese-LLaMA-Alpaca、Colossal-LLaMA-2

背景

(1)、开源最强LLaMA模型对中文不友好:LLaMA模型主要在英语语料库上训练,并且它的原生tokenizer词表中包含不到一千个汉字,因此在有效编码全面的中文文本方面表现不佳。在对中文字进行tokenzation时,一个中文汉字往往被切分成多个token(比如需要2-3个Token才能组合成一个汉字),这显著降低编解码的效率。

当然,如果不扩充词表,也可以通过进一步微调适应中文能力,但是很可能能力有限。根据Vicuna官方的报告,经过Instruction Turing的Vicuna-13B已经有非常好的中文能力

(2)、主流的BPE分词法不太适合中文:使用BPE字节标记对于Transformers编码器,来捕捉汉字的语义细微差别构成了挑战。比如对中文字进行tokenzation时,一个中文汉字往往被切分成多个token,即2-3个Token才能组合成一个汉字,显著降低编解码的效率。

相关研究—LLaMA需不需要扩充词表?

根据Chinese-LLaMA-Alpaca、BELLE的报告,扩充中文词表,可以提升中文编解码效率以及模型的性能。但是扩词表,相当于从头初始化开始训练这些参数。如果想达到比较好的性能,需要比较大的算力和数据量。

同时,Chinese-LLaMA-Alpaca也指出在进行第一阶段预训练(冻结transformer参数,仅训练embedding,在尽量不干扰原模型的情况下适配新增的中文词向量)时,模型收敛速度较慢。如果不是有特别充裕的时间和计算资源,建议跳过该阶段。因此,虽然扩词表看起来很诱人,但是实际操作起来,还是很有难度的。

排疑:可以不进行增量预训练而直接采用指令微调吗?
如果没有进行增量预训练,模型可能无法利用新的中文词表,并可能在生成和理解中遇到困难。不进行增量预训练,而直接使用指令微调,可能会限制模型在新的中文词表上的适应性。因此,建议在进行指令微调之前,先进行适当的增量预训练,以提高模型的适应性

简介

提升LLaMA-2中文能力的两大步骤 = 扩展词表 + embedding

词表扩充是指向现有词汇库中添加新词或术语,以适应不断变化的语言和新兴领域的需求。这些新token主要是一些低频词或崭新词汇,可以补充原词表的不足。

>> 在传统的词表中,只包含了一些常见和常用的词汇,但无法覆盖所有可能的词汇。

>> 随着时间的推移和社会的发展,新的词汇和术语不断涌现,例如科技、流行文化、社交媒体等领域的新词汇。

>> 因此,词表扩充变得越来越重要,以便有效地处理和理解新的文本数据。

实现方法

比如:在中文语料库上训练一个中文tokenizer模型,然后将中文 tokenizer与 LLaMA原生的 tokenizer进行合并,通过组合它们的词汇表,最终获得一个合并后的 tokenizer 模型。

意义

提高非英语(目标语言)场景的LLMs的适应能力—解决国外模型对中文不友好:提高在非英语语言场景中适应LLaMA等开源模型,可进一步使用目标语言的指令数据进行微调来提高模型性能。

扩充中文词表,可以提升中文编解码效率以及模型的性能。大多数开源基座对中文支持都不太友好,例如:Llama、mpt、falcon 等,这些模型在英文上效果都很优秀,但在中文上却差强人意。

作用

(1)、解决词表中的OOV问题:即遇到未在训练数据中出现的词语。通过在更大规模的数据集上训练新的标记嵌入,可以丰富模型对于未知词语的理解能力,并提高模型在自然语言处理任务中的性能。

(2)、提高字符串序列编码的压缩率—提高模型的编解码的效率:在LLaMa原来的词表上,一个汉字平均1.45个token,扩充后的Chinese-LLaMa为0.65个token;那在垂直领域内呢?比如在LLaMa在继续扩充领域内词表,金融或者医疗等等,把“负债表”,“糖尿病”等领域词汇也加入词表里,那更加能提高其编解码的效率。

(3)、提高中文应用时模型的上下文窗口长度,原LLaMa上下文长度是4096个token,不扩充词表前,按1.45来算就是最多只能输入2824个汉字,扩充后以0.65来算的话就是6301,垂直领域会更大。

备注:上下文窗口长度参数解释,模型在处理文本时会关注多远距离的单词或标记。比如当context length=512时,如果模型要生成一个词或标记,它会考虑它前面和后面各512个单词或标记的上下文,以确定生成的词或标记应该是什么。

(4)、增强信息的完整性:表达语义会更加完整。

(5)、提高信息价值性:使编码的序列包含更多有价值的信息,从而在理论上提高了章节级编码的能力

(6)、有可能会提高LLaMa在中文+垂直应用上的表现:如果在垂直领域扩充词表后,垂直领域词太多过拟合,但会影响通用领域效果。

缺点

(1)、扩充完词表后必须要进行二次增量预训练—导致耗费较大的算力:扩充完词表后还要经过一系列的后续处理和训练,但需要很多的资源。扩词表,相当于从头初始化开始训练这些参数。如果想达到比较好的性能,需要比较大的算力和数据量

(2)、过多的词汇表标记会带来高内存:过多的词汇扩展会导致与嵌入相关的参数增加,从而导致更高的内存使用,进而影响训练过程的效率。

(3)、有限的训练集场景下+过多的词汇表标记=使得一些标记无法被有效学习→也会导致模型性能不佳:如果训练数据集有限,导致许多标记没有被有效地学习到和使用。这些未使用的标记可能是因为数据集中的样本数量不足,无法充分覆盖所有可能的标记。因此,这些未使用的标记可能没有被模型有效地学习到,无法发挥作用。

捆绑组合

词表扩充和二次预训练的组合方法可以增强模型的词汇表覆盖能力和语义理解能力,从而提高自然语言处理任务的性能和鲁棒性。

(1)、扩充词表阶段+二次增量预训练阶段(去理解新token的语义,但只更新embedding层参数)+指令精调阶段(理解特定领域):目的是在预训练中引入更多的中文词汇,以提高模型对中文语境的理解能力。在更大量的数据集上对这部分新token的embedding进行重新训练,使其更贴合目标领域。

(2)、预训练阶段(可理解为两个子阶段);第一阶段是原始的Pretraining,思路很简单,就是输入一堆文本,让模型做 Next Token Prediction 的任务,这个很好理解。第二阶段只训练embedding层,固定模型transformer大部分的参数(比如只开放q和v参数),以适配新增的中文词向量。模型可以学习到适应中文语料的词表示

(3)、指令精调阶段—提升模型对指令的理解和执行能力:使用LoRA技术,训练embedding层的同时更新LoRA参数,以提升表示能力。指令精调阶段与Stanford Alpaca项目类似,通过LoRA技术进行高效的精调,提升模型对指令的理解和执行能力。

注意:高效微调技术(LoRA /PTuning)大多只用在二次训练阶段或微调(Finetune)阶段,不能用在最初预训练阶段。

经验总结

扩充词表诱人但实际操作比较难:Chinese-LLaMA-Alpaca模型中,指出在进行第一阶段预训练(冻结transformer参数,仅训练embedding,在尽量不干扰原模型的情况下适配新增的中文词向量)时,模型收敛速度较慢。如果不是有特别充裕的时间和计算资源,建议跳过该阶段。因此,虽然扩词表看起来很诱人,但是实际操作起来,还是很有难度的。

最好使用扩充中文词后的开源模型:如果既想要中文词表,又没有很大的算力:建议直接使用基于中文的国内模型(如ChatGLM-6B、BaiChuan-7B、InternLM等)或者使用国外的汉化模型(如BELLE、Chinese-LLaMA-Alpaca、Colossal-LLaMA-2进行中文词表扩充后训练好的模型)作为Base模型。

疑问

(1)、建议准备“垂直领域”的训练语料,但最好和“通用领域”的训练语料混合一下;

(2)、“垂直领域”词表多大更合适?会不会影响“通用领域”的效果;

(3)、这些新增的词在模型的embedding如何初始化,以及后续的如何训练也是更为重要的!

案例实战

(1)、BELLE模型扩充中文词表:在BELLE中,首先,在120w行中文文本上训练出一个 5w 规模的 token 集合;其次,将这部分 token 集合与原来的 LLaMA 词表做合并;最后,再在 3.2B 的中文语料上对这部分新扩展的 token embedding 做二次预训练

(2)、Chinese-LLaMA-Alpaca模型扩充中文词表:利用哈工大开源分词器将从32000扩充到49953个词汇。发现Chinese-LLaMA在原始 tokenizer上新增了17953个tokens,且加入 token的大部分为汉字。

其中,Chinese-LLaMA-2在原版Llama-2的基础上扩充并优化了中文词表,使用了大规模中文数据进行二次增量预训练,进一步提升了中文基础语义和指令理解能力,相比一代相关模型获得了显著性能提升。

(3)、Colossal-LLaMA-2模型扩充中文词表:Colossal-LLaMA-2分词器将LLaMA-2词汇表从32000扩展到69104。通过计算原始LLaMA-2嵌入的均值来初始化新的单词嵌入,然后将这些新行附加到原始嵌入矩阵的末尾

(1)、基于词表扩展的LoRA微调,选择训练整个embedding层还是只训练新增token的embedding?取决于新增词汇量的大小

背景

在LLMs中,如果通过词表扩展,额外新增了token,那使用LoRA微调时是训练整个embedding层,还是只训练新增token的embedding?

对LLM进行词表扩展时,LoRA微调时的处理方式有以下两种选择:

T1、只训练新增token的embedding:这种方法的优点是参数量小训练时间短。缺点是只学习新增词汇的表示,而不学习原词表中词汇表示的微调,容易导致新老词汇表示不协调

T2、训练整个embedding层:这种方法可以同时微调原词表和新增词汇的表示,使新老词汇表示更协调。但需要训练更多参数,训练时间更长

个人建议

新增词汇量的多少是决定只训练部分embedding还是全部embedding的关键。我们应该根据词汇新增的比例,选择合适的训练方式,既保证模型性能,又控制训练时间

>>如果新增词汇量较小=节省计算资源+保留预训练模型的知识+避免过拟合:如果只占词表的一小部分,则可以只训练新增词汇的embedding,以节省训练时间。更重要的是,LLMs的预训练模型已经通过大规模数据进行了训练,其中的embedding层已经学习到了丰富的知识(语法、语义和世界知识)。如果微调整个embedding层,可能会破坏这些已经学到的知识,导致性能下降。

(1)、一般情况下,采用主流的通用大模型,词汇已足够多,可首选该方法,除非学习一种新的语言。

>>如果新增词汇量较大,占词表较大比例,则最好训练全部embedding层。因为大量新增词汇可能会影响模型对语义的理解,全量训练可以帮助模型学习词汇之间的关系,使新老词汇表示更协调,比如学习一种新的语言。

LLMs之BELLE:源码解读(merge_tokenizers.py文件)扩充词表—训练和合并两个不同的SentencePiece分词模型—使用SentencePiece库来训练一个名为belle的BPE分词器→加载两个现有的分词器模型→合并词汇表→保存合并后的模型作为新的分词器模型

LLMs之BELLE:源码解读(merge_tokenizers.py文件)扩充词表—训练和合并两个不同的SentencePiece分词模型—使用SentencePiece库来训练一个名为belle的_一个处女座的程序猿的博客-CSDN博客

LLMs之Chinese-LLaMA-Alpaca:源码解读之merge_tokenizers.py文件实现词表扩充—合并原始的LLaMA分词模型+重训练的中文分词模型(可进一步对比两个模型各自对中文的分词效果)

https://yunyaniu.blog.csdn.net/article/details/131137574

LLM之Colossal-LLaMA-2:源码解读(init_tokenizer.py文件)实现基于源词表的扩展(中文标记的新词汇)进而实现持续预训练、(init_model.py文件)实现过计算均值来扩展模型的嵌入层以适应新的词汇表,然后保存扩展后的模型、(prepare_pretrain_dataset.py文件)将原始数据集进行处理和切片并保存为JSONL格式和 Arrow格式

LLM之Colossal-LLaMA-2:源码解读(init_tokenizer.py文件)实现基于源词表的扩展、(init_model.py文件)实现过计算均值扩展模型、(prepare_pretr-CSDN博客

LLMs之tokenizer:基于SentencePiece库训练自定义数据集→预处理→分词器训练/推理测试→基于LLaMA原始分词模型实现扩充中文词表→对比扩充前后对中文英文文本的分词效果实践之详细攻略

https://yunyaniu.blog.csdn.net/article/details/133834183

2.2、探究训练数据类别对模型性能的影响:词表扩充、数据质量、数据语言分布、数据规模等因素
LLMs之BELLE:BELLE(一款能够帮到每一个人的中文LLM引擎)的简介(基于Alpaca架构+中文优化+考察词表扩充/数据质量/数据语言分布/数据规模的量化分析)、使用方法、案例应用之详细攻略

LLMs之BELLE:BELLE(一款能够帮到每一个人的中文LLM引擎)的简介(基于Alpaca架构+中文优化+考察词表扩充/数据质量/数据语言分布/数据规模的量化分析)、使用方法、案例应用之详细攻略_一个处女座的程序猿的博客-CSDN博客

2.3、7B级别的各种模型分词器获得的词表大小、压缩率对比:Colossal-LLaMA-2、LLaMA-2-7B、Baichuan-7B、Chatglm2-6B、InternLM-7B、Chinese-llama-2-7b

LLMs之Colossal-LLaMA-2:Colossal-LLaMA-2的简介(基于LLaMA-2架构+中文优化+扩充词表+仅千美元成本)、安装、使用方法之详细攻略-CSDN博客

T3、直接采用国内LLMs大模型:比如ChatGLM-6B系列、Baichuan-7B系列、InternLM系列

三、模型选择

3.1、国内外大模型

☆☆T1、基于原始LLaMA及其系列的思路

T1.1、基于原始LLaMA
LLMs之LLaMA:《LLaMA: Open and Efficient Foundation Language Models》翻译与解读

LLMs之LLaMA:《LLaMA: Open and Efficient Foundation Language Models》翻译与解读_ai自然语言处理_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA:在单机CPU+Windows系统上对LLaMA模型(基于facebookresearch的GitHub)进行模型部署且实现模型推理全流程步骤【部署conda环境+安装依赖库+下载模型权重(国内外各种链接)→模型推理】的图文教程(非常详细)

LLMs之LLaMA:在单机CPU+Windows系统上对LLaMA模型(基于facebookresearch的GitHub)进行模型部署且实现模型推理全流程步骤【部署conda环境+安装依赖库+下载_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA-7B-QLoRA:基于Alpaca-Lora代码在CentOS和多卡(A800+并行技术)实现全流程完整复现LLaMA-7B—安装依赖、转换为HF模型文件、模型微调(QLoRA+单卡/多卡)、模型推理(对比终端命令/llama.cpp/Docker封装)图文教程之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131526139

LLMs之LLaMA2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之LLaMA2:LLaMA2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA-2:源码解读之所有py文件(包括example_text_completion.py/example_chat_completion.py+model.py/generation.py/tokenizer.py)

LLMs之LLaMA-2:源码解读之所有py文件(包括example_text_completion.py/example_chat_completion.py+model.py/generation_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA-2:基于LocalGPT利用LLaMA-2模型实现本地化的知识库(Chroma)并与本地文档(基于langchain生成嵌入)进行对话问答图文教程+代码详解之详细攻略

LLMs之LLaMA2:基于LocalGPT利用LLaMA2模型实现本地化的知识库(Chroma)并与本地文档(基于langchain生成嵌入)进行对话问答图文教程+代码详解之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA-2:基于云端进行一键部署对LLaMA-2模型实现推理(基于text-generation-webui)执行对话聊天问答任务、同时微调LLaMA2模型(配置云端环境【A100】→下载数据集【datasets】→加载模型【transformers】→分词→模型训练【peft+SFTTrainer+wandb】→基于HuggingFace实现云端分享)之图文教程详细攻略

LLMs之LLaMA2:基于云端进行一键部署对LLaMA2模型实现推理(基于text-generation-webui)执行对话聊天问答任务、同时微调LLaMA2模型(配置云端环境【A100】→下载数_一个处女座的程序猿的博客-CSDN博客

LLMs之LLaMA-2:基于text-generation-webui工具来本地部署并对LLaMA2模型实现推理执行对话聊天问答任务(一键安装tg webui+手动下载模型+启动WebUI服务)、同时微调LLaMA2模型(采用Conda环境安装tg webui+PyTorch→CLI/GUI下载模型→启动WebUI服务→GUI式+LoRA微调→加载推理)之图文教程详细攻略

LLMs之LLaMA2:基于text-generation-webui工具来本地部署并对LLaMA2模型实现推理执行对话聊天问答任务(一键安装tg webui+手动下载模型+启动WebUI服务)、同时_一个处女座的程序猿的博客-CSDN博客

T1.2、基于原始LLaMA+国外指令精调的版本:比如Alpaca、Vicuna,Phoenix、Chimera
2023年3月14日——Alpaca(Stanford):使用小成本训练大模型(只需廉价600美元)、利用GPT3.5模型生成高质量的指令数据【175 个prompts+52K指令遵循样本数据】去SFT的LLaMA-7B、 基于LLaMA-7B+微调【HuggingFace框架训练】+Self-Instruct指令跟随语言模型、全分片数据并行+混合精度训练+8个A100-80G三个小时、后期的微调优化Alpace-LoRA

LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读

LLMs之Alpaca:《Alpaca: A Strong, Replicable Instruction-Following Model》翻译与解读_一个处女座的程序猿的博客-CSDN博客

2023年3月30日——Vicuna(Berkeley+CMU+Stanford):训练Vicuna13B仅300美元=8张A100耗费1天+PyTorch FSDP、ShareGPT收集7万段对话、基于Alpaca构建+内存优化(​梯度检查点gradient checkpointing+闪光注意力​flash attention​,最大上下文长度扩展到2048)+多轮对话+管理Spot实例(降低成本)+GPT4模型评估
LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读

LLMs之Vicuna:《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality》翻译与解读_一个处女座的程序猿的博客-CSDN博客

LLMs:在Linux服务器系统上实Vicuna-7B本地化部署(基于facebookresearch的GitHub)进行模型权重合并(llama-7b模型与delta模型权重)、模型部署且实现模型推理全流程步骤的图文教程(非常详细)

https://yunyaniu.blog.csdn.net/article/details/131016620

 T1.3、LLaMA的汉化版本之BELLE:
2023年4月8日,LLMs之BELLE:BELLE(一款能够帮到每一个人的中文LLM引擎)的简介(基于Alpaca架构+中文优化+考察词表扩充/数据质量/数据语言分布/数据规模的量化分析)、使用方法、案例应用之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131137558

☆T1.4、LLaMA的汉化版本Chinese-LLaMA-Alpaca:词表扩充的预训练2阶段+指令微调
LLMs:《Efficient And Effective Text Encoding For Chinese Llama And Alpaca—6月15日版本》翻译与解读

https://yunyaniu.blog.csdn.net/article/details/131318974

LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略

LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之Chinese-LLaMA-Alpaca:LLaMA汉化版项目详细源码解读多个py文件-基于Ng单机单卡实现定义数据集(生成指令数据)→数据预处理(token分词/合并权重)→增量预训练(本质是高效参数微调,LoRA的参数/LLaMA的参数)→指令微调LoRA权重(继续训练/全新训练)→模型推理(合并LoRA权重,CLI、GUI【webui/LLaMACha/LangChain】→下游任务【检索式问答/摘要生成】

https://yunyaniu.blog.csdn.net/article/details/131319010

LLMs之Chinese-LLaMA-Alpaca:源代码解读run_clm_pt_with_peft.py文件实现模型增量预训练(CLI准备【命令行解析/设置日志】→文件设置准备【递增训练/种子/配置字典/分词字典】→数据预处理【文本标记/文本序列长度/token化/分组/切分数据集】→模型训练与评估【判断执行模式/预训练文件/调整词嵌入的大小/LoRA模型/输出可被训练的参数/替换state_dict/初始化Trainer/训练【续载训练/保存结果/度量指标/保存状态】→保存【LoRA模型/预训练配置信息/tokenizer】→验证【计算困惑度/记录评估指标】

https://yunyaniu.blog.csdn.net/article/details/122274996

LLMs之Chinese-LLaMA-Alpaca:源代码解读inference_hf.py文件基于验证数据集(拼接输入数据和模板指令+去空格+分词)利用合并模型(LLaMA+LoRA)实现模型推理(交互方式【实时输出】/非交互方式【导出生成结果和模型配置文件到本地】)

https://yunyaniu.blog.csdn.net/article/details/113482076

LLMs之Chinese-LLaMA-Alpaca:基于单机CPU+Windows系统实现中文LLaMA算法进行模型部署(llama.cpp)+模型推理全流程步骤【安装环境+创建环境并安装依赖+原版LLaMA转HF格式+合并llama_hf和chinese-alpaca-lora-7b→下载llama.cpp进行模型的量化(CMake编译+生成量化版本模型)→部署f16/q4_0+测试效果】的图文教程(非常详细)

https://yunyaniu.blog.csdn.net/article/details/131016046

LLMs:Chinese-LLaMA-Alpaca-2(基于deepspeed框架)的简介、安装、案例实战应用之详细攻略

LLMs:Chinese-LLaMA-Alpaca-2的简介、安装、案例实战应用之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(处理【标记化+分块】+切分txt数据集)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的chec_一个处女座的程序猿的博客-CSDN博客

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(监督式任务的数据收集器+指令数据集【json格式】)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的che_一个处女座的程序猿的博客-CSDN博客

T1.5、LLaMA的汉化版本之Colossal-LLaMA-2
LLMs之Colossal-LLaMA-2:Colossal-LLaMA-2的简介(基于LLaMA-2架构+中文优化+扩充词表+仅千美元成本)、安装、使用方法之详细攻略

LLMs之Colossal-LLaMA-2:Colossal-LLaMA-2的简介(基于LLaMA-2架构+中文优化+扩充词表+仅千美元成本)、安装、使用方法之详细攻略-CSDN博客

T2、Bloom及其衍生的大模型:Bloomz、Phoenix等

LLMs:《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》翻译与解读

LLMs:《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》翻译与解读_一个处女座的程序猿的博客-CSDN博客

T3、Falcon:Falcon = 1B/7B/40B+基于因果解码器模型(侧重严格数据清洗的MRD流程)+基于RefinedWeb互联网数据集【5000B的token】和人工精选数据集(精选+过滤+去重)

LLMs之Data:《The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only》翻译与解读

https://yunyaniu.blog.csdn.net/article/details/131137560

LLMs之Falcon 180B:Falcon 180B的简介、安装、使用方法之详细攻略

LLMs之Falcon 180B:Falcon 180B的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

3.2、国内大模型

更新中……

T1、基于ChatGLM-6B系列

LLMs之GLM-130B/ChatGLM:《GLM-130B: AN OPEN BILINGUAL PRE-TRAINED MODEL》翻译与解读

LLMs之GLM-130B/ChatGLM:《GLM-130B: AN OPEN BILINGUAL PRE-TRAINED MODEL》翻译与解读_一个处女座的程序猿的博客-CSDN博客

 LLMs之ChatGLM:从头到尾手把手教大家利用ChatGLM-6B模型实现训练、部署、推理(CLI/Gradio交互界面)、微调(两个提效技巧【混合精度+ZeRO零冗余提效】+三种微调方法【fine-tuning/P-tuning v2改变参数分布/LoRA低秩近似降低要更新参数量】)图文教程之详细攻略

https://yunyaniu.blog.csdn.net/article/details/120249551

LLMs之ChatGLM:基于Langchain框架利用text2vec-large-chinese+ChatGLM大模型(Docker 部署)接入本地知识库(生成本地知识库/分割/向量化+基于问题【Embdding+向量化+匹配TopK作为上下文】=生成Prompt喂给大模型→LLMs响应)实现问答响应项目(CLI/WebUI/VUE)图文教程之详细攻略

https://yunyaniu.blog.csdn.net/article/details/130998758

LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tunin】)的简介、安装、使用方法之详细攻略

LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tunin】)的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之ChatGLM2:ChatGLM2-6B本地部署之单机推理(API/CLI/GUI)、低成本部署(GPU量化部署/CPU及其量化部署/Mac部署/多卡部署)、有限资源下高效微调(全参/P-tuning v2)、模型评估和推理之图文教程之详细攻略

LLMs之ChatGLM2:ChatGLM2-6B本地部署之单机推理(API/CLI/GUI)、低成本部署(GPU量化部署/CPU及其量化部署/Mac部署/多卡部署)、有限资源下高效微调(全参/P-t_一个处女座的程序猿的博客-CSDN博客

LLMs之ChatGLM2:基于ChatGLM Efficient Tuning(微调工具包)实现对ChatGLM2进行LoRA微调并进行推理测试图文教程之详细攻略

LLMs之ChatGLM2:基于ChatGLM Efficient Tuning(微调工具包)实现对ChatGLM2进行LoRA微调并进行推理测试图文教程之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+_一个处女座的程序猿的博客-CSDN博客

LLMs之ChatGLM2:ChatGLM-Finetuning(基于DeepSpeed)的简介、使用方法(四种微调方法(Freeze方法/Lora方法/P-Tuning方法/全量参数)+单卡/多卡训练设置+显存资源占用对比)、案例应用(基于4张A800-80G+采用ChatGLM-6B模型+全量参数+基于DeepSpeed框架(ZeRO3的模型拆分技术)流水线实现)之详细攻略

https://yunyaniu.blog.csdn.net/article/details/132613495

LLMs之ChatGLM2:ChatGLM-Finetuning之源码解读(train.py文件)—解析命令行(模型路径+数据集相关【最大序列长度/最大输入长度】+训练参数相关【批次大小/学习率/权重衰减系数/训练轮数/梯度累计步数/学习率预热比例】+结果输出相关【输出路径/训练方式【四种方式微调,如Freeze/Lora/P-Tuning/全量参数】/进程标志/loss频率/保存模型频率】+否启用梯度检查点+DeepSpeed配置+LoRA/Freeze/P-tuning配置)及初始化设置(是否启用分布式GPU+加载DeepSpeed配置参数+日志写入器)→加载数据(加载tokenizer/训练集)→模型训练(载入优化器和学习率调度器并设置参数+判断启用梯度检查点+将模型和优化器包装到deepspeed中【DeepSpeed封装数据并行】+执行模型训练【训练epoch循环+迭代训练数据+计算loss+反向传播+梯度裁剪技术】)+模型保存(定期显示训练损失并保存模型,判断zero3训练时其模型参数需要合并保存)

https://yunyaniu.blog.csdn.net/article/details/132882773

T2、基于Baichuan-7B系列

 LLMs之Baichuan:Baichuan-7B/13B模型的简介、安装、使用方法之详细攻略

LLMs之Baichuan:Baichuan-13B模型的简介(包括Baichuan-7B)、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+_一个处女座的程序猿的博客-CSDN博客

LLMs之Baichuan 2:Baichuan 2的简介、安装、使用方法之详细攻略

LLMs之Baichuan 2:Baichuan 2的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之Baichuan 2:《Baichuan 2: Open Large-scale Language Models》翻译与解读

LLMs之Baichuan 2:《Baichuan 2: Open Large-scale Language Models》翻译与解读_一个处女座的程序猿的博客-CSDN博客

LLMs之Baichuan2:源码解读(fine-tune.py文件,基于deepspeed )—解析命令行参数→数据预处理(对消息内容进行分词处理+if判断对话角色(来自用户还是助手)并为对话内容添加各自角色对应的特殊token进而生成对应的输入和标签+添加结束符token+截断或填充操作)→模型训练(LoRA优化)

https://yunyaniu.blog.csdn.net/article/details/132867299

LLMs之Baichuan2:基于RTX 4090-24GB硬件部署并测试Baichuan2-13B-BF16系列模型并对8bits/4bits两种量化模型的模型效果、推理速度图文教程之详细攻略

https://yunyaniu.blog.csdn.net/article/details/133108406

T3、基于InternLM系列

LLMs之InternLM:InternLM-7B模型的简介、安装、使用方法之详细攻略

LLMs之InternLM:InternLM-7B模型的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之InternLM:InternLM-20B的简介、安装、使用方法之详细攻略

LLMs之InternLM:InternLM-20B的简介、安装、使用方法之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之InternLM-20B:源码解读(train.py文件)—初始化配置→数据预处理(txt/json/jsonl等需转换为bin/meta文件再入模)→模型训练(批处理加载+内存分析+支持在特定步数进行验证评估+TensorBoard可视化监控+支持分布式训练【多机多卡训练同步更新】)+模型评估(ACC+PPL)+性能监控(日志记录+性能分析+内存监控等)

LLMs之InternLM-20B:源码解读(train.py文件)—初始化配置→数据预处理(txt/json/jsonl等需转换为bin/meta文件再入模)→模型训练(批处理加载+内存分析+支持在-CSDN博客

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号