<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pedro Christo</title>
    <description>The latest articles on DEV Community by Pedro Christo (@pedrochristo).</description>
    <link>https://dev.to/pedrochristo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1145463%2F491e2b4f-87b1-42cc-ae0b-3113afe4e575.jpeg</url>
      <title>DEV Community: Pedro Christo</title>
      <link>https://dev.to/pedrochristo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pedrochristo"/>
    <language>en</language>
    <item>
      <title>Transcrição de Audio Distribuído em OCI com Kubernetes + Whisper</title>
      <dc:creator>Pedro Christo</dc:creator>
      <pubDate>Wed, 19 Mar 2025 23:37:28 +0000</pubDate>
      <link>https://dev.to/pedrochristo/transcricao-de-audio-distribuido-em-oci-com-kubernetes-whisper-4g8</link>
      <guid>https://dev.to/pedrochristo/transcricao-de-audio-distribuido-em-oci-com-kubernetes-whisper-4g8</guid>
      <description>&lt;p&gt;Quando falamos de processamento de arquivos em larga escala, enfrentamos desafios bem conhecidos, como custos, gerenciamento de processamento distribuído, escalabilidade e eficiência. Além disso serviços de AI geralmente são cobrados por chamada ou quantidade de dados processado, tornando assim os custos de processamento de uma grande quantidade de dados economicamente inviável.&lt;/p&gt;

&lt;p&gt;Para superar esses desafios e trazer uma maior &lt;strong&gt;soberania de dados&lt;/strong&gt;, apresento um exemplo de arquitetura distribuída baseada em &lt;strong&gt;Kubernetes&lt;/strong&gt;, orientada a eventos e alinhada aos princípios &lt;strong&gt;Cloud Native&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;A proposta dessa arquitetura é transcrever um grande volume de arquivos de áudio, otimizando ao máximo o uso da GPU de forma simples sem a necessidade de frameworks específicos. &lt;/p&gt;

&lt;p&gt;Para isso, vamos utilização uma solução &lt;strong&gt;orientada a eventos&lt;/strong&gt; baseada em serviços nativos do OCI para emitir eventos e enfileirar as tarefas de transcrição dos arquivos.&lt;/p&gt;

&lt;p&gt;Os códigos em &lt;strong&gt;Python&lt;/strong&gt; e instruções para realizar o deploy estão disponíveis neste repositório no &lt;a href="https://github.com/ChristoPedro/oci-whisper-dask.git" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Código
&lt;/h2&gt;

&lt;p&gt;O código, escrito em &lt;strong&gt;Python&lt;/strong&gt;, lê os nomes dos arquivos diretamente do &lt;strong&gt;OCI Stream&lt;/strong&gt; ou &lt;strong&gt;OCI Queue&lt;/strong&gt; paralelamente é feito o download dos arquivos que depois são transcritos.&lt;/p&gt;

&lt;p&gt;A transcrição é realizada por meio do Faster Whisper , utilizando o modelo &lt;em&gt;large-v3&lt;/em&gt;. Os resultados são salvos em um Object Storage de saída.&lt;/p&gt;

&lt;p&gt;Esse código é executado no &lt;strong&gt;OKE&lt;/strong&gt; (Oracle Kubernetes Engine) , com as permissões necessárias para ler e escrever arquivos no Object Storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fluxo da Arquitetura
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumftnj1y9vaa8be1gt3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumftnj1y9vaa8be1gt3i.png" alt="Ilustração da Arquitetura" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Um arquivo de áudio é carregado em um bucket de entrada na &lt;strong&gt;Oracle Cloud&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Esse bucket emite um evento de criação de arquivo.&lt;/li&gt;
&lt;li&gt;O serviço &lt;strong&gt;OCI Events&lt;/strong&gt; captura esse evento e inicia uma ação.&lt;/li&gt;
&lt;li&gt;A ação pode ser o envio do evento para um &lt;strong&gt;OCI Stream&lt;/strong&gt; ou a inicialização de uma função para enviar o evento para o &lt;strong&gt;OCI Queue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Um pod no &lt;strong&gt;OKE&lt;/strong&gt; lê os eventos do &lt;strong&gt;Stream&lt;/strong&gt; ou &lt;strong&gt;Queue&lt;/strong&gt; e inicia o processo de transcrição de cada áudio.&lt;/li&gt;
&lt;li&gt;As transcrições resultantes são salvas em um bucket de saída.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Porque Kubernetes?
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Kubernetes&lt;/strong&gt; é a plataforma de gerenciamento e execução de contêineres mais amplamente utilizada no mundo. Além disso, é uma das ferramentas fundamentais para projetos Cloud Native, sendo gerenciada pelo CNCF (Cloud Native Computing Foundation).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; oferece &lt;strong&gt;resiliência&lt;/strong&gt; e &lt;strong&gt;escalabilidade&lt;/strong&gt; nativas. Caso ocorra alguma falha no nível de nó ou contêiner, novos recursos são criados automaticamente para garantir a continuidade do workload.&lt;/p&gt;

&lt;p&gt;Neste caso específico, utilizamos o &lt;strong&gt;OKE&lt;/strong&gt; (Oracle Kubernetes Engine) com Managed Nodes e um cluster configurado com &lt;strong&gt;GPU A10.1&lt;/strong&gt;. Este modelo de GPU disponibiliza apenas um chip gráfico, sem suporte ao MIG (Multi-Instance GPU). No entanto, isso não impede a criação de paralelismo a nível de contêiner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Otimização do uso de GPU
&lt;/h2&gt;

&lt;p&gt;Como mencionado, a arquitetura utiliza um modelo de GPU com apenas um chip, sem suporte ao MIG. Portanto, o paralelismo deve ser implementado no nível de código.&lt;/p&gt;

&lt;p&gt;Para resolver esse problema, o &lt;strong&gt;PyTorch Cuda Stream&lt;/strong&gt; cai como uma luva. Permitindo o processamento paralelo de vários arquivos com apenas um carregamento de modelo da GPU.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;GPU A10.1&lt;/strong&gt; possui 24 GB de memória. O modelo Faster Whisper &lt;em&gt;large-v3&lt;/em&gt; , com precisão de float16, consome entre 3 e 7 GB de VRAM durante a inferência, dependendo do tamanho do arquivo processado. Com base nisso, é possível processar até três arquivos simultaneamente, com uma perda de desempenho aceitável no tempo de processamento nos picos de utilização.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testes e Resultados
&lt;/h2&gt;

&lt;p&gt;Os testes foram feitos processando o mesmo arquivo de 11 minutos, foram processados 20 arquivos iguais em cada cenário de teste dividido em 3 cenários diferentes. 1 arquivo por vez e série; 2 arquivos por vez em paralelo e 3 arquivos por vez em paralelo. &lt;/p&gt;

&lt;p&gt;Conseguindo os seguintes resultados:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Arquivos em Paralelo&lt;/th&gt;
&lt;th&gt;Tempo medio em Segundos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;9,988s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;15s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;18.104s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Com essa abordagem, conseguimos maximizar o uso da GPU, garantir alta escalabilidade e manter uma arquitetura resiliente e eficiente para processamento de arquivos em larga escala. Além disso simplifica por usar ferramentas nativas da Oracle Cloud sem a necessidade de Frameworks específicos de AI para processamento distribuído.&lt;/p&gt;

</description>
      <category>whisper</category>
      <category>ai</category>
      <category>kubernetes</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>DevOps - Não só mais um artigo</title>
      <dc:creator>Pedro Christo</dc:creator>
      <pubDate>Tue, 10 Dec 2024 20:12:23 +0000</pubDate>
      <link>https://dev.to/pedrochristo/devops-nao-so-mais-um-artigo-3n8j</link>
      <guid>https://dev.to/pedrochristo/devops-nao-so-mais-um-artigo-3n8j</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;A ideia desse artigo é manter viva e fortalecer conceitos básicos que lidamos no dia a dia de programação moderna. Nos últimos meses é possível ver um crescimento exponencial de artigos e publicações voltadas para AI. Mas e os outros assuntos associados a TI?&lt;/p&gt;

&lt;p&gt;Continuam sendo muito relevantes e sendo aplicados diretamente no dia a dia.&lt;/p&gt;

&lt;p&gt;Esse primeiro artigo é um compromisso de uma séria sobre Cloud Native e conceitos importantes sobre padrões de arquiteturas e casos de uso.&lt;/p&gt;

&lt;p&gt;Procura tratar esses assuntos de forma simples e bem-humorada, sem muita preocupação com o &lt;strong&gt;&lt;em&gt;tecniquês&lt;/em&gt;&lt;/strong&gt; ou o uso de LLMs gerar textos.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevOps
&lt;/h2&gt;

&lt;p&gt;DevOps é um termo que já teve seu momento de &lt;strong&gt;&lt;em&gt;buzzword&lt;/em&gt;&lt;/strong&gt;, gerando intermináveis artigos e publicações sobre o assunto. Sendo um tema muito importante incorporado no ciclo de desenvolvimento de deploy de aplicações por inúmeras empresas de todo tipo de indústria que se pode imaginar.&lt;/p&gt;

&lt;h2&gt;
  
  
  A pergunta que não quer calar, o que é DevOps?
&lt;/h2&gt;

&lt;p&gt;Representa uma profissão, às vezes alguma ferramenta específica, mas o mais importante uma cultura. Sim, a cultura de simplificar e automatizar os processos voltados ao desenvolvimento.&lt;/p&gt;

&lt;p&gt;É isso, quem queria uma definição de uma frase pode dar um scroll no artigo até o fim e fingir que leu e depois fechar a aba. Mas o que mais podemos falar sobre devops?&lt;/p&gt;

&lt;h2&gt;
  
  
  Conceito
&lt;/h2&gt;

&lt;p&gt;A ideia central da cultura Devops é aproximar as pessoas que escrevem os códigos, famosos &lt;strong&gt;Devs&lt;/strong&gt;, das pessoas que colocam o código para rodar e fazem o monitoramento da execução nos servidores, nem tão famosos times de operações ou simplesmente &lt;strong&gt;OPS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lindo o conceito, mas por que aproximar essa galera não é tudo do time de TI?&lt;/p&gt;

&lt;p&gt;Essa necessidade veio do mercado em si do consumidor final. Existe a urgência latente do ser humano moderno de sempre ter a correção de erros e a melhor versão no menor tempo possível. O termo bonito para isso é &lt;strong&gt;&lt;em&gt;time to market,&lt;/em&gt;&lt;/strong&gt; que nada mais é que o tempo de um produto ser feito ou atualizado e lançado ao consumidor final.&lt;/p&gt;

&lt;p&gt;É um reflexo do mundo de serviços do mundo atual, muita tecnologia e pouca paciência. Se um serviço de Streaming, por exemplo, demora a fazer o login já pulamos para outro que está funcionando sem cerimônia.&lt;/p&gt;

&lt;p&gt;Com motivação de liberar as novas versões dos aplicativos o mais rápida possível, foi surgindo um movimento dos profissionais de TI, os quais melhoram a gestão de desenvolvimento e deploy das aplicações para reduzir os ciclos de programação e ter melhor monitoramento dessas aplicações.&lt;/p&gt;

&lt;p&gt;Os ciclos de desenvolvimento ficam mais integrados e automatizados, tornando mais simples o fluxo de desenvolvimento, teste, deploy e monitoramento. E é isso é exatamente o que você está pensando, aquele desenho clássico do infinito com os passos do DevOps, ele faz muito sentido, mas nem sempre foi assim.&lt;/p&gt;

&lt;p&gt;Você deve estar pensando que agora seria o momento de contar a história da evolução das metodologias de desenvolvimento, mas esse não é o objetivo aqui hoje. Mas é importante saber que essas mudanças de paradigma partem da comunidade e de profissionais de TI que identificam o problema no dia de trabalho e se uniram para resolver e testar novas propostas.&lt;/p&gt;

&lt;p&gt;Nos últimos anos o conceito de DevOps expandiu e foi evoluindo para áreas específicas como DevSecOps onde a segurança é parte central do fluxo de desenvolvimento e deploy, MLOps voltado para os pipelines de &lt;strong&gt;Machine Learning&lt;/strong&gt;, DataOps que são desenvolvidos pipelines de dados, entre outros Ops da vida.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferramentas
&lt;/h2&gt;

&lt;p&gt;Agora que já mostramos o que é e o porquê, vamos falar sobre as ferramentas que ajudaram a construir as ideias e a cultura DevOps.&lt;/p&gt;

&lt;p&gt;Primeiro vem a criação e a implementação de metodologia ágeis como Scrum e Kanban. Essas metodologias ajudam a organizar o ciclo de desenvolvimento mais curto e a paralelizar as tarefas dos desenvolvedores.&lt;/p&gt;

&lt;p&gt;Aliado as metodologias ágeis também surgiram a popularização de softwares de controle de código como GIT e SVN, que além de rastreabilidade possibilitado o trabalho de vários devs em um único código-fonte, trazendo dor de cabeça para quem aprova os PRs (&lt;strong&gt;Pull Requests&lt;/strong&gt;) para torcer para a junção dos códigos, famoso &lt;strong&gt;merge&lt;/strong&gt;, não de problema.&lt;/p&gt;

&lt;p&gt;E por fim, as ferramentas que geram muitos empregos que são as de automação de Build e Deploy famosas ferramentas de CI/CD, Continuous Integration e Continuous Deploy/Delvery. Essas ferramentas são responsáveis por pegar o código buildar, gerando artefatos ou containers, e colocar as aplicações para executar no servidor final.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desafios
&lt;/h2&gt;

&lt;p&gt;O maior desafio no processo de adoção de DevOps é pelo seu caráter cultural e não tecnológico. Então processos precisam ser revistos e automatizados, equipes precisam ser reestruturadas e é claro é necessário da escolha e adoção das ferramentas corretas conforme a necessidade e o momento de cada empresa.&lt;/p&gt;

&lt;p&gt;Criar uma equipe ou projeto do zero já adotando o DevOps é um processo muito mais simples. E é geralmente utilizado como piloto em grandes empresas para desenvolver novas ferramentas e funcionalidades.&lt;/p&gt;

&lt;p&gt;Outro desafio é superar a cultura do &lt;strong&gt;&lt;em&gt;GO HORSE,&lt;/em&gt;&lt;/strong&gt; que é basicamente "Faça o que eu mando porque eu quero". Essa é a metodologia mais comum do que vocês imaginam nas empresas. Se no dia a dia já não se seguem processos em um momento de crise é trocar o pneu com o carro andando, ou mexer no código de produção enquanto seu diretor está à espera de um milagre em um domingo à noite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Considerando os desafios de mudança cultura que podem ter muitos opositores em uma organização. DevOps traz uma solução moderna para problemas modernos. E isso tudo impulsionado pela adoção de arquiteturas mais modernas como microsserviços que exigem um ciclo menor de desenvolvimento, vem se tornando um padrão cultural e guia nas empresas.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>development</category>
      <category>cloudnative</category>
      <category>agile</category>
    </item>
  </channel>
</rss>
