Skip to main content

Seamless integration of tasks with huggingface models

Project description

tasknet

tasknet is an interface between Huggingface datasets and Huggingface Trainer.

Task templates

tasknet relies on task templates to avoid boilerplate codes. The task templates are correspond to Transformers AutoClasses:

  • SequenceClassification
  • TokenClassification
  • MultipleChoice

The task templates follow the same interface. They implement preprocess_function and compute_metrics. Look at tasks.py and use existing templates as a starting point to implement a custom task template.

Instanciating a task

Each task template is associated with specific fields. Classification has two text fields s1,s2, and a label y. Pass a dataset to a template, and fill-in the mapping between the dataset fields and the template fields to instanciate a task.

import tasknet as tn
from datasets import load_dataset

rte = tn.Classification(
    dataset=load_dataset("glue", "rte"),
    s1="sentence1", s2="sentence2", y="label"
)

class args:
  model_name='roberta-base'
  learning_rate = 3e-5 # see https://huggingface.co/docs/transformers/v4.24.0/en/main_classes/trainer#transformers.TrainingArguments

 
tasks = [rte]
model = tn.Model(tasks, args)
trainer = tn.Trainer(model, tasks, args)
trainer.train()

As you can see, tasknet is multitask by design. It works with list of tasks and the model creates a task_models_list attribute.

Installation

pip install tasknet

Additional examples:

Colab:

https://colab.research.google.com/drive/15Xf4Bgs3itUmok7XlAK6EEquNbvjD9BD?usp=sharing

tasknet vs jiant

jiant is another library comparable to tasknet. tasknet is a minimal extension of Trainer centered on task templates, while jiant builds a custom analog of Trainer from scratch called runner. tasknet is leaner and easier to extend. jiant is config-based while tasknet is designed for interative use and scripting.

Credit

This code uses some part of the examples of the transformers library and some code from multitask-learning-transformers.

Contact

You can request features on github or reach me at damien.sileo@inria.fr

@misc{sileod21-tasknet,
  author = {Sileo, Damien},
  doi = {10.5281/zenodo.561225781},
  month = {11},
  title = {{tasknet, multitask interface between Trainer and datasets}},
  url = {https://github.com/sileod/tasknet},
  version = {1.5.0},
  year = {2022}}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tasknet-1.11.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

tasknet-1.11.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file tasknet-1.11.0.tar.gz.

File metadata

  • Download URL: tasknet-1.11.0.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for tasknet-1.11.0.tar.gz
Algorithm Hash digest
SHA256 0432bf3ebfe36f7582ae7d7f01029229dd00c2d1d625795a59c97b19468613f0
MD5 45299f034eefc19d4a20f94d869ca5ff
BLAKE2b-256 6691c809cec6a311a9e2525c4f7489853e1743ef193f877742ae64e2e2029e8f

See more details on using hashes here.

Provenance

File details

Details for the file tasknet-1.11.0-py3-none-any.whl.

File metadata

  • Download URL: tasknet-1.11.0-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for tasknet-1.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b9f25a353aefbab06d1797fe0b03e2f680e5bd3b61b30eba1652afcef175e0f
MD5 0309230b49f7c5455a8998d223b4b3f5
BLAKE2b-256 c384c9ebb18d312901565d5e061ef671c7a8986fda8a167d91610874db5ab53b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page