---
license: apache-2.0
datasets:
- PipableAI/pip-txt-to-sql-spider-bird-dataset
language:
- en
metrics:
- accuracy
tags:
- sql
- code
- text2sql
- instruction_tuned
- basemodel
- jax
- pytorch
- text-generation-inference
library_name: transformers
pipeline_tag: text-generation
widget:
- text: >-
CREATE TABLE system(JobID: String,GID: String, UID: String,
Start:Time(yyyy/mm/dd), End: Time,ElapsedRaw: Time, CPUTimeRAW: Time,NCPUS:
Number,NNodes: Number, NodeList: List, State:String, Timelimit:
Time);Get UID and job id for Jobs that started on Jan 20
, 2023 ended on feb 14 2023 and has job id 20
example_title: example
---
# pipSQL-1.3b
[pipableAi](https://www.linkedin.com/company/pipable.ai/about/)
[colab_notebook](https://colab.research.google.com/drive/1insSxvc3jjAXe0zmdIjmbG3ttb5mpRgQ?usp=sharing)
## Основная информация
Основа для файнтюна (FT).
## Основные характеристики модели
- Размер: 1.3 миллиарда параметров
- Специализация: ETL (Extract, Transform, Load) и SQL-операции
- Доступность: открытый доступ через Hugging Face
- Превосходит ChatGPT в SQL-ориентированных бенчмарках
## Преимущества для бизнес-информатики МГПУ
### 1. Техническая оптимальность
- Оптимальный размер для файнтюнинга (1.3B параметров)
- Возможность запуска на доступном оборудовании
- Эффективное использование вычислительных ресурсов
### 2. Образовательные преимущества
- Специализация на SQL подходит для курсов по базам данных
- Поддержка ETL-процессов актуальна для бизнес-аналитики
- Возможность интеграции в учебные проекты
### 3. Направления файнтюнинга для МГПУ
- Адаптация под специфику учебных задач
- Настройка на корпоративные кейсы
- Интеграция российских бизнес-практик
## Рекомендации по файнтюнингу
### 1. Приоритетные области настройки
- Работа с российскими СУБД
- Интеграция отраслевой специфики
- Адаптация под образовательные задачи
### 2. Технические аспекты
- Использование LoRA для эффективной настройки
- Подготовка специализированных датасетов
- Валидация на реальных бизнес-кейсах
### 3. Образовательные компоненты
- Создание учебных примеров
- Разработка практических заданий
- Интеграция в существующие курсы
## Потенциальные применения
1. Учебный процесс:
- Автоматическая проверка SQL-запросов студентов
- Генерация учебных примеров
- Поддержка практических занятий
2. Исследовательская работа:
- Анализ больших наборов данных
- Поддержка научных исследований
- Обработка результатов экспериментов
3. Практические проекты:
- Работа с реальными бизнес-задачами
- Создание прототипов решений
- Анализ бизнес-процессов
Эта модель представляет особую ценность для направления бизнес-информатики благодаря своей специализации на SQL и ETL-процессах.
## Процесс обучения модели
Реализован через комбинированную функцию потерь, включающую:
1. Softmax cross entropy (перекрёстная энтропия с софтмакс нормализацией) для оптимизации вероятностного распределения предсказаний
2. Модифицированный вариант policy gradient для оптимизации стратегии принятия решений
3. Q-loss для оценки качества действий
Оптимизация производилась в рамках EM-фреймворка (Expectation-Maximization), что обеспечивает итеративное улучшение параметров модели через чередование шагов оценки ожидания и максимизации вероятности.
Такая архитектура потерь позволяет эффективно оптимизировать как точность генерации SQL-запросов, так и стратегическое качество принимаемых моделью решений.
## Бенчмаркинг :
Оценка производительности модели выполнена на основе Semantic Evaluation for Text-to-SQL with Distilled Test Suites - официального фреймворка оценки, разработанного исследовательской группой Yale и Berkeley для бенчмарков Spider, SParC и CoSQL.
Тестовый набор данных включает 2200 примеров, что обеспечивает статистически значимую оценку качества генерации SQL-запросов и семантической точности модели.
Тест на defog eval.
Он содержит 200 точек тестовых данных, отобранных вручную командой defog.
Вот ссылка на него:
## Usage
[Test Suite SQL Eval](https://github.com/taoyds/test-suite-sql-eval)
|model|easy|medium|hard|extra|
|-----|----|------|----|-----|
|sqlcoder-7b-2|72.0|58.0|40.6|37.3|
|pipSQL-1.3b|78.5|57.5|42.1|28.3|
|pipSQL-7b|63.0|40.0|30.2|25.0|
|sqlcoder-7b|60.6|48.2|28.3|20.4|
|gpt-3.5|58.8|44.7|31.0|28.4|
[Defog SQL-Eval](https://github.com/defog-ai/sql-eval)
Вот результаты -

## License
Модель имеет открытый исходный код под лицензией Apache 2.0.
### Installation
```bash
pip install transformers
```
### Prompt
```python
prompt = f"""{schema}
{question}
"""
```
### PyTorch
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b")
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('')[1].split('')[0])
```
### Flax
```python
from transformers import FlaxAutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = FlaxAutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b",from_pt=True)
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")
inputs = tokenizer(text, return_tensors="jax")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('')[1].split('')[0])
```
## Examples
### Schema
```sql
CREATE TABLE Products (
product_id number,
parent_product_id number,
product_name text,
product_price number,
product_color text,
product_size text,
product_description text);
CREATE TABLE Customers (
customer_id number,
gender_code text,
customer_first_name text,
customer_middle_initial text,
customer_last_name text,
email_address text,
login_name text,
login_password text,
phone_number text,
address_line_1 text,
town_city text,
county text,
country text);
CREATE TABLE Customer_Payment_Methods (
customer_id number,
payment_method_code text);
CREATE TABLE Invoices (
invoice_number number,
invoice_status_code text,
invoice_date time);
CREATE TABLE Orders (
order_id number,
customer_id number,
order_status_code text,
date_order_placed time);
CREATE TABLE Order_Items (
order_item_id number,
product_id number,
order_id number,
order_item_status_code text);
CREATE TABLE Shipments (
shipment_id number,
order_id number,
invoice_number number,
shipment_tracking_number text,
shipment_date time);
CREATE TABLE Shipment_Items (
shipment_id number,
order_item_id number);
```
### Questions
What are the email address, town and county of the customers who are of the least common gender?
```sql
SELECT email_address , town_city , county FROM customers GROUP BY gender_code ORDER BY count(*) ASC LIMIT 1
```
What are the product price and the product size of the products whose price is above average?
```sql
SELECT product_price , product_size FROM products WHERE product_price > (SELECT avg(product_price) FROM products)
```
Which customers did not make any orders? List the first name, middle initial and last name.
```sql
SELECT T1.customer_first_name , T1.customer_middle_initial , T1.customer_last_name FROM Customers AS T1 WHERE T1.customer_id NOT IN (SELECT T2.customer_id FROM Orders AS T2)
```