Цель этого репо - предоставить простую реализацию моделей GPT, которые можно использовать для производственных приложений. Код в настоящее время поддерживает следующие варианты использования:
Не стесняйтесь разжигать это репо и использовать его в качестве шаблона для разработки собственных приложений GPT.
Мы хотим, чтобы, возможно, включают в себя точную настройку CATGPT на основе RL. В целом это не меняет основную модель знаний, но делает взаимодействие с моделью более похожим на человека.
Настройка кода довольно минимальна и может быть легко воспроизведена в локальных или облачных средах виртуальной машины.*
conda create -n python38 python=3.8
conda activate python38
conda install --file requirements.txt
* В будущем мы постараемся предоставить версию этой настройки Docker.
Мы предоставляем пример кода, который загружает и предварительно обрабатывает набор данных крошечного сбоя для обучения и точной настройки. Используйте этот код в качестве шаблона для создания предварительной обработки данных для ваших собственных данных.
python src/data_io/fetch_shakespeare.py
Обучение очень маленькой модели GPT с нуля на наборе данных крошечного состава, созданного на предыдущем шаге. Полученная модель не будет очень обобщенной, поскольку она довольно мала и обучена очень маленькому набору данных, но может генерировать кавычки, похожие на Шекспира.
Измените файл конфигурации и для обучения модели с нуля на собственных данных. На этом этапе вы можете технически масштабировать до очень больших размеров модели в соответствии с размером и ресурсами ваших данных.*
python src/training/train_main.py --config_file config/train_shakespeare_small.yml
* Для этого шага вам, вероятно, потребуется один или несколько графических процессоров.
Точная настройка модели GPT2 с открытым исходным кодом на ваших собственных данных. Можно использовать любую модель с открытым исходным кодом (GPT2-Medium, GPT2-XL и т. Д.). Это более распространенный вариант, так как требуется меньше данных и ресурсов (можно запустить это даже на процессоре) и намного быстрее, чем обучение с нуля.
python src/training/train_main.py --config_file config/finetune_shakespeare.yml
Образуйте несколько выходов из обученной модели с учетом подсказки ввода. Это можно использовать для пакетного вывода.
python src/inference/sample_main.py --config_file config/sample_shakespeare.yml
Сервер LightWeigth, который обслуживает обученную модель в API REST.
uvicorn src.inference.service_main:app --reload --reload-include config/sample_gpt2.yml
После того, как сервер работает, вы можете запросить конечную точку с помощью запроса Post). Для получения более подробной информации о специфике запроса посмотрите на следующий тестовый скрипт.
После того, как ваш сервер работает, вы можете проверить конечную точку, используя следующий сценарий.
python src/inference/test_query.py
Этот репо был развернут с учетом производственного приложения и включает в себя модульные и интеграционные тестирование.
* Tesing - это не обширный банкомат, но мы постараемся увеличить охват в будущем.
Модульные тесты были включены, чтобы охватить основную функциональность. Вы можете запустить полный набор для тестирования модуля со следующей командой:
pytest test/unit/
В дополнение к модульным тестам мы включили некоторые интеграционные тесты для рабочих процессов обучения, тонкой настройки и отбора проб.
pytest test/integration/
* Интеграционное тестирование в настоящее время требует работы данных (см. Выше).
Как правило, рекомендуется включить крючки с предварительным обменом при работе с репо. В настоящее время запускается некоторые базовые проверки форматирования и запускают набор модульных тестирования (но не интеграционные тесты).
conda install -c conda-forge pre-commit
pre-commit install
Реализация GPT в этом репо вдохновлена Repo Nanogpt Andrej Karpathy. Наша цель состояла в том, чтобы переосмыслить, восстановить структуру и расширить ее с помощью модулей, которые позволяют легко создавать различные типы производственных приложений.