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). ...
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. ...
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. ...
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. ...
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! đ”ïžââïž ...
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 : ...
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⊠...
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 : ...
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 : ...
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. ...