{ "info": { "author": "Nikolay Novik", "author_email": "nickolainovik@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "mlserve\n=======\n.. image:: https://travis-ci.com/jettify/mlserve.svg?branch=master\n :target: https://travis-ci.com/jettify/mlserve\n.. image:: https://codecov.io/gh/jettify/mlserve/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/jettify/mlserve\n.. image:: https://api.codeclimate.com/v1/badges/1ff813d5cad2d702cbf1/maintainability\n :target: https://codeclimate.com/github/jettify/mlserve/maintainability\n :alt: Maintainability\n.. image:: https://img.shields.io/pypi/v/mlserve.svg\n :target: https://pypi.python.org/pypi/mlserve\n\n**mlserve** turns your python models into RESTful API, serves web page with\nform generated to match your input data.\n\nIt may be useful if one wants to demonstrate created predictive model and\nquickly integrate into existing application. Additionally UI is provided for\ninput data (based on training dataframe) and simple dashboard.\n\nProject is not complete but already usable, so no any guaranties on API or UI\nbackward compatibility.\n\nOnline Demo\n===========\n\nSeveral models deployed online using ``heroku.com/free`` free dynos.\nFree apps sleep automatically after 30 mins of inactivity so first request\nmay take some time.\n\n\n* https://young-ridge-56019.herokuapp.com\n\n\n.. image:: https://raw.githubusercontent.com/jettify/mlserve/master/docs/_static/list_models.png\n :alt: mlserve models\n\n.. image:: https://raw.githubusercontent.com/jettify/mlserve/master/docs/_static/one_model.png\n :alt: one model\n\nIdeas\n-----\n**mlsserve** is small using following design based on following ideas:\n\n- Simplicity and ease of use is primary objective.\n- Application consists of two processes: IO process that runs HTTP server\n and responsible for fetching and sending data, as well as serve UI, other\n process (worker) is doing CPU intensive work related to predictions\n calculations.\n\n\nFeatures\n========\n* Model predictions serving via RESTful API endpoint.\n* Model predictions serving via generated UI.\n* Web page to simplify models usage.\n* Automatic UI generation to match your input data.\n* Simple dashboard for monitoring purposes.\n\n\nInstallation\n============\n\nInstallation process is simple, just::\n\n $ pip install git+https://github.com/jettify/mlserve.git\n\nExample\n=======\n\nTo deploy model just follow following simple steps:\n\nSave your model into pickle file::\n\n with open('boston_gbr.pkl', 'wb') as f:\n pickle.dump(clf, f)\n\nUse `build_schema` function to build UI representation of pandas dataframe,\nand save it as json file file::\n\n import mlserve\n\n data_schema = mlserve.build_schema(df)\n with open('boston.json', 'wb') as f:\n json.dump(data_schema, f)\n\nCreate configuration file with following format::\n\n models:\n - name: \"boston_regressor\" # url friendly name\n description: \"Boston GBR\" # optional model description\n model_path: \"boston_gbr.pkl\" # path to your saved model\n data_schema_path: \"boston.json\" # path to data representation\n target: \"target\" # name of the target column\n\nServe model::\n\n $ mlserve -c models.yaml\n\n\nThats it, model is available throw REST API, you can test is with curl command::\n\n $ curl --header \"Content-Type: application/json\" --request POST\n --data '[{\"feature1\": 1, \"feature2\": 2}]'\n http://127.0.0.1:9000/api/v1/models/boston_gradient_boosting_regressor/predict\n\n\nUI is available via http://127.0.0.1:9000\n\n\nSupported Frameworks\n====================\n* Scikit-Learn\n* Keras (planning)\n* PyTorch (planning)\n\n\nRequirements\n------------\n\n* Python_ 3.6+\n* aiohttp_\n\n.. _PEP492: https://www.python.org/dev/peps/pep-0492/\n.. _Python: https://www.python.org\n.. _aiohttp: https://github.com/aio-libs/aiohttp\n.. _asyncio: http://docs.python.org/3.6/library/asyncio.html\n.. _uvloop: https://github.com/MagicStack/uvloop\n\nCHANGES\n=======", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/pypi/mlserve", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jettify/mlserve", "keywords": "mlserve", "license": "Apache 2", "maintainer": "", "maintainer_email": "", "name": "mlserve", "package_url": "https://pypi.org/project/mlserve/", "platform": "POSIX", "project_url": "https://pypi.org/project/mlserve/", "project_urls": { "Download": "https://pypi.python.org/pypi/mlserve", "Homepage": "https://github.com/jettify/mlserve" }, "release_url": "https://pypi.org/project/mlserve/0.0.1a6/", "requires_dist": null, "requires_python": "", "summary": "mlserve -- turns python model into RESTful API with automatically generated UI.", "version": "0.0.1a6" }, "last_serial": 4184857, "releases": { "0.0.1a1": [ { "comment_text": "", "digests": { "md5": "b012adce7ad3ece2ad46c9ae6be6355f", "sha256": "047fd02866b8f762139f36b5d4d74d97329c0cda4e2c6ff0f163099d4a0ecf68" }, "downloads": -1, "filename": "mlserve-0.0.1a1.tar.gz", "has_sig": false, "md5_digest": "b012adce7ad3ece2ad46c9ae6be6355f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12100, "upload_time": "2018-08-05T16:26:02", "url": "https://files.pythonhosted.org/packages/b2/82/1aad43546f1bcab7b1cb445150da189cd46971fcf38b888982e0df2075b3/mlserve-0.0.1a1.tar.gz" } ], "0.0.1a2": [ { "comment_text": "", "digests": { "md5": "aa3cb96e0e3c0d80513cec4015ec9a35", "sha256": "836d15dc860fbfb86977ad56b659342fc99c20324eaa23e5e476bc4512a01365" }, "downloads": -1, "filename": "mlserve-0.0.1a2.tar.gz", "has_sig": false, "md5_digest": "aa3cb96e0e3c0d80513cec4015ec9a35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15607, "upload_time": "2018-08-12T11:04:08", "url": "https://files.pythonhosted.org/packages/b8/b5/3f406738d109a40d6f752f79d1520a60e401158d2d2145b32e6523feacaa/mlserve-0.0.1a2.tar.gz" } ], "0.0.1a3": [ { "comment_text": "", "digests": { "md5": "f00cba1356a6ceebcb68f08576bb87eb", "sha256": "a3a8cc2a27d4af3d62156f2a93a8a9766046282c049fa5844ac9c02e9141bb88" }, "downloads": -1, "filename": "mlserve-0.0.1a3.tar.gz", "has_sig": false, "md5_digest": "f00cba1356a6ceebcb68f08576bb87eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 650785, "upload_time": "2018-08-18T10:13:59", "url": "https://files.pythonhosted.org/packages/a6/08/84d78e884cadf8df0b37d2af5832b7e2104ad74d4ad859b4d09b4a3533d0/mlserve-0.0.1a3.tar.gz" } ], "0.0.1a4": [ { "comment_text": "", "digests": { "md5": "908c5819d2d6f222f959973bfb220503", "sha256": "ab6365d6dc20d2047af02aa543050f0aeb2867043804423d9111b4d359426ffc" }, "downloads": -1, "filename": "mlserve-0.0.1a4.tar.gz", "has_sig": false, "md5_digest": "908c5819d2d6f222f959973bfb220503", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 650760, "upload_time": "2018-08-18T10:44:25", "url": "https://files.pythonhosted.org/packages/20/a0/af4692cfccb5d8941424911cb6f1bfd020ed4a0b5813f774fe8166959a85/mlserve-0.0.1a4.tar.gz" } ], "0.0.1a5": [ { "comment_text": "", "digests": { "md5": "2745572b8774ebb422544c6ce02eb327", "sha256": "d062a360975878077d2c480b40176c8776bd191c74baa1f55c37855bf8f89f9d" }, "downloads": -1, "filename": "mlserve-0.0.1a5.tar.gz", "has_sig": false, "md5_digest": "2745572b8774ebb422544c6ce02eb327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653713, "upload_time": "2018-08-19T08:43:30", "url": "https://files.pythonhosted.org/packages/cd/c5/6155fae64607cc051b096d59493bd214d0be81ae5287cb277f47874a88d0/mlserve-0.0.1a5.tar.gz" } ], "0.0.1a6": [ { "comment_text": "", "digests": { "md5": "85a8c08ec7377a66a63bb71d79dea666", "sha256": "a30cdbfc3dadcafbe688b51a75fd031cebbab58900fe5c82497ac8fe7ee0d7d7" }, "downloads": -1, "filename": "mlserve-0.0.1a6.tar.gz", "has_sig": false, "md5_digest": "85a8c08ec7377a66a63bb71d79dea666", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653597, "upload_time": "2018-08-19T10:44:06", "url": "https://files.pythonhosted.org/packages/76/89/d29b3cb86b30748edfa4873de0b2bc86ddb29f6b248fec5f56c6cbf1bbea/mlserve-0.0.1a6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "85a8c08ec7377a66a63bb71d79dea666", "sha256": "a30cdbfc3dadcafbe688b51a75fd031cebbab58900fe5c82497ac8fe7ee0d7d7" }, "downloads": -1, "filename": "mlserve-0.0.1a6.tar.gz", "has_sig": false, "md5_digest": "85a8c08ec7377a66a63bb71d79dea666", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653597, "upload_time": "2018-08-19T10:44:06", "url": "https://files.pythonhosted.org/packages/76/89/d29b3cb86b30748edfa4873de0b2bc86ddb29f6b248fec5f56c6cbf1bbea/mlserve-0.0.1a6.tar.gz" } ] }