ИИ-проект, ориентированный на реферирование текстов, по дисциплине "Программная инженерия".
- Кожин Артём - Тимлид, разработка функциональности приложения, описание проекта в github
- Лихачев Денис - Разработка тестов
- Пихтовникова Ирина - Разработка дизайна приложения
- Чераева Олеся - Настройка github actions
- Лебедева Дарья - Развёртывание приложения в облаке
Цель данного приложения - реферирование (суммаризация) текстов.
Данный ИИ-проект предназначен только для реферирования текстов на английском языке.
Алгоритм работы:
- Ввод исходного текста;
- Суммаризация текста с помощью модели API Pipeline Hugging Face - этот API позволяет пользоваться моделями для автоматического реферирования текстов;
- Вывод полученных результатов.
https://huggingface.co/facebook/bart-large-cnn
- Подключение к виртуальной машине - ssh [email protected], где для примера: dashleb - имя пользователя в виртуальной машине в Яндекс.Облаке, 84.252.140.107 - IP виртуальной машины
- sudo apt install python-is-python3 - установили Python
- pwd - можно вывести для информации рабочий каталог (результат в примере: /home/dashleb/)
- mkdir projects - создали каталог для проектов
- cd projects/ - перешли в каталог для проектов
- git проверить наличие Git, если нет - установить его
- sudo apt-get upgrade - не обязательно, но можно
- sudo apt-get update - обязательно, иначе ошибку выдаёт на следующем шаге
- sudo apt install python3.10-venv - обязательно, иначе не будет работать установка виртуального окружения
- mkdir /home/dashleb/python-venvs/ - создаем каталог под виртуальное окружение
- python -m venv /home/dashleb/python-venvs/- устанавливаем виртуальное окружение
- source /home/dashleb/python-venvs/bin/activate - активируем виртуальное окружение !!! если все хорошо, должно появиться его название в круглых скобочках - (python-venvs) - перед именем пользователя и названием виртуальной машины
- cd /home/dashleb/projects/ - переходим в каталог с проектами
- git clone [email protected]:ctakan4ik/projectSE2sem.git - клонируем репозиторий с приложением, которое нужно развернуть, если репозиторий собственный либо git clone https://github.com/ctakan4ik/projectSE2sem - можно по ссылке https, если не планируем репозиторий потом менять и нет прав на него, т.к. он не собственный
- pip install -r /home/dashleb/projects/projectSE2sem/requirements.txt - устанавливаем библиотеки из файла requirements.txt
- cd /home/dashleb/projects/projectSE2sem - перешли к нашему проекту
- sudo apt install uvicorn - иногда требуется
- uvicorn main:app --host=0.0.0.0 - запускаем приложение из каталога, где лежит проект (параметр --host=0.0.0.0 означает, что приложение запущено на всех портах виртуальной машины) http://84.252.140.107:8000/summarization - по этому адресу открывается наше приложение, где 84.252.140.107 - IP виртуальной машины
Затем для того, чтобы деплой на Яндекс.Облаке работал при закрытом терминале, необходимо использовать специальные инструменты, такие как nohup или screen (https://russianblogs.com/article/35331498181/)
Nohup - это команда Unix, которая позволяет запускать процессы в фоновом режиме и сохранять их вывод в отдельном файле, который можно просмотреть позже. Для использования nohup необходимо выполнить команду в следующем формате:
nohup command > logfile 2>&1 &
где command - команда, которую нужно выполнить, logfile - файл, в который будет записываться вывод команды, 2>&1 - перенаправление стандартного вывода и вывода ошибок в файл logfile, & - запуск процесса в фоновом режиме.
Screen - это программа Unix, которая позволяет запускать процессы в отдельных виртуальных терминалах, которые можно открывать и закрывать по мере необходимости. Для использования screen необходимо выполнить команду в следующем формате:
screen -S sessionname
где sessionname - имя новой сессии. После этого можно запустить процесс внутри сессии и отключиться от нее, нажав клавиши Ctrl+A и затем D. Для повторного подключения к сессии нужно выполнить команду:
screen -r sessionname
где sessionname - имя сессии. Таким образом, для того чтобы деплой на Яндекс.Облаке работал при закрытом терминале, можно использовать либо nohup, либо screen. В зависимости от конкретной ситуации и требований проекта, один из этих инструментов может оказаться более удобным и эффективным.