Module that manage SGE experiences, from parameters to grid executions
Project description
GridSearch-like on the grid
Searching good combinaisons of parameters happen quite ofter in ML-related task. I wrote a tool that help to achieve that. If you worked with the unix system call fork, you will see a similar approach with the API.
Installation
pip install easy_sge
Hello World example
In this example we wrote all combinaisons of hello/hi world/Idiap.
from easy_sge.experiences_manager import ExperienceBase
if __name__ == '__main__':
if ExperienceBase.is_in_SGE(): # Write your task
parameters = ExperienceBase.load_only_current()
first = parameters['first']
second = parameters['second']
print('{} {}'.format(first, second))
else: # Configure your task
my_experience = ExperienceBase()
my_experience.add_experience_key_values('first', ['hello', 'hi'])
my_experience.add_experience_key_values('second', ['world', 'idiap'])
my_experience.add_grid_parameter('-P', 'devel')
my_experience.add_grid_parameter('-cwd', '')
my_experience.add_grid_parameter('-N', 'hello_world')
my_experience.run(sync=True)
Run the example python3 -m examples.hello_world then check the results after running the script (and waiting a little bit)
ls -1 output/hello_world.o*
output/hello_world.o5439319.1 output/hello_world.o5439319.2 output/hello_world.o5439319.3 output/hello_world.o5439319.4
Each file contains the result of a combinaison. Let's check the content of the first one
cat output/hello_world.o5439319.1
hello world
Get all results at once
cat output/hello_world.o*
hello world hi world hello idiap hi idiap
FizzBuzz example
We can also use task over a single parameter, like in fizzbuzz, which depend of n. Here an example with fizzbuzz from [1, 100]
from easy_sge.experiences_manager import ExperienceBase
if __name__ == '__main__':
if ExperienceBase.is_in_SGE(): # Write your task
parameters = ExperienceBase.load_only_current()
n = parameters['n']
my_str = ''
if n % 3 == 0:
my_str += 'Fizz'
if n % 5 == 0:
my_str += 'Buzz'
if my_str == '':
my_str = str(n)
print('(n={:04d}) -> {}'.format(n, my_str))
else: # Configure your task
my_experience = ExperienceBase()
my_experience.add_experience_key_values('n', list(range(1, 101)))
my_experience.add_grid_parameter('-P', 'devel')
my_experience.add_grid_parameter('-cwd', '')
my_experience.add_grid_parameter('-N', 'fizzbuzz')
my_experience.run(sync=True)
Run the example python3 -m examples.fizzbuzz
Get all results at once and sort by n
cat output/fizzbuzz.o* | sort
(n=0001) -> 1 (n=0002) -> 2 (n=0003) -> Fizz (n=0004) -> 4 (n=0005) -> Buzz (n=0006) -> Fizz (n=0007) -> 7 (n=0008) -> 8 (n=0009) -> Fizz (n=0010) -> Buzz (n=0011) -> 11 ... (n=0090) -> FizzBuzz (n=0091) -> 91 (n=0092) -> 92 (n=0093) -> Fizz (n=0094) -> 94 (n=0095) -> Buzz (n=0096) -> Fizz (n=0097) -> 97 (n=0098) -> 98 (n=0099) -> Fizz (n=0100) -> Buzz
Using with conda environment
If you want to use the same conda environmenent than the experience runner, then just let python_executable parameter empty.
Otherwise you can use conda run with the python_executable parameter
my_experience = ExperienceBase(python_executable="/idiap/user/wdroz/conda_stuff/miniconda3/condabin/conda run -n rise-baseline python3")
you need to specify the full path of conda
Dev
Flit
Please install flit
Then run flit install --extras dev
From pip
You can alternatively install the dev environnement from pip with pip install "easy_sge[dev]"
Install pre-commit
Please install the pre-commit of the project with
pre-commit install
and for commit-msg
pre-commit install --hook-type commit-msg
Running tests
python -m pytest
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easy_sge-1.0.2.tar.gz.
File metadata
- Download URL: easy_sge-1.0.2.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25a43876684f89a8dd0be49e096dc959279121e35e69df580b59e1ef089f7996
|
|
| MD5 |
870aeee59c8b4f13b492491a51a1a954
|
|
| BLAKE2b-256 |
d5e786dcd8487c72c164566018484a6ba9cf24b434508795d4fe550c13fe2de0
|
File details
Details for the file easy_sge-1.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: easy_sge-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52ee3874f41a7c7f0ddfcc590cc982a1032d928c71608b83f87aa8373d36c7bb
|
|
| MD5 |
4eea5cc9b01da9e63bd9e048a18bdbc4
|
|
| BLAKE2b-256 |
6c8ea20bf239d647ff35283420e2ad91321955d14094623c701fa4c76c655809
|