LLM pequeños (7B y menos), listos para producción y ajustados para un conjunto diverso de tareas útiles.
Tareas admitidas: parafrasear, cambiar el tono de un pasaje, generar resumen y temas a partir de un diálogo, Recuperación de control de calidad aumentado (WIP) .
Ajustamos los LoRA en modelos cuantificados 3B y 7B. El modelo 3B se ajusta a tareas específicas, mientras que el modelo 7B se ajusta a todas las tareas.
El objetivo es poder ajustar y utilizar todos estos modelos en un hardware de consumo muy modesto.
pip install llm-toys
Puede que no funcione sin una GPU habilitada para CUDA
Si encuentra "La versión instalada de bitsandbytes fue compilada sin soporte de GPU" con bitsandbytes, mire aquí bitsandbytes-foundation/bitsandbytes#112
o intentar
cp <ruta_a_su_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so <ruta_a_su_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
Tenga en cuenta que estamos utilizando los paquetes transformadores y peft del directorio fuente, no el paquete instalado. La cuantificación de bits y bytes de 4 bits solo funcionaba con la rama principal de transformadores y peft. Una vez que la versión 4.31.0 de Transformers y la versión 0.4.0 de Peft se publiquen en pypi, usaremos la versión publicada.
Modelo | Tamaño | Tareas | colaboración |
---|---|---|---|
llm-toys/RedPajama-INCITE-Base-3B-v1-parafraseando-tono | 3B | Parafraseo, cambio de tono | Computadora portátil |
llm-toys/RedPajama-INCITE-Base-3B-v1-diálogo-resumen-tema | 3B | Resumen del diálogo y generación de temas. | Computadora portátil |
llm-toys/falcon-7b-paráfrasis-tono-diálogo-resumen-tema | 7B | Parafraseo, cambio de tono, resumen de diálogo y generación de tema | Computadora portátil |
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"}
Parafraseo y cambio de tono: Contiene pasajes y sus versiones parafraseadas, así como el pasaje en diferentes tonos como casual, profesional e ingenioso. Se utiliza para modelar para reformular y cambiar el tono de un pasaje. Los datos se generaron utilizando gpt-35-turbo. También se ha recogido una pequeña muestra de pasajes de formación de las preguntas de quora y de los conjuntos de datos de squad_2.
Resumen de diálogo y generación de temas: Contiene diálogos y su resumen y tema. Los datos de entrenamiento son ~1k registros de la división de entrenamiento del conjunto de datos de Dialogsum. También contiene ~20 muestras de la división de desarrollo. En el muestreo se dio prioridad a los puntos de datos con resúmenes y temas más extensos. Tenga en cuenta que algunos (~30) temas se editaron manualmente en los datos de capacitación finales, ya que el tema original etiquetado era solo una palabra y no era lo suficientemente descriptivo.
Para mirar todas las opciones
python llm_toys/train.py --help
Entrenar un modelo de paráfrasis y cambio de tono.
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
WIP
La evaluación se realiza en 500 registros de la división de prueba de 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 }