Skip to content

Latest commit

 

History

History
950 lines (789 loc) · 77.8 KB

README.md

File metadata and controls

950 lines (789 loc) · 77.8 KB

【LLMs 入门实战系列】

【LLMs 入门实战系列】交流群 (注:人满 可 添加 小编wx:yzyykm666 加群!)

第一层 LLMs to Natural Language Processing (NLP)

第一重 ChatGLM-6B 系列

ChatGLM2-6B
  • 【ChatGLM2-6B入门】清华大学开源中文版ChatGLM-6B模型学习与实战

    • 论文名称:ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
    • 论文地址:
    • Github 代码:https://github.com/THUDM/ChatGLM2-6B
    • 动机:在主要评估LLM模型中文能力的 C-Eval 榜单中,截至6月25日 ChatGLM2 模型以 71.1 的分数位居 Rank 0 ,ChatGLM2-6B 模型以 51.7 的分数位居 Rank 6,是榜单上排名最高的开源模型。
    • 介绍:ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:
      • 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
      • 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
      • 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
      • 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。如果您发现我们的开源模型对您的业务有用,我们欢迎您对下一代模型 ChatGLM3 研发的捐赠。
  • 【关于 ChatGLM2 + LoRA 进行finetune 】那些你不知道的事

    • 论文名称:ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
    • 论文地址:
    • Github 代码:https://github.com/THUDM/ChatGLM2-6B
    • 介绍:本教程主要介绍对于 ChatGLM2-6B 模型基于 LoRA 进行finetune。
  • 【LLMs 入门实战 】基于 🤗PEFT 的高效 🤖ChatGLM2-6B 微调

    • 微调方式:
      • ChatGLM2-6B Freeze 微调:Fine-tuning the MLPs in the last n blocks of the model.
      • ChatGLM2-6B P-Tuning V2 微调:Fine-tuning the prefix encoder of the model.
      • ChatGLM2-6B LoRA 微调:Fine-tuning the low-rank adapters of the model.
  • 【LLMs 入门实战】基于 🤗QLoRA 的高效 🤖ChatGLM2-6B 微调

ChatGLM3
  • 【LLMs 入门实战】 ChatGLM3 模型学习与实战

    • 论文名称:ChatGLM3
    • Github 代码:https://github.com/THUDM/ChatGLM3
    • 模型地址:
    • 动机:2023年10月26日,由中国计算机学会主办的2023中国计算机大会(CNCC)正式开幕,据了解,智谱AI于27日论坛上推出了全自研的第三代基座大模型ChatGLM3及相关系列产品,这也是智谱AI继推出千亿基座的对话模型ChatGLM和ChatGLM2之后的又一次重大突破。
    • 介绍:ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:
      • 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能
      • 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
      • 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用
  • 【LLMs 入门实战】 ChatGLM3 模型微调学习与实战

ChatGLM-6B
  1. 【ChatGLM-6B入门-一】清华大学开源中文版ChatGLM-6B模型学习与实战
    1. 介绍:ChatGLM-6B 环境配置 和 部署
  2. 【ChatGLM-6B入门-二】清华大学开源中文版ChatGLM-6B模型微调实战
    1. ChatGLM-6B P-Tuning V2 微调:Fine-tuning the prefix encoder of the model.
  3. 【ChatGLM-6B入门-三】ChatGLM 特定任务微调实战
  4. 【ChatGLM-6B入门-四】ChatGLM + LoRA 进行finetune
    1. 介绍:ChatGLM-6B LoRA 微调:Fine-tuning the low-rank adapters of the model.
  5. ChatGLM-6B 小编填坑记
    1. 介绍:ChatGLM-6B 在 部署和微调 过程中 会遇到很多坑,小编掉坑了很多次,为防止 后人和小编一样继续掉坑,小编索性把遇到的坑都填了。
  6. 【LLMs学习】关于大模型实践的一些总结
  7. 【LLMs 入门实战 —— 十一 】基于 🤗PEFT 的高效 🤖ChatGLM-6B 微调
    1. 微调方式:
      1. ChatGLM-6B Freeze 微调:Fine-tuning the MLPs in the last n blocks of the model.
      2. ChatGLM-6B P-Tuning V2 微调:Fine-tuning the prefix encoder of the model.
      3. ChatGLM-6B LoRA 微调:Fine-tuning the low-rank adapters of the model.
  8. 【LLMs 入门实战】基于 🤗QLoRA 的高效 🤖ChatGLM-6B 微调
    1. 介绍:本项目使用 https://github.com/huggingface/peft 库,实现了 ChatGLM-6B 模型4bit的 QLoRA 高效微调,可以在一张RTX3060上完成全部微调过程。
  9. 【LLMs 入门实战 】🤖ChatGLM-6B 模型结构代码解析
    1. 介绍:ChatGLM-6B 模型结构代码解析

第十重 Baichuan

Baichuan2
Baichuan-13B
  • 【LLMs 入门实战 】 Baichuan-13B 模型学习与实战
    • baichuan-inc/Baichuan-13B:https://github.com/baichuan-inc/Baichuan-13B
    • Baichuan-13B 大模型:
    • 介绍:Baichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均取得同尺寸最好的效果。Baichuan-13B 有如下几个特点:
      • 更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096。
      • 同时开源预训练和对齐模型:预训练模型是适用开发者的“基座”,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署。
      • 更高效的推理:为了支持更广大用户的使用,本次同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上。
      • 开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用。
baichuan-7B

第十一重 Llama2

第二重 Stanford Alpaca 7B

第三重 Chinese-LLaMA-Alpaca

第四重 小羊驼 Vicuna

第五重 MOSS

  • 【LLMs 入门实战 —— 十三 】MOSS 模型学习与实战
    • 介绍:MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。
    • 局限性:由于模型参数量较小和自回归生成范式,MOSS仍然可能生成包含事实性错误的误导性回复或包含偏见/歧视的有害内容,请谨慎鉴别和使用MOSS生成的内容,请勿将MOSS生成的有害内容传播至互联网。若产生不良后果,由传播者自负。

第六重 BLOOMz

  • 【LLMs 入门实战 —— 十四 】 BLOOMz 模型学习与实战
    • 介绍:大型语言模型(LLMs)已被证明能够根据一些演示或自然语言指令执行新的任务。虽然这些能力已经导致了广泛的采用,但大多数LLM是由资源丰富的组织开发的,而且经常不对公众开放。作为使这一强大技术民主化的一步,我们提出了BLOOM,一个176B参数的开放性语言模型,它的设计和建立要感谢数百名研究人员的合作。BLOOM是一个仅有解码器的Transformer语言模型,它是在ROOTS语料库上训练出来的,该数据集包括46种自然语言和13种编程语言(共59种)的数百个来源。我们发现,BLOOM在各种基准上取得了有竞争力的性能,在经历了多任务提示的微调后,其结果更加强大。
    • 模型地址:https://huggingface.co/bigscience/bloomz

第七重 BELLE

  • 【LLMs 入门实战 —— 十五 】 BELLE 模型学习与实战
    • 介绍:相比如何做好大语言模型的预训练,BELLE更关注如何在开源预训练大语言模型的基础上,帮助每一个人都能够得到一个属于自己的、效果尽可能好的具有指令表现能力的语言模型,降低大语言模型、特别是中文大语言模型的研究和应用门槛。为此,BELLE项目会持续开放指令训练数据、相关模型、训练代码、应用场景等,也会持续评估不同训练数据、训练算法等对模型表现的影响。BELLE针对中文做了优化,模型调优仅使用由ChatGPT生产的数据(不包含任何其他数据)。
    • github 地址: https://github.com/LianjiaTech/BELLE

第八重 ChatRWKV

  • 【LLMs 入门实战 —— 十八 】 ChatRWKV 模型学习与实战
    • 目前 RWKV 有大量模型,对应各种场景,各种语言,请选择合适的模型:
      • Raven 模型:适合直接聊天,适合 +i 指令。有很多种语言的版本,看清楚用哪个。适合聊天、完成任务、写代码。可以作为任务去写文稿、大纲、故事、诗歌等等,但文笔不如 testNovel 系列模型。
      • Novel-ChnEng 模型:中英文小说模型,可以用 +gen 生成世界设定(如果会写 prompt,可以控制下文剧情和人物),可以写科幻奇幻。不适合聊天,不适合 +i 指令。
      • Novel-Chn 模型:纯中文网文模型,只能用 +gen 续写网文(不能生成世界设定等等),但是写网文写得更好(也更小白文,适合写男频女频)。不适合聊天,不适合 +i 指令。
      • Novel-ChnEng-ChnPro 模型:将 Novel-ChnEng 在高质量作品微调(名著,科幻,奇幻,古典,翻译,等等)。
    • github: https://github.com/BlinkDL/ChatRWKV
    • 模型文件:https://huggingface.co/BlinkDL

第九重 ChatGPT

第九层 LLMs to interview

  • LLMs 降龙十八掌

    • LLMs Fine-Tuning 经验贴
      • 如何解决大模型遗忘问题#ChatGPT# #LLM (大型语言模型)
      • Fine-Tuning max_length 选择 问题
      • Fine-Tuning Learning rate 选择 问题
      • 如何 向GPT/LLM模型添加额外知识?
      • 如何解决LLM大模型fine-tune过拟合问题?
      • 英文模型需要做词表扩充吗?
      • 全参finetune,数据配比?
      • 百川13b强化学习时遇到参数不更新的问题?
      • 使用lion优化器节省显存?
      • 使用lora训练的参数配置?
      • ...
    • LLMs 推理 经验贴
      • chatglm微调完针对相同的问题输出都是一样的,有办法让他随机一点吗?
      • 使用fastllm加速推理
    • LLMs 部署 经验贴
      • 如果只跑一个私有大模型,但是很多用户同时访问。这些针对不同用户的chat history怎么存取比较高效?
    • LLMs 多轮对话 经验贴
      • 如何 融入 之前对话信息
    • 数据构建篇
      • 训练数据如何构建?
    • LLMs 胡思乱想
      • 为什么 LLMs 不容易出现 灾难性遗忘问题?
      • LLMs to NLP 下游任务 经验贴
  • 【LLMs】大模型 千面郎君

    • 大模型常识面
      • 简单 介绍一下 大模型【LLMs】?
      • 大模型【LLMs】后面跟的 175B、60B、540B等 指什么?
      • 大模型【LLMs】具有什么优点?
      • 大模型【LLMs】具有什么缺点?
    • 大模型强化学习面
      • 简单介绍强化学习?
      • 简单介绍一下 RLHF?
    • 大模型【LLMs】微调篇
      • 大模型【LLMs】泛化问题?
      • 大模型【LLMs】微调问题?
      • 大模型【LLMs】微调有哪些优点?
      • 大模型【LLMs】指令微调问题?
    • 大模型【LLMs】思维链篇
      • 大模型【LLMs】思维链问题?
      • 大模型【LLMs】思维链本质是什么?
      • 大模型【LLMs】思维链优点是什么?
      • 大模型【LLMs】思维链类型和策略?
      • 大模型【LLMs】逐步Zero-shot 介绍?
      • 大模型【LLMs】Zero-shot-CoT提示策略定义?
      • 大模型【LLMs】Zero-shot-CoT提示策略应用方法?
      • 大模型【LLMs】Few-shot-CoT提示策略定义?
      • 大模型【LLMs】Few-shot-CoT提示策略核心思想是什么?
      • 大模型【LLMs】Few-shot-CoT提示策略应用方法是什么?
    • 大模型【LLMs】涌现现象篇
      • 大模型【LLMs】中有一种 涌现现象,你知道么?
      • 大模型【LLMs】涌现现象主要体现在哪些方面?
      • 大模型【LLMs】涌现现象主激活方式?
    • 大模型【LLMs】提示工程篇
      • 大模型【LLMs】提示工程 是什么?
      • 提示工程 如何添加进 大模型【LLMs】?
      • 微调(FineTuning) vs 提示工程?
      • 微调(FineTuning) vs 提示工程 在应用场景中关系雨联系?
      • 大模型【LLMs】Few-shot提示方法 是什么?
  • 大模型的重复生成现象如何缓解?

    • 为何会出现重复生成现象?
    • 如何减少大模型重复生成?
  • LoRA这种微调方法和全参数比起来有什么劣势吗?

    • 什么是 LoRA?
    • LoRA 优点是什么?
    • LoRA 缺点是什么?
    • LoRA这种微调方法和全参数比起来有什么劣势吗?
    • LoRA这种微调方法和全参数 如何选择?
  • LLaMa-1 从原理到实践分析

    • LLaMa-1 理论介绍
    • LLaMa 模型架构介绍
    • LLaMa 优化器介绍
    • LLaMa-1 实践介绍
  • LLaMa-2 从原理到实践分析

    • LLaMa-2 理论介绍
    • LLaMa-2 实践介绍
  • 基于PyTorch来优化大模型训练的内存(显存)

    • 动机:峰值内存(显存)的消耗直接决定了 机器 是否 支撑大模型训练
    • LLMs Fine-Tuning 经验贴
      • LLMs Fine-Tuning 框架依赖问题?
      • LLMs Fine-Tuning 显存问题?
      • 如何解决大模型遗忘问题#ChatGPT# #LLM (大型语言模型)?
      • ...
    • 混合精度训练(Mixed-Precision Training)
      • 为什么需要 混合精度训练(Mixed-Precision Training)?
      • 什么是 混合精度训练(Mixed-Precision Training)?
      • 混合精度训练(Mixed-Precision Training)实现步骤?
      • ...
    • 低精度训练(Lower-Precision Training)
      • 为什么需要 低精度训练(Lower-Precision Training)?
      • 什么是 低精度训练(Lower-Precision Training)?
      • ...
    • 降低训练批处理大小(Reducing the Batchsize)
      • 为什么需要 降低训练批处理大小(Reducing the Batchsize)?
      • 什么是 降低训练批处理大小(Reducing the Batchsize)?
      • ...
    • 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)
      • 为什么需要 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)?
      • 什么是 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)?
      • ...
  • 如何缓解大模型幻觉?

    • 为什么 会 出现 大模型幻觉?
    • 如何 缓解 大模型幻觉?

第八层 LLMs to Inference acceleration

  • LLM(大语言模型)部署加速方法——PagedAttention

    • 什么是 PagedAttention?
    • PagedAttention 如何存储 连续的key和value?
    • PagedAttention 技术细节?
    • PagedAttention 如何 实现安全共享?
    • PagedAttention 源码介绍?
  • LLM(大语言模型)部署加速方法——Faster Transformer

    • 为什么需要 Faster Transformer?
    • 什么是 FasterTransformer?
    • FasterTransformer 核心?
    • FasterTransformer 优化?
  • 纯Python超轻量高性能LLM推理框架 —— LightLLM

    • 为什么 需要 LightLLM ?
      • 显存碎片化严重
      • 请求调度效率低
      • kernel定制化难度高
    • 介绍:基于纯Python语言的大模型推理部署框架LightLLM,方便研究员进行轻量级的本地部署和定制修改,用于快速扩展对不同模型的支持,吸纳层出不穷的优秀开源特性,探索最优服务架构。
    • LightLLM 性能表现
      • TGI由于显存碎片化严重,所以很难达到较高的吞吐量;
      • vLLM因引入了PageAttention,但是由于整体实现细节更利于小模型推理,所以在大模型上的并发性能并不是十分理想(使用的默认配置);
      • 相比之下,LightLLM则可以在各种大小的模型下都保持稳健的性能,在大模型上(LLaMA-65B)相对TGI和vLLM实现了3倍左右的2提升。
  • 大模型推理加速工具 —— vLLM

    • 介绍:vLLM是一个开源的LLM推理和服务引擎。它利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值。
    • vLLM 具有哪些特点 ?
      • 最先进的服务吞吐量;
      • PagedAttention 可以有效的管理注意力的键和值;
      • 动态批处理请求;
      • 优化好的 CUDA 内核;

第二层 LLMs to Parameter Efficient Fine-Tuning (PEFT)

第一重 分布式训练神器

  • 分布式训练神器 之 ZeRO 学习

    • 动机:虽然 DataParallel (DP) 因为简单易实现,所以目前应用相比于其他两种 广泛,但是 由于 DataParallel (DP) 需要 每张卡都存储一个模型,导致 显存大小 成为 制约模型规模 的 主要因素。
    • 核心思路:去除数据并行中的冗余参数,使每张卡只存储一部分模型状态,从而减少显存占用。
  • 图解分布式训练(一) —— 流水线并行(Pipeline Parallelism)

    • 动机:
      • 回顾ChatGPT的发展历程,我们可以总结出大语言模型(LLM)取得惊艳效果的要点(重要性从高到低排序):
        • 愿意烧钱,且接受“烧钱 != 好模型”的现实
        • 高质量的训练语料
        • 高效的分布式训练框架充沛优质的硬件资源
        • 算法的迭代创新
    • 介绍:在大模型训练这个系列里,我们将一起探索学习几种经典的分布式并行范式,包括流水线并行(Pipeline Parallelism)数据并行(Data Parallelism)和张量并行(Tensor Parallesim)
  • 图解分布式训练(二) —— nn.DataParallel

    • 动机:
      • 多GPU并行训练的原理就是将模型参数和数据分布到多个GPU上,同时利用多个GPU计算加速训练过程。具体实现需要考虑以下两个问题:
      • 数据如何划分?因为模型需要处理的数据通常很大,将所有数据放入单个GPU内存中可能会导致内存不足,因此我们需要将数据划分到多个GPU上。
    • 介绍:
      • 计算如何协同?因为每个GPU都需要计算模型参数的梯度并将其发送给其他GPU,因此需要使用同步机制来保证计算正确性。一般有两种同步方式:
      • 数据同步:在每个GPU上计算模型参数的梯度,然后将梯度发送到其他GPU上进行汇总,最终更新模型参数。
      • 模型同步:在每个GPU上计算模型参数的梯度,然后将模型参数广播到其他GPU上进行汇总,最终更新模型参数。
  • 图解分布式训练(三) —— nn.parallel.DistributedDataParallel

    • 动机:
      • **数据如何划分?**因为模型需要处理的数据通常很大,将所有数据放入单个GPU内存中可能会导致内存不足,因此我们需要将数据划分到多个GPU上。一般有两种划分方式:
        • 数据并行:将数据分割成多个小批次,每个GPU处理其中的一个小批次,然后将梯度汇总后更新模型参数。
        • 模型并行:将模型分解成多个部分,每个GPU处理其中一个部分,并将处理结果传递给其他GPU以获得最终结果。
      • **计算如何协同?**因为每个GPU都需要计算模型参数的梯度并将其发送给其他GPU,因此需要使用同步机制来保证计算正确性。一般有两种同步方式:
        • 数据同步:在每个GPU上计算模型参数的梯度,然后将梯度发送到其他GPU上进行汇总,最终更新模型参数。
        • 模型同步:在每个GPU上计算模型参数的梯度,然后将模型参数广播到其他GPU上进行汇总,最终更新模型参数。
      • DP 只支持 单机多卡场景,在 多机多卡 场景 下,DP 的 通讯问题将被放大:
        • DDP首先要解决的就是通讯问题:将Server上的通讯压力均衡转到各个Worker上。实现这一点后,可以进一步去Server,留Worker。
    • 介绍:上节讲到 DP 只支持 单机多卡场景,主要原因是 DP 无法数据并行中通讯负载不均的问题, 而 DDP 能够解决 该问题 的 核心在于 Ring-AllReduce。它由百度最先提出,非常有效地解决了数据并行中通讯负载不均的问题,使得DDP得以实现。
  • 图解分布式训练(四) —— torch.multiprocessing 详细解析

    • 介绍:torch.multiprocessing是本机multiprocessing模块的封装。封装了multiprocessing模块。它注册自定义的reducer,它使用共享内存为不同进程中的相同数据提供视图共享。一旦张量/存储被移动到shared_memory(参见sharememory()),就可以将其发送到其他进程而不进行其它任何操作。
  • 图解分布式训练(五) —— AMP混合精度训练 详细解析

    • 动机:PyTorch 1.6版本今天发布了,带来的最大更新就是自动混合精度。
    • 介绍:在某些上下文中torch.FloatTensor有优势,在某些上下文中torch.HalfTensor有优势呗。答案进一步可以转化为,相比于之前的默认的torch.FloatTensor,torch.HalfTensor有时具有优势,有时劣势不可忽视。
  • 图解分布式训练(六) —— Pytorch的 DeepSpeed 详细解析

    • 动机:
      • 最常见的深度学习框架应该是TensorFlow、Pytorch、Keras,但是这些框架在面向大规模模型的时候都不是很方便。
      • 比如Pytorch的分布式并行计算框架(Distributed Data Parallel,简称DDP),它也仅仅是能将数据并行,放到各个GPU的模型上进行训练。
      • 也就是说,DDP的应用场景在你的模型大小大于显卡显存大小时,它就很难继续使用了,除非你自己再将模型参数拆散分散到各个GPU上。
    • 介绍:在分布式计算环境中,需要理解几个非常基础的概念:节点编号、全局进程编号、局部进程编号、全局总进程数和主节点。其中,主节点负责协调所有其他节点和进程的工作,因此是整个系统的关键部分。
  • 图解分布式训练(七) —— accelerate 分布式训练 详细解析

    • 介绍:PyTorch Accelerate 是一个 PyTorch 的加速工具包,旨在简化 PyTorch 训练和推断的开发过程,并提高性能。它是由 Hugging Face、NVIDIA、AWS 和 Microsoft 等公司联合开发的,是一个开源项目。

第二重 LLMs Trick

第三重 LLMTune

  • 【LLMs 入门实战 —— 十六 】 LLMTune 模型学习与实战
    • 动机:大语言模型虽然能力很强,目前开源生态也很丰富,但是在特定领域微调大模型依然需要大规格的显卡。例如,清华大学发布的ChatGLM-6B,参数规模60亿,在没有量化的情况下微调需要14GB显存(parameter-efficient fine-tuning,PEFT)。在没有任何优化的前提下,每10亿参数的全精度(32bit)模型载入到显存中就需要4GB,而int8量化后也需要1GB显存。而目前开源最强的模型LLaMA,其最高参数维650亿规模,全精度模型载入就需要260GB,显然已经超出了大部分人的硬件水平。更不要说对模型进行微调(微调需要训练更新参数,推理只需要前向计算即可,因此,微调需要更多的显存才能支持)。
    • 介绍:Cornell Tech开源的LLMTune就是为了降低大模型微调难度所提出的一种解决方案。对于650亿参数的LLaMA模型微调仅需要40GB显存即可。
    • github 地址: https://github.com/kuleshov-group/llmtune

第四重 QLoRA

第三层 LLMs to Artifact

第一重 langchain

第二重 wenda

  • 【LLMs 入门实战】基于 本地知识库 的高效 🤖wenda+ChatGLM2-6B
    • 介绍:本项目设计目标为实现针对特定环境的高效内容生成,同时考虑个人和中小企业的计算资源局限性,以及知识安全和私密性问题。为达目标,平台化集成了以下能力:
      • 知识库:支持对接本地离线向量库、本地搜索引擎、在线搜索引擎等。
      • 多种大语言模型:目前支持离线部署模型有chatGLM-6B\chatGLM2-6B、chatRWKV、llama系列(不推荐中文用户)、moss(不推荐)、baichuan(需配合lora使用,否则效果差)、Aquila-7B,在线API访问openai api和chatGLM-130b api。
      • Auto脚本:通过开发插件形式的JavaScript脚本,为平台附件功能,实现包括但不限于自定义对话流程、访问外部API、在线切换LoRA模型。
      • 其他实用化所需能力:对话历史管理、内网部署、多用户同时使用等。

第三重 AutoGPT

  • AutoGPT 使用和部署
    • 介绍:Auto-GPT是一个基于ChatGPT的工具,他能帮你自动完成各种任务,比如写代码、写报告、做调研等等。使用它时,你只需要告诉他要扮演的角色和要实现的目标,然后他就会利用ChatGPT和谷歌搜索等工具,不断“思考”如何接近目标并执行,你甚至可以看到他的思考过程。

第四重 Knowledge Extraction

第四层 LLMs to Text-to-Image

第一重 Stable Diffusion

第五层 LLMs to Visual Question Answering (VQA)

第一重 BLIP

  • 【LLMs 入门实战 —— 二十二】 BLIP 模型学习与实战
    • 论文名称:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
    • 论文地址:https://arxiv.org/abs/2201.12086
    • 代码地址:https://github.com/salesforce/BLIP
    • 局限性:
      • 模型角度:
        • 现有方法:大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。
        • 存在问题:基于编码器的模型不太容易直接转换到文本生成任务(例如图像字幕),而编码器-解码器模型尚未成功用于图像文本检索任务
      • 数据角度: 大多数SOTA的方法(如CLIP、ALBEF等)都在从web上收集到的图文对上进行预训练。尽管通过扩展数据集获得了性能提升,但 BLIP 的研究表明,对于视觉语言学习来说,有噪声的网络文本是次优的。
    • BLIP总体思路:作为新的 VLP 框架,BLIP 用于统一视觉语言理解和生成的 Bootstrapping Language-Image 预训练,可以灵活地迁移到视觉语言理解和生成任务。 BLIP 通过引导字幕有效地利用了嘈杂的网络数据,字幕生成器生成合成字幕,过滤器去除嘈杂的字幕
    • 贡献:
      • (1) 编码器-解码器 (MED) 的多模式混合:一种用于有效多任务预训练和灵活迁移学习的新模型架构。MED可以作为单模态编码器、基于图像的文本编码器或基于图像的文本解码器工作。该模型与三个视觉语言目标联合预训练:图像文本对比学习、图像文本匹配和图像条件语言建模
      • (2) 字幕和过滤(Captioning and Filtering,CapFilt):一种新的数据集增强方法,用于从噪声图像-文本对中学习。作者将预先训练的MED分为两个模块: 一个字幕器,用于生成给定web图像的合成字幕,以及一个过滤器,用于从原始web文本和合成文本中删除嘈杂的字幕

第二重 BLIP2

  • 【LLMs 入门实战 —— 二十六】 BLIP2 模型学习与实战
    • 论文名称:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
    • 单位:Salesforce 研究院
    • 论文地址:https://arxiv.org/abs/2301.12597
    • 代码地址:https://github.com/salesforce/LAVIS/tree/main/projects/blip2
    • HF上的Demo:https://huggingface.co/spaces/Salesforce/BLIP2
    • 动机
      • 由于大规模模型的端到端训练,视觉和语言预训练的成本变得越来越高
      • 为了降低计算成本并抵消灾难性遗忘的问题,希望在 Vision-language pre-training (VLP) 中固定视觉模型参数与语言模型参数。然而,由于语言模型在其单模态预训练期间没有看到图像,因此冻结它们使得视觉语言对齐尤其具有挑战性
    • 介绍:
      • BLIP-2, 一种通用而有效的预训练策略,它从现成的冻结预训练图像编码器和冻结的大型语言模型中引导视觉语言预训练。
      • 通过一个轻量级的 Querying Transformer (Q-Former是一个轻量级的 transformer,它使用一组可学习的查询向量来从冻结图像编码器中提取视觉特征,为LLM提供最有用的视觉特征,以输出所需的文本) 弥补了模态 gap,该 Transformer 分两个阶段进行预训练:
      • 第一阶段:从冻结图像编码器引导视觉语言表示学习,强制 Q-Former 学习与文本最相关的视觉表示;
      • 第二阶段:将视觉从冻结的语言模型引导到语言生成学习,将Q-Former的输出连接到冻结的LLM,并对Q-Former进行训练,使其输出视觉表示能够被LLM解释。

第三重 MiniGPT-4

第四重 VisualGLM-6B

  • 【LLMs 入门实战 —— 十七 】 VisualGLM-6B 模型学习与实战
    • Github 链接: https://github.com/THUDM/VisualGLM-6B
    • Huggingface 链接:https://huggingface.co/THUDM/visualglm-6b
    • 动机:OpenAI 的GPT-4样例中展现出令人印象深刻的多模态理解能力,但是能理解图像的中文开源对话模型仍是空白。
    • 介绍:VisualGLM-6B 是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基于 ChatGLM-6B,具有 62 亿参数;图像部分通过训练 BLIP2-Qformer 构建起视觉模型与语言模型的桥梁,整体模型共 78 亿参数。VisualGLM-6B 依靠来自于 CogView 数据集的30M高质量中文图文对,与 300M 经过筛选的英文图文对进行预训练,中英文权重相同。该训练方式较好地将视觉信息对齐到 ChatGLM 的语义空间;之后的微调阶段,模型在长视觉问答数据上训练,以生成符合人类偏好的答案。
    • github 地址:https://github.com/THUDM/VisualGLM-6B

第五重 Ziya-Visual

  • 【LLMs 入门实战 】 Ziya-Visual 模型学习与实战
    • Ziya-Visual模型开源地址:https://huggingface.co/IDEA-CCNL/Ziya-BLIP2-14B-Visual-v1L/Ziya-BLIP2-14B-Visual-v1
    • Demo体验地址:https://huggingface.co/spaces/IDEA-CCNL/Ziya-BLIP2-14B-Visual-v1-DemoDEA-CCNL/Ziya-BLIP2-14B-Visual-v1-Demo
    • Ziya开源模型:https://huggingface.co/IDEA-CCNL/Ziya-LLaMA-13B-v1L/Ziya-LLaMA-13B-v1
    • 封神榜项目主页:https://github.com/IDEA-CCNL/Fengshenbang-LM
    • 介绍:自从3月份OpenAI发布具有识图能力的多模态大模型GPT-4,大模型的能力便不再局限于文本输入-文本输出的形式,人们可以上传视觉图片来与大模型进行聊天和交互。遗憾的是,时至今日绝大部分用户也都还没有拿到GPT-4输入图片的权限,无法体验到结合视觉和语言两大模态的大模型的卓越能力,而且GPT-4也没有叙述或者开源GPT模型多模态预训练的方案。与之相对的是,学术界和开源界则充分探索了视觉预训练模型(比如ViT, Vision Transformer)与大语言模型(LLM,Large Language Model)结合,从而让目前的LLM获得输入图片、认识图片的能力。其中的代表工作包括国外团队开源的Mini-GPT4[1],LLaVA[2]等,国内团队开源的VisuaGLM[3],mPLUG-Owl[4]等工作。大部分的开源方案参考了BLIP2的训练方案[5],选择冻结LLM部分的参数训练或者采用Lora等parameter-efficient的微调训练方式。IDEA研究院封神榜团队在5月17日发布“姜子牙通用大模型v1”之后,继续发布Ziya-BLIP2-14B-Visual-v1多模态大模型(以下简称Ziya-Visual模型)。和Ziya大模型一样,Ziya-Visual模型具备中英双语能力,特别是中文能力较为突出。和所有基于BLIP2的方案类似,我们简单高效的扩展了LLM的识图能力。该模型对比VisualGLM、mPLUG-Owl模型,在视觉问答(VQA)评价和GPT-4打分评价[2]中,展现了一些优势。

第六层 LLMs to Automatic Speech Recognition (ASR)

第一重 Massively Multilingual Speech (MMS,大规模多语种语音)

第二重 whisper

第七层 LLMs to Text To Speech (TTS)

第一重 Massively Multilingual Speech (MMS,大规模多语种语音)

第二重 Retrieval-based-Voice-Conversion

LLaMA 衍生物系列

第五重 GPT4ALL

第十一重 OpenBuddy

  • 【LLMs 入门实战 —— 二十八 】 OpenBuddy 模型学习与实战
    • 论文名称:OpenBuddy - Open Multilingual Chatbot based on Falcon
    • github 地址:https://github.com/OpenBuddy/OpenBuddy
    • 动机:虽然目前 很多人 LLMs 层出不穷,但是他们并不能 在 多语言支持无缝衔接(eg: LLaMA 模型由于是用 英语训练,所以在 中文等其他语种上效果并不好)
    • 介绍:基于 Tii 的 Falcon 模型和 Facebook 的 LLaMA 模型构建,OpenBuddy 经过微调,包括扩展词汇表、增加常见字符和增强 token 嵌入。通过利用这些改进和多轮对话数据集,OpenBuddy 提供了一个强大的模型,能够回答各种语言的问题并执行翻译任务。

第十二重 Baize

第十三重 OpenChineseLLaMA

第十四重 Panda

第十五重 Ziya-LLaMA-13B

第十六重 BiLLa

  • 【LLMs 入门实战 】 BiLLa 学习与实战
    • 论文名称:BiLLa: A Bilingual LLaMA with Enhanced Reasoning Ability
    • 论文地址:
    • Github 代码:https://github.com/Neutralzz/BiLLa
    • 模型:
    • 介绍:该项目开源了推理能力增强的中英双语LLaMA模型。模型的主要特性有:较大提升LLaMA的中文理解能力,并尽可能减少对原始LLaMA英文能力的损伤;训练过程增加较多的任务型数据,利用ChatGPT生成解析,强化模型理解任务求解逻辑;全量参数更新,追求更好的生成效果。

第十七重 Luotuo-Chinese-LLM

第十八重 Linly

  • 【LLMs 入门实战 】 Linly 学习与实战
    • 论文名称:
    • 论文地址:
    • Github 代码:https://github.com/CVI-SZU/Linly
    • 模型:
    • 介绍:提供中文对话模型 Linly-ChatFlow 、中文基础模型 Linly-Chinese-LLaMA 及其训练数据。中文基础模型以 LLaMA 为底座,利用中文和中英平行增量预训练。项目汇总了目前公开的多语言指令数据,对中文模型进行了大规模指令跟随训练,实现了 Linly-ChatFlow 对话模型。

第十九重 ChatYuan

第二十重 CPM-Bee

  • 【LLMs 入门实战 】 CPM-Bee 学习与实战
    • 论文名称:
    • 论文地址:
    • Github 代码:https://github.com/OpenBMB/CPM-Bee
    • 模型:
    • 介绍:一个完全开源、允许商用的百亿参数中英文基座模型。它采用Transformer自回归架构(auto-regressive),在超万亿(trillion)高质量语料上进行预训练,拥有强大的基础能力。开发者和研究者可以在CPM-Bee基座模型的基础上在各类场景进行适配来以创建特定领域的应用模型。

第二十一重 TigerBot

第二十二重 书生·浦语

第二十三重 Aquila

  • 【LLMs 入门实战 】 Aquila 学习与实战
    • 论文名称:
    • 论文地址:
    • Github 代码: https://github.com/FlagAI-Open/FlagAI/tree/master/examples/Aquila
    • 模型:
    • 介绍:由智源研究院发布,Aquila语言大模型在技术上继承了GPT-3、LLaMA等的架构设计优点,替换了一批更高效的底层算子实现、重新设计实现了中英双语的tokenizer,升级了BMTrain并行训练方法,是在中英文高质量语料基础上从0开始训练的,通过数据质量的控制、多种训练的优化方法,实现在更小的数据集、更短的训练时间,获得比其它开源模型更优的性能。也是首个支持中英双语知识、支持商用许可协议、符合国内数据合规需要的大规模开源语言模型。

第一重 金融领域

第二重 医疗领域

第三重 法律领域

  • 【LLMs 入门实战 】 LaWGPT 学习与实战:基于中文法律知识的大语言模型
    • 论文名称:
    • 论文地址:https://github.com/pengxiao-song/LaWGPT
    • 介绍:该系列模型在通用中文基座模型(如 Chinese-LLaMA、ChatGLM 等)的基础上扩充法律领域专有词表、大规模中文法律语料预训练,增强了大模型在法律领域的基础语义理解能力。在此基础上,构造法律领域对话问答数据集、中国司法考试数据集进行指令精调,提升了模型对法律内容的理解和执行能力。
  • 【LLMs 入门实战 】 LexiLaw 学习与实战:中文法律大模型
    • 论文名称:
    • 论文地址:https://github.com/CSHaitao/LexiLaw
    • 介绍:LexiLaw 是一个基于 ChatGLM-6B微调的中文法律大模型,通过在法律领域的数据集上进行微调。该模型旨在为法律从业者、学生和普通用户提供准确、可靠的法律咨询服务,包括具体法律问题的咨询,还是对法律条款、案例解析、法规解读等方面的查询。
  • 【LLMs 入门实战 】 Lawyer LLaMA 学习与实战:中文法律LLaMA
    • 论文名称:
    • 论文地址:https://github.com/AndrewZhe/lawyer-llama
    • 介绍:开源了一系列法律领域的指令微调数据和基于LLaMA训练的中文法律大模型的参数。Lawyer LLaMA 首先在大规模法律语料上进行了continual pretraining。在此基础上,借助ChatGPT收集了一批对中国国家统一法律职业资格考试客观题(以下简称法考)的分析和对法律咨询的回答,利用收集到的数据对模型进行指令微调,让模型习得将法律知识应用到具体场景中的能力。

第四重 教育领域

  • 【LLMs 入门实战 】 桃李(Taoli) 学习与实战
    • 论文名称:
    • 论文地址:https://github.com/blcuicall/taoli
    • 介绍:一个在国际中文教育领域数据上进行了额外训练的模型。项目基于目前国际中文教育领域流通的500余册国际中文教育教材与教辅书、汉语水平考试试题以及汉语学习者词典等,构建了国际中文教育资源库,构造了共计 88000 条的高质量国际中文教育问答数据集,并利用收集到的数据对模型进行指令微调,让模型习得将知识应用到具体场景中的能力。

第五重 文化领域

第六重 Coding

  • 【LLMs 入门实战】 CodeGeeX2-6B 学习与实战
    • DeepKE-LLM链接:
    • OpenKG地址:
    • Github 地址:https://github.com/THUDM/CodeGeeX2
    • 介绍:CodeGeeX2 是多语言代码生成模型 CodeGeeX 的第二代模型,基于 ChatGLM2 架构注入代码实现。得益于 ChatGLM2 的更优性能,CodeGeeX2-6B 在多项指标上取得了较大的性能提升。与 150 亿参数的 StarCoder-15B 相比,CodeGeeX2-6B 凭借 60 亿参数便具备了近 10% 的优势。

知识体系

关于 AIGC 那些你不知道的事

关于 NLP 那些你不知道的事

加入学习群

扫码加小编,申请加入学习群

参考

  1. Awesome-Chinese-LLM:收集和梳理中文LLM相关的开源模型、应用、数据集及教程等资料