Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Blogs Banner

Quantas instâncias
salvam o planeta?

A emergência climática não pode esperar. De acordo com a Organização Mundial da Saúde (OMS), atualmente, a taxa de mortalidade por exposição à poluição é de 6.7 milhões de pessoas por ano. Além disso, 99% da população mundial vive em lugares onde a poluição do ar excede os limites recomendados pela OMS.

 

O efeito estufa consiste na emissão de gases que retêm o calor da Terra, aumentando sua temperatura, e permitindo a existência de vida no planeta. Contudo, o aumento excessivo na emissão de gases que causam o efeito estufa tem elevado a temperatura da Terra, implicando em consequências no clima. 

 

Considerando o impacto causado pelos humanos, o dióxido de carbono (CO2) é o principal responsável pelo efeito estufa. Isso acontece porque o CO2 é o gás causador do efeito estufa mais emitido, além de possuir um tempo mínimo de permanência no ambiente de 100 anos. Em vista dos impactos ambientais, existe um esforço mundial para reduzir a emissão de CO2. 

 

Neste artigo, discutiremos como a emissão de CO2 está relacionada ao uso insustentável de recursos da cloud, além de melhorias de código e de design de arquitetura que podem reduzir o impacto ambiental causado pela tecnologia.

Cloud e Emissão de carbono

 

Cloud computing já emite mais carbono que a indústria de aviação comercial, alcançando entre 2.5% e 3.7% da emissão global de gases causadores do efeito estufa. Os principais fatores de emissão de carbono em Cloud Computing são:

 

  1. Consumo de energia para rodar os servidores.
  2. Consumo de água para esfriar os servidores.
  3. O ciclo de vida dos equipamentos impacta na frequência de suas substituições

 

Por isso, é importante pensar em como a escalabilidade precisa estar aliada à sustentabilidade das aplicações.

Green Cloud

 

Para alcançar sustentabilidade em Cloud Computing, a Climatiq traz algumas pontos para se atentar:

  • Quantidade de CPU, rede, memória e armazenamento dos serviços.
  • A taxa de utilização das máquinas no data center.
  • A eficiência de resfriamento do data center, além do uso de eletricidade. Geralmente, ela é especificada como Power Usage Effectiveness (PUE), uma métrica usada para medir a eficiência energética do data center.
  • O local onde estão os data centers.

Cloud Carbon Footprint (CCF)

 

Essa ferramenta gratuita e de código aberto compara os dados de uso da maioria dos provedores de nuvem e calcula a energia estimada e a emissão de gás carbônico, apresentando estimativas de poluição geradas por uma aplicação.

 

Com uso da ferramenta CCF, a Thoughtworks apoiou sua parceira Holaluz alcançando redução na emissão de CO2 e nas métricas de consumo de energia. Como consequência, também houve uma redução de 3% de custos anual com infraestrutura.

Machine Learning e Emissão de carbono

 

A computação de dados para inferência e treinamento de modelos também é um contribuidor relevante para a emissão de carbono em uma aplicação de Machine Learning (ML). Isso se dá porque o volume de processamento necessário, principalmente na etapa de inferência do modelo, é alto. A NVIDIA estima que, durante a etapa de inferência, uma rede neural emite cerca de 80-90% a mais de CO2 comparado à etapa de treinamento.

 

De acordo com um artigo publicado pela Universidade do Massachusetts, Amherst, o treinamento de um modelo de Inteligência Artificial (AI) pode emitir cerca de 284 toneladas de dióxido de carbono, o que representa mais do que 5 carros ao longo de seu ciclo de uso (incluindo a fabricação).

 

As otimizações empregadas nos recursos da cloud também tornam mais sustentável o modelo de ML. Por isso, é importante estar atento a como os recursos de hardware estão sendo utilizados pelos modelos, assim como seu código e decisões de design.

Código e Emissão de Carbono

 

Para alcançar a sustentabilidade, além de repensar a nuvem, é preciso descer mais um nível, e repensar o código que estamos escrevendo. Qualidade de código também é sobre sustentabilidade.

 

Green Software Foundation e Green Software Patterns

 

Green Software Foundation (GSF) é uma organização sem fins lucrativos com o objetivo de unir pessoas, práticas, ferramentas e padrões na construção de software sustentável. A Thoughtworks, ao lado de outras gigantes, faz parte do comitê diretor da GSF.

 

Green Software Patterns (GFP) é um banco de dados de padrões de código revisado e curado pela GSF que destaca práticas sustentáveis de código. A seguir, vamos aprofundar em práticas destacadas no GSF e relacionadas ao mundo de dados.

 

Cloud Computing e Machine Learning Sustentáveis

 

A seguir, apresentamos algumas das recomendações sustentáveis para o desenvolvimento de Cloud Computing e Machine Learning oferecidas pelas pessoas especialistas da GSF. Elas estão divididas de acordo com a nossa visão de onde elas se encaixam no processo de desenvolvimento.


Otimização de Recursos

 

  • Remover recursos de armazenamento não utilizados, otimizando o uso de hardware e portanto de energia.
  • Equiparar os requisitos de utilização com servidores pré-configurados e os requisitos de utilização de máquinas virtuais (VMs). É melhor ter uma VM em alta utilização do que duas rodando em baixa utilização.
  • Minimizar o número total de ambientes de implantação. Para eficiência energética, é melhor ter menos recursos provisionados quando não estão sendo utilizados.
  • Otimizar utilização de armazenamento. Duas unidades de armazenamento em baixa utilização consomem mais energia do que uma em alta utilização. Além disso, a capacidade não utilizada da unidade pode ser usada mais eficientemente para outra tarefa.
  • Otimizar utilização média de CPU. Para entender qual o nível ótimo de recurso, é preciso compreender como o sistema reage a aumento de tráfego e escalabilidade. Do ponto de vista energético, otimização e reduzir a média de CPU utilizada reduzem a energia necessária para suportar tráfego e tornam os requisitos de hardware necessários mais predizíveis. Do ponto de vista de hardware, essa otimização e redução diminuem a quantidade de recursos necessários para suportar o tráfego.
  • Configurar políticas de retenção de armazenamento deletando automaticamente recursos não utilizados.
  • Diminuir tráfego de baixa prioridade reduzindo energia e recursos necessários para suportá-lo quando houverem picos.
  • Otimizar o pico de utilização da CPU. Quanto maior a variação de média e pico de CPU utilizado, mais recursos precisam ser provisionados em modo stand-by para absorver esses picos no tráfego. Para resolver esse problema, é preciso entender o comportamento de tráfego da aplicação. Alguns exemplos de como mitigar picos de uso de CPU envolvem: adicionar camadas de cache, reduzir a quantidade de dados transmitida e renderizada ou criar uma fila para requests não urgentes.
  • Escanear vulnerabilidades, evitando que atacantes ganhem domínio sobre recursos.

Otimização de Recursos da Cloud

 

  • Utilizar a região mais próxima dos usuários na hora de selecionar a região para a instância na nuvem, o que faz com que o pacote necessite percorrer menos distância (e, portanto, se gaste menos energia) para alcançar seu destino. Além disso, escolher servidores em regiões sustentáveis para o treinamento de modelos de ML/AI.
  • Escalar fluxos de trabalho do Kubernetes Workloads baseado em métricas relevantes.
  • Configurar aplicações Kubernetes para reduzir o número de pods quando não estão em uso.
  • Alterar o horário de CronJobs do Kubernetes de acordo com a previsão de intensidade de emissão de carbono, encontrando o melhor horário para executar um job.
  • Utilizar ferramentas e controles de segurança de rede nativa da nuvem que escalem sob demanda filtrando tráfego de entrada e saída na fonte para bloquear qualquer transmissão de dados não autorizada.
  • Selecionar o tamanho adequado de instância para o treinamento de modelos de ML/AI, evitando subutilização de recursos.

Green Cloud

 

  • Encerrar Transport Layer Security (TLS) ao chegar no gateway de borda utilizando menos CPU.
  • Comprimir dados durante a transmissão de forma a utilizar menos tráfego na rede.
  • Otimizar o armazenamento e recursos necessários para um modelo de ML/AI. Aplicar estratégias como quantização e avaliação de otimização de modelos contra as métricas necessárias.
  • Usar modelos de ML/AI mais eficientes em energia. Por exemplo, DistilBERT provê funcionalidades similares ao BERT, rodando 60% mais rápido e preservando 97% da performance do modelo BEST. 
  • Utilizar modelos pré-treinados e transferência de conhecimento para o desenvolvimento de modelos de ML/AI.

Design de Arquitetura

 

  • Utilizar a cache para dados estáticos, como imagens ou músicas, de forma a reduzir a necessidade de buscar arquivos pela rede, utilizando menos energia.
  • Implementar design stateless. Isto é, remover service state do design para reduzir dados em memória e no disco, utilizando menos recursos de hardware.
  • Adotar arquitetura serverless garantindo o uso máximo dos recursos de hardware.
  • Ajustar o design de solução para entender a disponibilidade necessária. Caso os service downtimes sejam aceitáveis, não é necessário (nem sustentável) ter o serviço disponível todo o tempo.
  • Utilizar formatos eficientes para o desenvolvimento de modelos de ML/AI. Por exemplo, o formato Parquet ao invés de csv.
  • Avaliar e rodar modelos de ML/AI na borda, baseado nos requisitos da aplicação, diminuindo o uso de rede para transferência de dados. Também é possível realizar processamentos, como limpeza e geração de features, na borda, garantindo mais eficiência e menor latência.
  • Selecionar um framework de ML/AI mais eficiente em energia. Tipicamente, frameworks construídos em C/C++ são mais eficientes do que aqueles construídos em outras linguagens de programação.

Conclusão

 

O planeta pede socorro, e temos poder nas mãos para tornar a tecnologia que construímos mais responsável. Por meio de práticas simples de código e otimização de recursos, podemos promover mais sustentabilidade e garantir o nosso próprio bem-estar.

 

Como co-fundadora da Green Sofware Foundation e sendo tradicionalmente atenta ao impacto da tecnologia no mundo, a Thoughtworks está investindo em como tornar a tecnologia que criamos mais sustentável e ajudar nossas clientes nessa jornada.

Aviso: As afirmações e opiniões expressas neste artigo são de responsabilidade de quem o assina, e não necessariamente refletem as posições da Thoughtworks.