Avaliação da instância L do Huawei Cloud Yaoyun Server | Usando o Portainer de visualização do Docker para implantar o projeto Yolov5 para reconhecimento de IA

Índice

A configuração inicial usa conexão Xshell

Preparação do projeto

docker-compose

Dockerfile

.dockerignore

Inicie o projeto Docker no servidor


A configuração inicial usa conexão Xshell

Como prefiro usar o xshell para operar o servidor, se você estiver usando o CloudShell da Huawei Online ou outros métodos, poderá pular a primeira etapa da operação de conexão.

Ao escolher um servidor, escolhi o Portainer de visualização do Docker da instância Yunyao Cloud Server L. O ambiente docker de que precisamos já foi implantado nele, portanto, não há necessidade de instalá-lo manualmente.

Em primeiro lugar, após a compra bem-sucedida do servidor, o primeiro passo é encontrar nosso console, clicar no servidor que deseja usar a seguir, clicar no apelido do servidor, entrar na página de detalhes das informações básicas e clicar em Redefinir no mais caixa suspensa no canto superior direito senha.

Digite a senha que queremos definir na janela pop-up, lembre-se deste segredo, você precisará dele mais tarde.

Após a conclusão da entrada, selecione o método de verificação, preencha o código de verificação e clique em Confirmar para concluir a operação de alteração de senha.

Em seguida, clique na placa de rede elástica e copie o endereço IP público elástico abaixo

Ou volte ao nosso console e uma caixa de prompt aparecerá para visualizar o endereço IP quando o mouse permanecer nele.

Abra o xshell, preencha o endereço IP acima no número do host, clique em Confirmar e uma autenticação aparecerá. Preencha a senha que acabamos de inserir na senha de redefinição e a conexão será bem-sucedida.

Preparação do projeto

Como o tema deste capítulo é implantar o projeto Ai do YOLO no servidor usando docker, não entraremos em detalhes sobre como construir o projeto anterior, mas apenas explicaremos a parte de configuração do docker.

Vamos revisar brevemente os projetos anteriores.

No primeiro blog, instalamos as dependências de sistema necessárias, extraímos o código-fonte do yolov5 e treinamos um arquivo de peso .pt.

Link do blog: https://blog.csdn.net/weixin_65243968/article/details/127189585

No segundo blog, usamos os arquivos de peso treinados para construir uma interface web e API de reconhecimento localmente.

Link do blog: O modelo yolov5 é implantado na web e o reconhecimento retorna um formato json file_yolov5 é implantado no web_Banana-loving Ahao's blog-CSDN blog

Após a conclusão das etapas acima, colocamos o projeto em uma pasta de aplicativo e, em seguida, criamos docker-compose, dockerfile e um .dockerignore

Então vamos codificar esses três arquivos.

docker-compose

version: '1'
services:
  core-api:
    build:
      context: .
      dockerfile: ./Dockerfile
    command: python server.py --host 0.0.0.0
    restart: always
    volumes:
      - "./apps:/apps"
    ports:
      - 8005:8005
    environment:
      - TZ=Asia/Guangzhou
    deploy: 
      resources:
        limits:
          cpus: '4'
          memory: 20000M
    platform: "linux/amd64"

Neste docker-compose

Versão refere-se ao número da versão

services define a lista de serviços a serem criados

core-api é o nome do serviço e pode ser customizado conforme necessário.

build especifica o contexto de construção e a localização do Dockerfile.

comando especifica o comando a ser executado ao iniciar o contêiner e define o endereço do host como 0.0.0.0 para que o contêiner possa receber solicitações de qualquer interface de rede.

Reiniciar significa que o contêiner reinicia automaticamente ao sair

Volumes: Defina o relacionamento de mapeamento do volume de dados entre o contêiner e o host

Portas: mapeie a porta 8005 do contêiner para a porta 8005 do host para que os serviços no contêiner possam ser acessados ​​por meio da porta do host.

- TZ=Ásia/Xangai: Defina o fuso horário para Xangai (Ásia/Xangai)

cpus: '4': especifica que o número máximo de núcleos de CPU que o contêiner pode usar é 4.

memória: 20000M: A memória máxima que o contêiner especificado pode usar é 2 GB.

platform: "linux/AMD64": especifica o tipo de imagem da plataforma como Linux/AMD64. Isso significa que a imagem do contêiner gerada será baseada no sistema operacional Linux com arquitetura x86_64.

Dockerfile

FROM python:3.8.6-buster  AS build
WORKDIR /apps
COPY ./apps ./
RUN apt-get update && apt-get install -y \
    libgl1-mesa-glx
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir 

No arquivo arquivo, primeiro especifique a imagem base como python:3.8.6-buster

Defina o diretório de trabalho para apps e copie nosso projeto nele através do comando COPY

Execute o comando apt-get no contêiner para atualizar a lista de pacotes e instalar o pacote libgl1-mesa-glx.

Por fim, execute o comando pip no contêiner para instalar os pacotes de dependência especificados no arquivo requirements.txt, baixe-os e instale-os por meio da fonte espelhada PyPI da Universidade Tsinghua e desative o cache.

.dockerignore

__pycache__/*

*/__pycache__/*

O arquivo dockerignore é usado para informar ao Docker quais arquivos ou diretórios não precisam ser copiados para a imagem do Docker.

__pycache__/* representa todos os arquivos no diretório __pycache__ e */__pycache__/* representa todos os arquivos __pycache__ em todos os subdiretórios

Esses são arquivos de bytecode armazenados gerados pelo interpretador Python, portanto não precisamos copiá-los para a imagem.

Inicie o projeto Docker no servidor

Como o servidor que comprei é o Portainer de visualização Docker de Yunyaoyun, já existe um ambiente Docker interno, então não preciso implantá-lo sozinho, o que é muito conveniente.

Abra o Xftp e copie nosso projeto nele.

Entre na pasta do nosso projeto no xshell e execute docker-compse up. Neste momento a imagem já está baixando. Se precisar deixá-la rodar em segundo plano, use docker-compse up -d

Após a conclusão da construção, você pode usar dockers ps -a para visualizar nossa imagem

Em seguida, retorne ao console do Huawei Cloud, encontre o grupo de segurança e clique em Configurar regras

Adicione a porta configurada pelo nosso projeto para que possa ser acessada via IP

Teste, use o IP público para acessar nosso projeto e você poderá acessá-lo com sucesso.

Vamos testar nossa interface API novamente e enviar uma imagem, e o resultado do reconhecimento poderá ser retornado com sucesso!

Depois de executar o projeto por um dia, verifiquei o monitoramento do servidor e descobri que mesmo ao implantar aplicativos de alto desempenho, como grandes modelos de IA, o desempenho da instância L do Yunyao Cloud Server era excelente.

Acho que você gosta

Origin blog.csdn.net/weixin_65243968/article/details/132701334
Recomendado
Clasificación