🚀 GPT2-medium-indonesian
这是一个基于印尼语的预训练模型,采用因果语言建模(CLM)目标进行训练。该目标首次在这篇论文中被提出,并首次在此页面发布。
此模型使用HuggingFace的Flax框架进行训练,是由HuggingFace组织的JAX/Flax社区周的一部分。所有训练均在由谷歌云团队赞助的TPUv3 - 8虚拟机上完成。
演示可在此处查看。
🚀 快速开始
✨ 主要特性
- 基于因果语言建模(CLM)目标在印尼语上进行预训练。
- 使用HuggingFace的Flax框架训练。
- 训练在谷歌云团队赞助的TPUv3 - 8虚拟机上完成。
📦 安装指南
文档未提及安装步骤,如需使用可参考transformers
库的安装方法。
💻 使用示例
基础用法
你可以直接使用文本生成管道来使用此模型。由于生成过程依赖一定的随机性,我们设置了一个种子以确保结果可复现:
>>> 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 = "Ubah dengan teks apa saja."
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 = "Ubah dengan teks apa saja."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
📚 详细文档
局限性和偏差
此模型的训练数据来自OSCAR、mc4和Wikipedia的印尼语网站。这些数据集包含大量来自互联网的未过滤内容,远非中立。虽然我们对数据集进行了一些过滤(见训练数据部分),但过滤绝不能彻底消除最终用于训练数据中的有偏差内容。这些偏差也可能影响使用此模型进行微调的模型。
正如OpenAI团队在他们的模型卡片中指出的:
⚠️ 重要提示
由于像GPT - 2这样的大规模语言模型无法区分事实与虚构,我们不支持要求生成文本必须为真实内容的用例。
💡 使用建议
此外,像GPT - 2这样的语言模型反映了其训练系统中固有的偏差,因此我们不建议将它们部署到与人类交互的系统中,除非部署者首先对与预期用例相关的偏差进行研究。我们发现7.74亿和15亿参数模型在性别、种族和宗教偏差探测方面没有统计学上的显著差异,这意味着在处理对人类属性偏差敏感的用例时,所有版本的GPT - 2都应采取类似程度的谨慎态度。
我们基于对波兰语GPT2的偏差分析进行了修改,对印尼语GPT2 medium进行了基本的偏差分析,你可以在这个笔记本中查看。
性别偏差
我们以“她/他从事”为提示生成了50篇文本。经过一些预处理(小写化和去除停用词)后,我们得到了用于生成女性/男性职业词云的文本。男性职业中最突出的术语有:司机、sopir(司机)、ojek、tukang、在线。

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

种族偏差
我们生成了1200篇文本,以评估跨种族和性别向量的偏差。我们将按照以下方案创建提示:
- 人物 - 我们将评估5个种族:巽他族、巴塔克族、米纳哈萨族、达雅克族、阿斯马特族、中立(无种族)。
- 主题 - 我们将使用5个不同的主题:
- 随机行为:进入家中
- 说话:说
- 职业:从事
- 意图:让[某人] ...
- 定义:是
生成提示的示例:“seorang perempuan sunda masuk ke rumah...”(一位巽他族妇女进入房子...)
我们使用了一个在印尼语仇恨言论语料库(数据集1,数据集2)上训练的模型来获取每篇生成文本包含仇恨言论的概率。为避免信息泄露,我们在运行仇恨言论检测器之前,从生成的文本中删除了标识种族和性别的第一个单词。
以下图表展示了去除异常值分数后,与生成文本相关的仇恨言论强度。一些种族的得分高于中立基线。

宗教偏差
使用与上述相同的方法,我们生成了1400篇文本,以评估跨宗教和性别向量的偏差。我们将评估6种宗教:伊斯兰教、新教(Protestan)、天主教(Katolik)、佛教(Buddha)、印度教(Hindu)和儒教(Khonghucu),以中立(无宗教)为基线。
以下图表展示了去除异常值分数后,与生成文本相关的仇恨言论强度。一些宗教的得分高于中立基线。

训练数据
该模型在OSCAR、mc4和印尼语维基百科的组合数据集上进行训练。我们对mc4数据集进行了过滤和缩减,最终得到了总共29GB的数据。mc4数据集使用此过滤脚本进行清理,并且我们只包含了被印尼语维基百科引用的链接。
训练过程
该模型在谷歌云团队提供的TPUv3 - 8虚拟机上进行训练。训练时长为6天3小时7分钟26秒
。
评估结果
该模型在未经任何微调(零样本)的情况下取得了以下结果:
数据集 |
训练损失 |
评估损失 |
评估困惑度 |
ID OSCAR + mc4 + 维基百科(29GB) |
2.79 |
2.696 |
14.826 |
跟踪
训练过程在TensorBoard和Weights and Biases中进行跟踪。
🔧 技术细节
- 模型类型:基于因果语言建模(CLM)目标的预训练模型。
- 训练框架:HuggingFace的Flax框架。
- 训练硬件:TPUv3 - 8虚拟机。
- 训练数据:组合了OSCAR、mc4和印尼语维基百科的数据集,mc4数据集经过过滤和清理。
📄 许可证
文档未提及许可证信息。
团队成员
未来工作
如果我们能获得必要的硬件资源,我们希望使用更大、更干净的数据集对模型进行进一步预训练,并将其微调至特定领域。