Установка Line#
Данный раздел описывает установку и использование Docker и Docker Compose для развертывания Line (на примере RedOS)
Docker и Docker Compose не входят в дистрибутив Line.
Перед установкой#
1․ Создайте главную директорию, где в дальнейшем будут все версии продукта:
mkdir -p /opt/lunaline
2․ Переместите дистрибутив в созданную директорию:
mv /root/lunaline_v.0.1.zip /opt/lunaline
3․ При необходимости установите приложение для распаковки архива:
dnf install -y unzip
4․ Откройте папку с дистрибутивом:
cd /opt/lunaline
5․ Распакуйте файлы:
unzip lunaline_v0.1.zip
Настройка файлов конфигурации#
1․ Исходный вариант файла .env (в комплекте поставки):
API_TAG=v.0.1
UI_TAG=v.0.1
DATA_FOLDER=./data
LOGS_FOLDER=./logs
CLEARML_AGENT_ACCESS_KEY=
CLEARML_AGENT_SECRET_KEY=
CLEARML_AGENT_CPU_ONLY=1
CLEARML_HOST_IP=
CLEARML_AGENT_GIT_USER=
CLEARML_AGENT_GIT_PASS=
CLEARML_API_ACCESS_KEY=TNKIR06ST3FC3E9Z1V5NLSS0VJTE56
CLEARML_API_SECRET_KEY=7SXKsMtxyfBkdkbNt0rffOL5lxJC3Gkxyw2gA83P0kczrKcpukbaUu_v9SfgSNGobF4
CLEARML_API_HOST=http://apiserver:8008
CLEARML_WEB_HOST=http://webserver:8080
CLEARML_FILES_HOST=http://fileserver:8081
SERVING__HOST=clearml-serving-inference
SERVING__PORT=8080
CLEARML_SERVING_TASK_ID="CLEARML_SERVING_TASK_PLACEHOLDER"
S3__HOST=minio
S3__PROTOCOL=http
S3__PORT=9000
AWS_PUBLIC_ACCESS_KEY=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
DATABASE__USER=simplecv
DATABASE__PASSWORD=simplecv
DATABASE__NAME=simplecv
ADMIN_EMAIL=admin@admin.io
ADMIN_PASSWORD=42
RABBITMQ_DEFAULT_USER="rmuser"
RABBITMQ_DEFAULT_PASS="rmpassword"
INSTALL_PACKAGE=true
UPDATE_SYSTEM=false
DOCKER_REGISTRY=registry.dev.vlabs
DOWNLOAD_USER=
DOWNLOAD_PASSWORD=
CERT_PATH=./cert/
TRAINING__DEVICE=cpu
TRAINING__MIN_IMAGE_COUNT=50
AGENT_GPU=0
AGENT_IMAGE=simplecv/simplecv-yolo:0.0.11
2․ Внесите изменения в файле .env:
2․1 Обязательно укажите параметры пользователя:
DOWNLOAD_USER
DOWNLOAD_PASSWORD
2․2 Измените значения в случае, если сервис clearml планируется разворачивать на другом сервере:
CLEARML_API_HOST
CLEARML_WEB_HOST
CLEARML_FILES_HOST
2․3 Измените значения в случае, если сервис clearml serving планируется разворачивать на другом сервере:
SERVING__HOST
SERVING__PORT
2․4 Измените значение, в случае если планируется использовать для обучения мощности GPU:
TRAINING__DEVICE
В данном случае необходимо использовать TRAINING__DEVICE=cuda.
2․5 Измените значение, в случае если необходимо изменить минимальное количество размеченных изображений для старта обучения модели:
TRAINING__MIN_IMAGE_COUNT
2․6 Измените значение в случае, если планирутся использовать другой графический процессор:
AGENT_GPU
В данном случае AGENT_GPU=N-1, где N - порядковый номер GPU в системе.
2․7 Измените значения в случае, если планирутся использовать отдельное хранилище данных:
S3__HOST
S3__PROTOCOL
S3__PORT
AWS_PUBLIC_ACCESS_KEY
AWS_SECRET_ACCESS_KEY
2․8 Измените значение в случае, если при установке требуется обновить системные пакеты:
UPDATE_SYSTEM
В данном случае UPDATE_SYSTEM=true.
2․9 Измените значение в случае, если планируется использовать протокол HTTPS, а не протокол HTTP:
CERT_PATH
2․10 Измените значения в случае, если необходимо изменить логин и пароль пользователя для брокера очередей:
RABBITMQ_DEFAULT_USER
RABBITMQ_DEFAULT_PASS
2․11 Измените значения в случае, если необходимо изменить название базы данных, а также логин и пароль пользователя:
DATABASE__USER
DATABASE__PASSWORD
DATABASE__NAME
2․12 Измените значения в случае, если требуется использовать конкретные адрес и пароль для учетной записи администратора:
ADMIN_EMAIL
ADMIN_PASSWORD
3․ Исходный вариант файла .env (в комплекте поставки):
api {
web_server: http://localhost:8080/
api_server: http://localhost:8008
files_server: http://localhost:8081
credentials {
"access_key" = "TNKIR06ST3FC3E9Z1V5NLSS0VJTE56"
"secret_key" = "7SXKsMtxyfBkdkbNt0rffOL5lxJC3Gkxyw2gA83P0kczrKcpukbaUu_v9SfgSNGobF4"
}
verify_user_tokens: false
}
4․ Внесите изменения в файле .env:
Измените значения в случае, если сервис clearml планируется разворачивать на другом сервере:
DATABASE__USER
DATABASE__PASSWORD
DATABASE__NAME
Запуск с помощью скриптов#
1․ Выполните конфигурирование системы:
./start_all.sh host_configure
2․ Запустите сервис clearml:
./start_all.sh clearml
3․ Запустите сервис line:
./start_all.sh line
4․ Запустите clearml-agent:
./start_all.sh start_agent
5․ Запустите сервис clearml-serving:
./start_all.sh serving
Запуск с помощью команд Docker#
1․ Выполните конфигурирование системы:
1․1 Деинсталлируйте старые файлы Docker:
dnf -y remove \
docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1․2 Подключите репозиторий Docker:
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1․3 Установите пакеты Docker, python3.12 и zstd:
dnf -y install \
containerd.io \
docker-buildx-plugin \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
python3.12 \
python3.12-pip \
zstd
1․4 Активируйте Docker:
systemctl enable --now docker
systemctl enable docker.service containerd.service
1․5 Установите библиотеки для работы clearml-agent:
pip3.12 install \
clearml-agent==1.9.2
1․6 При необходимости обновите системные пакеты:
dnf -y update
2․ Выполните конфигурирование портов:
Обратите внимание, что нижеуказанные команды необходимо выполнить только в том случае, если вся установка осуществляется на одном сервере!
SERVICE_IP=$(hostname -I | awk '{print $1}')
sed -i "s/localhost/${SERVICE_IP}/g" clearml.conf
sed -i "s/fileserver/${SERVICE_IP}/g" .env
sed -i "s/apiserver/${SERVICE_IP}/g" .env
sed -i "s/webserver/${SERVICE_IP}/g" .env
export $(grep -v '^#' .env | xargs)
3․ Настройте доступ к хранилищу docker registry:
docker login dockerhub.visionlabs.ru --username "$DOWNLOAD_USER" --password "$DOWNLOAD_PASSWORD"
4․ Создайте структуру каталогов:
sudo mkdir -p "${DATA_FOLDER}/clearml"
sudo mkdir -p "${DATA_FOLDER}/clearml/data/elastic_7"
sudo mkdir -p "${DATA_FOLDER}/minio"
sudo mkdir -p "${DATA_FOLDER}/storage"
sudo mkdir -p "${DATA_FOLDER}/logs"
sudo chown -R 1001:1001 "${DATA_FOLDER}/logs"
sudo chown -R 1000:1000 "${DATA_FOLDER}/clearml"
sudo chown -R 1000:root "${DATA_FOLDER}/clearml"
sudo mkdir -p "${LOGS_FOLDER}"
sudo chmod a+rw "${LOGS_FOLDER}"
sudo mkdir -p "${DATA_FOLDER}/models"
sudo chmod a+rw "${DATA_FOLDER}/models"
5․ Запустите сервис clearml:
docker compose --profile clearml up -d
6․ Проверьте корректность запуска сервиса clearml:
6․1 Выполните команду:
docker ps
6․2 Проверьте наличие следующих запущенных контейнеров:
async_delete
clearml-webserver
clearml-agent-services
clearml-apiserver
clearml-fileserver
clearml-elastic
clearml-mongo
clearml-redis
7․ Запустите сервис line:
docker compose --profile line up -d
8․ Проверьте корректность запуска сервиса line:
8․1 Выполните команду:
docker ps
8․2 Проверьте наличие следующих запущенных контейнеров:
line-ops-service-1
line-ui-1
line-api-1
rabbitmq
line-minio-1
postgres_db
9․ Запустите агентов clearml:
Обратите внимание, что допустимо запускать любое количество агентов, однако, следует учитывать, что для корректной работы необходимо не менее 8 ГБ VRAM для каждого агента.
9․1 В случае запуска агента clearml на CPU выполнить команду:
clearml-agent --config-file clearml.conf daemon --cpu-only --docker --force-current-version -d
9․2 В случае запуска агента clearml на CPU выполнить команду:
clearml-agent --config-file clearml.conf daemon --gpus "${AGENT_GPU}" --docker --force-current-version -d
10․ Проверьте корректность запуска агентов clearml:
10․1 Выполните команду:
clearml-agent list
10․2 Проверьте наличие следующих агентов:
- Один экземпляр служебного агента clearml (id: clearml-services)
- X экземпляров агентов, где X - количество вручную запущенных агентов
11․ Выполните конфигурирование сервиса clearml serving:
SERVING_OUTPUT=$(docker compose exec api clearml-serving create --name "serving")
TASK_ID="${SERVING_OUTPUT#*id=}"
sed -i "s/CLEARML_SERVING_TASK_ID.*$/CLEARML_SERVING_TASK_ID=${TASK_ID}/" .env
export $(grep -v '^#' .env | xargs)
12․ Запустите сервис clearml serving:
Обратите внимание, что должен быть запущен только 1 экземпляр сервиса!
12․1 Выполните команду:
docker compose --profile serving up -d
12․2 В случае, если по ошибке было запущено несколько экземпляров сервиса, выполните следующие операции:
12․2.1 Выполните команду:
docker compose exec api clearml-serving create --name "serving"
12․2.2 В списке сервисов определите идентификатор ошибочно запущенного экземпляра:
Currently running Serving Services:
{'tags': [], 'id': '0675d3c81099430eaf599bae4cf750bb', 'project': 'DevOps', 'name': 'serving'}
{'tags': [], 'id': '4a08998c0a27428db3fe471b85bd7e6f', 'project': 'DevOps', 'name': 'serving'}
12․2.3 Остановите экземпляр сервиса:
В качестве task_id используйте id ошибочно загруженного экземпляра.
docker compose exec api simplecv_api.commands.stop_serving_tasks "${task_id}"
13․ Проверьте корректность запуска сервиса clearml serving:
13․1 Выполните команду:
docker ps
13․2 Проверьте наличие следующих запущенных контейнеров:
clearml-serving-inference
clearml-serving-triton