Пошаговое руководство по развертыванию BeeCR в вашей инфраструктуре вручную
⚠️ Примечание: Это руководство предназначено для опытных пользователей, которые хотят контролировать различные аспекты процесса установки. Если вы ищете более простое руководство, обратитесь к документу "Пошаговое руководство по развертыванию BeeCR через установочный скрипт".
Данный документ представляет собой пошаговое руководство по установке и настройке решения BeeCR на собственных серверах без использования Docker. Процесс установки продемонстрирован на сервере с графическим процессором "NVIDIA Tesla V100", работающим под управлением операционной системы "Linux Ubuntu 20.04 LTS". Это руководство призвано помочь пользователям пройти установочный процесс, убедившись, что все предварительные требования выполнены и необходимые компоненты установлены и настроены правильно.
⚠️ Примечание: По состоянию на лето 2024 года дистрибутив Ubuntu 20.04 LTS по-прежнему поддерживается компанией Canonical, но является несколько устаревшим. Мы выбрали эту версию ОС для данного руководства, потому что для настройки окружения требуются дополнительные шаги, и мы хотим их продемонстрировать. Если вы используете более новую версию Ubuntu, просто пропустите шаги, которые не требуются.
📄 Требования
Для развертывания решения на сервере вам понадобится следующее:
- Сервер с архитектурой "x86_64" под управлением Linux (желательно Ubuntu или Debian).
- Графический ускоритель NVidia (минимум 24 ГБ памяти, рекомендуется 40 ГБ).
- Утилита командной строки
curl
. - Python (поддерживаются версии 3.9 – 3.12) и утилита командной строки
virtualenv
. - Пользователь, запускающий процесс установки, должен иметь привилегии "root" или "sudoer".
- Вы загрузили архив с установочными файлами BeeCR.
1️⃣ Подготовьте окружение
Операционная система
Убедитесь, что ваша ОС - Linux, архитектура - "x86_64", а используемое ядро не "Microsoft WSL":
Пример вывода:
cURL
Убедитесь, что установлен curl
.
Если нет, установите curl
через менеджер пакетов (на Ubuntu используйте apt
):
Python и virtualenv
Убедитесь, что установлены Python (3.9 – 3.12) и virtualenv
.
Для установки Python 3.9 и virtualenv
на Ubuntu 20.04 LTS используйте менеджер пакетов apt
:
Если установлено несколько версий Python, вам может потребоваться настроить версию по умолчанию:
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
Команды выше делают следующее:
- Устанавливают приоритет
python3.8
(старая версия Python) на уровень1
для псевдонимаpython3
. - Устанавливают более высокий приоритет для
python3.9
(новая версия Python) на уровень2
для псевдонимаpython3
. - Устанавливают приоритет для псевдонима
python
наpython3
. - Исправляют потенциальную проблему с
apt_pkg
, создавая символическую ссылку на общую библиотеку, принадлежащую более старой версии Python.
2️⃣ Установите и настройте ИИ сервер
Установите ИИ сервер
Создайте дополнительную директорию конфигурации /etc/systemd/system/ollama.service.d
.
Затем поместите туда файл env.conf
с следующим содержимым:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11435"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_NUM_PARALLEL=2"
Перезагрузите "systemd" и включите службу ollama
:
Убедитесь, что ИИ сервер запущен:
Скачайте ИИ модель
3️⃣ Установите и настройте API сервер
Создайте виртуальное окружение для Python
Установите Uvicorn (ASGI-сервер)
Установите API сервер
Выберите whl-пакет в соответствии с вашей версией Python.
Для Python 3.9 установите пакет, содержащий py39
в имени.
Для Python 3.10 установите пакет, содержащий py310
в имени.
И так далее.
Если вы не знаете вашу версию Python, просто выполните команду /opt/beecr/venv/bin/python3 --version
.
Настройте API сервер
Создайте файл конфигурации "systemd" /etc/systemd/system/beecr.service
со следующим содержимым:
[Unit]
Description=BeeCR Service
After=network-online.target
[Service]
WorkingDirectory=/opt/beecr
ExecStart=/opt/beecr/venv/bin/python3 -m uvicorn --host 0.0.0.0 --port $PORT --log-config /opt/beecr/logging.json beecr.api.main:app
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Environment="PORT=8000"
[Install]
WantedBy=default.target
Отредактируйте переменную окружения PORT
, если хотите, чтобы сервер API работал на другом порте.
⚠️ Примечание: Если вы хотите привязать сервер API к сокету IPv6, замените
0.0.0.0
на::
в конфигурации службы.
Создайте дополнительную директорию конфигурации /etc/systemd/system/beecr.service.d
.
Затем поместите туда файл env.conf
с следующим содержимым:
[Service]
# Адрес и токен GitLab по умолчанию.
#
# Будут использоваться только в случае, если запросы не передают эти параметры явно.
# Environment="GITLAB_HOST=https://gitlab.com"
# Environment="GITLAB_TOKEN="
# Настройки для использования ИИ через Ollama-совместимое API.
Environment="OLLAMA_HOST=http://localhost:11435"
# Настройки для использования ИИ через OpenAI-совместимое API.
#
# Измените, если хотите использовать ИИ модели через API,
# совместимое с OpenAI, например "gpt4-o".
# Environment="OPENAI_HOST=https://api.openai.com"
# Environment="OPENAI_API_KEY="
# Имя ИИ модели по умолчанию.
#
# Эта модель будет использоваться для обработки API-запросов
# без явно указанного имени модели.
#
# Для API, совместимых с OpenAI, используйте имена моделей,
# как они есть, например, "gpt-4o".
#
# Для API, совместимых с Ollama, используйте имена моделей
# с префиксом "ollama/", например, "ollama/codestral:22b".
Environment="MODEL=ollama/codestral:22b"
Создайте рабочую директорию для сервера API /opt/beecr
.
Затем поместите туда файл logging.json
со следующим содержимым:
{
"version": 1,
"filters": {
"correlation_id": {
"()": "asgi_correlation_id.CorrelationIdFilter",
"uuid_length": 32,
"default_value": "-"
}
},
"formatters": {
"default": {
"format": "%(levelname)s\t[BeeCR-%(correlation_id)s]\t%(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"formatter": "default",
"filters": ["correlation_id"],
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout",
"level": "DEBUG"
}
},
"root": {
"handlers": ["console"],
"level": "INFO"
},
"loggers": {
"uvicorn": {
"propagate": true
},
"uvicorn.access": {
"propagate": true
}
}
}
Перезагрузите "systemd" и включите службу beecr
:
4️⃣ Получите и установите лицензию
Если у вас нет файла лицензии, выполните следующие шаги:
- Свяжитесь с нашей командой (например, через электронную почту по адресу beecr@cvisionlab.com).
- Выполните команду
nvidia-smi -L
и предоставьте команде BeeCR информацию о вашем графическом процессоре (например,GPU 0: Tesla V100-PCIE-32GB (UUID: GPU-d541606d-4910-6857-7cc0-4821bec3f358)
).
После получения файла лицензии (он должен иметь имя beecr.lic
), поместите его в директорию /opt/beecr
и перезапустите службу beecr
, выполнив следующую команду:
5️⃣ Проверка логов (опционально)
Используйте стандартные команды "systemd" для управления службой.
Например, чтобы просмотреть логи, используйте утилиту командной строки journalctl
:
Пример ожидаемого результата выполнения команды:
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.27.1' domain='beecr.io' 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)
👍 Заключение
Следуя данному руководству, вы успешно установили и настроили решение BeeCR для проверки кода на своем собственном сервере. Вы узнали, как решать распространенные проблемы при установке, такие как отсутствие требуемых утилит, устаревшая версия Python. Также изучили приёмы управления службой с помощью "systemd". Теперь вы можете использовать возможности BeeCR для улучшения процессов проверки вашего кода. Если у вас возникнут дополнительные проблемы или вам понадобится лицензия, пожалуйста, свяжитесь с нашей командой.