Git Product home page Git Product logo

intro-llm.github.io's Introduction

大语言模型(Large Language Models,LLM)是一种由包含数百亿以上权重的深度神经网络构建的语言模型,使用自监督学习方法通过大量无标记文本进行训练。自2018年以来,包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT, GPT等在内多种模型,并在几乎所有自然语言处理任务中都表现出色。2021年开始大模型呈现爆发式的增长,特别是2022年11月ChatGPT发布后,更是引起了全世界的广泛关注。用户可以使用自然语言与系统交互,从而实现包括问答、分类、摘要、翻译、聊天等从理解到生成的各种任务。大型语言模型展现出了强大的对世界知识掌握和对语言的理解。本书将介绍大语言模型的基础理论包括语言模型、分布式模型训练以及强化学习,并以Deepspeed-Chat框架为例介绍实现大语言模型和类ChatGPT系统的实践。

intro-llm.github.io's People

Contributors

qzhangfdu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

intro-llm.github.io's Issues

大小写不一致问题

书本 5.5 Deepspeed-Chat SFT 实践章节 多次出现Deepspeed和DeepSpeed大小写不一致情况

编辑小问题

page76页,计算墙:单个计算设备所能提供的计算能力与大语言模型所需的总计算量之间存在巨大差
异。2022 年 3 年发布的 NVIDIA H100 SXM 的单卡 FP16 算力也只有 2000 TFLOPs,而 GPT-3
则需要 314 ZFLOPs 的总算力,两者相差了 8 个数量级。

上述中2022年应该是3月吧, 读着不太通顺

书中的代码问题

老师您好,请问书中的代码是否可标注URL来源?或者将各章节可执行代码放到GitHub上,感觉这样方便读者直接运行。

请问什么时候可以出版?

从刚看到这本书的预览版就期待出版了,时不时刷一下当当,但一直没有刷到
或者复旦那边可以现场买吗

术语错误

76页“全分片数据并行”的英文应为“Fully Sharded Data Parallel”而非"Fully Shared Data Parallel"

5.31节存在章节编号typo

5.31节提到「关于 RoPE 位置编码的具体细节,已在 2.4.1 节进行了介绍」,但2.4.1 节并不存在,实际上的介绍是在2.3.1 节

image image

绪论第二页,最后一段

原本:“n 语法模型整体上来看与训练语料规模和模型的阶数有较大的关系,”

“n 语法模型” 在这一段出现两次。-->"n 语法模型"

语句错误

前言iii页(PDF第5页):“大语言模型涉及深度学习、自然语言处理、分布式计算、分布式计算等众多领域。”——分布式计算写了两次

class PositionalEncoder代码是否存在问题?

章节“2.1.1 嵌入表示层” PositionalEncoder类代码有误


1. class PositionalEncoder(nn.Module):
2. 	def __init__(self, d_model, max_seq_len = 80):
3. 		super().__init__()
4. 		self.d_model = d_model
5. 
6. 		# 根据 pos 和 i 创建一个常量 PE 矩阵
7. 		pe = torch.zeros(max_seq_len, d_model)
8. 		for pos in range(max_seq_len):
9. 			for i in range(0, d_model, 2):
10. 				pe[pos, i] = math.sin(pos / (10000 ** ((2 * i)/d_model)))
11. 				pe[pos, i + 1] = math.cos(pos / (10000 ** ((2 * (i + 1))/d_model)))
12. 		pe = pe.unsqueeze(0)
13. 		self.register_buffer('pe', pe)
14. 
15. 	def forward(self, x):
16. 		# 使得单词嵌入表示相对大一些
17. 		x = x * math.sqrt(self.d_model)
18. 		# 增加位置常量到单词嵌入表示中
19. 		seq_len = x.size(1)
20. 		x = x + Variable(self.pe[:,:seq_len], requires_grad=False).cuda()
21.

第10、11行代码:

 				pe[pos, i] = math.sin(pos / (10000 ** ((2 * i)/d_model)))
 				pe[pos, i + 1] = math.cos(pos / (10000 ** ((2 * (i + 1))/d_model)))

应该是:

 				pe[pos, i] = math.sin(pos / (10000 ** ( i/d_model)))
 				pe[pos, i + 1] = math.cos(pos / (10000 ** (i/d_model)))

第20行最好不要强行加上".cuda()", 建议更改为:
x = x + self.pe[:, :x.size(1)].requires_grad(False)

语序问题

30页正文部分“开始训练后,可以如下输出结果:”,这句存在语序问题

一些格式错误和术语错误

24页脚注:Transformer 解码器的具体结构请参考第8 章??节。

32页 2.3.1 开头第三行:并使用了旋转位置嵌入(RoP),应为RoPE

33页 并在PaLM[14] 等模中进行了广泛应用,应为模型

40页 FlashAttention开头空白很大

64~65页 出现了两次OpenSubtitles数据机条目

代码bugs

感谢张老师的书籍,收益颇丰。
第18页最后的代码段少了return x;
第20页的EncoderLayer中初始化的Norm应为19页定义的NormLayer;
第20页的EncoderLayer中的顺序存在问题:应该是先进行多头注意力机制->残差连接->归一化层。后面的decoder存在同样的问题。

语句错误

你好, 在 p121 页有监督微调章节, 5.2 高效模型微调部分, 第一段的第二句话多了个"被"字.
"为了节省成本, 研究人员提出了多种参数高效(Parameter Efficient)的微调方法, 旨在仅训练少量参数使模型适应到下游任务."

图片编号问题

81页模型并行第一段的倒数第三行的 如图4.9 应为 图4.5

术语错误

书本240页“精确率”(Precision)误写为“准确率”(Accuracy)
详见公式(8.2)上方的文字
“精确度(Precision,P):表示分类预测是正例的结果中,确实是正例的比例。精确度也称查准率、准确率,”
应改为
“精确度(Precision,P):表示分类预测是正例的结果中,确实是正例的比例。精确度也称查准率、精确率,”

疑似错别字

绪论3第一行 “词的独热编码”应为“词的独特编码”

书本公式

P159 (6.20)
这个公式均方差的被减数 少乘了一个项
image

年份问题

前言部分的第一句话“在 2019 年,Google 的研究团队开创性地提出了预训练语言模型 BERT[1]”;
一般而言,我在几乎所有场合听到的提及BERT的介绍,都是以论文发布v1版本的2018年10月作为时间节点,感觉很少有2019年的说法。

基于9月26日版本的一些错误

  1. 24页脚标,引用错误。
  2. 33页RMSNorm归一化函数小节,缺少逗号,第一段“针对输入向量aRMSNorm函数计算公式如下:”应改为“第一段“针对输入向量a,RMSNorm函数计算公式如下:”。
  3. 38页图2.6,带状注意力和膨胀注意力的上方图像重复,应修改带状注意力的图。

前言iii页,第二段,第四行

原文:“大语言模型涉及深度学习、自然语言处理、分布式计算、分布式计算等众多领域。”

“分布式计算”——重复

前言中发现一个小错误

大语言模型涉及深度学习、自然语言处理、分布式计算分布式计算 等众多领域。因此,建议读者在阅读本书之前,首先系统地学习深度学习和自 然语言处理的相关课程。在分布式计算和异构计算方面,读者需要具备基本的概念。如果希望在 大语言模型训练和推理方面进行深入研究,还需要系统学习分布式系统、并行计算、CUDA 编程 等相关知识。

应该是分布式计算、异构计算?

咨询能否提供Gitbook版本而非PDF版本

首先非常感谢开源的写作贡献,

但是因为使用PDF文档很难追溯新的PR更新,同时也缺乏直观的链接导览功能,想了解是否有计划发布gitbook版本,如果有的话,计划是在什么时间发布?
我能理解这篇是通过类Latex写出来的,但是的确92页的一篇Paper的阅读心智负担略高了,还是期望有一个gitbook版本

图片中文字缺失

书本119页图5.1
如下两处x'跟x不一致
“提示:x' = 不小心错过了公共汽车。我感到 [z]” 应改为 “提示:x' = 不小心错过了公共汽车。我感到 [z]”
“结果:x' =不小心错过了公共汽车。我感到 太不好了” 应改为 “结果:x' =不小心错过了公共汽车。我感到 太不好了”

前言短语重复

大语言模型涉及深度学习、自然语言处理、分布式计算、分布式计算等众多领域。
分布式计算重复了。

PDF第150页似乎有语句不完整

Hi,请问PDF版的P150页6.2“奖励模型”这一章节的第一句话“基于人类反馈训练的奖励模型可以很好的人类的偏好”里“很好的”和“人类偏好”之间是否漏掉了诸如“拟合”,“对齐”这样的动词

文字缺失

书本90页4.2.4节第7行“第 9 到第用于表示尾数”缺失部分文字。

引用出错

书本5.2.1 LoRA章节有三处“文献 [141]” 应为 “文献 [140]”

图片标记错误

书本92页图4.17左侧第三行“Pos+g”应修改为“Pos+g+p”

两处错别字

107页 4.4.2章节 倒数第六行 PyThorch
136页 5.5章节 倒数第三行 Huggingfac

文字缺失

第33页SwiGLU函数介绍部分第一行“并在 PaLM[14] 等模中进行了广泛应用”,应为“并在 PaLM[14] 等模型中进行了广泛应用”

能否提供配套代码

pdf书籍中的代码大多只是片段,如4.4DeepSpeed实践中的代码补全,无法直接运行。请问能否提供配套的全部代码

词语重复

49页低质过滤最后一句话“过滤”一词重复

句子语病问题

书本 19页 2.1.4 残差连接与层归一化 第8行
“此外,为了进一步使得每一层的输入输出范围稳定在一个合理的范围内,层归一化技术被进一步引入每个 Transformer 块的当中:”
该句中的两个“范围”重复,两个“进一步”重复,句尾的“的当”多余。
修改建议如下:
“此外,为了使得每一层的输入输出稳定在一个合理的范围内,层归一化技术被进一步引入每个 Transformer 块中:”

代码示例的缩进问题

首先感谢老师的工作。
第四章分布式训练 4.4.2LLAMA分布式训练的示例代码(书中第115页),训练过后保存模型的部分似乎出现缩进错误,如下所示:

if args.output_dir is not None:
print_rank_0('saving the final model ...', args.global_rank)
model = convert_lora_to_linear_layer(model)

if args.global_rank == 0:
    save_hf_format(model, tokenizer, args)

if args.zero_stage == 3:
    # For zero stage 3, each gpu only has a part of the model, so we need a special save function
    save_zero_three_model(model,
                                          args.global_rank,
                                          args.output_dir,
                                          zero_stage=args.zero_stage)

该部分代码在判断 if args.output_dir is not None: 后的内容应该需要缩进

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.