1 points par GN⁺ 2024-09-01 | 1 commentaires | Partager sur WhatsApp
  • Un atelier qui permet, en y consacrant quelques heures le week-end, de suivre en code le fonctionnement d’un LLM et d’examiner d’un seul coup le flux d’implémentation, d’entraînement et d’utilisation
  • Les exercices pratiques partent d’une introduction aux LLM, puis avancent progressivement vers les données d’entrée, le tokenizer et l’implémentation de l’architecture du modèle
  • Après l’implémentation de l’architecture, l’atelier couvre GPT-2 et Llama 2, le préentraînement et le chargement de poids préentraînés, jusqu’au flux d’utilisation d’un modèle réel
  • Il inclut aussi l’utilisation des poids avec LitGPT, le fine-tuning sur instructions, l’évaluation par benchmark et l’évaluation des performances conversationnelles
  • Le livre, le dépôt GitHub, le code de l’atelier, Lightning Studio et le dépôt LitGPT sont fournis ensemble, ce qui facilite le suivi pas à pas

Déroulé de la vidéo de l’atelier de 3 heures

  • Le processus consistant à implémenter, entraîner et utiliser un LLM est traité sous la forme d’un seul atelier de code
  • Des chapitres cliquables permettent d’aller directement au sujet souhaité
  • Bases et traitement des entrées

    • 0:00 Vue d’ensemble de l’atelier
    • 2:17 Introduction aux LLM
    • 9:14 Supports de l’atelier
    • 10:48 Comprendre les données d’entrée d’un LLM
    • 23:25 Une classe de tokenizer simple
  • Implémentation du modèle et entraînement

    • 41:03 Coder l’architecture d’un LLM
    • 45:01 GPT-2 et Llama 2
    • 1:07:11 Préentraînement
    • 1:29:37 Chargement de poids préentraînés
    • 1:45:12 Utilisation de poids préentraînés avec LitGPT
  • Fine-tuning et évaluation

    • 1:53:09 Fine-tuning sur instructions
    • 2:08:21 Fine-tuning sur instructions avec LitGPT
    • 2:26:45 Évaluation par benchmark
    • 2:36:55 Évaluation des performances conversationnelles
    • 2:42:40 Conclusion

Ressources nécessaires pour suivre l’atelier

1 commentaires

 
GN⁺ 2024-09-01
Avis sur Hacker News
  • Question peut-être naïve, mais je me demande en quoi c’est différent de la vidéo d’Andrej Karpathy https://www.youtube.com/watch?v=kCc8FmEb1nY
    • La série d’Andrej est excellente, et le livre ainsi que cette vidéo de Sebastian le sont aussi.
      Il y a beaucoup de recoupements, mais ils approfondissent des sujets différents ou n’ont pas le même angle. Toute la série d’Andrej vaut largement le détour, et les travaux à venir d’Eureka Labs ont l’air très prometteurs. Le blog et le livre de Sebastian valent aussi, à mon avis, le temps et l’argent qu’on y consacre
  • J’aime bien les articles de Sebastian et j’attends le livre avec impatience. Il y a beaucoup de détails sur la façon dont les LLM sont construits, mais à long terme le champ de bataille semble se déplacer de ce côté-là ; ce serait donc bien qu’il traite davantage de la manière dont Llama et OpenAI peuvent nettoyer et structurer les données d’entraînement
  • Utiliser PyTorch, ce n’est pas construire un LLM à partir de zéro
    C’est un bon tutoriel PyTorch, mais ne faisons pas comme si c’était bas niveau
    • Pour faire une tarte aux pommes à partir de zéro, il faut d’abord inventer l’univers
    • Le contenu de Sebastian est vraiment excellent, mais je suis d’accord sur ce point. Je ne suis pas vraiment entré dans le deep learning tant que je n’ai pas commencé, comme dans la série de Karpathy, par créer un moteur de différenciation automatique à partir de zéro.
      Avant ça, j’avais essayé d’apprendre avec fast.ai, mais on commençait directement à construire des réseaux avec Pytorch, et j’ai vite décroché. Ça m’a paru aussi peu amusant que d’apprendre Java au lycée ; j’avais besoin de comprendre ce que je manipulais
    • Apprendre à jouer Bach : commencer par fabriquer soi-même un piano
    • Selon quel critère ce n’est pas bas niveau ? Écrire un client IRC en Python uniquement avec l’API socket, ce n’est pas non plus à partir de zéro ?
    • Dans le contexte des LLM, pytorch.nn est déjà bas niveau. En pédagogie, il est important de ne pas empiler trop de couches d’abstraction d’un coup
  • J’avais écrit autrefois un guide pratique pour entraîner nanoGPT à partir de zéro sur Azure. Il est facile à suivre pas à pas et plutôt pratique
    https://16x.engineer/2023/12/29/nanoGPT-azure-T4-ubuntu-guid...
    • Je me demande si ça n’a vraiment coûté que 200 dollars.
      Je me demande aussi ce qu’on pouvait faire avec ce modèle, et comment lui faire apprendre des événements récents
  • C’est peut-être irrationnel, mais j’ai spontanément une impression négative quand on emploie le mot coding au lieu de programming ou development
    • Que cette réaction vienne d’un message posté par quelqu’un qui fait partie des plus obsédés par le langage dans cette communauté, ça me paraît assez spectaculaire.
      À y regarder de plus près, « code » est ce qu’on établit dans le contenu d’un support comme un codex. Pour le contexte historique, voir https://en.wikipedia.org/wiki/Codex ; le terme part des ensembles de règles du domaine juridique, puis son usage s’est étendu à d’autres domaines en anglais au moins depuis le milieu du XVIe siècle.
      « Program » évoque plutôt la publication d’un ensemble d’intentions, par exemple « jouer d’abord Bach, puis Mozart ». Cet usage apparaît plusieurs siècles après celui de code comme « ensemble de règles ».
      « Develop » est intéressant parce qu’il signifie déployer, faire apparaître, mais il n’implique pas, comme les deux précédents, des règles ou une procédure séquentielle
    • Je suis Brésilien, et ce qui est amusant, c’est qu’entre amis ou collègues, quand on parle anglais, on utilise généralement coding, et entre Brésiliens on emploie beaucoup codar comme verbe portugais.
      Je ne sais pas exactement pourquoi, mais je pense que c’est parce qu’en portugais brésilien, « program » est fortement associé à la prostitution
    • Tout à fait d’accord. On en avait déjà discuté il y a un an : https://news.ycombinator.com/item?id=36924239
    • C’est probablement une opinion impopulaire aujourd’hui, mais je suis d’accord, même dans une ambiance où ce genre de jugement est perçu comme du jugement moralisateur ou du gatekeeping
    • C’est plutôt une sensibilité européenne
  • C’est exactement le niveau de détail que je cherchais. J’ai déjà pas mal d’expérience en deep learning et avec pytorch, donc je n’ai pas envie de voir cette partie réimplémentée depuis zéro.
    Les ressources d’Andrej sont trop bas niveau pour moi, et j’ai tendance à me perdre dans les détails. Ce n’est pas une critique, plutôt un commentaire qui peut aider des personnes dans une situation similaire à la mienne
  • Excellent. Pas plus tard qu’hier, je me demandais comment fonctionnent exactement les transformers/l’attention et les LLM.
    Il y a longtemps, j’avais suivi le fonctionnement de la rétropropagation dans des RNN profonds, donc je me disais que le reste serait aussi intéressant à regarder
    • Si vous voulez développer votre intuition, les vidéos de 3b1b l’expliquent assez bien. Elles n’entrent toutefois pas dans les détails les plus fins
  • Bien. Ce serait bien que ça fonctionne aussi sous Windows 11.
    Quand Windows n’est pas mentionné explicitement, je constate souvent que l’environnement n’a pas été testé et que ça marche mal pour toutes sortes de raisons
    • Sous WSL2, on peut accéder au GPU, donc ça devrait fonctionner sans problème. Il ne faut pas oublier d’installer le Cuda toolkit, et NVidia en fournit aussi un spécialement pour WSL2
      https://developer.nvidia.com/cuda-downloads?target_os=Linux&...
    • Si ça ne marche pas sous Windows 11, essayer avec WSL (Windows Subsystem for Linux) peut être une option
  • Cette page n’est en fait guère plus qu’un conteneur pour une vidéo YouTube. Comme la description de la page contient les mêmes liens, il vaudrait mieux modifier le lien HN pour qu’il pointe directement vers la vidéo
    • Au contraire, ça évite une étape supplémentaire pour trouver le dépôt des articles de Sebastian Raschka
    • Il partage beaucoup de vidéos et de code, et ses ressources ont vraiment une grande valeur. Pourquoi ne pas simplement soutenir le créateur ?
    • Y a-t-il une raison de ne pas soutenir le site de l’auteur lui-même ? Le site a l’air bien aussi