Want to create interactive content? It’s easy in Genially!

Get started free

Seminário 2024

Miguel Carvalho Nascimento

Created on July 24, 2024

Start designing with a free template

Discover more than 1500 professional designs like these:

Transcript

Estatística Computacional: Otimização e Boas Práticas em Códigos para Uso de Servidores

Seminário

Autor: Nascimento, M. C. Orientador: Prof. Dr. Ferreira, D. F. Data: 01-08-2024

PPGEE - UFLA-MG

‘Todas as inovações eficazes são surpreendentemente simples. Na verdade, maior elogio que uma inovação pode receber é haver quem diga: Isto é óbvio! Por que não pensei nisso antes?’

Peter Drucker

Sumário

01. Resumo

05. Otimização com pacotes

09 - Leituras

02. Introdução

10. Conclusão

06. OpenBLAS

03. Objetivos

11. Referências

07. GPU

04. apply vs for

12. Agradecimentos

08. Boas práticas

01. Resumo

O que será visto:

A demanda por análises estatísticas mais rápidas e eficientes cresce junto com o volume e complexidade dos dados. Este seminário aborda técnicas avançadas de otimização de código estatístico em R, com foco no uso eficiente de recursos computacionais, especialmente em servidores.

  • apply vs for;
  • Otimizações de Código no R;
  • foreach vs for;
  • OpenBLAS no R;
  • Usando a GPU - TensorFlow e CUDA;
  • Boas Práticas;
  • Artigos Atuais e Recursos de Otimização;
  • Comparativo Final: Polêmica.

Veja mais

02. Introdução

Análises de alta performance - R

A crescente complexidade das análises estatísticas e o aumento do volume de dados requerem técnicas avançadas de computação para otimizar o desempenho e a eficiência dos códigos. Este seminário explora técnicas de otimização de código em R, focando no uso eficiente de CPU e GPU, além de boas práticas para desenvolvimento e execução de scripts em ambientes de servidor.

03. Objetivos

Específicos

Geral

  • Estratégias para melhorar o desempenho de seus códigos;
  • explorando ferramentas e técnicas que podem acelerar suas análises estatísticas;
  • otimizar o uso de recursos computacionais;
  • literatura temática.
  • Apresentar técnicas de otimização de código em R para uso eficiente de recursos computacionais, especialmente em servidores.

04.Apply vs For

Script 1

O que é?

Pra que serve?

Quando usar?

05.Otimização com Pacotes

Modern Statistics with R

  • Otimização de loops;
  • Uso de vetorização;
  • Aplicações de funções específicas de pacotes otimizados;
  • inferência e modelagem preditiva.
Segunda edição: 01/07/2024

Veja mais:

05.Otimização com Pacotes

fILTRANDO DADOS

Ao trabalhar com grandes bancos de dados, nem sempre é necessário usar todos os dados disponíveis. É essencial filtrar os dados para focar apenas nas informações relevantes. Existem funções específicas em R que otimizam este processo, permitindo realizar filtragens de forma eficiente diretamente no ambiente de R.

script 2

Veja mais

05.foreach vs For

Script 3

O que é?

Pra que serve?

Quando usar?

06.OpenBLAS no R

OpenBlas

Como funciona no R?

  • OpenBLAS pode ser configurada para substituir a implementação padrão do BLAS;
    • Velocidade de cálculos matriciais intensivos;
    • múltiplos núcleos de instruções SIMD (Single Instruction, Multiple Data);
  • é uma implementação aberta do Basic Linear Algebra Subprograms (BLAS).
  • bilioteca altamente otimizada para:
    • álgebra linear;
    • multiplicação de matrizes;
    • fatoração LU

Exemplo:

07.Usando gpu

Tensorflow

CUDA

  • CUDA (Compute Unified Device Architecture) é uma plataforma de computação paralela e uma interface de programação de aplicativos (API) desenvolvida pela NVIDIA, que permite aos desenvolvedores usar GPUs para computações de propósito geral.
  • É uma biblioteca de software open-source desenvolvida pelo Google para aprendizado de máquina e redes neurais, que oferece suporte extensivo para cálculos em GPU.

Tensorflow no R:

08.Boas Práticas

2. Código Limpo

1. Nomeação

Nomes claros e significativos para variáveis, sub-rotinas e scripts. Isso ajuda a evitar suposições e confusões, além de minimizar conflitos. (IBM ROBOTIC PROCESS AUTOMATION, 2024)Evitar:

  • espaços nos nomes;
  • nomes excessivamente longos;
  • outras práticas que possam gerar confusão.

Código claro e legível, seguindo boas práticas de estilo e organização.

  • Forma comum:
x <- rnorm(100)y <- x^2 + rnorm(100)
  • Boa prática:
x <- rnorm(100) #Gera 100 números aleatórios com distribuição normal y <- x^2 + rnorm(100, sd = 0.1) #Adiciona ruído aos quadrados dos valores de x

08.Boas Práticas

5. Proteções contra Falhas

3. Comunicação de Bibliotecas Necessárias

Inclua verificações e tratamentos de erro para evitar que o código falhe durante execuções longas.

Informe ao seu laboratório ou equipe as bibliotecas que precisarão ser instaladas com antecedência.

  • Viabilidade;
  • Compatibilidade;

6. Incrementar Saídas (".txt", ".csv", ".tex")

4. Teste Seu Código

Sempre teste seu código em pequenos pedaços antes de rodar em grandes conjuntos de dados.

Salve resultados intermediários e finais em arquivos para análise posterior e para evitar perda de dados em caso de falhas.

08.Boas Práticas

8. Atenção às Especificidades das Análises Estatísticas

7. Busca Contínua por Otimização

Escolha a melhor estratégia de otimização baseada na natureza dos dados e das análises. Exemplo: Manipulação de grandes datasets.

  • usando data.frame() é lenta;
  • usando data.table() é rápida.

Reavalie e otimize seu código regularmente, procurando por melhorias.

  • bibliotecas;
  • criar de funções ou bibliotecas;
  • outras linguagens.

09.Leituras Relevantes

Artigos e Livros Relevantes e Técnicas Avançadas

Algumas indicações de leitura para aprofundar no assunto.

09.Leituras Relevantes

Modern Statistics with R

  • Manipulação de dados;
  • Análise exploratória de dados - uso de visualizações e técnicas multivariadas;
  • Inferência estatística - métodos modernos;
  • Modelagem preditiva - modelos de regressão e ML;
  • Simulação;
  • Ética em estatística - questões éticas e boas práticas estatísticas.;
  • Programação em R -código que seja rápido, legível e (esperançosamente!) livre de erros.

Link do livro

09.Leituras Relevantes

Using R for High-Performance Data Analytics

  • Introdução ao R na HPDA (análise de dados de alto desempenho);
  • Computação de GPU e processamento paralelo;
  • Gerenciamento de memória: - crucial pra big data;
  • Recursos avançados e otimização: - integração com C++;
  • Estudos de caso;
  • Ética em estatística - eficácia do R no manuseio de grandes conjuntos de dados genômicos e na realização de análises estatísticas sofisticadas;
  • Comparação de R e Python -

Link do artigo

10.Conclusão

Resumo das Principais Técnicas de Otimização

  • Vetorização e Paralelização: Uso de apply, foreach, data.table, dplyr;
  • GPU: Aproveitamento da aceleração de GPU com CUDA e TensorFlow;
  • Bibliotecas Otimizadas: Uso de bibliotecas específicas para melhorar a eficiência do código;
  • Boa práticas;
  • Leituras.

10. Referências

Referências bibliográficas

  • IBM ROBOTIC PROCESS AUTOMATION. Diretrizes para nomear variáveis, sub-rotinas e scripts. Disponível em: https://www.ibm.com/docs/pt-br/rpa/23.0?topic=guidelines-names. Acesso em: 15 jul. 2024.
  • KALINOWSKI, Tomasz. TensorFlow for R. Disponível em: https://tensorflow.rstudio.com/. Acesso em: 01 ago. 2024.
  • Luebbers, C. L. (2024). Using R for High-Performance Data Analytics. Disponível em: https://hps.vi4io.org/_media/teaching/autumn_term_2023/stud/nthpda_christopher_luebbert.pdf. Acesso em: 12 abr. 2024.
  • Thulin, M. (2024). Modern Statistics with R. Second edition. CRC Press. ISBN 9781032512440.

12. Agradecimentos

Obrigado

link

No R

  • TensorFlow pode ser usado em conjunto com CUDA para acelerar tarefas de aprendizado de máquina.
  • é capaz de realizar cálculos em paralelo de maneira muito mais rápida do que uma CPU tradicional.
  • especialmente benéfico para grandes datasets e modelos complexos.

SCRIPT 5

Você sabia?

Apply: Usada para aplicar uma função a elementos de uma matriz ou data frame. For: Estrutura de loop usada para iterar sobre elementos em R

Você sabia?

foreach: Executar loops em paralelo para aumentar a eficiência. for: Loops sequenciais.

Você sabia?

Apply: Quando as operações podem ser vetorizadas. For: Quando há necessidade de loops complexos ou dependentes.

Link

Você sabia?

foreach: Pacote em R para paralelização de loops. for: Estrutura de loop tradicional em R.

Script 2

Veja mais em

Você sabia?

foreach: Quando o problema pode ser dividido em partes independentes. for: Quando há dependência sequencial entre as iterações.

SCRIPTs 4.1 vs 4.2

Veja mais em:

Você sabia?

Apply: Realizar operações vetorizadas de forma mais eficiente. For: Executar operações iterativas onde a vetorização não é aplicável.

Link

Polêmica!!!