Model reference · open weights
vlt5-keywords is an open-weight language model from Voicelab. vlt5-base-keywords (FP32) weighs 550 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the Voicelab/vlt5-base-keywords model card, 2026-10-01
What it is
| Released by | Voicelab |
|---|---|
| Released | 2022-09-27 |
| Parameters | 275M |
| VRAM | 550 MB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB | 34 | 8 | 128K | 11.6 GB |
| RTX 4060 Ti 16 GB | 47 | 11 | 128K | 15.4 GB |
| RTX 3090 24 GB | 73 | 18 | 128K | 23.4 GB |
| RTX 4090 24 GB | 73 | 18 | 128K | 23.4 GB |
| RTX 5090 32 GB | 99 | 24 | 128K | 31.0 GB |
| L40S 48 GB | 142 | 35 | 128K | 44.0 GB |
| A100 80 GB | 255 | 63 | 128K | 78.2 GB |
| H100 80 GB | 245 | 61 | 128K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 297 | 74 | 128K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 342 | 85 | 128K | 107 GB |
| H200 141 GB | 444 | 111 | 128K | 138 GB |
| B200 180 GB | 570 | 142 | 128K | 176 GB |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 1.4 GB | 2.3 GB |
| 5 | 2.6 GB | 7.1 GB |
| 8 | 3.5 GB | 10.7 GB |
| 16 | 5.9 GB | 20.4 GB |
| 32 | 10.7 GB | 39.7 GB |
| 64 | 20.4 GB | 78.4 GB |
One card, with vLLM's small-card settings.
From the model card
Our vlT5 model is a keyword generation model based on encoder-decoder architecture using Transformer blocks presented by Google (https://huggingface.co/t5-base). The vlT5 was trained on scientific articles corpus to predict a given set of keyphrases based on the concatenation of the article’s abstract and title. It generates precise, yet not always complete keyphrases that describe the content of the article based only on the abstract.
Keywords generated with vlT5-base-keywords: encoder-decoder architecture, keyword generation
Results on demo model (different generation method, one model per language):
Our vlT5 model is a keyword generation model based on encoder-decoder architecture using Transformer blocks presented by Google (https://huggingface.co/t5-base). The vlT5 was trained on scientific articles corpus to predict a given set of keyphrases based on the concatenation of the article’s abstract and title. It generates precise, yet not always complete keyphrases that describe the content of the article based only on the abstract.
Keywords generated with vlT5-base-keywords: encoder-decoder architecture, vlT5, keyword generation, scientific articles corpus
The biggest advantage is the transferability of the vlT5 model, as it works well on all domains and types of text. The downside is that the text length and the number of keywords are similar to the training data: the text piece of an abstract length generates approximately 3 to 5 keywords. It works both extractive and abstractively. Longer pieces of text must be split into smaller chunks, and then propagated to the model.
The model was trained on a POSMAC corpus. Polish Open Science Metadata Corpus (POSMAC) is a collection of 216,214 abstracts of scientific publications compiled in the CURLICAT project.
| Domains | Documents | With keywords |
|---|---|---|
| Engineering and technical sciences | 58 974 | 57 165 |
| Social sciences | 58 166 | 41 799 |
| Agricultural sciences | 29 811 | 15 492 |
| Humanities | 22 755 | 11 497 |
| Exact and natural sciences | 13 579 | 9 185 |
| Humanities, Social sciences | 12 809 | 7 063 |
| Medical and health sciences | 6 030 | 3 913 |
| Medical and health sciences, Social sciences | 828 | 571 |
| Humanities, Medical and health sciences, Social sciences | 601 | 455 |
| Engineering and technical sciences, Humanities | 312 | 312 |
As in the original plT5 implementation, the training dataset was tokenized into subwords using a sentencepiece unigram model with vocabulary size of 50k tokens.
from transformers import T5Tokenizer, T5ForConditionalGeneration
model = T5ForConditionalGeneration.from_pretrained("Voicelab/vlt5-base-keywords")
tokenizer = T5Tokenizer.from_pretrained("Voicelab/vlt5-base-keywords")
task_prefix = "Keywords: "
inputs = [
"Christina Katrakis, who spoke to the BBC from Vorokhta in western Ukraine, relays the account of one family, who say Russian soldiers shot at their vehicles while they were leaving their village near Chernobyl in northern Ukraine. She says the cars had white flags and signs saying they were carrying children.",
"Decays the learning rate of each parameter group by gamma every step_size epochs. Notice that such decay can happen simultaneously with other changes to the learning rate from outside this scheduler. When last_epoch=-1, sets initial lr as lr.",
"Hello, I'd like to order a pizza with salami topping.",
]
for sample in inputs:
input_sequences = [task_prefix + sample]
input_ids = tokenizer(
input_sequences, return_tensors="pt", truncation=True
).input_ids
output = model.generate(input_ids, no_repeat_ngram_size=3, num_beams=4)
predicted = tokenizer.decode(output[0], skip_special_tokens=True)
print(sample, "\n --->", predicted)
Our results showed that the best generation results were achieved with no_repeat_ngram_size=3, num_beams=4
| Method | Rank | Micro | Macro | ||||
|---|---|---|---|---|---|---|---|
| P | R | F1 | P | R | F1 | ||
| extremeText | 1 | 0.175 | 0.038 | 0.063 | 0.007 | 0.004 | 0.005 |
| 3 | 0.117 | 0.077 | 0.093 | 0.011 | 0.011 | 0.011 | |
| 5 | 0.090 | 0.099 | 0.094 | 0.013 | 0.016 | 0.015 | |
| 10 | 0.060 | 0.131 | 0.082 | 0.015 | 0.025 | 0.019 | |
| vlT5kw | 1 | 0.345 | 0.076 | 0.124 | 0.054 | 0.047 | 0.050 |
| 3 | 0.328 | 0.212 | 0.257 | 0.133 | 0.127 | 0.129 | |
| 5 | 0.318 | 0.237 | 0.271 | 0.143 | 0.140 | 0.141 | |
| KeyBERT | 1 | 0.030 | 0.007 | 0.011 | 0.004 | 0.003 | 0.003 |
| 3 | 0.015 | 0.010 | 0.012 | 0.006 | 0.004 | 0.005 |
|
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.