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.9.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

tasknet-1.9.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tasknet-1.9.0.tar.gz
Algorithm Hash digest
SHA256 2a651177c87903aa9b78fce45e753a7ecac310b1c491c1b9c7c33ff0724e382b
MD5 cc3f86487118dff555f4d42f413c172e
BLAKE2b-256 9e0f6b503cbc1a8ea21dc3286c2dc50b71751f72f32c9b73e987057cb7d5cdbf

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: tasknet-1.9.0-py3-none-any.whl
  • Upload date:
  • Size: 13.0 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.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b02e70ecf4bd18e11b81cd6b3d7a303504b5413a77ec8b44ca80f259b4d803f1
MD5 29a155eaf7612c9e981d7e4cfb919931
BLAKE2b-256 7f33d2570c1cb16ad260b37333814a20692eea1419e23910adb7494838195d6d

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