Skip to content

Repository files navigation

Проект T-Bank T-Lite Alignment

Общая информация

Этот проект нацелен на настройку языковой модели T-Bank T-Lite для использования в конкретных агентных сценариях. Модель предназначена для интерпретации запросов пользователей, определения соответствующих команд и аргументов, а также предоставления обоснований и планирования в своих ответах.

Цель

Основная задача — обучить и развернуть языковую модель, которая сможет:

  1. Понимать запросы пользователей, описанные на естественном языке.
  2. Определять соответствующие команды и аргументы.
  3. Предоставлять обоснования и планирование в ответах.
  4. Оправдывать свои ответы с помощью конструктивной самокритики.

Сервисы

  1. Инференс модели: http://176.109.104.144:8000/docs
  2. Телеграм Бот https://t.me/bot_for_testing_apps_bot

В целях хостинга используются два сервера:

  1. Прод. 4 GPU: prod
    ssh user1@176.109.104.144
  2. Тест. Нет GPU: test
    ssh root@89.110.109.100

Установка

Для установки проекта выполните следующие шаги:

  1. Клонируйте репозиторий:

    git clone https://github.com/Vtmpas/hacks-alignment.git
    cd hacks-alignment
  2. Установите зависимости с помощью Poetry:

    poetry shell
    poetry install
  3. Настройте pre-commit хуки:

    poetry run pre-commit install

Конфигурация и обучение

Проект использует несколько конфигурационных файлов для управления настройками обучения:

  • Конфигурация обучения - LORA: training/configs/lora.json

    python training/run.py --config training/configs/lora.json
  • Конфигурация SFT P-Tuning: training/configs/sft.json

    python training/run.py --config training/configs/sft.json

Подготовка датасетов

Датасеты для обучения и валидации указываются в конфигурационных файлах. Примеры файлов с датасетами:

  • prompts/train_results.jsonl
  • prompts/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

Проект включает в себя Makefile для выполнения общих задач:

  1. 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 хуки для обеспечения качества и согласованности кода перед фиксацией изменений. Эти хуки определены в файле .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:

Вклад в проект

Приветствуются любые вклады в проект! Пожалуйста, следуйте стандартным рекомендациям по качеству кода и документации.

Контакты

По любым вопросам или проблемам обращайтесь:

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages