落ち着きのないアンドレイ・カルパシーには新しいプロジェクトがあります! ここ数日間、OpenAI は非常に活発でした。まず、AI の第一人者である Andrej Karpathy が正式に辞任を発表し、次にビデオ生成モデル Sora が AI 界を震撼させました。 OpenAIからの離脱を発表した後、カルパシーは「今週は休める」とツイートした 86972512239665
この何もすることがない状態はマスクも羨ましい(うらやましい) )。
しかし、もしカルパシーがしばらく休暇を取るだろうと本当に思っているなら、それは少し「若すぎて、あまりにもナビゲート的」です。 いいえ、鋭い目のネチズンが Karpathy の新しいプロジェクトである
minbpe を発見しました。これは、LLM ワード セグメンテーションで一般的に使用される BPE (バイト ペア エンコーディング、バイト ペア エンコーディング) アルゴリズム用の最小限でクリーンで教育的なアルゴリズムの作成に特化しています。コード
わずか 1 日で、このプロジェクトの GitHub スターは 1.2k に達しました。
誰かが、カルパシー「coみんなにたくさん食べさせてくれた」
カルパシーが戻ってきた、と歓声を上げる人もいました。
画像出典:https://twitter.com/fouriergalois/status/1758775281391677477
「minbpe」プロジェクトで具体的にどのようなことが語られているのか見てみましょう。 Adresse GitHub : https://github.com/karpathy/minbpeNous savons que l'algorithme BPE est "au niveau de l'octet" et fonctionne sur des chaînes encodées en UTF-8. L'algorithme est généralisé dans les grands modèles de langage (LLM) via l'article GPT-2 et le code associé à GPT-2. De nos jours, tous les LLM modernes (tels que GPT, Llama, Mistral) utilisent l'algorithme BPE pour former leurs tokenizers. Le référentiel du projet minbpe de Karpathy fournit deux Tokenizers, qui peuvent tous deux exécuter les 3 fonctions principales du tokenizer : 1) entraîner le vocabulaire du tokenizer et le fusionner dans le texte spécifié, 2) encoder du texte en jeton, 3) décoder du jeton au texte. Les fichiers détaillés du référentiel sont les suivants :
- minbpe/base.py : implémente la classe Tokenizer, qui est la classe de base. Il comprend des modules de formation, d'encodage et de décodage, des fonctions de sauvegarde/chargement et certaines fonctions utilitaires courantes. Cependant, cette classe ne doit pas être utilisée directement, mais héritée.
- minbpe/basic.py : Implémente BasicTokenizer, l'implémentation la plus simple de l'algorithme BPE qui opère directement sur le texte.
- minbpe/regex.py : implémente RegexTokenizer, qui divise davantage le texte saisi en modèles d'expressions régulières. En tant qu'étape de prétraitement, il divise le texte saisi en catégories (par exemple lettres, chiffres, ponctuation) avant la segmentation des mots. Cela garantit qu’aucune fusion au-delà des limites des catégories ne se produit. Il a été introduit dans l'article GPT-2 et continue d'être utilisé dans GPT-4.
- minbpe/gpt4.py : implémentez GPT4Tokenizer. Cette classe est un package léger de RegexTokenizer, qui reproduit avec précision la segmentation de mots GPT-4 dans la bibliothèque tiktoken (artefact de segmentation de mots open source OpenAI). Le wrapper gère certains détails sur la restauration d'une fusion précise dans le tokenizer et gère certaines permutations de jetons de 1 octet. Il convient de noter que le contrôle de parité n’est pas entièrement terminé et qu’aucun token spécial n’a été traité.
Le script train.py entraîne les deux principaux tokenizers sur le texte d'entrée tests/taylorswift.txt et enregistre le vocabulaire sur le disque pour la visualisation. Karpathy dit que le script prend environ 25 secondes pour s'exécuter sur son MacBook (M1). Karpathy a également déclaré que tous les documents sont très courts et bien commentés et incluent des exemples d'utilisation. Vous trouverez ci-dessous un exemple de reproduction de l'article Wikipédia du BPE. from minbpe import BasicTokenizertokenizer = BasicTokenizer()text = "aaabdaaabac"tokenizer.train(text, 256 + 3) # 256 are the byte tokens, then do 3 mergesprint(tokenizer.encode(text))# [258, 100, 258, 97, 99]print(tokenizer.decode([258, 100, 258, 97, 99]))# aaabdaaabactokenizer.save("toy")# writes two files: toy.model (for loading) and toy.vocab (for viewing)
Copier après la connexion
Fournit également comment implémenter GPT4Tokenizer et comment il se compare à tiktoken. text = "hello123!!!? (안녕하세요!) ?"# tiktokenimport tiktokenenc = tiktoken.get_encoding("cl100k_base")print(enc.encode(text))# [15339, 4513, 12340, 30, 320, 31495, 230, 75265, 243, 92245, 16715, 57037]# oursfrom minbpe import GPT4Tokenizertokenizer = GPT4Tokenizer()print(tokenizer.encode(text))# [15339, 4513, 12340, 30, 320, 31495, 230, 75265, 243, 92245, 16715, 57037]
Copier après la connexion
Bien sûr, Karpathy ne se contente pas de lancer le projet GitHub, il a dit que la vidéo serait bientôt publiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!