2024-05-31: Feuille de route 2023-2024 (3A)

Plan

Les cours et séances se déroulent sur 6 séances de 3h au second semeste.

Intervenants

Xavier Dupré, Matthieu Durut.

Evaluation

Optimize a machine learning model by fusing operations.

pip install -U huggingface_hub
huggingface-cli download alpindale/Llama-2-7b-ONNX --repo-type model --cache-dir cache --local-dir . --local-dir-use-symlinks False

Or:

python -m experimental_experiment.torch_bench.export_model --model llama --mixed 1 --exporter script --config small --num_hidden_layer 2
../_images/netron.png

One part of the llama model:

../_images/llama.png

The goal is not to optimize the whole model but to optimize locally one execution path, in CUDA or CPU. To get that model: Export a LLAMA model into ONNX.

Notes

Liens, notebooks prévus pour les séances pratiques.

Séance Pratique 1 - 10/04

Séance pratique sur CPU.

  1. Environnement

  1. Examples

  1. Concepts

  • parallelization, conflicts

  • thread / process

  • AVX

  • branching, cache L1, L2, L3

  • C++ syntax

  1. Technics

Instructions pour démarrer

Il ensuite exécuter les instuctions suivantes en ligne de commande.

git clone https://github.com/sdpython/teachcompute.git
cd teachcompute
python setup.py build_ext --inplace

Si ça ne marche, installer cmake: conda install cmake. Puis :

export PYTHONPATH=<this folder>
python _doc/examples/plot_bench_cpu_vector_sum.py

Séance Pratique 2 - 17/04

CUDA

Les séances pratiques s’appuient sur le package teachcompute.

git clone https://github.com/sdpython/teachcompute.git
cd teachcompute
python setup.py build_ext --inplace
  • CUDA, threads, blocks, parallélisation

  • gestion de la mémoire, CPU, CUDA

  1. addition de deux vecteurs

  1. somme d’un vecteur

  1. ScatterND

  1. extension torch

  • DLPack

  • device

  • A100, H100

  • float32, float16, float8

  • multiple nvidia on the same machine

Séance Pratique 3 - 03/05

Partie I : ML

  • Triton, TVM, AITemplate,

  • notion de déploiement de modèle de machine learning, docker, ONNX, autres…, que veut dire optimiser son code pour l’apprentissage puis déployer ensuite sur une autre machine.

Partie II : cas concret

Comment paralléliser…

Partie III : modifier un package

Copier/coller, recherche, quelques astuces pour insérer son code dans un package.

Séance Théorique 1 - 12/04

  • hardware

  • ordinateur

  • mémoire partagée

  • ordre de grandeur vitesse CPU, communication

  • caches