Skip to main content

A tool for deploying many tasks automatically.

Project description

Manytasks

A lightweight tool for deploying many tasks automatically, without any modification to your code.

Installation

I recommend you install from github to get the newest features:

pip install git+https://github.com/dugu9sword/manytasks.git

You can also install the package (maybe outdated) from pypi:

pip install manytasks [not recommended]

Quick Example

cd examples/python

# configuration is stored in tasks.json
manytasks run tasks

All running logs are stored in tasks.logs.

  • The running log of the manytasks is written into task.logs/status.txt

  • The IO stream of tasks (e.g. print(), Exception, Error, ...) are redirected to task.logs/task-[index].txt.

Sample Configuration

For more complex cases, see ADVANCED_CASES.md.

{
  "executor": "python some.py",    
  "cuda": [4, 5, 6, 7],
  "concurrency": 4,           # num of tasks to run in parallel
  "cuda_per_task": 1,
  "configs": {
    # basic configurations
    "==base==": [          
      "arg0",
      "--a", [50, 100],       # `--a` takes value from [50, 100]
      "--name", "a_${a}"      # "${a}" refers to the value of `--a`
    ],
    # more disjoint configurations
    "==more==": [
      [ "--c1", [1, 2] ],            # [1, 2]
      [ "--c2", "$<x|y>.$<1:4>" ],   # [x.1, x.2, x.3, y.1, y.2, y.3]
    ]
  }
}

which yields:

---  ----  ---  ------  ----  ----
idx  __1   --a  --name  --c1  --c2
0    arg0  50   a_50    1     -
1    arg0  50   a_50    2     -
2    arg0  100  a_100   1     -
3    arg0  100  a_100   2     -
4    arg0  50   a_50    -     x.1
5    arg0  50   a_50    -     x.2
6    arg0  50   a_50    -     x.3
7    arg0  50   a_50    -     y.1
8    arg0  50   a_50    -     y.2
9    arg0  50   a_50    -     y.3
10   arg0  100  a_100   -     x.1
11   arg0  100  a_100   -     x.2
12   arg0  100  a_100   -     x.3
13   arg0  100  a_100   -     y.1
14   arg0  100  a_100   -     y.2
15   arg0  100  a_100   -     y.3
---  ----  ---  ------  ----  ----

Syntax Sugar

The syntax sugar makes the enumeration of arguments more easier.

Type Example Input Example Output
list $<1:6> [1, 2, 3, 4, 5]
list (with step) $<1:6:2> [1, 3, 5]
list (with zero-pad) $<1:6:2;3> [001, 003, 005]
files $<files:/home/*.py> [/home/foo.py, /home/bar.py, ...]
files (without path) $<files:/home/*.py;nameonly> [foo.py, bar.py, ...]
lines $<lines:urls.txt> [baidu.com, google.com, ...]
set $<a|b|c> [a, b, c]
composition x_$<1:3;3>.txt [x_001.txt, x_002.txt]
composition (more) logs/$<a|b>.$<1:3> [logs/a.1, logs/a.2, logs/b.1, logs/b.2]

Design Philosophy

Q: Why not use other open-source tools for hyper-parameter tuning, such as optuna, hydra, wandb?

A: The first time I developed this tool is 2019-1-1, when most of those tools (except optuna) were not born yet. What's more,

  • These tools are heavy, which means:
    • You need to modify your code (add several lines of import xxx; xxx.foo(); xxx.bar();) to integrate their functionalities.
    • You may have to replace your print(...) or log(...) function with theirs, sometimes your results may be logged to their server.
    • These tools are highly binded with python, which means they may fail if your code is written in perl (such as mosetokenizer in machine translation), bash (such as your code for preprocessing), etc.
  • manytasks is a lightweight tool which helps you deploy many tasks without any modification to your code, all logs will be saved in your machine.

Q:When should you use other open-source tools for hyper-parameter tuning, such as optuna, hydra, wandb?

A: For complex cases when you would like to enjoy their power of hyper-parameter tuning.

Analysis

See Analysis.md.

History

See History.md.

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

manytasks-2.2.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

manytasks-2.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file manytasks-2.2.tar.gz.

File metadata

  • Download URL: manytasks-2.2.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.28.0 setuptools/61.2.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.13

File hashes

Hashes for manytasks-2.2.tar.gz
Algorithm Hash digest
SHA256 4dc7d66a675be8e88aff7591acee8d4372ffca66450865620a8366840c659d1c
MD5 45a80e6d8e7db4296b810fa382244806
BLAKE2b-256 393eeb5eb2bf7152d923e70b3902bd66ddb85464a81b2b43893e9362db108041

See more details on using hashes here.

File details

Details for the file manytasks-2.2-py3-none-any.whl.

File metadata

  • Download URL: manytasks-2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.28.0 setuptools/61.2.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.13

File hashes

Hashes for manytasks-2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5bfe371508295c801a79c97cbd7d770ee2685c548863adb6f34215f054427a0f
MD5 e07777f3ee08b9f9d73a67dd7300a8c9
BLAKE2b-256 cc221faebcddf218d4ac0c6d14959f5872ce5d857e251026501048ae7e7f790d

See more details on using hashes here.

Supported by

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