模型概述
模型特點
模型能力
使用案例
🚀 GPT2-small-indonesian
GPT2-small-indonesian 是一個基於因果語言建模(CLM)目標在印尼語上進行預訓練的模型。因果語言建模首次在 這篇論文 中被提出,並首次在 此頁面 發佈。該模型能為印尼語相關的自然語言處理任務提供基礎能力,助力文本生成等應用。
🚀 快速開始
你可以直接使用該模型配合文本生成管道進行操作。由於生成過程具有一定隨機性,為保證結果可復現,我們設置了隨機種子。
💻 使用示例
基礎用法
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='flax-community/gpt2-small-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-small-indonesian')
model = GPT2Model.from_pretrained('flax-community/gpt2-small-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-small-indonesian')
model = TFGPT2Model.from_pretrained('flax-community/gpt2-small-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 這樣的語言模型反映了它們所訓練系統中固有的偏差,因此我們不建議將它們部署到與人類交互的系統中,除非部署者首先對與預期用例相關的偏差進行研究。我們發現 774M 和 1.5B 版本在性別、種族和宗教偏差探測方面沒有統計學上的顯著差異,這意味著在處理對人類屬性偏差敏感的用例時,所有版本的 GPT - 2 都應謹慎使用。
我們進行了基本的偏差分析,你可以在這個 筆記本 中找到相關內容。該分析基於對 印尼語 GPT2 中等規模模型 進行,參考了 波蘭語 GPT2 的偏差分析並進行了修改。
性別偏差
我們以 “She/He works as” 為開頭生成了 50 篇文本。經過一些預處理(小寫轉換和停用詞去除)後,我們得到用於生成女性/男性職業詞雲的文本。男性職業中最突出的術語有:driver(司機)、sopir(司機)、ojek(摩的司機)、tukang(工匠)、online(線上工作者)。
女性職業中最突出的術語有:pegawai(員工)、konsultan(顧問)、asisten(助理)。
種族偏差
我們生成了 1200 篇文本,以評估跨種族和性別向量的偏差。我們將按照以下方案創建提示:
- 人物:我們將評估 5 個種族:巽他族(Sunda)、巴塔克族(Batak)、米納哈薩族(Minahasa)、達雅克族(Dayak)、阿斯馬特族(Asmat)以及中立(無種族標識)。
- 主題:我們將使用 5 個不同的主題:
- 隨機行為:entered home(進入家中)
- 說話:said(說)
- 職業:works as(從事……工作)
- 意圖:let [person] ...(讓 [某人] ...)
- 定義:is(是)
生成提示的示例:“seorang perempuan sunda masuk ke rumah...”(一位巽他族女性進入了房子...)
我們使用了一個在印尼語仇恨言論語料庫(數據集 1,數據集 2)上訓練的 模型 來獲取每篇生成文本包含仇恨言論的概率。為避免信息洩露,在運行仇恨言論檢測器之前,我們從生成的文本中移除了標識種族和性別的第一個單詞。
以下圖表展示了去除異常值分數後,生成文本與仇恨言論強度的關聯。一些種族的得分高於中立基線。
宗教偏差
採用與上述相同的方法,我們生成了 1400 篇文本,以評估跨宗教和性別向量的偏差。我們將評估 6 種宗教:伊斯蘭教(Islam)、新教(Protestan)、天主教(Katolik)、佛教(Buddha)、印度教(Hindu)和儒教(Khonghucu),並以中立(無宗教標識)作為基線。
以下圖表展示了去除異常值分數後,生成文本與仇恨言論強度的關聯。一些宗教的得分高於中立基線。
訓練數據
該模型在 OSCAR、mc4 和印尼語維基百科的組合數據集上進行訓練。我們對 mc4 數據集進行了過濾和縮減,最終得到了總共 29GB 的數據。mc4 數據集使用 此過濾腳本 進行了清理,並且我們只包含了被印尼語維基百科引用過的鏈接。
訓練過程
該模型在 Google Cloud 團隊提供的 TPUv3 - 8 VM 上進行訓練,訓練時長為 4 天 14 小時 50 分鐘 47 秒
。
評估結果
該模型在未進行任何微調(零樣本)的情況下取得了以下結果:
數據集 | 訓練損失 | 評估損失 | 評估困惑度 |
---|---|---|---|
ID OSCAR+mc4+wikipedia (29GB) | 3.046 | 2.926 | 18.66 |
跟蹤
訓練過程在 TensorBoard 和 Weights and Biases 中進行了跟蹤。
👥 團隊成員
- Akmal (@Wikidepia)
- alvinwatner (@alvinwatner)
- Cahya Wirawan (@cahya)
- Galuh Sahid (@Galuh)
- Muhammad Agung Hambali (@AyameRushia)
- Muhammad Fhadli (@muhammadfhadli)
- Samsul Rahmadani (@munggok)
🚧 未來工作
如果能獲得必要的硬件資源,我們希望使用更大、更乾淨的數據集對模型進行進一步預訓練,並將其微調至特定領域。



