Model Card for timbossm/sales-sql-finetuned-model
Эта модель представляет собой дообученную версию GPT-2, специализированную для генерации SQL-запросов и объяснений к ним на основе описания схемы базы данных "Продажи", используемой в лабораторном практикуме МГПУ по языку SQL.
Model Details
Model Description
timbossm/sales-sql-finetuned-model
- это дообученная (fine-tuned) модель GPT-2, предназначенная для выполнения задач Text-to-SQL и SQL-объяснения в контексте конкретной учебной схемы базы данных "Продажи".
Модель была дообучена на небольшом датасете, созданном на основе примеров и заданий из лабораторных работ МГПУ. Она учится генерировать SQL-запросы (преимущественно SELECT) на естественном языке (русском), когда ей предоставляется описание схемы базы данных и запрос пользователя. Также модель может генерировать объяснения к предоставленным SQL-запросам или элементам схемы.
Важное замечание: Модель была дообучена на очень маленьком датасете (16 примеров). Из-за этого она, вероятно, имеет крайне ограниченные возможности обобщения и может просто запоминать обучающие примеры, не являясь надежным инструментом для работы с другими запросами или схемами.
- Developed by: timbossm
- Funded by [optional]: [More Information Needed]
- Shared by [optional]: [More Information Needed]
- Model type: Causal Language Model (Decoder-only Transformer), дообученная (fine-tuned). Основана на архитектуре GPT-2.
- Language(s) (NLP): Русский (Russian) для входных промптов и текстовых ответов/объяснений; SQL для генерируемых запросов.
- License: Лицензия базовой модели
gpt2
- MIT License. Лицензия данного дообученного артефакта наследует эту лицензию. Однако, данные для дообучения основаны на учебных материалах, и их использование может регулироваться отдельными условиями (предположительно, образовательными/некоммерческими). Рекомендуется ознакомиться с исходным практикумом. Лицензия модели: MIT. - Finetuned from model [optional]: gpt2
Model Sources [optional]
- Repository:
https://huggingface.co/timbossm/sales-sql-finetuned-model
- Paper [optional]: Данная модель основана на материалах: Босенко, Т. М., & Фролов, Ю. В. (2025). Лабораторный практикум по языку SQL: практикум. МГПУ.
Direct Use
- Генерация SQL-запросов для конкретной схемы базы данных "Продажи", представленной в обучающем датасете.
- Получение базовых объяснений по этой схеме и простым SQL-запросам.
- В образовательных целях для демонстрации процесса дообучения LLM для задачи Text-to-SQL на очень простом примере.
Downstream Use [optional]
Модель может быть использована как отправная точка для дальнейших экспериментов по дообучению на более крупных и разнообразных датасетах Text-to-SQL, хотя, учитывая крайне маленький исходный тренировочный набор, ее полезность в качестве базы сильно ограничена.
Out-of-Scope Use
- Генерация SQL-запросов для любых других схем баз данных.
- Генерация сложных или нестандартных SQL-конструкций, отсутствующих в обучающих примерах.
- Использование в реальных приложениях, где требуется надежность и точность.
- Генерация связного текста на общие темы.
- Использование для любых задач, не связанных напрямую с заданной схемой БД "Продажи" и форматом промпт/ответ из обучающего датасета.
Bias, Risks, and Limitations
- Крайне маленький размер обучающего датасета (16 примеров): Это основное ограничение. Модель, вероятно, просто переобучилась на этих примерах и не сможет успешно обрабатывать запросы, которые значительно отличаются от увиденных во время обучения. Обобщающие способности очень низкие.
- Смещение по схеме: Модель обучена только на одной конкретной схеме БД "Продажи". Она ничего не знает о других схемах или общих принципах построения БД и SQL.
- Ограниченное разнообразие запросов: Обучающие примеры охватывают только определенные типы SELECT-запросов и базовые объяснения. Модель не научится DML-операциям (INSERT, UPDATE, DELETE) или другим DDL-операциям, кроме интерпретации CREATE TABLE.
- Риск некорректной генерации: Несмотря на обучение, модель может генерировать синтаксически неверные SQL-запросы или логически неправильные ответы даже для целевой схемы, особенно при малейших отклонениях во входном промпте.
Recommendations
Пользователям настоятельно рекомендуется осознавать серьезные ограничения данной модели, связанные с крайне маленьким размером обучающего датасета. Модель непригодна для использования в продакшене или для задач, требующих надежной генерации SQL. Она может служить лишь как учебный пример дообучения LLM. Любые сгенерированные SQL-запросы должны быть тщательно проверены.
How to Get Started with the Model
Вы можете использовать модель для генерации текста следующим образом (включая DDL схему в промпт, как в обучающих данных):
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Укажите путь к сохраненной модели или ID на Hugging Face Hub
# model_name = "./model" # Если модель сохранена локально
model_name = "timbossm/sales-sql-finetuned-model" # Если загружаете с Hub
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Убедитесь, что токен паддинга установлен, если его нет (важно для генерации)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
model.config.pad_token_id = tokenizer.pad_token_id # Убедитесь, что и в конфиге модели он установлен
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
model.eval() # Переключиться в режим инференса
prompt_text = """Используя следующую схему базы данных:
CREATE TABLE clients (
client_id INTEGER PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50) NOT NULL,
first_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(14) NOT NULL
);
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY AUTO_INCREMENT,
client_id INTEGER NOT NULL,
order_date DATE NOT NULL,
cost DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (client_id) REFERENCES clients(client_id)
);
CREATE TABLE products (
product_id INTEGER PRIMARY KEY AUTO_INCREMENT,
description VARCHAR(200) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
quantity INTEGER NOT NULL,
order_id INTEGER,
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
Напиши SQL-запрос, чтобы вывести email всех клиентов.
""" # Пример промпта с DDL
# Подготовка ввода с attention_mask
inputs = tokenizer(
prompt_text + "\n", # Добавляем разделитель как при обучении
return_tensors="pt",
max_length=1024, # Использовать ту же максимальную длину
truncation=True,
padding="max_length",
return_attention_mask=True # Важно передавать маску внимания
).to(device)
# Генерация текста
output_sequences = model.generate(
inputs["input_ids"],
attention_mask=inputs["attention_mask"], # Передаем маску внимания
max_new_tokens=100, # Максимальное количество новых токенов в ответе
num_beams=1, # Жадный поиск
no_repeat_ngram_size=2,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id,
)
generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=False)
print("--- Сгенерированный ответ (полный текст): ---")
print(generated_text)
print("---------------------------------------------")
# Опционально: извлечь только сгенерированную часть
prompt_end_marker = prompt_text + "\n"
prompt_end_index = generated_text.find(prompt_end_marker)
if prompt_end_index != -1:
generated_response = generated_text[prompt_end_index + len(prompt_end_marker):].strip()
if generated_response.endswith(tokenizer.eos_token):
generated_response = generated_response[:-len(tokenizer.eos_token)].strip()
print("\n--- Извлеченный ответ: ---")
print(generated_response)
print("--------------------------")
Training Details
Training Data
Модель была дообучена на пользовательском датасете sales_lab.jsonl
, созданном на основе примеров из "ЛАБОРАТОРНОГО ПРАКТИКУМА ПО ЯЗЫКУ SQL" МГПУ (2025, составители Т. М. Босенко, Ю.В. Фролов).
Датасет содержит 16 пар "промпт" - "ответ", где промпты включают DDL схему базы данных "Продажи" и запрос на естественном языке или SQL код для объяснения, а ответы - соответствующий SQL код или текстовое объяснение. Схема БД включает таблицы clients
, orders
, products
.
Важное замечание: Датасет крайне мал (14 примеров для обучения, 2 для валидации).
[More Information Needed] (Ссылка на Dataset Card, если он будет создан и выгружен отдельно).
Training Procedure
Модель gpt2
была дообучена с использованием библиотеки Hugging Face transformers
и класса Trainer
.
Preprocessing [optional]
Каждая пара "промпт" и "ответ" из датасета была объединена в одну строку в формате [prompt]\n[response][eos_token]
. Полученные строки были токенизированы с использованием AutoTokenizer
для gpt2
. Максимальная длина последовательности была установлена в 1024 токена с усечением (truncation=True
) и паддингом до максимальной длины батча или max_length
(padding="max_length"
). Метки для обучения (labels
) были созданы путем копирования входных токенов (input_ids
), при этом токены, соответствующие оригинальному промпту (включая разделитель \n
), были заменены на -100
, чтобы функция потерь игнорировала их.
Training Hyperparameters
- Training regime: fp16 mixed precision (если
fp16=True
в TrainingArguments). Иначе fp32 non-mixed precision. - num_train_epochs: 5
- per_device_train_batch_size: 8
- per_device_eval_batch_size: 8
- learning_rate: 5e-5
- weight_decay: 0.01
- eval_strategy: "epoch"
- save_strategy: "epoch"
- load_best_model_at_end: True
- max_length (tokenization): 1024
- gradient_accumulation_steps: 1 (по умолчанию в скрипте)
Speeds, Sizes, Times [optional]
- Hardware Type: NVIDIA RTX 2000 (использовалась одна GPU, если применялся
CUDA_VISIBLE_DEVICES=0
) - Cloud Provider: Локальное обучение.
Testing Data, Factors & Metrics
Testing Data
Модель оценивалась на небольшом валидационном разбиении исходного датасета, состоящем из 2 примеров.
Summary
Результаты валидации на таком маленьком наборе данных (2 примера) не являются репрезентативными и не могут служить показателем реального качества модели или ее способности к обобщению. Высока вероятность переобучения на тренировочном наборе.
- Hardware Type: NVIDIA RTX 2000
- Cloud Provider: Локальное обучение
Technical Specifications [optional]
Model Architecture and Objective
Модель использует стандартную архитектуру GPT-2 - это трансформер типа "декодер-онли", обученный на задаче предсказания следующего токена. Дообучение адаптирует эту способность к задаче генерации SQL-запросов и объяснений на основе структурированных промптов, содержащих схему БД.
Compute Infrastructure
Hardware
Обучение проводилось на GPU NVIDIA RTX 2000.
Software
- Python
- PyTorch
- Hugging Face
transformers
- Hugging Face
datasets
- Hugging Face
accelerate
- Hugging Face
huggingface-hub
Citation [optional]
BibTeX:
@misc{timbossm_sales_sql_finetuned_model_2024,
author = {timbossm},
title = {sales-sql-finetuned-model},
year = {2024}, # Укажите актуальный год выгрузки
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/timbossm/sales-sql-finetuned-model}},
note = {Дообучено на материалах Лабораторного практикума МГПУ по языку SQL, 2025.}
}
APA:
timbossm. (2024). sales-sql-finetuned-model. Hugging Face. Retrieved from https://huggingface.co/timbossm/sales-sql-finetuned-model (Дообучено на материалах Лабораторного практикума МГПУ по языку SQL, 2025).
Босенко, Т. М., & Фролов, Ю. В. (2025). Лабораторный практикум по языку SQL: практикум. МГПУ.
Model Card Authors [optional]
timbossm
- Downloads last month
- 3
Model tree for timbossm/sales-sql-finetuned-model
Base model
openai-community/gpt2