Поскольку машинное обучение продолжает развиваться, вот введение о том, как использовать модель T5 для генерации SQL-запросов из текстовых вопросов и их обслуживания через REST API.
Машинное обучение для автозавершения кода получило широкую огласку с выпуском OpenAI Codex, на котором работает GitHub Copilot. Многие компании решают эту проблему, и теперь они быстрее добиваются прогресса благодаря более совершенным инструментам и методам.
За 10 лет эволюции Hue SQL Editor вложение и переход на автозаполнение на основе парсера было одним из трех лучших решений. Парсеры даже повторно использовались большинством конкурентов. Это было сделано пять лет назад, и теперь стоит изучить новые (дополнительные) подходы.
Вот три темы SQL, которые можно упростить с помощью машинного обучения:
- Текст в SQL → текстовый вопрос преобразуется в SQL-запрос
- SQL в текст → получение помощи в понимании того, что делает SQL-запрос
- Таблица ответов на вопросы → буквально задавайте вопросы по набору данных сетки
Давайте познакомимся с созданием SQL-запроса из текстового вопроса.
Для этого мы выбираем существующую модель с именем dbernsohn / t5_wikisql_SQL2en.
Большая часть сложной работы уже выполнена путем построения модели и точной настройки ее на наборе данных WikiSQL.
Давайте запустим модель, задав простой вопрос:
> python text2sql.py predict --query="How many people live in the USA?" "SELECT COUNT Live FROM table WHERE Country = united states AND Name: text"
Бонус: этот быстрый интерфейс командной строки, основанный на предыдущем руководстве, позволяет легко взаимодействовать с моделью.
Очевидно, что результаты не идеальны, и можно сделать гораздо больше, но это хорошее начало. Теперь давайте посмотрим, как работает использование модели в качестве API:
Для этого мы будем использовать MLflow, который предоставляет много клея для автоматизации утомительного инженерного управления моделями ML.
API здесь просто локальный, но MLflow может автоматизировать отправку и развертывание моделей в производственных средах. В нашем случае мы просто хотим его зарегистрировать:
python text2sql.py train
И после запуска mlflow ui
мы видим эксперимент:
Теперь мы выбираем итерацию, которую хотим обслуживать:
mlflow models serve -m /home/romain/projects/romain/text2sql/mlruns/0/efec45c930714e3581033699e011df51/artifacts/model -p 5001
А затем можете напрямую запросить его!
curl -X POST -H "Content-Type:application/json; format=pandas-split" --data '{"columns":["text"],"data":[["How many people live in the USA?"]]}' http://127.0.0.1:5001/invocations "SELECT COUNT Live FROM table WHERE Country = united states AND Name: text"
Вот и все!
Проект находится в репозитории Github. В качестве продолжения вы также можете найти подробный пример того, как управлять байесовской моделью с помощью MLflow.
В следующих выпусках мы увидим, как интегрировать ML API в ваш собственный Редактор SQL и улучшить модель!