| | --- |
| | 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: >- |
| | <schema>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);</schema><question>Get UID and job id for Jobs that started on Jan 20 |
| | , 2023 ended on feb 14 2023 and has job id 20</question><sql> |
| | 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). |
| |
|
| | <antArtifact identifier="sql-model-analysis" type="text/markdown" title="Анализ SQL-модели для файнтюнинга в бизнес-информатике"> |
| | # Анализ базовой модели PipableAI/pip-library-etl-1.3b |
| |
|
| | ## Основные характеристики модели |
| | - Размер: 1.3 миллиарда параметров |
| | - Базовая архитектура: DeepSeek |
| | - Специализация: ETL (Extract, Transform, Load) и SQL-операции |
| | - Доступность: открытый доступ через Hugging Face |
| | - Превосходит ChatGPT в SQL-ориентированных бенчмарках |
| |
|
| | ## Преимущества для бизнес-информатики МГПУ |
| |
|
| | ### 1. Техническая оптимальность |
| | - Оптимальный размер для файнтюнинга (1.3B параметров) |
| | - Возможность запуска на доступном оборудовании |
| | - Эффективное использование вычислительных ресурсов |
| |
|
| | ### 2. Образовательные преимущества |
| | - Специализация на SQL подходит для курсов по базам данных |
| | - Поддержка ETL-процессов актуальна для бизнес-аналитики |
| | - Возможность интеграции в учебные проекты |
| |
|
| | ### 3. Направления файнтюнинга для МГПУ |
| | - Адаптация под специфику учебных задач |
| | - Настройка на корпоративные кейсы |
| | - Интеграция российских бизнес-практик |
| |
|
| | ## Рекомендации по файнтюнингу |
| |
|
| | ### 1. Приоритетные области настройки |
| | - Работа с российскими СУБД |
| | - Интеграция отраслевой специфики |
| | - Адаптация под образовательные задачи |
| |
|
| | ### 2. Технические аспекты |
| | - Использование LoRA для эффективной настройки |
| | - Подготовка специализированных датасетов |
| | - Валидация на реальных бизнес-кейсах |
| |
|
| | ### 3. Образовательные компоненты |
| | - Создание учебных примеров |
| | - Разработка практических заданий |
| | - Интеграция в существующие курсы |
| |
|
| | ## Потенциальные применения |
| |
|
| | 1. Учебный процесс: |
| | - Автоматическая проверка SQL-запросов студентов |
| | - Генерация учебных примеров |
| | - Поддержка практических занятий |
| |
|
| | 2. Исследовательская работа: |
| | - Анализ больших наборов данных |
| | - Поддержка научных исследований |
| | - Обработка результатов экспериментов |
| |
|
| | 3. Практические проекты: |
| | - Работа с реальными бизнес-задачами |
| | - Создание прототипов решений |
| | - Анализ бизнес-процессов |
| | </antArtifact> |
| |
|
| | Эта модель представляет особую ценность для направления бизнес-информатики благодаря своей специализации на 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-запросов и семантической точности модели. |
| |
|
| |
|
| | [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 eval. |
| | Он содержит 200 точек тестовых данных, отобранных вручную командой defog. |
| | Вот ссылка на него: |
| |
|
| |
|
| | [Defog SQL-Eval](https://github.com/defog-ai/sql-eval) |
| | Вот результаты - |
| |
|
| |  |
| |
|
| | ## License |
| | Модель имеет открытый исходный код под лицензией Apache 2.0. |
| |
|
| | ## Usage |
| |
|
| | ### Installation |
| |
|
| | ```bash |
| | pip install transformers |
| | ``` |
| |
|
| | ### Prompt |
| | ```python |
| | prompt = f"""<schema>{schema}</schema> |
| | <question>{question}</question> |
| | <sql>""" |
| | ``` |
| |
|
| | ### 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('<sql>')[1].split('</sql>')[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('<sql>')[1].split('</sql>')[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) |
| | ``` |
| |
|