🚀 斯洛伐克GPT - J - 162M
斯洛伐克GPT - J - 162M是斯洛伐克GPT - J系列發佈的首個模型,也是首個主要基於斯洛伐克語料庫訓練的公開可用的Transformer模型。自首次發佈以來,另外兩個模型也已公開,分別是斯洛伐克GPT - J - 405M和最大的斯洛伐克GPT - J - 1.4B。
✨ 主要特性
模型描述
該模型基於GPT - J構建,擁有超過1.62億個可訓練參數。
屬性 |
詳情 |
模型類型 |
基於GPT - J的Transformer模型 |
訓練數據 |
主要為斯洛伐克語文本,涵蓋網絡、新聞文章、聖經文本等不同類別,總量超過40GB |
可訓練參數數量 |
162,454,608 |
層數 |
12 |
模型維度 |
768 |
前饋層維度 |
16384 |
頭數 |
16 |
頭維度 |
256 |
上下文長度 |
2048 |
詞表大小 |
50256(與GPT - 2/3使用相同的分詞器) |
位置編碼 |
旋轉位置嵌入(RoPE) |
RoPE維度 |
64 |
注意:ByteLevelBPETokenizer是在相同的斯洛伐克語料庫上訓練的。
訓練數據
斯洛伐克GPT - J - 162M是在一個私人收集的數據集上訓練的,該數據集主要由斯洛伐克語文本組成,涵蓋不同類別,如網絡、新聞文章甚至聖經文本。總共使用了超過40GB的文本數據來訓練這個模型。
該數據集經過了特定的預處理和清理,雖然涉及的改動較小,但仍有一些需要注意的地方。為了達到預期的性能,請參考“如何使用”部分。請記住,儘管努力去除了語料庫中的不當部分,但模型仍可能生成敏感內容或洩露敏感信息。
訓練過程
該模型在TPU v3 - 8 pod上經過69,001步,對近370億個標記進行了訓練。最後一步的交叉熵驗證損失為3.065。
預期用途
與原始的GPT - J一樣,斯洛伐克GPT - J學習語言的內部表示,可用於提取對下游任務有用的特徵。不過,其主要用途是根據提示進行文本生成。
📦 安裝指南
此模型可使用AutoModelForCausalLM
功能輕鬆加載:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
💻 使用示例
基礎用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
prompt = "Moje najobľubenejšie mesto na severe Slovenska je"
encoded_input = tokenizer(prompt, return_tensors='pt')
output = model.generate(**encoded_input)
print(tokenizer.decode(output[0]))
使用提示
在生成提示時,請記住以下三點:
- 不要留有尾隨空格。分詞器對“Mám rád slovenčinu”(
slovenčinu
後無空格)和“Mám rád slovenčinu ”(slovenčinu
後有尾隨空格)的編碼方式不同,即[12805, 2872, 46878]
不等於 [12805, 2872, 46878, 221]
。
- 始終使用標準的美式英語雙引號,即
""
而不是 „“
。
- 如果需要換行,請輸入
\n\n
而不是單個 \n
。
能力、侷限性和偏差
首先,由於該模型相對較小,總共只有1.62億個參數,其能力非常有限。因此,該模型的主要用途是用於學習和娛樂!
由於數據集包含髒話、政治不正確的語言,甚至(無意地)包含一些捷克語文本,模型在一定程度上也可能生成這些內容。以下是當提示為捷克語時模型輸出的示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
prompt = "Věta nesmí být sprostá a musí být zcela"
encoded_input = tokenizer(prompt, return_tensors='pt')
output = model.generate(**encoded_input, max_length=16)
print(tokenizer.decode(output[0]))
📚 詳細文檔
引用和相關信息
這是2021年夏天的一個兼職項目,目的是更好地理解Transformer。由於當時沒有太多空閒時間將其正確開源,所以這些內容一直放在我的硬盤上,直到現在。根據該模型的受歡迎程度和關注度,我可能會發布能力更強的斯洛伐克GPT - J模型的更大版本。
如果您使用了這個模型或有任何相關問題,請隨時通過Twitter聯繫我,或查看我的GitHub資料。
BibTeX引用
若要引用此模型:
@misc{slovak-gpt-j-162m,
author = {Kondela, Milos},
title = {{Slovak GPT-J-162M}},
howpublished = {\url{https://huggingface.co/Milos/slovak-gpt-j-162M}},
year = 2022,
month = February
}
若要引用訓練此模型的代碼庫:
@misc{mesh-transformer-jax,
author = {Wang, Ben},
title = {{Mesh-Transformer-JAX: Model-Parallel Implementation of Transformer Language Model with JAX}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = May
}
致謝
本項目得到了TPU研究雲(TRC)計劃的慷慨支持。同時也要感謝Ben Wang和出色的EleutherAI社區。
📄 許可證
本項目採用GPL - 3.0許可證。