Feuille de route 2021-2022 (3A)#
Plan#
Les cours et séances se déroulent sur 6 séances de 3h mardi après-midi.
Intervenants#
Xavier Dupré, Matthieu Durut.
Notes#
Liens, notebooks prévus pour les séances pratiques.
Séance 1#
Séance 2#
Les modèles de deep learning dépassent maintenant le milliards de coefficients. Le premier modèle BERT en avait 340 millions. Comment estime-t-on les coefficients de ces mastodontes ? 1 milliards de coefficients, c’est plus de dix ans de calculs sur une seule carte GPU.
- Tour d’horizon
IA, machine learning, deep learning
Apprentissage de modèle, déploiement de modèles
Langage interprété, bas niveaux
CPU, GPU, …
Course logicielle matérielle (A100)
Machine learning open source ?
- Le graalconcevoir un modèle avec un outil simple et faisant des calculs rapides.
Ecrire des calculs rapides exige une connaissance des processeurs
Ecrire un modèle performant exige des connaissances mathématiques
Mécanicien et pilote sont des métiers devenus différents
- La simplicité, documentation
- Illustrations
Calcul : produit matriciel de 3 matrices ? Associativity and matrix multiplication, (opt-einsum)
Fonction einsum : Einsum decomposition, bsnh,ctnh->nts bsnh,btnh->bnts
- Python et C++
Un atout pour une thèse
Un exemple : td3a_cpp
- Outils du développeur
Outils du dévelopeur : compilateur, éditeur (Visual Studio Code)
- git, notion d’intégration continue
- Profileur
Nsight (GPU)
- Culture
Librairies BLAS, LAPACK - des algorithmes hyper-optimisés au long des décennies de leur existence
Streaming Algorithm: 2A.algo - Algorithmes de streaming : généralités, river, Streaming algorithms, Streaming machine learning, notes de cours : Data Stream Algorithm
Séance 3#
Modèle de mémoire (
Description de la stack, pile d’appel, stackoverflow
Threads
GPU, bloc, threads, synchronisation
Séance 4#
Paralléliser des calculs avec pytorch
pytorch est une librairie qui a su séduire beaucoup de développeurs grâce à un design intuitif et à une documentation de bonne qualité. Aujourd’hui se pose la question de créer un code rapide en dehors d’un système existant ou d’étendre une librairie qui offre déjà beaucoup de fonctionnalités. L’option qui est proposée ici est celle d’étendre pytorch dans la mesure où les dernières versions de la librairies ont été pensées pour faciliter ce scénario.
On peut utilier du code C++ depuis python ou utiliser du code Python depuis C++. C’est le premier scénario qui est illustré.
torch
CUDA
CUDA streams
Visual Studio
Combiner pytorch avec autre chose
La librairie pytorch utilise une structure de données appelée Tensor pour représenter un vecteur, une matrice… Elle est décrite par :
un vecteur shape (les dimensions)
un vecteur strides (sous ensemble)
un emplacement, une adresse
un type (float32, float64, double, int64, …)
un device (CPU, GPU, …)
un numéro de device (s’il y a plusieus GPU)
un destructeur permettant de détruire la structure (pas les données)
S’échanger fes informations d’une librairie à une autre, dans le plus simple des cas veut dire les copier. Mais ça prend trop de temps d’où l’introduction d’une structure commune d’échange (API). Elle a été récemment introduite dans les dernières versions de torch. Elle est encore en projets dans numpy.
about numpy ENH: Implement the DLPack Array API protocols for ndarray.
Notion de capsule en python
Traiter un jeu gros de données
La base Open DAMIR : base complète sur les dépenses d’assurance maladie inter régimes est sans doute une base très intéressante mais aussi un défi quand on souhaite s’y attaquer.
Streaming local
pandas_streaming : surcouche autour des itérateur pandas.read_csv
serveur SQL (PostGreSQL
Streaming distant
Voir également awesome-streaming.
Histoires, problèmes résolus
nom des quarties de paris
fusion d’annuaire, géocoding
tournée du camion poubelle
streaming, pandas_streaming
arbre de décision et réseau de neurones, Un arbre de décision en réseaux de neurones
parallélisation