Kleine (7B und niedriger), produktionsbereite, fein abgestimmte LLMs für eine Vielzahl nützlicher Aufgaben.
Unterstützte Aufgaben: Paraphrasieren, Ändern des Tons einer Passage, Zusammenfassung und Themengenerierung aus einem Dialog, Abruf der erweiterten Qualitätssicherung (WIP) .
Wir optimieren LoRAs anhand quantisierter 3B- und 7B-Modelle. Das 3B-Modell ist auf bestimmte Aufgaben abgestimmt, während das 7B-Modell auf alle Aufgaben abgestimmt ist.
Ziel ist es, alle diese Modelle auf einer sehr bescheidenen Consumer-Hardware zu optimieren und zu verwenden.
pip install llm-toys
Funktioniert möglicherweise nicht ohne eine CUDA-fähige GPU
Wenn bei Bitsandbytes die Meldung „Die installierte Version von Bitsandbytes wurde ohne GPU-Unterstützung kompiliert“ auftritt, schauen Sie hier nach: bitsandbytes-foundation/bitsandbytes#112
oder versuchen
cp <path_to_your_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so <path_to_your_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
Beachten Sie, dass wir die Transformer- und Peft-Pakete aus dem Quellverzeichnis verwenden, nicht das installierte Paket. Die 4-Bit-Bitsandbytes-Quantisierung funktionierte nur mit dem Hauptzweig von Transformern und Peft. Sobald die Transformers-Version 4.31.0 und die Peft-Version 0.4.0 auf Pypi veröffentlicht sind, werden wir die veröffentlichte Version verwenden.
Modell | Größe | Aufgaben | Colab |
---|---|---|---|
llm-toys/RedPajama-INCITE-Base-3B-v1-paraphrase-tone | 3B | Paraphrasieren, Tonwechsel | Notizbuch |
llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic | 3B | Dialogzusammenfassung und Themengenerierung | Notizbuch |
llm-toys/falcon-7b-paraphrase-tone-dialogue-summary-topic | 7B | Paraphrasieren, Tonwechsel, Dialogzusammenfassung und Themengenerierung | Notizbuch |
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"}
Paraphrasierung und Tonwechsel: Enthält Passagen und ihre paraphrasierten Versionen sowie die Passage in verschiedenen Tonarten wie lässig, professionell und witzig. Wird als Modell zum Umformulieren und Ändern des Tons einer Passage verwendet. Die Daten wurden mit gpt-35-turbo generiert. Eine kleine Auswahl an Trainingspassagen wurde auch aus Quora-Fragen und Squad_2-Datensätzen entnommen.
Dialogzusammenfassung und Themengenerierung: Enthält Dialoge und deren Zusammenfassung und Thema. Die Trainingsdaten bestehen aus ca. 1.000 Datensätzen aus der Trainingsaufteilung des Dialogsum-Datensatzes. Es enthält außerdem ca. 20 Beispiele aus der Entwicklungsaufteilung. Datenpunkten mit längeren Zusammenfassungen und Themen wurde bei der Stichprobe Vorrang eingeräumt. Beachten Sie, dass einige (ca. 30) Themen in den endgültigen Trainingsdaten manuell bearbeitet wurden, da die ursprüngliche Bezeichnung „Thema“ nur ein Wort war und nicht beschreibend genug.
Um alle Optionen anzusehen
python llm_toys/train.py --help
Ein Paraphrasierungs- und Tonwechselmodell trainieren
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
In Bearbeitung
Die Auswertung erfolgt anhand von 500 Datensätzen aus dem Dialogsum-Testsplit.
# 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 }