Instalação mais rápida do pacote R | R-bloggers

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon r – Rios saltando, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Instalação mais rápida do pacote

A cada poucas semanas, um tweet é exibido perguntando sobre como acelerar a instalação de pacotes no R

Dependendo da sorte do twitter, o autor pode receber algumas sugestões.

A imagem maior é que o tempo de instalação do pacote está começando a se tornar mais um problema por vários motivos. Por exemplo, os pacotes estão ficando maiores e mais complexos (arrumado e amigos), portanto, a instalação leva mais tempo. Ou estamos usando estratégias de integração mais contínuas, como Travis ou GitLab-CI, e queremos um feedback rápido. Ou estamos simplesmente atualizando um grande número de pacotes via update.packages(). Esse é um problema que geralmente resolvemos para nossos clientes – otimizando seus pipelines de CI / CD.

O objetivo desta postagem no blog é reunir alguns métodos diferentes para resolver esse problema. Se eu perdi alguma, informe-me (https://twitter.com/csgillespie)!

Instalação mais rápida com o Ncpus

A primeira tática que você deve usar é a Ncpus argumento em install.packages() e update.packages(). Isso instala pacotes em paralelo. Ele não acelera a instalação de um pacote individual, mas permite que as dependências sejam instaladas em paralelo, por exemplo. arrumado. Usá-lo é fácil; é apenas um argumento adicional em install.packages(). Então, para usar seis núcleos, simplesmente usaríamos

install.packages("tidyverse", Ncpus = 6)

Ao instalar uma versão nova do tidyverse e de todas as dependências, isso pode acelerar o dobro.

Leia Também  XAI em Python com dalex
1 409 2,26
2 224 1,24
4 196 1.08
6 181 1,00

Nada mal para um simples ajuste, sem desvantagens. Para mais informações, consulte nossa postagem no blog
de alguns anos atrás.

Em resumo, isso é algo que você definitivamente deve usar e adicionar ao seu .Rprofile. Teoricamente, isso aceleraria os pipelines de integração contínua, mas apenas se você tiver vários núcleos disponíveis. A versão gratuita do travis só vem com um único núcleo, mas se você conectar um cluster Kubernettes com vários núcleos ao seu IC (às vezes fazemos isso em Jumping Rivers), poderá obter uma grande velocidade.

Instalação mais rápida com o ccache

Se você estiver instalando pacotes da fonte, ou seja, arquivos tar.gz, a maior parte do tempo de instalação será gasta na compilação de código-fonte, como C, C ++ e Fortran. Alguns anos atrás, Dirk Eddelbuettel escreveu um ótimo post sobre o uso do utilitário ccache para reduzir a etapa do tempo de compilação. Essencialmente, o ccache armazena o arquivo de objeto resultante criado ao compilar. Se esse arquivo for compilado novamente, em vez de reconstruir, o ccache retornará o código do objeto, resultando em uma aceleração significativa. É a troca clássica entre memória (cache) e CPU.

A postagem de Dirk fornece detalhes claros sobre como implementar o ccache (então não vou repetir). Ele também compara os tempos de reinstalação dos pacotes, com o RQuantlib passando de 500 segundos para alguns segundos. No entanto, para que o ccache seja eficaz, os arquivos de origem precisam ser estáticos. Obviamente, quando você atualiza um pacote R, as coisas mudam!

Como experimento, baixo as últimas dezessete versões do dplyr do CRAN. Isso nos leva de volta à versão 0.5.0 a partir de 2016. Em seguida, instalei cada versão, por sua vez, via

Leia Também  Instalando e executando o Ubuntu em um MacBook Air de 2015
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

# Avoid tidyverse packages, as we are messing about with dplyr
f = list.files("data", full.names = TRUE)
elapsed = numeric(length(f))
for (i in seq_along(f)) {
  elapsed[i] = system.time(install.packages(f[i], repos = NULL))["elapsed"]
}

Como todas as dependências de pacotes foram instaladas e o código-fonte já foi baixado, o código acima vezes a instalação de apenas dplyr. Se implementarmos ccache, podemos facilmente executar novamente o código acima. Após um pouco de manipulação, podemos traçar os tempos absolutos de instalação

O primeiro argumento (um pouco óbvio) é que não há aceleração com o dplyr v0.5.0. Isso ocorre simplesmente porque o ccache depende de instalações anteriores. Como a v0.5.0 é a primeira versão em nosso estudo, não há diferença entre as instalações padrão e ccache.

Nas dezessete versões do dplyr, alcançamos uma aceleração de 24 vezes em três versões e uma aceleração mais modesta de duas a quatro vezes em outras três versões. Média em todas as dezessete versões, uma aceleração típica é de cerca de 50%.

No geral, o uso do ccache é uma estratégia muito eficaz e fácil. Requer uma configuração única e simples e não requer acesso root. Claro que nem sempre funciona, mas nunca diminui nada.

No início desta seção, mencionei a troca entre memória e CPU. Uso o ccache desde 2017 e o tamanho atual do cache é de cerca de 6 GB. O que em um disco rígido moderno não é muito (e eu instalo muitos pacotes)!

Usando binários Ubuntu

No Linux, a maneira padrão de instalar pacotes é via fonte e install.packages(). No entanto, também é possível instalar pacotes usando pacotes binários. Isso tem dois benefícios principais

  • É mais rápido – normalmente alguns segundos
  • (Normalmente) resolve quaisquer problemas horríveis de dependência instalando as bibliotecas dev necessárias.

Se você estiver usando integração contínua, como os corredores do GitLab, essa é uma etapa simples para reduzir o tempo de instalação do pacote. A idéia principal é adicionar uma fonte binária adicional ao seu arquivo source.lists, veja, por exemplo, a linha no rocker. Depois disso, você pode instalar a maioria dos pacotes CRAN via

sudo apt install r-cran-dplyr

A única grande desvantagem aqui é que o usuário requer acesso root para instalar um pacote R, portanto, essa solução não é adequada em todas as situações.

Leia Também  Mudanças recentes em R espacial e como estar pronto para elas

Há muita documentação disponível, CRAN e postagens no blog, então não vou me incomodar
repetindo adicionando mais.

Usando o RStudio Package Manager

O RStudio Package Manager é um dos produtos Pro do RStudio usado para pagar por seu trabalho de código aberto, por exemplo. o IDE da área de trabalho do RStudio e todos os seus pacotes R arrumados.

Os espelhos CRAN distribuem há muito tempo pacotes binários para Windows e Mac. O RSPM fornece binários pré-compilados para pacotes CRAN para

  • Ubuntu 16.04 (Xenial), Ubuntu 18.04 (Bionic)
  • CentOS / RHEL 7, CentOS / RHEL 8
  • openSUSE 42 / SLES 12, openSUSE 15 / SLES 15
  • Windows (em breve, atualmente em beta)

A grande vantagem do RSPM sobre a solução de binários do Ubuntu acima é que o acesso root não é mais necessário. Os usuários podem simplesmente instalar via install.packages().


Jumping Rivers são parceiros certificados de serviço completo RStudio. Parte de nossa função é oferecer suporte nos produtos RStudio Pro. Se você usa algum produto RStudio Pro, entre em contato conosco ([email protected]) Podemos oferecer livre Apoio, suporte.

A instalação posterior do pacote Faster R apareceu pela primeira vez em Jumping Rivers.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha seu sabor: e-mail, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br