license: apache-2.0
base_model: eryk-mazus/tinyllama-with-custom-tokenizer
datasets:
- allenai/MADLAD-400
- eryk-mazus/polka-pretrain-en-pl-v1
language:
- pl
- en
pipeline_tag: text-generation
widget:
- text: "Wiedźmin 3 to fabularna gra akcji wyprodukowana"
output:
text: " przez studio CD Projekt RED. Akcja rozgrywa się w świecie fantasy, a jej bohaterem jest Geralt z Rivii,"
- text: "Gdy już będziecie w Warszawie, miejscem, które koniecznie musicie odwiedzić jest"
output:
text: " Muzeum Powstania Warszawskiego. To jedyne tego typu muzeum w Europie"

polka-1.1b
polka-1.1b
基于 TinyLlama-1.1B 模型,通过继续在额外的 57亿波兰语token 上进行预训练而增强,这些token主要来自 MADLAD-400 数据集。使用 DSIR 以10:1的比例从波兰语和英语分片中采样。此外,Polka将TinyLlama的分词器词汇扩展到43,882个token,提高了生成波兰语文本的效率。
训练在一台配备8块RTX 4090的机器上耗时680 GPU小时,使用DeepSpeed ZeRO-2。
上下文长度:2,048个token。
说明
该基础模型最初是为指令调优开发的,最终产生了 polka-1.1b-chat。尽管如此,我仍将其分享给社区,因为我认为它在相对良好的性能和高效的双语分词器结合方面具有潜在价值。
该模型能够生成连贯的波兰语文本,但由于其规模较小,可能会出现幻觉问题。
评估
由 OPI-PG(Qra模型的作者)执行。
PolEval-2018
模型 | 困惑度 |
英语模型 |
meta-llama/Llama-2-7b-hf | 24.3 |
meta-llama/Llama-2-13b-hf | 21.4 |
mistralai/Mistral-7B-v0.1 | 21.4 |
TinyLlama/TinyLlama-1.1B | 40.4 |
波兰语模型 |
sdadas/polish-gpt2-small | 134.4 |
sdadas/polish-gpt2-medium | 100.8 |
sdadas/polish-gpt2-large | 93.2 |
sdadas/polish-gpt2-xl | 94.1 |
Azurro/APT3-275M-Base | 129.8 |
Azurro/APT3-500M-Base | 153.1 |
Azurro/APT3-1B-Base | 106.8 |
eryk-mazus/polka-1.1b | 18.1 |
szymonrucinski/Curie-7B-v1 | 13.5 |
OPI-PG/Qra-1b | 14.7 |
长文档(2024)
目前,LLM支持数千个token的上下文。它们的实际应用通常也涉及处理长文档。因此,在基于句子的数据集(如PolEval-2018)上评估困惑度可能意义不大。此外,PolEval语料库在过去几年中已在互联网上公开,这增加了某些模型的训练集可能被这些数据污染的可能性。为此,我们准备了一个新的集合,包含仅在2024年发表的长篇论文,这将使我们能够更可靠地测试模型在训练时未接触到的新知识上的困惑度。该语料库包含5,000份文档,长度从几百到约20,000个token不等。其中一半是2024年2月来自波兰新闻门户网站的新闻文本,另一半是2024年1月以来发表的科学文章。大多数文档超过了评估模型的上下文长度。为了计算这些文档的困惑度,我们按照此示例将它们分成与模型上下文长度相等的块,步长为512个token。
模型 | 上下文 | 困惑度 |
英语模型 |
meta-llama/Llama-2-7b-hf | 4096 | 5.9 |
meta-llama/Llama-2-13b-hf | 4096 | 5.3 |
mistralai/Mistral-7B-v0.1 | 4096 | 4.9 |
TinyLlama/TinyLlama-1.1B | 2048 | 9.6 |
波兰语模型 |
sdadas/polish-gpt2-small | 2048 | 27.3 |
sdadas/polish-gpt2-medium | 2048 | 20.3 |
sdadas/polish-gpt2-large | 1536 | 18.0 |
sdadas/polish-gpt2-xl | 1536 | 16.6 |
Azurro/APT3-275M-Base | 2048 | 77.0 |
Azurro/APT3-500M-Base | 2048 | 50.5 |
Azurro/APT3-1B-Base | 2048 | 19.1 |
eryk-mazus/polka-1.1b | 2048 | 6.9 |
szymonrucinski/Curie-7B-v1 | 4096 | 4.8 |
OPI-PG/Qra-1b | 4096 | 6.1 |
示例代码
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "eryk-mazus/polka-1.1b"
tokenizer = AutoTokenizer.from_pretrained(model_name, padding_side="left")
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", load_in_8bit=True)
prompt = """Przykładowe zapytanie do modelu"""
model_inputs = tokenizer([prompt], return_tensors="pt").to("cuda")
with torch.no_grad():
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512,
do_sample=True,
penalty_alpha=0.6,
top_k=5
)
output = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(output)