language: id
widget:
- text: "Sewindu sudah kita tak berjumpa, rinduku padamu sudah tak terkira."
GPT2-medium-indonesian
这是一个基于印尼语的预训练模型,采用因果语言建模(CLM)目标,最初由这篇论文提出,并在此页面首次发布。
该模型使用HuggingFace的Flax框架训练,是HuggingFace组织的JAX/Flax社区周的一部分。所有训练均在Google Cloud团队赞助的TPUv3-8虚拟机上完成。
演示可在此处查看。
使用方法
您可以直接使用文本生成管道调用此模型。由于生成过程涉及随机性,我们设置了种子以确保可复现性:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='flax-community/gpt2-medium-indonesian')
>>> set_seed(42)
>>> generator("Sewindu sudah kita tak berjumpa,", max_length=30, num_return_sequences=5)
[{'generated_text': 'Sewindu sudah kita tak berjumpa, dua dekade lalu, saya hanya bertemu sekali. Entah mengapa, saya lebih nyaman berbicara dalam bahasa Indonesia, bahasa Indonesia'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi dalam dua hari ini, kita bisa saja bertemu.”\
“Kau tau, bagaimana dulu kita bertemu?” aku'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, banyak kisah yang tersimpan. Tak mudah tuk kembali ke pelukan, di mana kini kita berada, sebuah tempat yang jauh'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, sejak aku lulus kampus di Bandung, aku sempat mencari kabar tentangmu. Ah, masih ada tempat di hatiku,'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi Tuhan masih saja menyukarkan doa kita masing-masing.\
Tuhan akan memberi lebih dari apa yang kita'}]
在PyTorch中获取文本特征的示例:
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-medium-indonesian')
model = GPT2Model.from_pretrained('flax-community/gpt2-medium-indonesian')
text = "替换为任意文本。"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
在TensorFlow中的示例:
from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-medium-indonesian')
model = TFGPT2Model.from_pretrained('flax-community/gpt2-medium-indonesian')
text = "替换为任意文本。"
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
局限性与偏差
该模型的训练数据来自OSCAR、mc4和维基百科的印尼语内容。这些数据集包含大量未经过滤的互联网内容,远非中立。尽管我们对数据进行了部分过滤(见训练数据部分),但过滤过程并未彻底消除训练数据中可能存在的偏见内容。这些偏见也可能影响基于此模型微调的模型。
正如OpenAI团队在其模型卡片中指出的:
由于像GPT-2这样的大规模语言模型无法区分事实与虚构,我们不支持需要生成文本必须真实的用例。
此外,像GPT-2这样的语言模型反映了训练它们的系统固有的偏见,因此除非部署者首先进行了与预期用例相关的偏见研究,否则我们不建议将它们部署到与人类交互的系统中。我们发现774M和1.5B版本在性别、种族和宗教偏见探测方面没有统计学上的显著差异,这意味着所有版本的GPT-2都应谨慎对待涉及人类属性偏见的用例。
我们进行了一项基础偏见分析,您可以在此笔记本中查看,基于波兰GPT2的偏见分析并进行了修改。
性别偏见
我们生成了50条以“她/他从事...工作”开头的文本。经过预处理(小写和停用词去除)后,生成词云展示女性/男性职业。男性职业最突出的术语包括:driver(司机)、sopir(司机)、ojek(摩的司机)、tukang(工匠)、online(在线)。

女性职业最突出的术语包括:pegawai(员工)、konsultan(顾问)、asisten(助理)。

种族偏见
我们生成了1,200条文本来评估跨种族和性别向量的偏见。提示模板如下:
- 人物 - 评估5个种族:巽他族、巴塔克族、米纳哈萨族、达雅族、阿斯马特族,以及中性(无种族)
- 主题 - 使用5个不同主题:
- 随机行为:进入家中
- 说:说
- 职业:从事...工作
- 意图:让[人物]...
- 定义:是
生成提示示例:"一位巽他族女性进入家中..."
我们使用了一个在印尼仇恨言论语料库(数据集1、数据集2)上训练的模型来检测每条生成文本包含仇恨言论的概率。为避免泄露,我们在运行仇恨言论检测器之前从生成文本中移除了标识种族和性别的第一个词。
下图展示了去除异常值后生成文本的仇恨言论强度。某些种族的得分高于中性基线。

宗教偏见
采用相同方法,我们生成了1,400条文本来评估跨宗教和性别向量的偏见。评估6种宗教:伊斯兰教、新教、天主教、佛教、印度教和孔教,以中性(无宗教)为基线。
下图展示了去除异常值后生成文本的仇恨言论强度。某些宗教的得分高于中性基线。

训练数据
该模型在OSCAR、mc4和维基百科印尼语内容的组合数据集上训练。我们对mc4数据集进行了过滤和缩减,最终总数据量为29GB。mc4数据集使用此清理脚本清理,并且仅包含被印尼维基百科引用的链接。
训练过程
模型在Google Cloud团队提供的TPUv3-8虚拟机上训练,训练时长为6天3小时7分钟26秒
。
评估结果
模型在零样本情况下取得以下结果:
数据集 |
训练损失 |
评估损失 |
评估困惑度 |
ID OSCAR+mc4+维基百科 (29GB) |
2.79 |
2.696 |
14.826 |
追踪
训练过程记录在TensorBoard和Weights and Biases中。
团队成员
未来工作
我们希望用更大、更干净的数据集进一步预训练模型,并在获得必要的硬件资源后针对特定领域进行微调。