Permettez-moi de commencer par dire que je ne veux pas offenser les créateurs de grands modèles linguistiques (LLM), les outils pour les évaluer, ou les individus/organisations qui les classent et créent des classements. En tant que nouveau venu dans cet écosystème, je suis redevable de votre travail et reconnaissant que le chemin m'ait été facilité pour accomplir des tâches qui seraient autrement laborieuses.
De toute évidence, mon prochain article doit explorer diverses méthodes de classement des modèles, pour obtenir un peu plus de détails sur le fonctionnement des évaluations.
Si vous n'avez pas lu mon article précédent PrivateGPT pour la synthèse de livres : tests et classement des variables de configuration , vous trouverez peut-être utile de le consulter, car j'ai défini les termes et expliqué les moyens par lesquels je suis parvenu à diverses pratiques et croyances.
Si vous avez lu cet article, vous saurez que j'affine depuis quelques mois mes processus en utilisant les Grands Modèles Langageux (LLM) dans le but de résumer des livres. J'ai mesuré une série de paramètres, notamment des modèles d'invites, des invites système, des invites utilisateur, etc.
À partir de cette série préliminaire de classements de modèles et de collecte de données sur l'utilisation des variables de configuration, j'ai trouvé que mistral-7b-instruct-v0.2.Q8_0.gguf produisait des notes à puces de la plus haute qualité, et j'en recherchais une pour la surpasser, qui s'adapte sur mon 12 Go 3060, depuis.
Pour ce classement, j'utilise cette base de connaissances pour évaluer une variété de principaux modèles 7b. Cette fois, j'utilise Ollama , car je le trouve plus simple à utiliser et assez performant.
J'ai choisi les modèles suivants parce que je les ai trouvés au-dessus du Mistral 7b Instruct 0.2 dans divers classements, ou parce qu'ils étaient autoproclamés meilleurs 7b. (modèles de chat testés entre parenthèses)
openchat-3.5-0106.Q8_0.gguf (OpenChat)
tuba-mistral-pairrm-dpo.Q8_0.gguf (Mistral)
dauphin-2.6-mistral-7b.Q8_0.gguf (Mistral)
supermario-v2.Q8_0.gguf (ChatML)
openhermes-2.5-mistral-7b.Q8_0.gguf (ChatML)
openhermes-2.5-neural-chat-7b-v3-1-7b.Q8_0.gguf (ChatML)
openhermes-2.5-neural-chat-v3-3-slerp.Q8_0.gguf (ChatML)
WestLake-7B-v2-Q8_0.gguf (ChatML, Mistral)
MBX-7B-v3-DPO.q8_0.gguf (ChatML, Mistral)
neuralbeagle14-7b.q8_0.gguf (ChatML, Mistral)
omnibeagle-7b-q8_0.gguf (ChatML, Mistral)
Pour certains modèles, pour lesquels je n'obtenais pas les résultats souhaités, car ils sont pour la plupart dérivés de Mistral, j'ai testé le modèle Mistral même s'ils répertorient ChatML comme entrée préférée.
Rédigez des notes à puces complètes résumant le texte suivant, avec les titres, les termes et les concepts clés en gras.\n\nTEXTE :
Bien que GPT3.5 ne soit pas ma référence personnelle, il s'agit en quelque sorte d'une norme industrielle et je m'attendrais à ce qu'il produise de meilleurs résultats que la plupart des GGUF 7b Q8.
Bien qu'il n'y ait pas de concepts clés de termes en gras, les titres sont en gras et, dans l'ensemble, cela est assez facile à lire par rapport aux blocs de paragraphes. De plus, le fait que nous trouvions ou non des termes en gras peut dépendre du texte saisi lui-même, où un résumé à puces doit toujours inclure des titres en gras.
Je vois cela comme une tâche fondamentale pour tout modèle Instruct. Idéalement, les développeurs entraîneront leurs modèles pour générer ces types de notes à puces idéales. J'ai des tonnes de données, avec certains livres déjà formés, mais il est relativement simple de générer ces notes pour un livre (en utilisant Mistral 7b Instruct 0.2 avec le texte sémantiquement découpé, à la main, en parties inférieures à 2,5 000 jetons chacune).
S'il s'agit d'un livre de 300 à 600 pages, cela peut généralement être réalisé en une seule journée, y compris le pré et le post-traitement.
Finalement, je pourrais expérimenter quelques ajustements pour tenter d'améliorer moi-même leurs capacités.
Auparavant, j'essayais de donner une note à chaque classement. C'est vraiment difficile de donner une note chiffrée. À l'avenir, je pense que j'essaierai d'obtenir un LLM pour classer les résumés. Cette fois, je vais simplement laisser un commentaire sur les points faibles et ce que j'aime, sans donner de note numérique à chaque modèle.
J'ai testé chacun des modèles suivants sur un seul chapitre de livre, divisé en 6 morceaux de 1 900 à 3 000 jetons chacun. Je partagerai un exemple représentatif de sortie de chacun, et les données complètes seront disponibles sur GitHub, comme toujours.
Je suis sûr que vous réalisez maintenant que, à mon avis, Mistral a le 7b à battre.
Ollama dispose d'une fonctionnalité qui vous permet de saisir l'emplacement du modèle, le modèle et les paramètres dans un fichier modèle, qu'il utilise pour enregistrer une copie de votre LLM en utilisant la configuration spécifiée. Cela facilite la démonstration de différents modèles sans avoir à toujours s'occuper des paramètres.
J'ai gardé les paramètres les mêmes pour tous les modèles, à l'exception du modèle de chat, mais je partagerai avec vous le modèle que j'utilise pour chacun, afin que vous puissiez voir précisément comment j'utilise le modèle. Vous pouvez me faire savoir si j'obtiendrais de meilleurs résultats avec les modèles suivants en utilisant un fichier modèle configuré différemment.
TEMPLATE """ <s></s>[INST] {{ .Prompt }} [/INST] """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Je ne dirai pas que Mistral le fait parfaitement à chaque fois, mais le plus souvent, c'est mon résultat. Et si vous regardez la réponse GPT3.5, vous conviendrez peut-être que c'est mieux.
J'ai été agréablement surpris par le 0106 d'OpenChat . Voici un modèle qui prétend avoir le meilleur modèle 7b, et qui est au moins compétitif avec le Mistral 7b.
TEMPLATE """ GPT4 Correct User: {{ .Prompt }}<|end_of_turn|>GPT4 Correct Assistant: """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Dans ce petit échantillon, il a donné des titres en gras 4/6 fois. Plus tard, je l'examinerai avec tous les autres principaux concurrents en utilisant une analyse plus détaillée.
Évidemment, je suis partial ici, car Snorkel a été formé sur Mistral 7b Instruct 0.2. Quoi qu’il en soit, je suis prudemment optimiste et j’attends avec impatience d’autres versions de Snorkel.ai .
TEMPLATE """ <s></s>[INST] {{ .Prompt }} [/INST] """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
4/6 de ces résumés sont parfaits, mais d'autres contiennent des irrégularités telles que des listes très longues de termes et de titres clés au lieu de simplement les mettre en gras dans le cadre du résumé.
Voici un autre dérivé du mistral très apprécié.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
C'est un autre modèle décent qui est presque aussi bon que le Mistral 7b Instruct 0.2. Trois résumés sur six présentaient un format approprié et des titres en gras, un autre avait un bon format sans gras, mais 2/6 étaient de mauvaise forme.
Ce modèle est très populaire, à la fois dans les classements et parmi « le peuple » dans les discussions Discord non associées. Je voudrais qu'il soit leader dans ce classement, mais ce n'est tout simplement pas le cas.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
3 résultats sur 6 produisent une structure appropriée, mais pas de texte en gras. L’un d’eux a à la fois une structure et un texte en gras. Les deux autres avaient des blocs de texte plus gros et une structure médiocre.
J'ai également essayé quelques dérivés de haut rang d'OpenHermes 2.5 Mistral pour voir si je pouvais obtenir de meilleurs résultats. Malheureusement, ce n’était pas le cas.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Aucun de ces résultats n’était souhaitable.
Quoi qu’ils aient fait, ces dérivés n’ont pas amélioré l’original.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
C'est de pire en pire à chaque nouvelle version !
Je n'attendais pas grand-chose de Mario, mais cela semble prometteur. Pendant ce temps, les V3 et V4 sont disponibles, mais je n'ai pas encore trouvé de GGUF pour celles-ci.
TEMPLATE """ <|im_start|>system You are a helpful AI writing assistant.<|im_end|> <|im_start|>user {{ .Prompt }} <|im_end|> <|im_start|>assistant {{ .Response }}<|im_end|> """ PARAMETER num_ctx 8000 PARAMETER num_gpu -1 PARAMETER num_predict 4000
Son premier résultat était trompeusement bon. Cependant, chacun des résumés suivants s’écarte du modèle souhaité. Je serai à l'affût des GGUF des versions les plus récentes. Vous pouvez voir ici que nous avons des blocs de paragraphes avec un titre initial en gras. Pas vraiment ce que j'avais demandé.
J'aurais aimé avoir de meilleures nouvelles à partager. Mon titre idéal est qu'il existe une abondance de modèles leaders qui produisent des résultats de qualité lors de la création de résumés complets de notes à puces, et il m'est tellement difficile de choisir parmi eux. Malheureusement, ce n'est pas le cas.
Peut-être qu'ils surpassent Mistral 0.2 dans leur forme complète mais ne sont à la traîne qu'au format GGUF ? Je pense qu'il est fort probable qu'aucune de nos évaluations existantes ne cible ce type de résultat, mais je dirais certainement que c'est une tâche que tout modèle gguf 7b de premier plan devrait être capable de gérer.
Une autre chose à considérer est que Mistral 7b Instruct v0.2 est sorti peu de temps après Mixtral, au milieu d'une grande fanfare. Je pense que cette version est passée sous le radar. En fait, bon nombre des modèles « principaux » que j'ai examinés sont basés sur le Mistral 0,1.
Peut-être que les choses changeront et que le monde se rendra compte que leurs meilleurs modèles ne peuvent toujours pas surpasser Mistral ? Là encore, peut-être que tous ces modèles sont vraiment bons pour toutes les autres tâches que je ne demande pas.
J'ai des données, j'ai un pipeline et j'ai un besoin infini de créer des résumés de notes à puces. Si vous souhaitez travailler avec moi, contactez-moi.
Vous êtes également invités à consulter mon GitHub, à vérifier les données et à essayer votre propre version de cette expérience. Je suis heureux d'avoir tort.