1

Pitch: scm2cpp-learn: estimadores do scikit-learn até ~1000x mais rápidos, com os mesmos resultados

Olá! Quero compartilhar meu projeto open source (MIT):

  • 44 estimadores do scikit-learn (Lasso, LogisticRegression, RFE, PCA, SVM…) com os mesmos algoritmos e os mesmos resultados (coeficientes iguais até o arredondamento)
  • de 1,5x a ~1000x mais rápidos (ex.: RFE 1047x, MultiTaskElasticNetCV ~100x em um único núcleo)
  • compatível com a API do scikit-learn: funciona com Pipeline e GridSearchCV, passa no check_estimator
  • pip install scm2cpp-learn: wheels para Linux, macOS e Windows; GPU (CUDA) opcional

Por que é mais rápido?

Em vez de mudar o algoritmo, o ganho vem de reorganizar o cálculo. Por exemplo, a validação cruzada do Lasso calcula a matriz de Gram (X'X) uma única vez e obtém a de cada fold por subtração, então os dados originais não são percorridos de novo. No RFE, em vez de reajustar o modelo a cada rodada, a fatoração de Cholesky é atualizada ao remover cada variável. Na GPU, várias penalidades são resolvidas em paralelo, uma por bloco CUDA.

Curiosidade

Os algoritmos são escritos em Scheme e traduzidos para C++ legível pelo meu compilador scm2cpp, que deriva essas otimizações automaticamente a partir da versão ingênua.

Nem tudo é mais rápido: por exemplo, PCA com muitas features pode ser mais lento, e isso está documentado no README.

Repositório: https://github.com/niitsuma/scm2cpp

Feedback é muito bem-vindo! (Sou do Japão, o texto foi traduzido por máquina, desculpe qualquer erro.)

Carregando publicação patrocinada...