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 correspond to Transformers AutoClasses:
SequenceClassification
TokenClassification
MultipleChoice
The task templates follow the same interface. They implement preprocess_function
, a data collator and compute_metrics
.
Look at tasks.py and use existing templates as a starting point to implement a custom task template.
Instanciate 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tasknet-1.12.0.tar.gz
.
File metadata
- Download URL: tasknet-1.12.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 945acd76b8a477a37ac49b377ece1aac35e22180b664f4f51ed012df82b760ef |
|
MD5 | 57fefc935eeb34b9ccb9821a75fab628 |
|
BLAKE2b-256 | fba39d362f0b71e66905621cc4b981156837f0e5215078db9174091908b9b0a3 |
Provenance
File details
Details for the file tasknet-1.12.0-py3-none-any.whl
.
File metadata
- Download URL: tasknet-1.12.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8736e45abb29348a5ed76e56fcf45048970c68a178334ba9c4983e0c93fda72 |
|
MD5 | 2aac1569ed404ff4cb2023029e1ebadd |
|
BLAKE2b-256 | 3c8696becbce890c98f956a8c2174eb11e36b7edcea4ad37a104b36329e55a4e |