Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update datasets docs #8

Merged
merged 2 commits into from
Sep 5, 2024
Merged

update datasets docs #8

merged 2 commits into from
Sep 5, 2024

Conversation

wj-Mcat
Copy link
Owner

@wj-Mcat wj-Mcat commented Aug 28, 2024

更新 大模型训练 数据准备模块的文档

Copy link

@tianxin1860 tianxin1860 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 中英混杂时空格处理的风格需要统一下
  2. 独立 1 个 dataset 的文档实际涵盖的内容非常多,如果细化的话有很多内容要谈;是否考虑自底向上?


如果预训练文本中存在重复的文本,此时将会降低文本的多样性,可能会导致模型训练的不稳定性,影响模型的效果 [<sup>5</sup>](#scaling-laws-and-learning-from-repeated-data),所以文本中重复的内容是需要删除的。

可是现在预训练文本动辄几百G 的文本,要对齐进行去重也是一个大工程。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 百G 的后面中的空格是不是需要删掉?
  2. "对齐去重" 这个提法可能会有误导,我理解这里就是想表达海量数据去重也是个大工程,和对齐(alignment) 没有关系

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Done
  2. 对齐去重 是属于手误,我这里想写的是 对其去重,我的我的,done 了


可是现在预训练文本动辄几百G 的文本,要对齐进行去重也是一个大工程。

此外,去重也分为不同的粒度:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

此外在这里和上文的逻辑关系衔接比较奇怪,是不是在引入「文本去重」的目的后,直接介绍「文本去重」最常见的 2 种粒度及方法这样逻辑过渡比较自然?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

你说的有道理,这里的写作逻辑总是随着我的想法来转变,没有考虑到读者的感受。我后续也会注意这些问题。


### 安全隐私保护

数据集当中很可能会存在大量的私人信息,比如:电话号码、邮箱、家庭住址等信息,这些信息虽然是公开的,也是也不应该被训练到模型当中去,此外也可能会存在是基于用户query 生成的内容,其中比可能会出现用户隐私性问题。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

query 千是不是少了空格?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

其实由于输入法的问题:每次输入英文单词之后就自动添加了一个空格,此时就导致有很多类似以上 query 的情况,英文单词前面没空格,后面有一个空格。

这个问题后续在写作的过程中我还是要稍加注意。


### 安全隐私保护

数据集当中很可能会存在大量的私人信息,比如:电话号码、邮箱、家庭住址等信息,这些信息虽然是公开的,也是也不应该被训练到模型当中去,此外也可能会存在是基于用户query 生成的内容,其中比可能会出现用户隐私性问题。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

比可能会 -> 更可能会


数据集当中很可能会存在大量的私人信息,比如:电话号码、邮箱、家庭住址等信息,这些信息虽然是公开的,也是也不应该被训练到模型当中去,此外也可能会存在是基于用户query 生成的内容,其中比可能会出现用户隐私性问题。

首先很直观的方法就是,用regex将部分数据给替换掉,或者直接删除相关文本。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

怎么只有首先,没有其次了?要么就不要加上首先这样的表述

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


* **Byte-Pair Encoding(BPE)Tokenization**

BPE算法通过迭代合并训练语料库中最常见的字符对(或子词对),来构建一个更紧凑、更有效的词表。这种方法旨在找到一个最优的字符组合方式,使得整个数据集中不同单词的字符组合数量尽可能少,同时保持词汇的语义意义。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这种方法旨在找到一个最优的字符组合方式,使得整个数据集中不同单词的字符组合数量尽可能少 这个表述也比较抽象,感觉初学者很难理解 BPE 的目标是什么?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里由于篇幅有限,后续可针对于 BPE 算法作详细描述。


* **WordPiece tokenization**

WordPiece算法通过迭代合并高频字符对或子词对来构建子词词汇表,并使用该词汇表对文本进行分词。这种方法既保留了高频词汇的完整性,又能够将低频词汇拆分成有意义的子词单元,从而提高了模型对复杂语言现象的处理能力。在大语言模型中,WordPiece分词方法被广泛应用,如BERT、DistilBERT等模型均采用了这种分词技术。

其中为了提升模型的质量,可以训练一个[质量分类小模型](https://github.com/modelscope/data-juicer/blob/main/tools/quality_classifier/README_ZH.md#%E8%AF%84%E4%BC%B0%E8%B4%A8%E9%87%8F%E5%88%86%E7%B1%BB%E5%99%A8),输出仅仅是true、false,在现阶段而言这类数据还是比较好准备。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

没理解这一段和 WordPiece 之间的关系是什么?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里的描述确实是很抽象:用大模型来总结的。

这里想要用几句话来描述清楚我感觉挺难的,至少得用一篇单独的文章来详细描述了,这部分的文章后续可继续新增。

数据质量重要性不言而喻,就看:llama2-3的结构没有什么变化,就仅仅只是调整了训练数据量和数据质量,在不同领域上面就有非常大的提升。这足以说明大模型中的数据质量很大程度上决定了模型的效果。[<sup>6</sup>](#investigating-info-quality-of-llm)

TODO(wj-Mcat): 阅读 [How to Improve Data Quality in a Modern Data Ecosystem](https://www.telm.ai/blog/the-dilemma-of-modern-data-stacks/) 来继续丰富此章节的内容

## 数据调度

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

数据调度 对应的英文表述是什么? 建议直接用原始英文,数据调度的含义好像并没有共识

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个是翻译过来的,确实是没有共识,这部分我用英文吧。这部分我稍后改一下。


* 数据混合比例

在大模型预训练中,通常会使用来自不同数据源的数据进行训练。这些数据源可能包括网页文本、书籍、学术论文、代码等。为了平衡不同数据源对模型的影响,需要设置合适的数据混合比例。例如,LLaMA模型的预训练数据就包括了超过80%的网页数据、6.5%的代码密集型数据、4.5%的书籍数据以及2.5%的科学数据。
在大模型预训练中,通常会使用来自不同数据源的数据进行训练。这些数据源可能包括网页文本、书籍、学术论文、代码等。为了平衡不同数据源对模型的影响,需要设置合适的数据混合比例。例如,LLaMA模型的预训练数据就包括了超过80%的网页数据、6.5%的代码密集型数据、4.5%的书籍数据以及2.5%的科学数据。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

建议明确 LLaMA-1 or LLaMA-2 or LLaMA-3 ?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


训练数据中应尽量增加数据的多样性,不应在同样领域的数据上构建过多的数据,进而在这个任务上过拟合,影响了其它领域上的能力。 [<sup>7</sup>](#pretrainer-guide-to-train-data)

此外,如果确定不同领域的数据配比也至关重要,通常的做法是使用一个小型代码模型在固定配比的数据集(此数据集的数量也是有scaling law 算出来的)上面进行预训练,如果有比较好的正收益,此时大概率在大模型上面也会存在有一定的正收益。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

如果确定.... 这里的逻辑有点奇怪,是不是笔误了?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里确实是笔误,读起来非常的不通顺。

看来后续自己写的博客还是要re-reading 几次,不然这种很明显的笔误还是会再次上演。

@wj-Mcat wj-Mcat merged commit f437d33 into master Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants