Petits LLM (7B et inférieurs), prêts à être mis en production pour un ensemble diversifié de tâches utiles.
Tâches prises en charge : Paraphraser, Changer le ton d'un passage, Générer un résumé et un sujet à partir d'un dailogue, Récupération augmentée QA (WIP) .
Nous affinons les LoRA sur des modèles quantifiés 3B et 7B. Le modèle 3B est affiné sur des tâches spécifiques, tandis que le modèle 7B est affiné sur toutes les tâches.
L'objectif est de pouvoir affiner et utiliser tous ces modèles sur un matériel grand public très modeste.
pip install llm-toys
Peut ne pas fonctionner sans un GPU compatible CUDA
Si vous rencontrez "La version installée de bitsandbytes a été compilée sans support GPU" avec bitsandbytes, regardez ici bitsandbytes-foundation/bitsandbytes#112
ou essaye
cp <chemin_vers_votre_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so <chemin_vers_votre_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
Notez que nous utilisons les packages transformers et peft du répertoire source, pas le package installé. La quantification bits et octets 4 bits ne fonctionnait qu'avec la branche principale des transformateurs et du peft. Une fois la version 4.31.0 des transformateurs et la version 0.4.0 de peft publiées sur pypi, nous utiliserons la version publiée.
Modèle | Taille | Tâches | Colab |
---|---|---|---|
llm-toys/RedPajama-INCITE-Base-3B-v1-paraphrase-tone | 3B | Paraphrase, changement de ton | Carnet de notes |
llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic | 3B | Résumé du dialogue et génération de sujets | Carnet de notes |
llm-toys/falcon-7b-paraphrase-tone-dialogue-summary-topic | 7B | Paraphrase, changement de ton, résumé du dialogue et génération de sujets | Carnet de notes |
from llm_toys . tasks import Paraphraser
paraphraser = Paraphraser ()
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" )
# "Could you kindly assist me in canceling my previous order?"
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "casual" )
# "Hey, could you help me cancel my order?"
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "professional" )
# "I would appreciate guidance on canceling my previous order."
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "witty" )
# "Hey, I need your help with my last order. Can you wave your magic wand and make it disappear?"
from llm_toys . tasks import SummaryAndTopicGenerator
summary_topic_generator = SummaryAndTopicGenerator ()
summary_topic_generator . generate_summary_and_topic (
"""
#Person1#: I'm so excited for the premiere of the latest Studio Ghibli movie!
#Person2#: What's got you so hyped?
#Person1#: Studio Ghibli movies are pure magic! The animation, storytelling, everything is incredible.
#Person2#: Which movie is it?
#Person1#: It's called "Whisper of the Wind." It's about a girl on a magical journey to save her village.
#Person2#: Sounds amazing! I'm in for the premiere.
#Person1#: Great! We're in for a visual masterpiece and a heartfelt story.
#Person2#: Can't wait to be transported to their world.
#Person1#: It'll be an unforgettable experience, for sure!
""" . strip ()
)
# {"summary": "#Person1# is excited for the premiere of the latest Studio Ghibli movie.
# #Person1# thinks the animation, storytelling, and heartfelt story will be unforgettable.
# #Person2# is also excited for the premiere.",
# "topic": "Studio ghibli movie"}
from llm_toys . tasks import GeneralTaskAssitant
from llm_toys . config import TaskType
gta = GeneralTaskAssitant ()
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" )
# "Could you assist me in canceling my previous order?"
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "casual" )
# "Hey, can you help me cancel my last order?"
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "professional" )
# "I would appreciate if you could assist me in canceling my previous order."
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "witty" )
# "Oops! Looks like I got a little carried away with my shopping spree. Can you help me cancel my last order?"
chat = """
#Person1#: I'm so excited for the premiere of the latest Studio Ghibli movie!
#Person2#: What's got you so hyped?
#Person1#: Studio Ghibli movies are pure magic! The animation, storytelling, everything is incredible.
#Person2#: Which movie is it?
#Person1#: It's called "Whisper of the Wind." It's about a girl on a magical journey to save her village.
#Person2#: Sounds amazing! I'm in for the premiere.
#Person1#: Great! We're in for a visual masterpiece and a heartfelt story.
#Person2#: Can't wait to be transported to their world.
#Person1#: It'll be an unforgettable experience, for sure!
""" . strip ()
gta . complete ( TaskType . DIALOGUE_SUMMARY_TOPIC , chat )
# {"summary": "#Person1# tells #Person2# about the upcoming Studio Ghibli movie.
# #Person1# thinks it's magical and #Person2#'s excited to watch it.",
# "topic": "Movie premiere"}
Paraphrase et changement de ton : contient des passages et leurs versions paraphrasées ainsi que le passage dans différents tons comme décontracté, professionnel et plein d'esprit. Habitué aux modèles pour reformuler et changer le ton d'un passage. Les données ont été générées à l'aide de gpt-35-turbo. Un petit échantillon de passages de formation a également été récupéré à partir des questions quora et des ensembles de données squad_2.
Génération de résumé et de sujet de dialogue : contient les dialogues, leur résumé et leur sujet. Les données de formation représentent environ 1 000 enregistrements provenant de la répartition de formation de l'ensemble de données Dialogsum. Il contient également environ 20 échantillons de la division de développement. Les points de données comportant des résumés et des sujets plus longs ont été prioritaires dans l'échantillonnage. Notez que certains (environ 30) sujets ont été modifiés manuellement dans les données de formation finales, car le sujet original étiqueté n'était qu'un mot et pas assez descriptif.
Pour regarder toutes les options
python llm_toys/train.py --help
Pour former un modèle de paraphrase et de changement de ton
python llm_toys/train.py
--task_type paraphrase_tone
--model_name meta-llama/Llama-2-7b
--max_length 128
--batch_size 8
--gradient_accumulation_steps 1
--learning_rate 1e-4
--num_train_epochs 3
--eval_ratio 0.05
En-cours
L'évaluation est effectuée sur 500 enregistrements issus de la répartition du test Dialogsum.
# llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic
{ "rouge1" : 0.453 , "rouge2" : 0.197 , "rougeL" : 0.365 , "topic_similarity" : 0.888 }
# llm-toys/falcon-7b-paraphrase-tone-dialogue-summary-topic
{ 'rouge1' : 0.448 , 'rouge2' : 0.195 , 'rougeL' : 0.359 , 'topic_similarity' : 0.886 }