{ "info": { "author": "Andreas Schuderer", "author_email": "pypi@schuderer.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "==============================================================================\nAbout ML Launchpad\n==============================================================================\n\n\n.. image:: https://img.shields.io/pypi/v/mllaunchpad.svg?color=blue\n :target: https://pypi.python.org/pypi/mllaunchpad\n\n.. image:: https://img.shields.io/pypi/pyversions/mllaunchpad.svg?color=blue\n :target: https://pypi.python.org/pypi/mllaunchpad\n\n.. image:: https://img.shields.io/github/license/schuderer/mllaunchpad.svg?color=blue\n :target: https://pyup.io/repos/github/schuderer/mllaunchpad/\n :alt: LGPLv3 License\n\n.. image:: https://img.shields.io/travis/schuderer/mllaunchpad.svg\n :target: https://travis-ci.org/schuderer/mllaunchpad\n\n.. image:: https://coveralls.io/repos/github/schuderer/mllaunchpad/badge.svg?branch=master\n :target: https://coveralls.io/github/schuderer/mllaunchpad?branch=master\n\n.. .. image:: https://pyup.io/repos/github/schuderer/mllaunchpad/shield.svg\n.. :target: https://pyup.io/repos/github/schuderer/mllaunchpad/\n.. :alt: Updates\n\n.. image:: https://readthedocs.org/projects/mllaunchpad/badge/?version=latest\n :target: https://mllaunchpad.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/python/black\n :alt: Code Style Black\n\n\nML Launchpad lets you easily make Machine Learning models available as\nREST API. It also offers lightweight model life cycle\nmanagement functionality.\n\nWhat this means is that it creates a separation between machine learning\nmodels and their environment. This way, you can run your model with\ndifferent data sources and on different environments, by just swapping\nout the configuration, no code changes required. ML Launchpad makes your\nmodel available as a business-facing *RESTful API*\nwithout extra coding.\n\nCurrently, some basic model life cycle management is supported. Training\nautomatically persists a model in the model store together with its metrics,\nand automatically retrieves it for launching its API or\nre-training. Previous models are backed up.\n\n- TODO: better description of what problem ML Launchpad solves\n\nThe full documentation is available at https://mllaunchpad.readthedocs.io\n\nGetting started\n------------------------------------------------------------------------------\n\nDirect installation\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: console\n\n $ pipenv install mllaunchpad\n\n(Or ``pip install mllaunchpad`` if you don't have ``pipenv``)\n\nDownload the `example files `_\nfrom the ML Launchpad GitHub repo. Some of them might require the installations\nof some extra packages (e.g. scikit-learn), depending on what they demonstrate.\n\nSource installation\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- TODO: prune this section/merge with `Contributing`.\n Please see `Installation` for a better source installation guide.\n\nDownload and unzip the repository as a zip file or clone the repository\nusing git:\n\n.. code:: console\n\n $ git clone git@github.com:schuderer/mllaunchpad.git\n\nGo to the ``mllaunchpad`` directory in a terminal:\n\n.. code:: console\n\n $ cd mllaunchpad\n\nIf you have ``pipenv`` available (if not, it can be easily installed\nusing ``pip install pipenv``), create the environment with all the\ndependencies.\n\n.. code:: console\n\n $ pipenv install\n\n(Use ``pipenv install --dev`` if you want to try out the examples \u2013 not\nall development dependencies are needed for all examples, so don\u2019t sweat\nit if there are problems installing all of them)\n\nThis enviroment now contains all necessary packages. To activate this\nenviroment, enter:\n\n.. code:: console\n\n $ pipenv shell\n\nDon\u2019t have ``pipenv``? Have a look at the file ``Pipfile`` to see which\ndependencies might need installing.\n\nWhat's in the box?\n------------------------------------------------------------------------------\n\nIf you installed from source, you see several subfolders, where ``mllaunchpad``\nis the actual ML Launchpad package and the rest are examples and\ndevelopment tools. You can safely ignore anything except the examples.\n\nThe ``examples`` contain a few example model implementations.\nLook here for inspiration on how to use this package. Every model here\nconsists of at least three files:\n\n* ``_model.py``: the example\u2019s actual model code\n\n* ``_cfg.yml``: the example\u2019s configuration file\n\n* ``.raml``: example\u2019s RESTful API specification.\n Used, among others, to parse and validate parameters.\n\n* There are also some extra files, like CSV files to use, or datasource\n extensions.\n\nThe subfolder ``testserver`` contains an example for running a REST API\nin gunicorn behind nginx.\n\nTry Out the Examples\n------------------------------------------------------------------------------\n\nIf you're using an environment manager, e.g. ``pipenv``, activate the\nenvironment:\n\n.. code-block:: console\n\n $ pipenv shell\n\nIn the following, it is assumed that the examples are located in the\ncurrent directory.\n\nTo train a very, *very* simple example model whose job it is to add two\nnumbers, use the command:\n\n.. code:: console\n\n $ mllaunchpad -c addition_cfg.yml -t\n\n(We give it a config file after the ``-c`` parameter, and ``-t`` is\nshort for the command ``--train``. There\u2019s also a parameter ``-h`` to\nprint help)\n\nSome log information is printed (you can give it a log-config file to\nchange this, see examples/logging_cfg.yml). At the end, it should say\n\u201cCreated and stored trained model\u201d, followed by something about metrics.\n\nThis created a model_store if it didn\u2019t exist yet (which for now is just\na directory). For our examples, the model store is conveniently located\nin the same directory. It contains our persisted ``addition`` model and\nits metadata.\n\nTo re-test the previously trained model, use the command ``-r``:\n\n.. code:: console\n\n $ mllaunchpad -c addition_cfg.yml -r\n\nTo run a (debugging-only!) REST API for the model, use the command\n``-a``:\n\n.. code:: console\n\n $ mllaunchpad -c addition_cfg.yml -a\n\nTo quickly try out out our fancy addition model API, open this link in a\nbrowser: http://127.0.0.1:5000/add/v0/sum?x1=3&x2=2\n(``curl http://127.0.0.1:5000/add/v0/sum?x1=3&x2=2`` on the command\nline)\n\nWhat next?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nHave a look at the ``addition`` example\u2019s python code (and comments),\nits yml config, then look at the other examples. First, we suggest the\n``iris`` example for intermediate complexity (although its prediction\ncode does quite some complex stuff to be compatible with three different\nkinds of prediction usage, which is not really that realistic).\n\nIf you are wondering about the RAML file (which is a RESTful API\nspecification standard that is used in some corporate environments, and\na good idea in general), also look at the ``-g`` (generate raml) command\nline parameter, which does a lot of work (almost all of it, in fact) for\ngetting you started with a first RAML.\n\nTroubleshooting\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn case the console command ``mllaunchpad `` is not recognized,\ntry:\n\n.. code:: console\n\n $ python -m mllaunchpad \n\nIf you get an error like ``No module named 'your_model'``, the file\n``your_model.py`` is not in the python path. You can try to set the\n`PYTHONPATH environment variable `_\nto the path(s) to your file(s), or, if you're using ``mllaunchpad``\nfrom your own python code, append the path(s) to\n`sys.path `_.\n\nIf you get ``ModuleNotFoundError: No module named 'mllaunchpad'`` (in\n``mllaunchpad/__main__.py``), try to start flask the following way:\n\n.. code:: console\n\n $ export FLASK_APP=mllaunchpad.wsgi:application\n $ export LAUNCHPAD_CFG=addition_cfg.yml\n $ flask run\n\n(On Windows, use ``set`` instead of ``export``)\n\nThis problem appears to be connected to Flask restarting in different ways on\ndifferent installations. If you know what exactly this is about, `please let us\nknow`_.\n\nIs it for me?\n------------------------------------------------------------------------------\n\n- TODO: fill in this section\n\n.. _please let us know: https://github.com/schuderer/mllaunchpad/issues/30.\n\n\nFeatures\n------------------------------------------------------------------------------\n\n* TODO\n\nCredits\n-------\n\n* Free software: GNU Lesser General Public License v3\n* Documentation: https://mllaunchpad.readthedocs.io.\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/schuderer/mllaunchpad", "keywords": "mllaunchpad", "license": "GNU Lesser General Public License v3", "maintainer": "", "maintainer_email": "", "name": "mllaunchpad", "package_url": "https://pypi.org/project/mllaunchpad/", "platform": "", "project_url": "https://pypi.org/project/mllaunchpad/", "project_urls": { "Homepage": "https://github.com/schuderer/mllaunchpad" }, "release_url": "https://pypi.org/project/mllaunchpad/0.0.5/", "requires_dist": [ "flask", "flask-restful", "ramlfications", "dill", "pandas" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "summary": "Easily make Machine Learning models available as REST API. Lightweight model life cycle management.", "version": "0.0.5" }, "last_serial": 5560479, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0c29bcaf86aeb36c79c9c671f4804301", "sha256": "370b6e5342ac78d139f6246ee832ddf989671b522e5f3e07f3c9f15dfe0429a4" }, "downloads": -1, "filename": "mllaunchpad-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c29bcaf86aeb36c79c9c671f4804301", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 26445, "upload_time": "2019-07-18T21:31:18", "url": "https://files.pythonhosted.org/packages/0e/15/8d81674550642a2dbab5af23b537b6d8409d4c288d6cd3447d828cd14316/mllaunchpad-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7601afa7870916ad981f4ce3eb0401d8", "sha256": "72dfe40febc37d2d8f1db90517580b675e4f530523e984dc885b7c75137b180d" }, "downloads": -1, "filename": "mllaunchpad-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7601afa7870916ad981f4ce3eb0401d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 50319, "upload_time": "2019-07-18T21:31:21", "url": "https://files.pythonhosted.org/packages/07/b0/cf5770ec14d3f851778aae41310f9815b8a1e00175a112fd25d24dcc0e71/mllaunchpad-0.0.1.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2f494c41d780f38c1e6d827d0c73a6a8", "sha256": "43a7453a925bce28a2be6123ccaa6d97111b8e28f0269c09cb383d4b57e4e491" }, "downloads": -1, "filename": "mllaunchpad-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f494c41d780f38c1e6d827d0c73a6a8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 27142, "upload_time": "2019-07-20T12:22:00", "url": "https://files.pythonhosted.org/packages/9e/ef/b7a67dc559c2d861e5e2e021b9b47f4f048be360bb015956a3d3166b6615/mllaunchpad-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "acc3b756d070ec582e989e21d8a87f3a", "sha256": "981bbbbc161c36318da623d9263c111ce74caf5508463d3678f303c5243cd221" }, "downloads": -1, "filename": "mllaunchpad-0.0.5.tar.gz", "has_sig": false, "md5_digest": "acc3b756d070ec582e989e21d8a87f3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 989845, "upload_time": "2019-07-20T12:22:02", "url": "https://files.pythonhosted.org/packages/a9/5f/9e86c75a43ff7226130bbc1421427e066c7a781ba2f0706e6387d7094d78/mllaunchpad-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2f494c41d780f38c1e6d827d0c73a6a8", "sha256": "43a7453a925bce28a2be6123ccaa6d97111b8e28f0269c09cb383d4b57e4e491" }, "downloads": -1, "filename": "mllaunchpad-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f494c41d780f38c1e6d827d0c73a6a8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 27142, "upload_time": "2019-07-20T12:22:00", "url": "https://files.pythonhosted.org/packages/9e/ef/b7a67dc559c2d861e5e2e021b9b47f4f048be360bb015956a3d3166b6615/mllaunchpad-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "acc3b756d070ec582e989e21d8a87f3a", "sha256": "981bbbbc161c36318da623d9263c111ce74caf5508463d3678f303c5243cd221" }, "downloads": -1, "filename": "mllaunchpad-0.0.5.tar.gz", "has_sig": false, "md5_digest": "acc3b756d070ec582e989e21d8a87f3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,,!=3.2.*,!=3.3.*,!=3.4.*", "size": 989845, "upload_time": "2019-07-20T12:22:02", "url": "https://files.pythonhosted.org/packages/a9/5f/9e86c75a43ff7226130bbc1421427e066c7a781ba2f0706e6387d7094d78/mllaunchpad-0.0.5.tar.gz" } ] }