CoolFace
Modelpublic

Xalk07/KSTU_T-lite-2.1

sourceHugging Faceapache-2.0updated 23d agoView on Hugging Face
0likes493downloads
Model Card

Русский | English

Русский

KSTU_T-lite-2.1 - это дообученная модель на основе T-lite-it-2.1 от Т-банка. Предназначена для помощи в поиске и выдаче информации об университетском комплексе КГТУ, Россия. В университетский комплекс входит четыре образовательных организации: Калининградский Государственный Технический Университет (КГТУ), Балтийская Государственная Академия Рыбопромыслового Флота (БГАРФ), Калининградский Морской Рыбопромышленный Колледж (КМРК) и Санкт-Петербургский Морской Рыбопромышленный Колледж (СПбМРК).

Модель обучалась в 2 этапа: дополнение предложения (2 эпохи) и обучения инструкциям (3 эпохи). И знает о событиях до второй половины 2025 года.

Метрики:

Метрики1 этап (2 эпохи)2 этап (3 эпохи)
ROUGE-10,04060,0602
ROUGE-20,00370,0238
ROUGE-L0,03430,0596
PRECISION0,13140,1798
RECALL0,13720,2138
F10,12030,1774

Сравнение с другим проектом от Донецкого Государственного университета:

МетрикиKSTU_T-lite-2.1<br>5 эпохАссистент Донецкого Государственного университета<br>LLaMA-3.1-8b<br>25 эпох
ROUGE-10,06020,1331
ROUGE-20,02380,0721
ROUGE-L0,05960,1320
PRECISION0,1798-
RECALL0,2138-
F10,1774-

Использование: Вы можете использовать эту модель, квантизированные варианты или интерактивное пространство. Квантизированные варианты доступны здесь: Xalk07/KSTU_T-lite-2.1-GGUF Интерактивное пространство ещё не создано, в планах.

Python:

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"          # Apple Silicon
else:
    DEVICE = "cpu"

print(f"Using device: {DEVICE}")

# ---------------------------------------------------------
# 1. Tokenizer
# ---------------------------------------------------------
logging.getLogger("transformers.tokenization_utils_base").setLevel(logging.ERROR)

tokenizer = AutoTokenizer.from_pretrained(
    MODEL_PATH,
    trust_remote_code=True,
)

# ---------------------------------------------------------
# 2. Model
# ---------------------------------------------------------
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()

# ---------------------------------------------------------
# 3. Prompt
# ---------------------------------------------------------
prompt = "Зачем поступать в КГТУ на специальность «Прикладная информатика»?"

messages = [
    {
        "role": "system",
        "content": (
            "Ты виртуальный ассистент университетского комплекса КГТУ. "
            "Отвечай кратко и по существу."
        )
    },
    {
        "role": "user",
        "content": prompt
    },
]

# ---------------------------------------------------------
# 4. Chat template
# ---------------------------------------------------------
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,
    )

# ---------------------------------------------------------
# 5. Tokenize
# ---------------------------------------------------------
model_inputs = tokenizer(
    [text],
    return_tensors="pt",
    padding=True,
).to(model.device)

# ---------------------------------------------------------
# 6. Generation
# ---------------------------------------------------------
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]:]

# ---------------------------------------------------------
# 7. Decode
# ---------------------------------------------------------
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:

MetricsStage 1 (2 epochs)Stage 2 (3 epochs)
ROUGE-10.04060.0602
ROUGE-20.00370.0238
ROUGE-L0.03430.0596
PRECISION0.13140.1798
RECALL0.13720.2138
F10.12030.1774

Comparison with another project from Donetsk State University:

MetricsKSTU_T-lite-2.1<br>5 epochsDonetsk State University Assistant<br>LLaMA-3.1-8b<br>25 epochs
ROUGE-10.06020.1331
ROUGE-20.02380.0721
ROUGE-L0.05960.1320
PRECISION0.1798-
RECALL0.2138-
F10.1774-

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:

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"          # Apple Silicon
else:
    DEVICE = "cpu"

print(f"Using device: {DEVICE}")

# ---------------------------------------------------------
# 1. Tokenizer
# ---------------------------------------------------------
logging.getLogger("transformers.tokenization_utils_base").setLevel(logging.ERROR)

tokenizer = AutoTokenizer.from_pretrained(
    MODEL_PATH,
    trust_remote_code=True,
)

# ---------------------------------------------------------
# 2. Model
# ---------------------------------------------------------
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()

# ---------------------------------------------------------
# 3. Prompt
# ---------------------------------------------------------
prompt = "Зачем поступать в КГТУ на специальность «Прикладная информатика»?"

messages = [
    {
        "role": "system",
        "content": (
            "Ты виртуальный ассистент университетского комплекса КГТУ. "
            "Отвечай кратко и по существу."
        )
    },
    {
        "role": "user",
        "content": prompt
    },
]

# ---------------------------------------------------------
# 4. Chat template
# ---------------------------------------------------------
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,
    )

# ---------------------------------------------------------
# 5. Tokenize
# ---------------------------------------------------------
model_inputs = tokenizer(
    [text],
    return_tensors="pt",
    padding=True,
).to(model.device)

# ---------------------------------------------------------
# 6. Generation
# ---------------------------------------------------------
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]:]

# ---------------------------------------------------------
# 7. Decode
# ---------------------------------------------------------
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.)