Glossário

Docker

Simplifica os fluxos de trabalho de IA/ML com o Docker! Aprende a implementar modelos, a garantir a reprodutibilidade e a escalar eficientemente entre ambientes.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

O Docker é uma plataforma poderosa que simplifica o desenvolvimento, a implantação e a execução de aplicativos usando contêineres. Os contêineres permitem que os desenvolvedores empacotem um aplicativo com todas as partes necessárias, como bibliotecas e outras dependências, e enviem tudo como um pacote. Isto garante que a aplicação será executada em qualquer outra máquina, independentemente de quaisquer definições personalizadas que a máquina possa ter e que possam diferir da máquina utilizada para escrever e testar o código. Para utilizadores familiarizados com conceitos básicos de aprendizagem automática, o Docker oferece uma forma simplificada de gerir e implementar modelos de forma eficiente, garantindo a consistência em diferentes ambientes.

Conceitos básicos do Docker

Na sua essência, o Docker gira em torno de alguns conceitos-chave:

  • Imagens: Uma imagem é um modelo somente leitura com instruções para criar um contêiner Docker. Inclui o código da aplicação, as bibliotecas, as ferramentas, as dependências e outros ficheiros necessários para executar uma aplicação. As imagens são criadas a partir de um conjunto de instruções escritas em um Dockerfile.
  • Contentores: Um contêiner é uma instância executável de uma imagem. Podes criar, iniciar, parar, mover ou eliminar um contentor utilizando a API do Docker ou CLI. Os contentores estão isolados uns dos outros e do sistema anfitrião, mas podem comunicar com outros contentores e com o mundo exterior através de canais definidos.
  • Dockerfile: Este é um documento de texto que contém todos os comandos que um utilizador pode chamar na linha de comandos para montar uma imagem. O Docker pode construir imagens automaticamente, lendo as instruções de um Dockerfile.
  • Docker Engine: a tecnologia cliente-servidor subjacente que cria e executa contentores utilizando os componentes e serviços do Docker.
  • Docker Hub: Um serviço de registo baseado na nuvem fornecido pelo Docker para encontrar e partilhar imagens de contentores com a tua equipa ou com a comunidade Docker. É semelhante ao GitHub, mas para imagens do Docker. Podes extrair imagens do Docker Hub para usar como base para os teus contentores ou enviar as tuas próprias imagens para as partilhar com outros.

Relevância na IA e na aprendizagem automática

No contexto da IA e da aprendizagem automática, o Docker oferece várias vantagens críticas:

  • Reprodutibilidade: Os contentores Docker garantem que os modelos de aprendizagem automática são executados de forma consistente em diferentes ambientes, desde o portátil de um programador a um servidor de produção. Isto é crucial para reproduzir os resultados da investigação e implementar modelos de forma fiável.
  • Escalabilidade: O Docker funciona perfeitamente com ferramentas de orquestração de contentores como o Kubernetes, facilitando a escalabilidade das aplicações de aprendizagem automática. Podes implementar várias instâncias de um modelo e distribuir a carga de trabalho de forma eficiente.
  • Gestão de dependências: Os projectos de aprendizagem automática dependem frequentemente de versões específicas de bibliotecas e estruturas. O Docker permite-lhe encapsular estas dependências num contentor, evitando conflitos e garantindo que o modelo funciona como pretendido.
  • Portabilidade: Os contentores do Docker podem ser executados em qualquer sistema que suporte o Docker, quer se trate de uma máquina local, de uma máquina virtual baseada na nuvem ou de um servidor no local. Essa portabilidade simplifica o processo de mover modelos de aprendizado de máquina do desenvolvimento para a produção. Saiba mais sobre as práticas recomendadas de implantação de modelo para implantar modelos de visão computacional de forma eficiente.

Aplicações do mundo real em IA/ML

Aqui estão dois exemplos concretos de como o Docker é utilizado em aplicações reais de IA/ML:

  1. Treinamento e implantação de modelos de deteção de objetos:Suponha que você esteja trabalhando em um projeto de deteção de objetos usando Ultralytics YOLO . Podes usar o Docker para criar um ambiente consistente para treinar o teu modelo. Ao definir um Dockerfile que inclui todas as dependências necessárias, como PyTorchOpenCV, e a biblioteca Ultralytics , podes garantir que o processo de formação é reproduzível. Assim que o modelo for treinado, podes empacotá-lo numa imagem Docker e implementá-lo num ambiente de produção, como um servidor na nuvem ou um dispositivo de ponta. Isto facilita o escalonamento da implementação e a gestão de actualizações do modelo. Por exemplo, nosso guia de início rápido do Docker fornece instruções sobre como configurar e usar os modelos Ultralytics YOLO com o Docker.

  2. Desenvolver e testar aplicações Web com IA:Imagina que estás a desenvolver uma aplicação Web que utiliza um modelo de aprendizagem automática para classificação de imagens. O Docker pode ajudar a simplificar o processo de desenvolvimento e teste. Podes criar contentores separados para a aplicação Web, o modelo de aprendizagem automática e quaisquer outros serviços necessários, como uma base de dados. Isto permite-te desenvolver e testar cada componente de forma independente. Por exemplo, podes utilizar um contentor com TensorFlow ou PyTorch para servir o modelo de aprendizagem automática e outro contentor para executar o front end da aplicação Web. Esta abordagem modular facilita a atualização e a manutenção da aplicação.

Comparação com termos semelhantes

  • Containerização vs. Virtualização: Embora tanto a contentorização (utilizada pelo Docker) como a virtualização permitam ambientes isolados, diferem significativamente. As máquinas virtuais (VMs) virtualizam uma máquina inteira até o nível do hardware, incluindo o sistema operacional. Isso torna as VMs pesadas e lentas para iniciar. Os contentores, por outro lado, virtualizam o sistema operativo, tornando-os leves e rápidos de iniciar. Os contentores Docker partilham o kernel do sistema operativo do sistema anfitrião, reduzindo a sobrecarga e melhorando a eficiência.
  • Docker vs. Kubernetes: O Docker é uma plataforma para criar e executar contêineres, enquanto o Kubernetes é uma ferramenta de orquestração de contêineres para gerenciar contêineres em escala. O Kubernetes automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. Enquanto o Docker pode ser usado sozinho para executar contêineres, o Kubernetes é frequentemente usado em conjunto com o Docker para gerenciar implantações em grande escala.

Ao tirar partido do Docker, os profissionais de IA e de aprendizagem automática podem simplificar os seus fluxos de trabalho, melhorar a colaboração e implementar modelos de forma mais eficaz. Para saber mais sobre como configurar e usar o Docker com Ultralytics YOLO , consulta o nosso guia de início rápido do Docker.

Lê tudo