Want to create interactive content? It’s easy in Genially!
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.
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:
- Boa prática:
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