--- 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) Вот результаты - ![image/png](https://cdn-uploads.huggingface.co/production/uploads/64d32c6b921678fdc9de3302/fFeLSEYBNpQk_JWjFsF5M.png) ## 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) ```