{ "info": { "author": "Moritz Meister", "author_email": "meister.mo@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: GNU Affero General Public License v3", "Programming Language :: Python :: 3", "Topic :: Utilities" ], "description": "Maggy\n=====\n\n|Downloads| |PypiStatus| |PythonVersions| |Docs|\n\n\nMaggy is a framework for efficient asynchronous optimization of expensive\nblack-box functions on top of Apache Spark. Compared to existing frameworks,\nmaggy is not bound to stage based optimization algorithms and therefore it is\nable to make extensive use of early stopping in order to achieve efficient\nresource utilization.\n\nRight now, maggy supports asynchronous hyperparameter tuning of machine\nlearning and deep learning models, and ablation studies on neural network\nlayers as well as input features.\n\nMoreover, it provides a developer API that allows advanced usage by\nimplementing custom optimization algorithms and early stopping criteria.\n\nTo accomodate asynchronous algorithms, support for communication between the\nDriver and Executors via RPCs through Maggy was added. The Optimizer that guides\nhyperparameter search is located on the Driver and it assigns trials to\nExecutors. Executors periodically send back to the Driver the current\nperformance of their trial, and the Optimizer can decide to early-stop any\nongoing trial and send the Executor a new trial instead.\n\nQuick Start\n-----------\n\nTo Install:\n\n>>> pip install maggy\n\nThe programming model consists of wrapping the code containing the model training\ninside a function. Inside that wrapper function provide all imports and\nparts that make up your experiment.\n\nThere are three requirements for this wrapper function:\n\n1. The function should take the hyperparameters as arguments, plus one\n additional parameter reporter which is needed for reporting the current\n metric to the experiment driver.\n2. The function should return the metric that you want to optimize for. This\n should coincide with the metric being reported in the Keras callback (see\n next point).\n3. In order to leverage on the early stopping capabilities of maggy, you need\n to make use of the maggy reporter API. By including the reporter in your\n training loop, you are telling maggy which metric to report back to the\n experiment driver for optimization and to check for global stopping. It is\n as easy as adding reporter.broadcast(metric=YOUR_METRIC) for example at the\n end of your epoch or batch training step and adding a reporter argument to\n your function signature. If you are not writing your own training loop you\n can use the pre-written Keras callbacks in the `maggy.callbacks` module.\n\nSample usage:\n\n>>> # Define Searchspace\n>>> from maggy import Searchspace\n>>> # The searchspace can be instantiated with parameters\n>>> sp = Searchspace(kernel=('INTEGER', [2, 8]), pool=('INTEGER', [2, 8]))\n>>> # Or additional parameters can be added one by one\n>>> sp.add('dropout', ('DOUBLE', [0.01, 0.99]))\n\n>>> # Define training wrapper function:\n>>> def mnist(kernel, pool, dropout, reporter):\n>>> # This is your training iteration loop\n>>> for i in range(number_iterations):\n>>> ...\n>>> # add the maggy reporter to report the metric to be optimized\n>>> reporter.broadcast(metric=accuracy)\n>>> ...\n>>> # Return the same final metric\n>>> return accuracy\n\n>>> # Launch maggy experiment\n>>> from maggy import experiment\n>>> result = experiment.lagom(map_fun=mnist,\n>>> searchspace=sp,\n>>> optimizer='randomsearch',\n>>> direction='max',\n>>> num_trials=15,\n>>> name='MNIST'\n>>> )\n\n**lagom** is a Swedish word meaning \"just the right amount\". This is how maggy\nuses your resources.\n\nMNIST Example\n-------------\n\nFor a full MNIST example with random search using Keras,\nsee the Jupyter Notebook in the `examples` folder.\n\nDocumentation\n-------------\n\nRead our `blog post `_ for more details.\n\nAPI documentation is available `here `_.\n\n.. |Downloads| image:: https://pepy.tech/badge/maggy/month\n :target: https://pepy.tech/project/maggy\n.. |PypiStatus| image:: https://img.shields.io/pypi/v/maggy?color=blue\n :target: https://pypi.org/project/hops\n.. |PythonVersions| image:: https://img.shields.io/pypi/pyversions/maggy.svg\n :target: https://pypi.org/project/hops\n.. |Docs| image:: https://img.shields.io/readthedocs/maggy\n :target: https://maggy.readthedocs.io/en/latest/\n\n", "description_content_type": "", "docs_url": null, "download_url": "http://snurran.sics.se/hops/maggy/maggy-0.3.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/logicalclocks/maggy", "keywords": "Hyperparameter,Optimization,Auto-ML,Hops,Hadoop,TensorFlow,Spark", "license": "GNU Affero General Public License v3", "maintainer": "", "maintainer_email": "", "name": "maggy", "package_url": "https://pypi.org/project/maggy/", "platform": "", "project_url": "https://pypi.org/project/maggy/", "project_urls": { "Download": "http://snurran.sics.se/hops/maggy/maggy-0.3.0.tar.gz", "Homepage": "https://github.com/logicalclocks/maggy" }, "release_url": "https://pypi.org/project/maggy/0.3.0/", "requires_dist": [ "numpy (==1.16.5)", "sphinx (==1.8.5) ; extra == 'docs'", "sphinx-autobuild ; extra == 'docs'", "recommonmark ; extra == 'docs'", "sphinx-rtd-theme ; extra == 'docs'", "jupyter-sphinx-theme ; extra == 'docs'", "pydoop ; extra == 'pydoop'", "pyspark (==2.4.3) ; extra == 'spark'", "pylint ; extra == 'test'", "pytest ; extra == 'test'", "tensorflow (==1.14.0) ; extra == 'tf'" ], "requires_python": "", "summary": "Efficient asynchronous optimization of expensive black-box functions on top of Apache Spark", "version": "0.3.0" }, "last_serial": 5976831, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "9732c3c054084c06f267f16990ded8e5", "sha256": "a5a0bd6db2e5597283ea607cc561c8c17703dc089f919f04145645b9233ac8ff" }, "downloads": -1, "filename": "maggy-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9732c3c054084c06f267f16990ded8e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37087, "upload_time": "2019-04-25T20:26:55", "url": "https://files.pythonhosted.org/packages/de/e9/235c64c26f3553ac74836c5dc683264d3565cb606d2c14d07e70a1be0466/maggy-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a18c9a8787cca3752eed734ba27c722", "sha256": "081295f949a0605047b6e9b4d8aa7a3109e55b3b02332a0b45a38c4f682aba88" }, "downloads": -1, "filename": "maggy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "0a18c9a8787cca3752eed734ba27c722", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19769, "upload_time": "2019-04-25T20:27:02", "url": "https://files.pythonhosted.org/packages/83/42/5b4c8daed7545858ec6854f88c8d786ac1c1aa9d78d2148dcbb262a743e5/maggy-0.0.1.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "bdbd9dc4436a161cae483631b2b79770", "sha256": "4c9ad2485cde7cced7e75084e0b6f485160b30c5d8e18d94d30f8a6d0be3cf97" }, "downloads": -1, "filename": "maggy-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bdbd9dc4436a161cae483631b2b79770", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37062, "upload_time": "2019-04-25T20:28:58", "url": "https://files.pythonhosted.org/packages/e0/23/a2c2b0914134cf6215df3c08223c80535e91d2bf3a120affc43156a7d26e/maggy-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb1740b2fcbf2b33d4d510497f450e65", "sha256": "6e0bbdd967d224cf711eddd27c74f5ee899427f4bfc193a76c9009d6318bef70" }, "downloads": -1, "filename": "maggy-0.1.tar.gz", "has_sig": false, "md5_digest": "cb1740b2fcbf2b33d4d510497f450e65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19777, "upload_time": "2019-04-25T20:29:01", "url": "https://files.pythonhosted.org/packages/74/30/c75181a7ae50debe75b2933394d81b12f7c271cdd160c45220fd29e4b385/maggy-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "dcb3551610182bafe55751a6d06f887f", "sha256": "dae4e14fafdc2f09547c3fee73d313164f44da7ca7765d086e7c245f04d76033" }, "downloads": -1, "filename": "maggy-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dcb3551610182bafe55751a6d06f887f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37075, "upload_time": "2019-04-26T15:02:48", "url": "https://files.pythonhosted.org/packages/af/2f/1d017f3b5f76637c103f66c14b38343d3262e0a9358b41ab48cd442bb201/maggy-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6cbe0b7b6a07fe6801f497b1cd780bc", "sha256": "0d6bcc7b04693ae7fa3a6f85778b66b94257acd0cb66828a53d64f33e15e2691" }, "downloads": -1, "filename": "maggy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d6cbe0b7b6a07fe6801f497b1cd780bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19716, "upload_time": "2019-04-26T15:02:51", "url": "https://files.pythonhosted.org/packages/7b/95/f7309c812db63bb75d9a4de9801dc7bb923d93348a8b057bfd886ea7545b/maggy-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "a1f00612fb4e26fc5363272ed8331e1e", "sha256": "035ec875e17f35f6e0a6343bea0619220605dbc7ec4068937e845db5e777bfbf" }, "downloads": -1, "filename": "maggy-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a1f00612fb4e26fc5363272ed8331e1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43109, "upload_time": "2019-05-22T10:08:31", "url": "https://files.pythonhosted.org/packages/d0/13/f821a0d95492e53da298bae00e5fe2c9d43c6a2f37bde3811f5aba26ffe9/maggy-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "400a4af6b9eb06668f4079c9339858d8", "sha256": "01b088c46916cbc69657bbd81e98c6b9b93a805adbdba151980e77434a7c31f5" }, "downloads": -1, "filename": "maggy-0.2.tar.gz", "has_sig": false, "md5_digest": "400a4af6b9eb06668f4079c9339858d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24222, "upload_time": "2019-05-22T10:08:33", "url": "https://files.pythonhosted.org/packages/f3/d0/d5ffa697a0bf9054a89bf7adc53c13a312961eb6d3e60a950b37cec24ee6/maggy-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "dbfd9a162dbeadc5dde4d79eba463fb4", "sha256": "866d9a1fcdc64d6f56be462aa6ca7df83ce5a418e30d93a665ee0c789fee257b" }, "downloads": -1, "filename": "maggy-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dbfd9a162dbeadc5dde4d79eba463fb4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45427, "upload_time": "2019-06-03T14:09:42", "url": "https://files.pythonhosted.org/packages/00/ca/ec47e215538e2bfa1106844ad110294328a7e670f154d3f8fbc98e2077c9/maggy-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afb18232a4245de5b5a4aad7e922ff8f", "sha256": "92cbac3f2e8c78a81ba12717421a23875bf0034dc17764c1ddebe33255fcdb3e" }, "downloads": -1, "filename": "maggy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "afb18232a4245de5b5a4aad7e922ff8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25810, "upload_time": "2019-06-03T14:09:43", "url": "https://files.pythonhosted.org/packages/72/d7/aa36f2c37958e2e872ac81a30bb788239de47bab22099a4a6fe8d8ff9969/maggy-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ae233fb8db5eec90f29ddde4b0165528", "sha256": "f4d4cdf3980221cd632bf6113d2148c19a8a8a75eee477238d326f5c069f7f43" }, "downloads": -1, "filename": "maggy-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ae233fb8db5eec90f29ddde4b0165528", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46572, "upload_time": "2019-06-20T12:17:38", "url": "https://files.pythonhosted.org/packages/ff/4d/594e0ffc8eb905c3d825d6297c7836f56755d77b4a0ddad7ed2dc5215dbb/maggy-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c226d1ce9ba032dba8c86f6d8635009", "sha256": "d0f4b52525644445e8f67fedd0dc3d3b35fd2e5fecadb66a197e2078b19b506c" }, "downloads": -1, "filename": "maggy-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2c226d1ce9ba032dba8c86f6d8635009", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26487, "upload_time": "2019-06-20T12:17:41", "url": "https://files.pythonhosted.org/packages/c1/1b/1d20f3afe9214bf3e652c8bf550b383d86218a55daa100c2e35172b59371/maggy-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "c2f5d574653627d6d7f49cfecf10ea11", "sha256": "109f8cef543fcf2f39ad1eab4cd1b296a95bb7ab22ddc295086292dd0ee60ae2" }, "downloads": -1, "filename": "maggy-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c2f5d574653627d6d7f49cfecf10ea11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56733, "upload_time": "2019-10-15T12:58:23", "url": "https://files.pythonhosted.org/packages/0f/8d/e3a375af527868c29dfea2a40ab57a20ae799a73c0da20f584789aae7228/maggy-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79e27ff55dd45ded0524d08e8db798a2", "sha256": "bf6e9f57a1313e86c9e7cccb05baad48f70f30104743e42f005794a3ec4f8703" }, "downloads": -1, "filename": "maggy-0.3.0.tar.gz", "has_sig": false, "md5_digest": "79e27ff55dd45ded0524d08e8db798a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35272, "upload_time": "2019-10-15T12:58:28", "url": "https://files.pythonhosted.org/packages/ee/f8/d3edcdb61596a1bcd4502e6a317ad3d164fd78edadad8ee0c7afd6308afd/maggy-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c2f5d574653627d6d7f49cfecf10ea11", "sha256": "109f8cef543fcf2f39ad1eab4cd1b296a95bb7ab22ddc295086292dd0ee60ae2" }, "downloads": -1, "filename": "maggy-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c2f5d574653627d6d7f49cfecf10ea11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56733, "upload_time": "2019-10-15T12:58:23", "url": "https://files.pythonhosted.org/packages/0f/8d/e3a375af527868c29dfea2a40ab57a20ae799a73c0da20f584789aae7228/maggy-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79e27ff55dd45ded0524d08e8db798a2", "sha256": "bf6e9f57a1313e86c9e7cccb05baad48f70f30104743e42f005794a3ec4f8703" }, "downloads": -1, "filename": "maggy-0.3.0.tar.gz", "has_sig": false, "md5_digest": "79e27ff55dd45ded0524d08e8db798a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35272, "upload_time": "2019-10-15T12:58:28", "url": "https://files.pythonhosted.org/packages/ee/f8/d3edcdb61596a1bcd4502e6a317ad3d164fd78edadad8ee0c7afd6308afd/maggy-0.3.0.tar.gz" } ] }