[PYTHON] Comment accélérer Scicit-Learn comme Conda Numpy

Récemment, on a un peu parlé du fait que Numpy entré avec conda fonctionne plus vite que Numpy inséré avec pip (bien que l'article original ne soit pas récent). Dans cet article, j'expliquerai que scikit-learn peut également fonctionner plus rapidement si vous concevez une installation.

introduction

Article, "NumPy d'Anaconda semble être rapide, alors je l'ai essayé." https://tech.morikatron.ai/entry/2020/03/27/100000

Je l'ai vu plusieurs fois récemment sur la chronologie de Twitter (bien que l'article original ait été écrit en mars 2008).

On dit que Numpy installé par conda est plus rapide que Numpy installé par pip.

Pourquoi est-ce si rapide?

Dans l'article ci-dessus, le processeur utilise «Intel Core i7-9750H».

Les spécifications de cette CPU sont les suivantes. https://www.intel.co.jp/content/www/jp/ja/products/processors/core/i7-processors/i7-9750h.html

C'est une erreur que ** «Intel® SSE4.1, Intel® SSE4.2, Intel® AVX2» ** soit décrit dans ** «Extension du jeu d'instructions» ** de cette spécification.

** AVX2 ** est inclus dans l'extension du jeu d'instructions.

En outre, ** AVX-512 ** est également installé dans le processeur Intel hautes performances relativement récent.

Pour AVX, la page suivante est détaillée, mais elle succède à l'instruction d'extension SIMD en continu.

** "Le point est une fonction qui peut exécuter plusieurs opérations avec une seule instruction" **

https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0SIMD%E6%8B%A1%E5%BC%B5%E5%91%BD%E4%BB%A4

** Intel MKL (Math Kernel Library) ** est la fonction du processeur Intel qui accélère les opérations mathématiques en utilisant AVX2 ou supérieur de cet AVX. https://www.xlsoft.com/jp/products/intel/perflib/mkl/index.html

En effectuant divers calculs avec AVX2 ou AVX-512, il accélère.

Si le processeur prend en charge AVX, Numpy installé par conda sera calculé à l'aide de cet Intel MKL, le traitement sera donc plus rapide.

Le travail acharné d'Intel

À l'ère du GPU, Intel travaille également dur, vers 2017, Nous avons publié les bibliothèques Numpy et sckit-learn ** qui prennent en charge l'accélération sur les processeurs Intel, y compris Intel MKL.

pip install intel-scikit-learn https://pypi.org/project/intel-scikit-learn/

pip install intel-numpy https://pypi.org/project/intel-numpy/

Avec ceux-ci, vous pouvez utiliser la version haute vitesse depuis le début même si vous l'installez avec pip.

Ces versions ont également été publiées par Intel il y a longtemps, La version n'a pas rattrapé le Numpy et sklearn d'origine, et elle n'est pas maintenue, donc Nous ne recommandons pas de les utiliser.

Accélérez scikit-learn

Le premier article que j'ai présenté, "NumPy d'Anaconda semble être rapide, alors je l'ai essayé." https://tech.morikatron.ai/entry/2020/03/27/100000

Même dans le texte de

Divers autres modules ont adopté Intel MKL. Génial! NumPy NumExpr SciPy Scikit-Learn Tensorflow… Sous Windows, il s'agit d'un package séparé appelé tensorflow-mkl. PyTorch… Il semble qu'Intel MKL soit également utilisé via pip.

Comme vous pouvez le voir, lorsque vous installez avec conda, une version rapide qui utilise Intel MKL est installée sans autorisation.

Cependant, si vous souhaitez le faire fonctionner le plus rapidement possible, suivez les instructions de la page d'installation de scikit-learn. https://scikit-learn.org/stable/install.html

Sur cette page 「Third party distributions of scikit-learn」 Écrit en,


「Intel conda channel」 Intel conda channel Intel maintains a dedicated conda channel that ships scikit-learn:

$ conda install -c intel scikit-learn This version of scikit-learn comes with alternative solvers for some common estimators. Those solvers come from the DAAL C++ library and are optimized for multi-core Intel CPUs.

Note that those solvers are not enabled by default, please refer to the daal4py documentation for more details.

Compatibility with the standard scikit-learn solvers is checked by running the full scikit-learn test suite via automated continuous integration as reported on https://github.com/IntelPython/daal4py.


Si vous mettez sckit-learn sur le canal Intel conda, non seulement Intel MKL mais aussi Certains traitements scikit-learn sont remplacés par le traitement des fonctions optimisées Intel multicœur.

Donc, si vous souhaitez utiliser la version la plus rapide de scicit-learn,

$ conda install scikit-learn

ne pas,

$ conda install -c intel scikit-learn

Il est recommandé d'installer avec (dans un environnement CPU compatible avec Intel AVX2 ou supérieur).

à la fin

AWS, les images Deep Learning et Azure DSVM (Data Science Virtual Machines) sont tous gérés sur la base de conda.

Et scikit-learn est installé dans conda.

Je ne sais pas si ce sont des versions optimisées d'Intel (s'il vous plaît laissez-moi savoir si quelqu'un sait).

Si vous recréez vous-même l'environnement virtuel avec conda, vous pouvez installer la version haute vitesse ci-dessus ... (Vous devez vérifier le processeur de la machine IaaS pour voir si elle prend en charge AVX2. S'il s'agit d'une machine facile, elle ne peut prendre en charge que AVX)

Comme mentionné ci-dessus, c'était une méthode pour accélérer l'apprentissage scicit comme Conda Numpy. (Je ne suis pas très fort autour du processeur, alors veuillez commenter si vous faites une erreur)

Remarques

【Transmission d'informations】 Récemment, j'ai publié sur Twitter des informations sur l'IA, les affaires et la gestion, telles que des articles et des sites que j'ai trouvés intéressants et des impressions de livres que j'ai lus.

Yutaro Ogawa @ISID_AI_team https://twitter.com/ISID_AI_team

Les informations que je regarde sont intéressantes et importantes! Je partage ce que je pensais.

[Autres] L'équipe de développement du Département Technologie de l'IA, que je dirige, recherche des membres. Si vous êtes intéressé, veuillez cliquer ici

[Clause de non-responsabilité] Le contenu de cet article lui-même est l'opinion / la transmission de l'auteur, et non l'opinion officielle de la société à laquelle l'auteur appartient.


Recommended Posts

Comment accélérer Scicit-Learn comme Conda Numpy
Comment accélérer les calculs Python
Comment accélérer la belle instanciation de soupe
Indispensable si vous utilisez Python! Comment utiliser Numpy pour accélérer les calculs!
Comment utiliser numpy
Comment utiliser NumPy
Comment écrire plus rapidement en utilisant numpy comme deque
Comment installer mkl numpy
Comment garder le conda éteint
Numba pour accélérer en Python
Comment créer un package Conda
Projet Euler 4 Tentative d'accélération
[DRF] Extrait pour accélérer PrimaryKeyRelatedField
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Comment configurer SVM à l'aide d'Optuna
Comment installer NumPy sur Raspeye
Comment accélérer la méthode d'application de Pandas avec une seule phrase (avec calcul de vérification)
Comment créer des fichiers volumineux à haute vitesse
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment installer pip, numpy sur Autodesk MAYA
Comment utiliser Tweepy ~ Partie 2 ~ [Suivez, aimez, etc.]
Comment mesurer la vitesse de la ligne depuis le terminal
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment configurer un serveur de développement local
[Python] Faites de votre mieux pour accélérer SQL Alchemy
Comment rendre le Python des débutants plus rapide [numpy]
Comment configurer l'authentification par clé publique avec SSH
Essais et erreurs pour accélérer la génération de cartes thermiques
Essai et erreur pour accélérer les captures d'écran Android
Comment configurer un environnement Python à l'aide de pyenv
La décision de scikit-learn Comment visualiser un modèle en bois
Comment configurer et compiler l'environnement Cython
Essayez de résoudre le Sudoku à une vitesse explosive en utilisant Numpy