Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
7 of 14 committers (50.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.2%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Machine Learning for HPC Workflows
Basic Info
Statistics
- Stars: 140
- Watchers: 11
- Forks: 30
- Open Issues: 29
- Releases: 41
Topics
Metadata Files
README.md

A brief introduction to Merlin
Merlin is a tool for running machine learning based workflows. The goal of Merlin is to make it easy to build, run, and process the kinds of large scale HPC workflows needed for cognitive simulation.
At its heart, Merlin is a distributed task queuing system, designed to allow complex HPC workflows to scale to large numbers of simulations (we've done 100 Million on the Sierra Supercomputer).
Why would you want to run that many simulations? To become your own Big Data generator.
Data sets of this size can be large enough to train deep neural networks that can mimic your HPC application, to be used for such things as design optimization, uncertainty quantification and statistical experimental inference. Merlin's been used to study inertial confinement fusion, extreme ultraviolet light generation, structural mechanics and atomic physics, to name a few.
How does it work?
In essence, Merlin coordinates complex workflows through a persistent external queue server that lives outside of your HPC systems, but that can talk to nodes on your cluster(s). As jobs spin up across your ecosystem, workers on those allocations pull work from a central server, which coordinates the task dependencies for your workflow. Since this coordination is done via direct connections to the workers (i.e. not through a file system), your workflow can scale to very large numbers of workers, which means a very large number of simulations with very little overhead.
Furthermore, since the workers pull their instructions from the central server, you can do a lot of other neat things, like having multiple batch allocations contribute to the same work (think surge computing), or specialize workers to different machines (think CPU workers for your application and GPU workers that train your neural network). Another neat feature is that these workers can add more work back to central server, which enables a variety of dynamic workflows, such as may be necessary for the intelligent sampling of design spaces or reinforcement learning tasks.
Merlin does all of this by leveraging some key HPC and cloud computing technologies, building off open source components. It uses maestro to provide an interface for describing workflows, as well as for defining workflow task dependencies. It translates those dependencies into concrete tasks via celery, which can be configured for a variety of backend technologies (rabbitmq and redis are currently supported). Although not a hard dependency, we encourage the use of flux for interfacing with HPC batch systems, since it can scale to a very large number of jobs.
The integrated system looks a little something like this:

In this example, here's how it all works:
- The scientist describes her HPC workflow as a maestro DAG (directed acyclic graph)
"spec" file
workflow.yaml - She then sends it to the persistent server with
merlin run workflow.yaml. Merlin translates the file into tasks. - The scientist submits a job request to her HPC center. These jobs ask for workers via
the command
merlin run-workers workflow.yaml. - Coffee break.
- As jobs stand up, they pull work from the queue, making calls to flux to get the necessary HPC resources.
- Later, workers on a different allocation, with GPU resources connect to the server and contribute to processing the workload.
The central queue server deals with task dependencies and keeps the workers fed.
For more details, check out the rest of the documentation.
Need help? merlin@llnl.gov
Quick Start
Note: Merlin supports Python 3.6+.
To install Merlin and its dependencies, run:
$ pip3 install merlin
Create your application config file:
$ merlin config
That's it.
To run something a little more like what you're interested in, namely a demo workflow that has simulation and machine learning, first generate an example workflow:
$ merlin example feature_demo
Then install the workflow's dependencies:
$ pip install -r feature_demo/requirements.txt
Then process the workflow and create tasks on the server:
$ merlin run feature_demo/feature_demo.yaml
And finally, launch workers that can process those tasks:
$ merlin run-workers feature_demo/feature_demo.yaml
Documentation
Full documentation is available, or run:
$ merlin --help
(or add --help to the end of any sub-command you
want to learn more about.)
Code of Conduct
Please note that Merlin has a Code of Conduct. By participating in the Merlin community, you agree to abide by its rules.
License
Merlin is distributed under the terms of the MIT LICENSE.
LLNL-CODE-797170
Owner
- Name: Lawrence Livermore National Laboratory
- Login: LLNL
- Kind: organization
- Email: github-admin@llnl.gov
- Location: Livermore, CA, USA
- Website: https://software.llnl.gov
- Twitter: LLNL_OpenSource
- Repositories: 520
- Profile: https://github.com/LLNL
For over 70 years, the Lawrence Livermore National Laboratory has applied science and technology to make the world a safer place.
GitHub Events
Total
- Create event: 7
- Issues event: 36
- Release event: 2
- Watch event: 15
- Issue comment event: 31
- Push event: 56
- Pull request event: 57
- Pull request review comment event: 78
- Pull request review event: 94
- Fork event: 6
Last Year
- Create event: 7
- Issues event: 36
- Release event: 2
- Watch event: 15
- Issue comment event: 31
- Push event: 56
- Pull request event: 57
- Pull request review comment event: 78
- Pull request review event: 94
- Fork event: 6
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Benjamin Bay | b****1@l****v | 385 |
| Joseph M. Koning | k****1@l****v | 105 |
| Brian Gunnarson | 4****5 | 74 |
| Alexander Cameron Winter | w****7@q****v | 48 |
| Luc Peterson | p****6@l****v | 46 |
| Alexander Winter | 8****L | 15 |
| Ryan Lee | 4****a | 12 |
| Bay | b****1@g****v | 5 |
| Yamen Mubarka | m****1@l****v | 3 |
| Jane Herriman | x****e | 2 |
| Wout De Nolf | w****f@e****u | 1 |
| dependabot[bot] | 4****] | 1 |
| fixdocker | 6****r | 1 |
| robinson96 | r****6@l****v | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 56
- Total pull requests: 232
- Average time to close issues: about 1 year
- Average time to close pull requests: 13 days
- Total issue authors: 17
- Total pull request authors: 15
- Average comments per issue: 1.63
- Average comments per pull request: 1.54
- Merged pull requests: 178
- Bot issues: 0
- Bot pull requests: 4
Past Year
- Issues: 26
- Pull requests: 70
- Average time to close issues: 1 day
- Average time to close pull requests: 9 days
- Issue authors: 3
- Pull request authors: 3
- Average comments per issue: 0.04
- Average comments per pull request: 0.53
- Merged pull requests: 47
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- bgunnar5 (18)
- MarcusHsieh (9)
- koning (4)
- lucpeterson (4)
- AlexanderWinterLLNL (3)
- kustowski1 (3)
- ryannova (2)
- ymubarka (2)
- ben-bay (2)
- vsoch (2)
- srcopela (1)
- xorJane (1)
- lvandeca (1)
- jpbrodsky (1)
- papajim (1)
Pull Request Authors
- bgunnar5 (143)
- lucpeterson (23)
- AlexanderWinterLLNL (15)
- ryannova (15)
- koning (13)
- xorJane (4)
- MarcusHsieh (4)
- dependabot[bot] (4)
- KaseyNagleLLNL (2)
- ymubarka (2)
- woutdenolf (2)
- jimagaffney (2)
- ben-bay (1)
- nkeilbart (1)
- dylancliche (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 3
-
Total downloads:
- pypi 1,263 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 9
(may contain duplicates) - Total versions: 61
- Total maintainers: 7
pypi.org: merlin
The building blocks of workflows!
- Homepage: https://github.com/LLNL/merlin
- Documentation: https://merlin.readthedocs.io/
- License: MIT
-
Latest release: 1.12.2
published over 1 year ago
Rankings
Maintainers (4)
pypi.org: merlinwf
The 'merlinwf' package has been deprecated and replaced by the 'merlin' package.
- Homepage: https://github.com/LLNL/merlin
- Documentation: https://merlinwf.readthedocs.io/
- License: MIT
-
Latest release: 2.0.1
published almost 5 years ago
Rankings
Maintainers (4)
spack.io: py-merlin
Merlin Workflow for HPC.
- Homepage: https://github.com/LLNL/merlin
- License: []
-
Latest release: 1.7.5
published almost 4 years ago
Rankings
Maintainers (1)
Dependencies
- fakers *
- merlin *
- pandas *
- merlin-spellbook *
- sklearn *
- names *
- numpy *
- faker *
- maestrowf *
- merlin *
- pandas *
- faker *
- maestrowf *
- merlin *
- pandas *
- matplotlib *
- numpy *
- scipy *
- Ofpp ==0.11
- matplotlib ==3.1.1
- scikit-learn ==0.21.3
- Ofpp ==0.11
- matplotlib ==3.1.1
- scikit-learn ==0.21.3
- Jinja2 *
- matplotlib *
- merlin-spellbook *
- numpy *
- pyDOE *
- scikit-learn *
- merlin-spellbook *
- sklearn *
- alabaster * development
- black * development
- build * development
- dep-license * development
- flake8 * development
- isort * development
- johnnydep * development
- pylint * development
- pytest * development
- sphinx >=2.0.0 development
- twine * development
- cached_property *
- celery >=5.0.3
- coloredlogs *
- cryptography *
- importlib_resources *
- maestrowf ==1.1.7dev0
- numpy *
- parse *
- psutil >=5.1.0
- pyyaml >=5.1.2
- tabulate *
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/checkout v1 composite
- actions/setup-python v2 composite
- redis * docker
- actions/checkout v2 composite
- actions/setup-python v2 composite
- pypa/gh-action-pypi-publish 27b31702a0e7fc50959f5ad993c78deac1bdfc29 composite
- ubuntu 18.04 build
- llnl/merlin latest
- redis latest
- llnl/merlin latest
- rabbitmq 3-management
- redis latest
- rabbitmq 3-management
- redis latest
- sphinx *
- sphinx >=5.3.0
- Ofpp ==0.11
- matplotlib ==3.1.1
- scikit-learn >=1.0.2