LLMs pequenos (7B e abaixo), prontos para produção e ajustados para um conjunto diversificado de tarefas úteis.
Tarefas suportadas: Parafrasear, alterar o tom de uma passagem, gerar resumo e tópico a partir de um diálogo, Controle de qualidade aumentado de recuperação (WIP) .
Ajustamos LoRAs em modelos quantizados 3B e 7B. O modelo 3B é ajustado em tarefas específicas, enquanto o modelo 7B é ajustado em todas as tarefas.
O objetivo é ser capaz de ajustar e usar todos esses modelos em um hardware de consumo muito modesto.
pip install llm-toys
Pode não funcionar sem uma GPU habilitada para CUDA
Se você encontrar "A versão instalada do bitsandbytes foi compilada sem suporte de GPU" com bitsandbytes, veja aqui bitsandbytes-foundation/bitsandbytes#112
ou tente
cp <caminho_para_seu_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so <caminho_para_seu_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
Observe que estamos usando os pacotes transformers e peft do diretório de origem, não o pacote instalado. A quantização de bits e bytes de 4 bits estava funcionando apenas com o ramo principal de transformadores e peft. Assim que os transformadores versão 4.31.0 e peft versão 0.4.0 forem publicados no pypi, usaremos a versão publicada.
Modelo | Tamanho | Tarefas | Colab |
---|---|---|---|
llm-toys/RedPajama-INCITE-Base-3B-v1-paraphrase-tone | 3B | Parafraseando, mudança de tom | Caderno |
llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic | 3B | Resumo do diálogo e geração de tópicos | Caderno |
llm-toys/falcon-7b-paráfrase-tom-diálogo-resumo-tópico | 7B | Paráfrase, mudança de tom, resumo do diálogo e geração de tópicos | Caderno |
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"}
Paráfrase e mudança de tom: Contém passagens e suas versões parafraseadas, bem como a passagem em tons diferentes como casual, profissional e espirituoso. Usado para modelos para reformular e alterar o tom de uma passagem. Os dados foram gerados usando gpt-35-turbo. Uma pequena amostra de passagens de treinamento também foi coletada de perguntas de quora e conjuntos de dados squad_2.
Resumo do Diálogo e Geração de Tópico: Contém Diálogos e seu Resumo e Tópico. Os dados de treinamento são aproximadamente 1k registros da divisão de treinamento do conjunto de dados Dialogsum. Ele também contém cerca de 20 amostras da divisão de desenvolvimento. Os pontos de dados com Resumos e Tópicos mais longos tiveram prioridade na amostragem. Observe que alguns (cerca de 30) tópicos foram editados manualmente nos dados de treinamento finais, pois o tópico original rotulado era apenas uma palavra e não era descritivo o suficiente.
Para ver todas as opções
python llm_toys/train.py --help
Para treinar um modelo de paráfrase e mudança de tom
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
A avaliação é feita em 500 registros da divisão de teste do 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 }