Перейти к содержанию

Пошаговое руководство по развертыванию BeeCR через установочный скрипт

⚠️ Примечание: В данному руководстве описана установка BeeCR на собственный сервер с помощью установочного скрипта. Если вы являетесь опытным пользователем и хотите контролировать многие аспекты процесса установки и настройки, обратитесь к расширенному руководству "Пошаговое руководство по развертыванию BeeCR вручную".

Данный документ представляет собой пошаговое руководство по установке и настройке решения BeeCR на собственных серверах без использования Docker. Процесс установки продемонстрирован на сервере с графическим процессором "NVIDIA Tesla V100", работающим под управлением операционной системы "Linux Ubuntu 20.04 LTS". Это руководство призвано помочь пользователям пройти установочный процесс, убедившись, что все предварительные требования выполнены и необходимые компоненты установлены и настроены правильно.

⚠️ Примечание: По состоянию на лето 2024 года дистрибутив Ubuntu 20.04 LTS по-прежнему поддерживается компанией Canonical, но является несколько устаревшим. Мы выбрали эту версию ОС для данного руководства, потому что для настройки окружения требуются дополнительные шаги, и мы хотим их продемонстрировать. Если вы используете более новую версию Ubuntu, просто пропустите шаги, которые вам не требуются.

📄 Требования

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

  1. Сервер с архитектурой "x86_64" под управлением Linux (желательно Ubuntu или Debian).
  2. Графический ускоритель NVidia (минимум 24 ГБ памяти, рекомендуется 40 ГБ).
  3. Утилита командной строки curl.
  4. Python (поддерживаются версии 3.9 – 3.12) и утилита командной строки virtualenv.
  5. Пользователь, запускающий процесс установки, должен иметь привилегии "root" или "sudoer".
  6. Архив с установочными файлами BeeCR.

1️⃣ Запустите скрипт установки

Запустите скрипт установки install.sh с опцией -i (означает "install").

sh ./install.sh -i

⚠️ Примечание: Укажите опцию командной строки -6, если вы хотите привязать API сервер к сокету IPv6.

Пример вывода:

WARNING [BeeCR Installer]  🟡 Current user is not root. This script will ask for superuser permissions.
INFO    [BeeCR Installer]  👉 Step 1  Check environment...
INFO    [BeeCR Installer]   OS is Linux.
INFO    [BeeCR Installer]   Architecture is "x86_64".
INFO    [BeeCR Installer]   Kernel is non-WSL.
INFO    [BeeCR Installer]   "cURL" is available.
ERROR   [BeeCR Installer]   The "virtualenv" (Python virtual environment creator) is not available. You can install it, for example, using your system package manager (search for the "python3-virtualenv" package or similar).

Установщик проверил окружение и сообщил об ошибке, связанной с Python. Для работы требуется утилита virtualenv (для создания виртуальной среды Python), которая отсутствует.

2️⃣ Установите Python virtualenv

Пропустите этот шаг, если virtualenv уже установлен на вашей системе.

Чтобы установить virtualenv на Ubuntu, используйте менеджер пакетов apt:

sudo apt-get update
sudo apt-get install -y python3-virtualenv

3️⃣ Повторно запустите скрипт установки

После установки virtualenv повторно запустите скрипт установки.

Пример вывода:

WARNING [BeeCR Installer]  🟡 Current user is not root. This script will ask for superuser permissions.
INFO    [BeeCR Installer]  👉 Step 1  Check environment...
INFO    [BeeCR Installer]   OS is Linux.
INFO    [BeeCR Installer]   Architecture is "x86_64".
INFO    [BeeCR Installer]   Kernel is non-WSL.
INFO    [BeeCR Installer]   "cURL" is available.
ERROR   [BeeCR Installer]   Python 3.9 (or higher) is required.
INFO    [BeeCR Installer]  Note:
    Installing Python 3.9 alongside older versions of Python may be tricky and
    highly dependent on your Linux distribution.

    Once you have installed Python 3.9 (e.g., using your system package manager),
    consider updating symbolic links to your Python interpreter and shared libraries.

    For example, on Ubuntu 20.04 with Python 3.8 preinstalled, you may need to
    run the following commands as a superuser:
        sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
        sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
        sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
        sudo ln -s /usr/lib/python3/dist-packages/apt_pkg{.cpython-38-x86_64-linux-gnu,}.so

Установщику по-прежнему не удается выполнить установку, потому что Ubuntu 20.04 поставляется с предустановленным Python 3.8. Скрипт предлагает подсказки по установке и настройке более новой версии Python (например, 3.9).

4️⃣ Установите более новую версию Python

Пропустите этот шаг, если ваша установка Python уже соответствует требованиям (версия 3.9 – 3.12).

Для установки Python 3.9 на Ubuntu используйте менеджер пакетов apt:

sudo apt-get update
sudo apt-get install -y python3.9

После установки более новой версии Python вам может потребоваться сделать ее основным интерпретатором Python. Используйте утилиту командной строки update-alternatives:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo ln -s /usr/lib/python3/dist-packages/apt_pkg{.cpython-38-x86_64-linux-gnu,}.so

Команды выше делают следующее:

  1. Устанавливают приоритет python3.8 (старая версия Python) на уровень 1 для псевдонима python3.
  2. Устанавливают более высокий приоритет для python3.9 (новая версия Python) на уровень 2 для псевдонима python3.
  3. Устанавливают приоритет для псевдонима python на python3.
  4. Исправляют потенциальную проблему с apt_pkg, создавая символическую ссылку на общую библиотеку, принадлежащую более старой версии Python.

5️⃣ Повторно запустите скрипт установки

После того как установленная версия Python удовлетворяет требованиям (3.9 – 3.12), повторно запустите скрипт установки.

⚠️ Примечание: Если вы запускаете скрипт от имени обычного пользователя, он запросит привилегии суперпользователя. Убедитесь, что у вас есть привилегии sudo и можете вводить свой пароль во время процесса установки.

Если все верно, вывод будет похож на следующий (для наглядности логи сторонних команд/скриптов скрыты за многоточием):

WARNING [BeeCR Installer]  🟡 Current user is not root. This script will ask for superuser permissions.
INFO    [BeeCR Installer]  👉 Step 1  Check environment...
INFO    [BeeCR Installer]   OS is Linux.
INFO    [BeeCR Installer]   Architecture is "x86_64".
INFO    [BeeCR Installer]   Kernel is non-WSL.
INFO    [BeeCR Installer]   "cURL" is available.
INFO    [BeeCR Installer]   "Python 3" and "virtualenv" are available.
INFO    [BeeCR Installer]  👉 Step 2  Install AI server...
...
INFO    [BeeCR Installer]   AI server installed.
INFO    [BeeCR Installer]  👉 Step 3  Configure AI server...
INFO    [BeeCR Installer]   AI server configured.
INFO    [BeeCR Installer]  👉 Step 4  Pull AI model...
...
INFO    [BeeCR Installer]   AI model pulled.
...
INFO    [BeeCR Installer]  👉 Step 5  Install ASGI server to serve API...
...
INFO    [BeeCR Installer]   "ASGI server" installed.
INFO    [BeeCR Installer]  👉 Step 6  Install API server...
...
INFO    [BeeCR Installer]   "API server" installed.
INFO    [BeeCR Installer]  👉 Step 7  Configure API server...
...
WARNING [BeeCR Installer]  🟡 API server license is missing. Put the license file "beecr.lic" to the "/opt/beecr" directory and restart the service using command "systemctl restart beecr".
INFO    [BeeCR Installer]  Note: To request a license file, please provide this information to beecr@cvisionlab.com: "GPU 0: Tesla V100-PCIE-32GB (UUID: GPU-d541606d-4910-6857-7cc0-4821bec3f358)".

6️⃣ Получите и установите лицензию

Как видно из предыдущего шага, все проверки предварительных требований должны быть пройдены, и все компоненты должны быть установлены. Однако скрипт установки предупреждает, что отсутствует лицензия на сервер API.

Если у вас нет файла лицензии, выполните следующие шаги:

  1. Свяжитесь с нашей командой (например, через электронную почту по адресу beecr@cvisionlab.com).
  2. Предоставьте нашей команде информацию о вашем графическом процессоре (например, GPU 0: Tesla V100-PCIE-32GB (UUID: GPU-d541606d-4910-6857-7cc0-4821bec3f358)).

После получения файла лицензии (он должен называться beecr.lic), поместите его в директорию /opt/beecr и перезапустите службу beecr, выполнив следующую команду:

sudo systemctl restart beecr

7️⃣ Проверка логов и донастройка (опционально)

Скрипт установки создает "systemd" службу с именем beecr. Используйте стандартные команды "systemd" для управления службой.

Например, чтобы просмотреть логи, используйте утилиту командной строки journalctl:

journalctl -fu beecr

Пример вывода:

Jul 16 10:53:42 code-review-2004-v100 python3[41610]: INFO        [BeeCR--]        Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Jul 16 10:53:42 code-review-2004-v100 systemd[1]: beecr.service: Succeeded.
Jul 16 10:53:45 code-review-2004-v100 systemd[1]: Stopped BeeCR Service.
Jul 16 10:53:45 code-review-2004-v100 systemd[1]: Started BeeCR Service.
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: 🟢 License check passed. License info: GPU based license.
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: INFO        [BeeCR--]        Started server process [41624]
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: INFO        [BeeCR--]        Waiting for application startup.
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: INFO        [BeeCR--]        Settings: pkg_name='beecr-api' version='v1.26.2' domain='beecr.dev' protocol='http' port=8000 model='ollama/codestral:22b' temperature=0.8 use_original_code=True language='English' openai_host='https://api.openai.com' openai_api_key='*****' ollama_host='http://localhost:11435' gitlab_host='https://gitlab.com' target=None target_extra=None target_exclude=None.
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: INFO        [BeeCR--]        Application startup complete.
Jul 16 10:53:46 code-review-2004-v100 python3[41624]: INFO        [BeeCR--]        Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Сообщение "🟢 License check passed" указывает на то, что API сервер проверки кода видит и принимает лицензию.

Для управления настройками API сервера отредактируйте соответствующие файлы конфигурации службы:

  • /etc/systemd/system/beecr.service – основные настройки (например, порт);
  • /etc/systemd/system/beecr.service.d/env.conf – дополнительные настройки.

👍 Заключение

Следуя данному руководству, вы успешно установили и настроили решение BeeCR для проверки кода на своем собственном сервере. Вы узнали, как решать распространенные проблемы при установке, такие как отсутствие требуемых утилит, устаревшая версия Python. Также изучили приёмы управления службой с помощью "systemd". Теперь вы можете использовать возможности BeeCR для улучшения процессов проверки вашего кода. Если у вас возникнут дополнительные проблемы или вам понадобится лицензия, пожалуйста, свяжитесь с нашей командой.