Этот проект нацелен на настройку языковой модели T-Bank T-Lite для использования в конкретных агентных сценариях. Модель предназначена для интерпретации запросов пользователей, определения соответствующих команд и аргументов, а также предоставления обоснований и планирования в своих ответах.
Основная задача — обучить и развернуть языковую модель, которая сможет:
- Понимать запросы пользователей, описанные на естественном языке.
- Определять соответствующие команды и аргументы.
- Предоставлять обоснования и планирование в ответах.
- Оправдывать свои ответы с помощью конструктивной самокритики.
- Инференс модели: http://176.109.104.144:8000/docs
- Телеграм Бот https://t.me/bot_for_testing_apps_bot
В целях хостинга используются два сервера:
- Прод. 4 GPU:
prodssh user1@176.109.104.144
- Тест. Нет GPU:
testssh root@89.110.109.100
Для установки проекта выполните следующие шаги:
-
Клонируйте репозиторий:
git clone https://github.com/Vtmpas/hacks-alignment.git cd hacks-alignment -
Установите зависимости с помощью Poetry:
poetry shell poetry install
-
Настройте pre-commit хуки:
poetry run pre-commit install
Проект использует несколько конфигурационных файлов для управления настройками обучения:
-
Конфигурация обучения - LORA:
training/configs/lora.jsonpython training/run.py --config training/configs/lora.json -
Конфигурация SFT P-Tuning:
training/configs/sft.jsonpython training/run.py --config training/configs/sft.json
Датасеты для обучения и валидации указываются в конфигурационных файлах. Примеры файлов с датасетами:
prompts/train_results.jsonlprompts/test_results.jsonl
Пример содержимого файла train_results.jsonl:
{
"id": 0,
"source": "example",
"messages": [
{"role": "user",
"content": "Вы -- полезный помощник со следующими функциями: Поиск новостных статей на основе указанных ключевых слов: 'search_news', аргументы: 'keywords': '<Ключевые слова для использования в поиске>', 'source': '<Источник новостей для поиска>', 'date_range': '<Неизвестно>'\nМожете найти для меня несколько новостных статей о марсоходе от BBC с 1 января 2021 года по 31 января 2021 года?"
}, {
"role": "bot",
"content": "{\"thoughts\": {\"text\": \"Я могу использовать функцию поиска новостей, чтобы найти статьи о марсоходе от BBC за указанный период.\", \"reasoning\": \"Используя функцию поиска новостей, я смогу найти статьи, соответствующие заданным критериям, таким как ключевые слова, источник и диапазон дат.\", \"plan\": \"- Использовать функцию поиска новостей\\n- Указать ключевые слова, источник и диапазон дат\\n- Вернуть найденные статьи\", \"criticism\": \"Я должен убедиться, что правильно указал все параметры для поиска, чтобы получить точные результаты.\", \"speak\": \"Я сейчас найду статьи о марсоходе от BBC за январь 2021 года.\"}, \"command\": {\"name\": \"search_news\", \"args\": {\"keywords\": [\"Mars Rover\"], \"source\": \"BBC\", \"date_range\": {\"start_date\": \"2021-01-01\", \"end_date\": \"2021-01-31\"}}}}"
},
{
"role": "user",
"content": "{\"articles\": [{\"title\": \"Mars Rover lands successfully\", \"date\": \"2021-01-18\", \"link\": \"https://www.bbc.com/news/science-environment-55768544\"}, {\"title\": \"Mars Rover sends first images\", \"date\": \"2021-01-22\", \"link\": \"https://www.bbc.com/news/science-environment-55768545\"}]}"},
{
"role": "bot",
"content": "{\"thoughts\": {\"text\": \"Я нашел две статьи о марсоходе от BBC за январь 2021 года.\", \"reasoning\": \"Я использовал функцию поиска новостей и нашел две статьи, которые соответствуют заданным критериям.\", \"plan\": \"- Сообщить пользователю о найденных статьях\\n- Предоставить ссылки на статьи\", \"criticism\": \"Я должен убедиться, что предоставил все необходимые ссылки и информацию о статьях.\", \"speak\": \"Я нашел две статьи о марсоходе от BBC за январь 2021 года.\"}, \"command\": {\"name\": \"NoFunction\", \"args\": null}}"
}
]
}Для запуска модели и получения предсказаний можно использовать API, определенное в файле openapi.yaml.
Проект включает в себя Makefile для выполнения общих задач:
- install: Устанавливает все зависимости, указанные в файле
pyproject.toml, с использованиемPoetry.make install
-
update: Обновляет все зависимости до последних версий, указанных в файле
pyproject.toml.make update
-
test: Устанавливает зависимости для разработки и запускает тесты с помощью
pytest.make test -
install-test-deps: Устанавливает только зависимости для разработки.
make install-test-deps
-
lint: Запускает
ruffиmypyдля проверки кода на ошибки линтинга и проблемы с типизацией.make lint
-
format: Форматирует код с помощью
ruff.make format
-
clean: Очищает проект, удаляя артефакты сборки, кэшированные файлы и логи.
make clean
-
deploy: Разворачивает приложение с использованием плейбуков Ansible. Нужно выбрать окружение: тестовое (
test) или продакшн (prod).make deploy test make deploy prod -
destroy: Удаляет развернутое приложение с помощью плейбуков Ansible.
make destroy test make destroy prod -
restart: Перезапускает развернутое приложение с использованием плейбуков Ansible.
make restart test make restart prod
Проект использует pre-commit хуки для обеспечения качества и согласованности кода перед фиксацией изменений. Эти хуки определены в файле .pre-commit-config.yaml и включают как встроенные хуки из репозитория pre-commit, так и локально определённые пользовательские хуки.
- trailing-whitespace: Удаляет лишние пробелы в конце строк.
- end-of-file-fixer: Гарантирует, что файлы заканчиваются новой строкой.
- check-yaml: Проверяет синтаксис YAML-файлов.
- check-added-large-files: Предотвращает добавление в репозиторий больших файлов.
- format: Форматирует код с использованием команды
make format. - lint: Запускает линтеры с помощью команды
make lint. - build: Собирает Docker-образ с помощью команды
make build.
В проекте используется ruff для линтинга и форматирования, конфигурация находится в ruff.toml:
Приветствуются любые вклады в проект! Пожалуйста, следуйте стандартным рекомендациям по качеству кода и документации.
По любым вопросам или проблемам обращайтесь:
- Овчинникова Анастасия: nastyaov1308@gmail.com
- Сапрыкин Матвей: mtvey.s@gmail.com
- Хвощев Кирилл: khvoshchevkmwork@yandex.ru