Skip to main content

llm-toys

Code style: black py_versions

Small(7B and below), production-ready finetuned LLMs for a diverse set of useful tasks.

Supported tasks: Paraphrasing, Changing the tone of a passage, Summary and Topic generation from a dailogue, Retrieval augmented QA(WIP).

We finetune LoRAs on quantized 3B and 7B models. The 3B model is finetuned on specific tasks, while the 7B model is finetuned on all the tasks.

The goal is to be able to finetune and use all these models on a very modest consumer grade hardware.

Installation

pip install llm-toys

Note that we are using the transformers and peft packages from the source directory, not the installed package. 4bit bitsandbytes quantization was only working with the main brach of transformers and peft. Once transformers version 4.31.0 and peft version 0.4.0 is published to pypi we will use the published version.

Usage

Task specific 3B models

Paraphrasing

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?"

Tone change

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?"

Dialogue Summary and Topic generation

from llm_toys.tasks import SummaryAndTopicGenerator

summary_theme_generator = SummaryAndTopicGenerator()
summary_theme_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"}

General 7B model

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"}

Training

Data

  • Paraphrasing and Tone change: Contains passages and their paraphrased versions as well as the passage in different tones like casual, professional and witty. Used to models to rephrase and change the tone of a passage. Data was generated using gpt-35-turbo. A small sample of training passages have also been picked up from quora quesions and squad_2 datasets.

  • Dialogue Summary and Topic generation: Contains Dialogues and their Summary and Topic. The training data is ~1k records from the training split of the Dialogsum dataset. It also contains ~20 samples from the dev split. Data points with longer Summaries and Topics were given priority in the sampling. Note that some(~30) topics were edited manually in final training data as the original labeled Topic was just a word and not descriptive enough.

Evaluation

Paraphrasing and Tone change

WIP

Dialogue Summary and Topic generation

Evaluation is done on 500 records from the Dialogsum test split.

# 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}

Roadmap

  • Add tests.
  • Ability to switch the LoRAs(for task wise models) without re-initializing the backbone model and tokenizer.
  • Retrieval augmented QA.
  • Explore the generalizability of 3B model across more tasks.
  • Explore even smaller models.
  • Evaluation strategy for tasks where we don"t have a test/eval dataset handy.

Metadata

Release files for llm-toys 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llm-toys 0.1.1
File Size Uploaded Provenance
llm-toys-0.1.1.tar.gz 6.2 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for llm-toys 0.1.1
File Interpreter ABI Platform
llm_toys-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 13.6 MB

Release files / llm-toys-0.1.1.tar.gz

Download URL llm-toys-0.1.1.tar.gz
Size 6.2 MB
Tags Source
SHA-256 checksum
How to use checksums
ee2073ed21afd8d5d37d7e33955565db28e5cb152a8f9f4d8f6de0eae70cb52c
BLAKE2b-256 checksum
How to use checksums
1c71bdf21072875cba7b19998fa103eae67c5478f130754b879cefcecb59ae73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.10

Release files / llm_toys-0.1.1-py3-none-any.whl

Download URL llm_toys-0.1.1-py3-none-any.whl
Size 7.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
b726db848d04fe14112ff4d2b5eaea6bf27b9330b2ca7dee454572c039d2772b
BLAKE2b-256 checksum
How to use checksums
f2d79bc709f7fa73309d83363f535dad73513c8b7346857e801c32b2b20d80bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.10

Security for llm-toys 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page