Русский
KSTU_T-lite-2.1 - это дообученная модель на основе T-lite-it-2.1 от Т-банка. Предназначена для помощи в поиске и выдаче информации об университетском комплексе КГТУ, Россия.
В университетский комплекс входит четыре образовательных организации: Калининградский Государственный Технический Университет (КГТУ), Балтийская Государственная Академия Рыбопромыслового Флота (БГАРФ), Калининградский Морской Рыбопромышленный Колледж (КМРК) и Санкт-Петербургский Морской Рыбопромышленный Колледж (СПбМРК).
Модель обучалась в 2 этапа: дополнение предложения (2 эпохи) и обучения инструкциям (3 эпохи). И знает о событиях до второй половины 2025 года.
Метрики:
Table with columns: Метрики, 1 этап (2 эпохи), 2 этап (3 эпохи)| Метрики | 1 этап (2 эпохи) | 2 этап (3 эпохи) |
|---|
| ROUGE-1 | 0,0406 | 0,0602 |
| ROUGE-2 | 0,0037 | 0,0238 |
| ROUGE-L | 0,0343 | 0,0596 |
| PRECISION | 0,1314 | 0,1798 |
| RECALL | 0,1372 | 0,2138 |
| F1 | 0,1203 | 0,1774 |
Сравнение с другим проектом от Донецкого Государственного университета:
Table with columns: Метрики, KSTU_T-lite-2.15 эпох, Ассистент Донецкого Государственного университетаLLaMA-3.1-8b25 эпох| Метрики | KSTU_T-lite-2.15 эпох | Ассистент Донецкого Государственного университетаLLaMA-3.1-8b25 эпох |
|---|
| ROUGE-1 | 0,0602 | 0,1331 |
| ROUGE-2 | 0,0238 | 0,0721 |
| ROUGE-L | 0,0596 | 0,1320 |
| PRECISION | 0,1798 | - |
| RECALL | 0,2138 | - |
|
Использование:
Вы можете использовать эту модель, квантизированные варианты или интерактивное пространство.
Квантизированные варианты доступны здесь: Xalk07/KSTU_T-lite-2.1-GGUF
Интерактивное пространство ещё не создано, в планах.
Python:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import logging
import warnings
torch.manual_seed(42)
MODEL_PATH = "./KSTU_T-lite-2.1"
if torch.cuda.is_available():
DEVICE = "cuda"
elif getattr(torch.backends, "mps", None) is not None and torch.backends.mps.is_available():
DEVICE = "mps"
else:
DEVICE = "cpu"
print(f"Using device: {DEVICE}")
logging.getLogger("transformers.tokenization_utils_base").setLevel(logging.ERROR)
tokenizer = AutoTokenizer.from_pretrained(
MODEL_PATH,
trust_remote_code=True,
)
dtype = torch.bfloat16 if DEVICE != "cpu" else torch.float32
model = AutoModelForCausalLM.from_pretrained(
MODEL_PATH,
dtype=dtype,
device_map="auto",
trust_remote_code=True,
)
model.eval()
prompt = "Зачем поступать в КГТУ на специальность «Прикладная информатика»?"
messages = [
{
"role": "system",
"content": (
"Ты виртуальный ассистент университетского комплекса КГТУ. "
"Отвечай кратко и по существу."
)
},
{
"role": "user",
"content": prompt
},
]
try:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False,
)
except TypeError:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer(
[text],
return_tensors="pt",
padding=True,
).to(model.device)
with torch.inference_mode():
generated_ids = model.generate(
**model_inputs,
max_new_tokens=250,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
min_p=0.0,
repetition_penalty=1.15,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=(
tokenizer.pad_token_id
if tokenizer.pad_token_id is not None
else tokenizer.eos_token_id
),
use_cache=True,
)
generated_ids = generated_ids[:, model_inputs.input_ids.shape[1]:]
response = tokenizer.decode(
generated_ids[0],
skip_special_tokens=True,
).strip()
print("=== RESPONSE ===")
print(response)
print("================")
Для более точных ответов используйте RAG и/или вызов инструментов.
Подробнее о модели можно будет узнать на конференциях и в статьях. (Будут добавляться в описание карточки)
English
KSTU_T-lite-2.1 is a model fine-tuned from T-lite-it-2.1 by T-Bank. It is designed to assist in retrieving and providing information about the KSTU university complex in Russia.
The university complex comprises four educational institutions: Kaliningrad State Technical University (KSTU), the Baltic Fishing Fleet State Academy (BFFSA), the Kaliningrad Marine Fishing College (KMFC), and the St. Petersburg Marine Fishing College (SPMFC).
The model was trained in two stages: sentence completion (2 epochs) and instruction tuning (3 epochs). And it knows about events up to the second half of 2025.
Metrics:
Table with columns: Metrics, Stage 1 (2 epochs), Stage 2 (3 epochs)| Metrics | Stage 1 (2 epochs) | Stage 2 (3 epochs) |
|---|
| ROUGE-1 | 0.0406 | 0.0602 |
| ROUGE-2 | 0.0037 | 0.0238 |
| ROUGE-L | 0.0343 | 0.0596 |
| PRECISION | 0.1314 | 0.1798 |
| RECALL | 0.1372 | 0.2138 |
|
Comparison with another project from Donetsk State University:
Table with columns: Metrics, KSTU_T-lite-2.15 epochs, Donetsk State University AssistantLLaMA-3.1-8b25 epochs| Metrics | KSTU_T-lite-2.15 epochs | Donetsk State University AssistantLLaMA-3.1-8b25 epochs |
|---|
| ROUGE-1 | 0.0602 | 0.1331 |
| ROUGE-2 | 0.0238 | 0.0721 |
| ROUGE-L | 0.0596 | 0.1320 |
| PRECISION | 0.1798 | - |
| RECALL | 0.2138 | - |
|
Usage:
You can use this model, its quantized versions, or the interactive space.
Quantized versions available here: Xalk07/KSTU_T-lite-2.1-GGUF
An interactive space is planned but has not yet been created.
Python:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import logging
import warnings
torch.manual_seed(42)
MODEL_PATH = "./KSTU_T-lite-2.1"
if torch.cuda.is_available():
DEVICE = "cuda"
elif getattr(torch.backends, "mps", None) is not None and torch.backends.mps.is_available():
DEVICE = "mps"
else:
DEVICE = "cpu"
print(f"Using device: {DEVICE}")
logging.getLogger("transformers.tokenization_utils_base").setLevel(logging.ERROR)
tokenizer = AutoTokenizer.from_pretrained(
MODEL_PATH,
trust_remote_code=True,
)
dtype = torch.bfloat16 if DEVICE != "cpu" else torch.float32
model = AutoModelForCausalLM.from_pretrained(
MODEL_PATH,
dtype=dtype,
device_map="auto",
trust_remote_code=True,
)
model.eval()
prompt = "Зачем поступать в КГТУ на специальность «Прикладная информатика»?"
messages = [
{
"role": "system",
"content": (
"Ты виртуальный ассистент университетского комплекса КГТУ. "
"Отвечай кратко и по существу."
)
},
{
"role": "user",
"content": prompt
},
]
try:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False,
)
except TypeError:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer(
[text],
return_tensors="pt",
padding=True,
).to(model.device)
with torch.inference_mode():
generated_ids = model.generate(
**model_inputs,
max_new_tokens=250,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
min_p=0.0,
repetition_penalty=1.15,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=(
tokenizer.pad_token_id
if tokenizer.pad_token_id is not None
else tokenizer.eos_token_id
),
use_cache=True,
)
generated_ids = generated_ids[:, model_inputs.input_ids.shape[1]:]
response = tokenizer.decode(
generated_ids[0],
skip_special_tokens=True,
).strip()
print("=== RESPONSE ===")
print(response)
print("================")
For more accurate answers, use RAG and/or tool calling.
More information about the model will be available at conferences and in articles. (These will be added to the card description.)