Giter VIP home page Giter VIP logo

so-large-lm's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

so-large-lm's Issues

[typo] ch06 的 6.2.6 节描述错误

typo 位置:

image

超链接中的代码:

image

按 CS324 和代码里的意思,by an additional,指的应该是自乘,而不是增加。建议将这里的描述清晰化,以下是我的修改版本。

image

第一章1.2.1.2 翻译建议

image
原句:”因此,语言模型被限制在如语音识别和机器翻译等任务中,其中声音信号或源文本提供了足够的信息,只捕获局部依赖关系(而无法捕获长距离依赖关系)并不是一个大问题。“
建议改成:“因此,在语音识别和机器翻译等任务中,由于声音信号或源文本提供了足够的信息,只捕获局部依赖关系(无法捕获长距离依赖关系),对语言模型来说并不是一个大问题。”
这样翻译更符合中文的表达方式。不然,想我一样,第一次读就被绕晕了。

第七章,请问为什么似然值是 4/9

原文

它被用来训练T5和Gopher模型。给定一个序列$x_{1:L}$,一个分词器$T$是$p\left(x_{1: L}\right)=\prod_{(i, j) \in T} p\left(x_{i: j}\right)$的一个集合。这边给出一个实例:

  • 训练数据(字符串):$𝖺𝖻𝖺𝖻𝖼$
  • 分词结果 $T={(1,2),(3,4),(5,5)}$ (其中$V={𝖺𝖻,𝖼}$)
  • 似然值:$p(x_{1:L})=2/3⋅2/3⋅1/3=4/9$

在这个例子中,训练数据是字符串"$𝖺𝖻𝖺𝖻𝖼$"。分词结果 $T={(1,2),(3,4),(5,5)}$ 表示将字符串拆分成三个子序列:$(𝖺,𝖻),(𝖺,𝖻),(𝖼)$。词汇表$ V={𝖺𝖻,𝖼} $表示了训练数据中出现的所有词汇。

似然值 $p(x_{1:L}) $是根据 unigram 模型计算得出的概率,表示训练数据的似然度。在这个例子中,概率的计算为 $2/3⋅2/3⋅1/3=4/9$。这个值代表了根据 unigram 模型,将训练数据分词为所给的分词结果 $T $的概率。

请问一下 2/3⋅2/3⋅1/3 如果三个分数相乘,那么结果应该是 4/27,那么4/9到底是怎么来的,你最好解释一下。

引言篇可以补充一下生成任务和模拟退火的推导

语言模型也可以做生成任务。语言模型是一种概率模型,它可以根据给定的上下文来预测下一个词的概率分布。我们可以使用语言模型来生成一个序列,其中每个元素都是根据前面元素的条件概率分布来生成的。最纯粹的方法是从语言模型$p$中以概率$p(x_{1:L})$进行采样。表示为:

$x_{1:L} \sim p$

例如,如果我们的语言模型p表示"$x_{1:L}$"的条件概率分布为:

$\begin{aligned}
&P(x_1) = 0.2 \
&P(x_2 | x_1) = 0.3 \
&P(x_3 | x_1, x_2) = 0.1 \
&P(x_4 | x_1, x_2, x_3) = 0.05 \
&P(x_5 | x_1, x_2, x_3, x_4) = 0.01
\end{aligned}$

那么我们可以按照以下方式生成新的序列:"$x_1:x_2:x_3:x_4:x_5$":

  • 首先,我们从语言模型$p$中采样得到"$x_1$"的概率分布:

    • $P(x_1) = 0.2$
  • 然后,我们根据"$x_1$"的概率分布和语言模型$p$的条件概率分布来采样得到"$x_2$"的概率分布:

    • $P(x_2 | x_1) = 0.3$

    • $P(x1,x2​)=P(x2​∣x1​)×P(x1​)=0.3×0.2=0.06$

  • 接下来,我们根据"$x_1$"和"$x_2$"的概率分布以及语言模型$p$的条件概率分布来采样得到"$x_3$"的概率分布:

    • $P(x_3 | x_1, x_2) = 0.1$

    • $P(x1,x2,x3) = P(x_3 | x_1, x_2) \times P(x1,x2​) = 0.3 \times 0.2 \times 0.1$

  • 继续这个过程,我们可以得到"$x_4$"和"$x_5$"的概率分布:

    • $P(x_4 | x_1, x_2, x_3) = 0.05$

    • $P(x1,x2,x3,x4) = P(x4 \mid x1,x2,x3) \times P(x1,x2,x3) = 0.2 \times 0.3 \times 0.1 \times 0.05$

  • 最后,我们可以根据"$x_4$"和"$x_5$"的概率分布来生成新的序列:"$x_1:x_2:x_3:x_4:x_5$":

    • "$x_1:x_2:x_3:x_4:x_5$"的概率分布为:$\begin{aligned}
      P(x_1:x_2:x_3:x_4:x_5) &=P(x_1) \times P(x_2 | x_1) \times P(x_3 | x_1, x_2) \times P(x_4 | x_1, x_2, x_3) \& \times P(x_5 | x_1, x_2, x_3, x_4) \
      &=0.2 \times 0.3 \times 0.1 \times 0.05 \times 0.01
      \end{aligned}$

然而,如果我们仅将概率提高到 $1/T$ 的次方,概率分布可能不会加和到 1。我们可以通过重新标准化分布来解决这个问题。我们将标准化版本 $p_{T}(x_{i}∣x_{1:i−1})∝p(x_{i}∣x_{1:i−1})^{1/T}$ 称为退火条件概率分布。例如:

$\begin{array}{cl}
p(\text { cheese })=0.4, & p(\text { mouse })=0.6 \
p_{T=0.5}(\text { cheese })=0.31, & \left.p_{T=0.5} \text { (mouse }\right)=0.69 \
\left.p_{T=0.2} \text { (cheese }\right)=0.12, & p_{T=0.2} \text { (mouse) }=0.88 \
\left.p_{T=0} \text { (cheese }\right)=0, & \left.p_{T=0} \text { (mouse }\right)=1
\end{array}$

这是一个模拟退火算法中的"Metropolis准则"的计算过程。Metropolis准则是一种随机搜索方法,用于在概率空间中寻找函数的全局最小值。在这个问题中,我们要找的是使得某个目标函数$p(x)$最小的$x$值,其中$x$是一个离散的样本空间。

给定的概率分布是:

$p(cheese)=0.4, p(mouse)=0.6$

我们想要知道在温度$T=0.5$时,$p_T=0.5​(cheese)$和$p_T=0.5​(mouse)$的值。根据Metropolis准则,我们需要计算以下概率:

$p_T={0.5}​(cheese∣x{1:i−1}​)∝p(xi​∣x_{1:i−1}​)^{1/T}$

这里,$x_{1:i−1}$​表示在当前迭代之前的样本集合,$x_i$​表示当前的样本。

这个公式的意思是,在新的温度下,假设我们接受一个新的样本$x_i$,那么这个新样本对应的概率将乘以原概率的($1/T$)次方。

所以,我们可以计算出:

$\begin{aligned}
p_T&={0.5}​(cheese∣x{1:i−1}​)∝p(x_i​∣x_{1:i−1}​)^{1/T} \&=p(cheese)^{1/T}×p(x_i​∣cheese)
\&=0.4^{1/0.5}×0.4
\&=0.31
\end{aligned}$

同理,我们也可以计算出:

$\begin{aligned}
p_T&={0.5}​(mouse∣x{1:i−1}​)∝p(x_i​∣x_{1:i−1}​)^{1/T}
\&=p(mouse)^{1/0.5}×p(xi​∣mouse)
\&=0.6^{1/0.5}×0.6
\&=0.69
\end{aligned}$

具体来说,这个温度参数会应用于每一步的条件概率分布 $p(x_{i}∣x_{1:i−1})$ ,将其幂变为 $1/T$

引言篇 token 翻译

NLP 中将 token 直译成“令牌”似乎并不合适,没有表达出原意,容易引起初学者的疑惑。
不得不承认,中文没有一个合适的词来翻译这个词(语言模型场景下)。为了能够达意,可以翻译成“词元”(抛砖引玉,可能有更合适的词)。
或者像 transformer 这个词一样,直接使用,不翻译。

AI模型训练及多场景推理成本测算


课程中没有提AI模型的成本消耗计算,之前看到的国金证券出的研究报告,提出的测算方法,可以参考。

AI模型的成本主要由训练成本和推理成本构成:

  • 训练成本:衡量从头开发一个AI模型的算力费用,或是对现有AI模型知识库进行迭代更新所需的算力费用。
  • 推理成本:衡量用户使用AI模型时产生的算力费用。

1、AI模型训练成本估算

AI模型训练成本估算:

训练成本=AI模型训练所需的浮点运算次数/AI算力集群单位时间有效浮点运算次数*AI算力集群单位时间价格

AI模型训练所需浮点运算次数计算:

AI模型训练所需浮点运算次数=6 * 模型参数规模 * 训练集大小

**AI算力集群单位时间有效浮点运算次数:**在利用GPU进行AI模型训练时,GPU算力除了用以训练模型,还被用以通信、训练数据读写等,因此有效浮点运算次数才能衡量AI算力集群的算力水平。

2、通用AI模型推理成本估算

AI模型推理成本估算:

推理成本=AI模型推理所需的浮点运算次数/AI算力集群单位时间有效浮点运算次数*AI算力集群单位时间价格

AI模型推理所需浮点运算次数计算:

AI模型推理所需浮点运算次数=6 * 模型参数规模 * 训练集大小

3、多应用场景下ChatGPT推理成本估算

具体应用场景中AI模型完成一次任务所需成本:

场景成本=场景任务所需Tokens推理成本(1-缓存命中率)*1/(1-计算集群闲置率)*模型压缩因子

场景任务所需Tokens: 其指在具体应用场景中,为了完成给定的场景任务,如搜索信息、文书修改撰写等,AI模型需要处理的Tokens数量。这既包括向AI模型输入的信息, 也包括AI模型自主生成的信息。
推理成本: ChatGPT每处理1000Tokens信息需要花费0.177美分。如果自建AI算力中心,推理成本将降至0.053美分/1000Tokens。
缓存命中率: 用户的任务需求存在重叠性,如果任务需求在之前已经被AI模型解决,则无需再次进行推理,仅依靠输出缓存信息可解决任务。
计算集群闲置率: 当AI模型应用至具体场景时,为保证能够及时响应用户需求,AI算力集群需要采用冗余配置方式,会导致算力闲置。
模型压缩因子: 可以通过模型压缩技术,来压缩模型的参数规模,从而降低具体场景下的推理成本。

典型具体应用场景所需的Tokens估算:

1、搜索引擎场景

场景任务所需Tokens = 用户输入 + (模型从每个信源中读取的Tokens*每次搜索的信源数量)+模型输出Tokens

2、办公软件场景

场景任务所需Tokens = (用户输入 + 模型输出Tokens)* 满足用户需求的平均响应轮次

3、AI客服场景

场景任务所需Tokens = (用户输入 + 模型输出Tokens)* 解决用户需求的平均对话轮次

详细的成本计算案例可参考报告

ChatGPT训练及多场景推理成本测算

第一章公式格式问题

  1. 交叉熵部分中的 H(p,q) <= H(p) 可以写为 H(p,q) \leq H(p) 或 H(p,q) \leqslant H(p)
  2. 神经语言模型一小节中的 some-large-language-model 应放在 \text{} 或 \mathrm的括号中,否则连字符将被渲染成减号
  3. 部分公式没有渲染成功

10.1.1.3节约计算

IMG_2488

门控函数g(x)的近似是进行了什么操作描述得不够清晰,是进行了把除最大n个量外其他全归零,然后再做归一化吗?

第一章:引言 翻译错误

这块凭空冒出来了非自回归生成任务的表述,在CS324中并不存在这样的表述,应该是翻译错了

c520145ee48be90a0bcff7659ef8ef0

大模型法律是指的 Scalling Laws?

这个 repo 似乎不是那么 right,对比了下其引用的 课程,
大模型法律对应是是课程中的 Scalling Laws 吗?
如果是,那就太错了,人家说的是 模型 scaling 定律~

补充新章节的提议

  1. 涉及模型推理及加速的,如KVCache,vLLM
  2. 涉及普惠大众的开源大模型生态的,比如fastChat,llama.cpp等

3.3 中的错别字

上下文向量表征 (Contextual Embedding): 作为模型处理的先决条件,其关键是将词元序列表示炜相应的上下文的向量表征:
”表示炜相应“应该是“表示为响应”

ch07:7.2.3.2Prompt Tuning中“Prompt tuning v2”链接

该链接指向论文为p tuning v2,但[ ]内为"prompt tuning v2“。另外,p tuning v2与prefix tuning的联系更为”密切“(可参照p tuning v2论文摘要),建议考虑将该链接及与之相关内容归置到 7.2.3.3Prefix Tuning一节

第一章内容细节修改建议

  • 假设我们有一个词符集的词汇表$V$。语言模型$p$为每个词元序列(此处应为“词符序列”,与上下文术语保持一致)$x_1, x_2, \dots, x_L\in V$ 分配一个概率(介于0和1之间的数字)。

  • 这里我们是直接给出了计算的结果,对于计算具体方法我们在下一节的概率的链式法则给出具体的计算公式。(建议”概率的链式法则“给出英文原名注解(Chain rule of probability))

  • 需要统一全文”词符“和”词元“的术语,或者说明不区分使用这两个词,以免导致混淆。

引言篇信息熵解释

自我感觉信息熵解释不太清楚,所以自己写了一个例子:
● 熵的计算公式:H(X) = - Σ P(x) * log2(P(x)),其中,H(X)表示随机变量X的熵,P(x)表示X取值为x的概率。
● 以骰子为例,每面出现的概率如下:P(1) = 1/6;P(2) = 1/6;P(3) = 1/6;P(4) = 1/6;P(5) = 1/6;P(6) = 1/6
● 带入公式得到:H(X) = - log2(1/6),大约为2.58496比特(bits)
● 这个结果表示了骰子的信息熵,由于骰子是均匀的,所以熵到达了最大值,如果骰子不均匀,某个面的概率更高,那么熵就会减少,不确定性降低了。
● 硬币均匀的信息熵为:H(X) = - (0.5) * log2(0.5) - (0.5) * log2(0.5),计算结果约为1比特(bits);假设不均匀,其中一面概率是0.8,则:H(X) = - (0.8) * log2(0.8) - (0.2) * log2(0.2),计算结果约为0.721928比特(bits)。可见,在硬币不均匀的情况下,不确定性更小,只猜概率大的那面猜中的可能性更大。
这样理解没有问题吧

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.