Benchmarking de GPU avec Llama.cpp

Après avoir ajouté un GPU et paramétrer ma configuration, j’ai voulu benchmarker ma carte graphique. J’ai utilisé Llama.cpp et je l’ai compilé pour utiliser un GPU NVIDIA. Je récapitule ici les différentes étapes. Matériel utilisé OS: Ubuntu 24.04 LTS (Official page) GPU: NVIDIA RTX 3060 (affiliate link) CPU: AMD Ryzen 7 5700G (affiliate link) RAM: 52 GB Storage: Samsung SSD 990 EVO 1TB (affiliate link) Installer le NVIDIA CUDA Toolkit Pour compiler llama.cpp, on a besoin d’installer le NVIDIA CUDA Toolkit. Pas de difficulté particulière, il suffit de suivre la documentation (qui est très bien faite). ...

16 déc. 2024 · Gwenaël Nardin

Installer Ollama et OpenWebUI sous Ubuntu 24.04 avec un GPU NVIDIA RTX3060

Dans le cadre d’un projet personnel, je me suis équipé d’un GPU NVIDIA (une RTX 3060) afin de pouvoir faire tourner convenablement des modèles de LLM en local. Pour utiliser facilement différent modèle, je m’appuie sur OpenWebUI (avec Ollama) ; comme l’installation peut être un peu épique, je récapitule les différentes étapes ici. Configuration utilisée Dans mon PC, j’ai : OS : Ubuntu 24.04 LTS (Page officielle) GPU : NVIDIA RTX 3060 (lien affilié) CPU : AMD Ryzen 7 5700G (lien affilié) RAM : 52 Go Stockage : Samsung SSD 990 EVO 1TB (lien affilié) Ce qui permet de faire tourner correctement (une trentaine de tokens/s) des modèles de 14B. ...

11 déc. 2024 · Gwenaël Nardin

Nouvelle version de Go : 1.18

Generics On peut définir la programmation générique comme un style de programmation qui permet de représenter des fonctions et des structures de données sous une forme générique, avec des types adaptés. Ca, c’est pour la théorie. Voyons un exemple. Pour illustrer le principe, imaginons que nous avons besoins de calculer la somme des éléments d’un map de int64 : // SumInts adds together the values of m. func SumInts(m map[string]int64) int64 { var s int64 for _, v := range m { s += v } return s } Rien d’exceptionnel. ...

25 mars 2022 · Gwenaël Nardin

Programmation concurrente avec des goroutines

Nouvelle année, nouveau challenge ! Ca fait pas mal de temps de je lorgne sur le Go (ou Golang) et ça y est, il est venu le temps de s’y mettre ! Avant cela, j’ai (un peu) mis à jour mon site et rajouter un lien pour ma page LinkedIn : n’hésitez pas à me suivre ou m’ajouter afin de recevoir les prochaines mises à jour 😊. Le Go (ou Golang) est un langage développé depuis quelques années désormais (plus de 10 ans) par une équipe de Google, et pas des débutants ! Notamment Brian Kernighan, éminent informaticien en C et autre. Ils ont alors développé ce langage pour simplifier l’utilisation du multithreading, principe au coeur du Go. ...

2 sept. 2021 · Gwenaël Nardin

A la découverte de MicroPython sur ESP32

Hello ! Comme c’est les vacances et qu’il faut bien s’occuper (#geeker) un peu, j’ai joué un peu avec MicroPython sur un microcontrôleur de type ESP32. Je me suis basé sur la lecture de Programmer en MicroPython, qui est le seul livre en français sur le sujet. Bon, il y en 2-3 de plus en anglais, mais rien de folichon non plus… Pour le matériel, j’ai utilisé ma carte ESP32 Gateway de chez Olimex que j’avais sous la main. Voyons voir ce que l’on peut faire avec tout ça! 🕵️‍♂️ ...

24 août 2018 · Gwenaël Nardin

Comprendre les décorateurs

Hello ! Vous avez peut-être déjà rencontré lors de la consultation de code écrit par quelqu’un d’autre la présence d’un @ suivi d’un nom juste avant la définition d’une fonction et vous vous êtes posé la question “à quoi cela peut-il bien servir ?”. Voyons cela ensemble. Poser les bases En Python, les fonctions sont des Objet de première classe, c’est à dire qu’elles se comporte comme n’importe quel objet. Exemple : # une fonction de toute beauté def ma_fonction(): print('hello toto') Comme elle se comporte comme un objet, je peux la stocker dans une variable puis l’appeler en ajoutant les parenthèses lors de l’appel de ma variable : ...

6 févr. 2018 · Gwenaël Nardin

Comment (enfin!) utiliser Vim

Hello ! Vous connaissez Vim ? Mais si, quand vous êtes sur Linux et que le seul éditeur disponible c’est lui ! Quand vous ne comprenez jamais quand est-ce qu’il va écrire dans le fichier ou s’il va exécuter des commandes… Vim, ce grand incompris, si difficile à utiliser… Et pourtant, quand vous faites quelques recherches (j’ai pas dit RTFM..) pour retrouver ces #!@?!#@! de commandes pour enfin réussir à faire une modif dans un fichier de conf, vous tombez sur pleins d’articles où les gens sont heureux depuis qu’il maîtrise cet outil du diable ! Comment est-ce possible ? Et il y a des gens qui l’utilise pour faire du dév ??? Moi qui n’arrive pas à modifier mon .conf… ...

28 janv. 2018 · Gwenaël Nardin

Comment et pourquoi utiliser les notebook Jupyter

Hello ! Vous avez peut être entendu parler des notebook de Jupyter et si comme moi, vous vous êtes demandé à quoi bon cela peut bien servir, je vais vous aider à y voir un peu plus clair. Déjà, à quoi ils ressemblent ? Vous pouvez trouver une large galerie d’exemple ici. Voyons un peu ce que on peut en faire. Cas d’utilisation Les notebook ressemblent finalement à des pages Web dynamique, avec des champs que l’on peut exécuter et voir le résultat en direct. Les grands cas d’utilisation sont souvent en sciences car c’est très pratique pour présenter des résultats pas à pas, expliquer des contextes. On les retrouvent souvent dans les domaines de : ...

22 janv. 2018 · Gwenaël Nardin

Modèles et hyperparamétres

Hello, L’un des problèmes lorsque l’on débute en machine learning est le choix de l’algorithme (ou modèle) à utiliser. Je viens de tomber sur un article du blog de Kaggle où l’auteur partage son approche des différents problèmes à résoudre en ML. J’ai noté deux parties qui m’ont éclairé un peu plus sur le choix des modèles et des hyperparamètres à régler. Choix d’un modèle Il y a deux grandes familles d’algorithmes : ceux qui permettent de réaliser une prédiction (à l’aide d’une régression) et ceux qui identifie une variable parmi d’autres (la classification). Les modèles les plus courants pour réaliser ses tâches sont donc : ...

14 janv. 2018 · Gwenaël Nardin

Débuter en IA : challenge Titanic

Hello, Après avoir débuté la lecture de Machine Learning avec Scikit-Learn, j’ai pris au mot l’auteur dès la fin du deuxième chapitre et j’ai tenté d’appliquer la méthode sur des données “réelles”. J’ai donc été sur le site Kaggle qui propose (entre autre) un jeu de données pour débutant autour du Titanic, le but est de prédire les survivants. Bon, on se retrousse les manches, c’est parti ! Découverte des données Récupération des informations L’ensemble des données est fourni dans deux fichiers CSV : train.csv pour nous permettre d’entrainer un modèle et test.csv qui nous permettra de valider (ou non) notre algorithme. ...

4 janv. 2018 · Gwenaël Nardin