{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering", "Topic :: Software Development" ], "description": "======\nGPUMAP\n======\n\nGPU Parallelized Uniform Manifold Approximation and Projection (GPUMAP) is the\nGPU-ported version of the UMAP dimension reduction technique that can be used\nfor visualisation similarly to t-SNE, but also for general non-linear dimension\nreduction.\n\nAt the moment only CUDA capable GPUs are supported. Due to a dependency on\nFAISS, only Linux (and potentially MacOS) platforms are supported at the moment.\n\nFor further information on UMAP see the `the original implementation\nhttps://github.com/lmcinnes/umap/`.\n\n-----------------\nHow to use GPUMAP\n-----------------\n\nThe gpumap package inherits from sklearn classes, and thus drops in neatly\nnext to other sklearn transformers with an identical calling API.\n\n.. code:: python\n\n import gpumap\n from sklearn.datasets import load_digits\n\n digits = load_digits()\n\n embedding = gpumap.GPUMAP().fit_transform(digits.data)\n\nThere are a number of parameters that can be set for the GPUMAP class; the\nmajor ones are as follows:\n\n - ``n_neighbors``: This determines the number of neighboring points used in\n local approximations of manifold structure. Larger values will result in\n more global structure being preserved at the loss of detailed local\n structure. In general this parameter should often be in the range 5 to\n 50, with a choice of 10 to 15 being a sensible default.\n\n - ``min_dist``: This controls how tightly the embedding is allowed compress\n points together. Larger values ensure embedded points are more evenly\n distributed, while smaller values allow the algorithm to optimise more\n accurately with regard to local structure. Sensible values are in the\n range 0.001 to 0.5, with 0.1 being a reasonable default.\n\nThe metric parameter is supported to keep the interface aligned with UMAP,\nhowever, setting it to anything but 'euclidean' will fall back to the sequential\nversion. Processing sparse matrices is not supported either, and will similarly\ncause a fallback to the sequential version for parts of the algorithm.\n\n------------------------\nPerformance and Examples\n------------------------\n\nGPUMAP, like UMAP, is very efficient at embedding large high dimensional\ndatasets. In particular it scales well with both input dimension and embedding\ndimension. Performance depends strongly depends on the used GPU. For a problem\nsuch as the 784-dimensional MNIST digits dataset with 70000 data samples, GPUMAP\ncan complete the embedding in around 30 seconds with an (outdated) NVIDIA GTX\n745 graphics card. More recent hardware will scale accordingly. Despite this\nruntime efficiency UMAP still produces high quality embeddings.\n\nThe obligatory MNIST digits dataset, embedded in 29 seconds using a 3.6 GHz\nIntel Core i7 processor and an NVIDIA GTX 745 GPU (n_neighbors=10,\nmin_dist=0.001):\n\n.. image:: images/gpumap_example_mnist1.png\n :alt: GPUMAP embedding of MNIST digits\n\nThe MNIST digits dataset is fairly straightforward however. A better test is\nthe more recent \"Fashion MNIST\" dataset of images of fashion items (again\n70000 data sample in 784 dimensions). GPUMAP\nproduced this embedding in 2 minutes exactly (n_neighbors=5, min_dist=0.1):\n\n.. image:: images/gpumap_example_fashion_mnist1.png\n :alt: GPUMAP embedding of \"Fashion MNIST\"\n\n----------\nInstalling\n----------\n\nGPUMAP has the same dependecies of UMAP, namely ``scikit-learn``, ``numpy``,\n``scipy`` and ``numba``. GPUMAP adds a requirement for ``faiss`` to perform\nnearest-neighbor search on GPUs.\n\n**Requirements:**\n\n* scikit-learn\n* (numpy)\n* (scipy)\n* numba\n* faiss\n\n**Install Options**\n\nGPUMAP can be installed via Conda, PyPi or from source:\n\n**Option 1: Conda**\n\nSet up a new conda environment, if needed.\n\n.. code:: bash\n\n conda create -n env\n\n conda activate env\n\n conda install python\n\nInstall dependecies: Numba and FAISS\n\n.. code:: bash\n\n conda install numba\n conda install scikit-learn\n\n conda install faiss-gpu cudatoolkit=10.0 -c pytorch # For CUDA10\n # For older CUDA versions:\n # conda install faiss-gpu cudatoolkit=8.0 -c pytorch # For CUDA8\n # conda install faiss-gpu cudatoolkit=9.0 -c pytorch # For CUDA9\n\n conda install -c conda-forge gpumap\n\n**Option 2: PyPi**\n\nGPUMAP is also available as a PyPi package.\n\n.. code:: bash\n\n pip install scikit-learn numba faiss gpumap\n\nNote that the prebuilt FAISS library is not officially supported by upstream.\n\n**Option 3: Build**\n\nBuilding from source is easy, clone the repository or get the code onto your\ncomputer by other means and run the installer with:\n\n.. code:: bash\n\n python setup.py install\n\nNote that the dependecies need to be installed beforehand. These are\nthe `FAISS https://github.com/facebookresearch/faiss/blob/master/INSTALL.md`\nlibrary and `Numba http://numba.pydata.org/numba-doc/latest/user/installing.html`.\n\n-------\nLicense\n-------\n\nThe gpumap package is based on the umap package and thus is also 3-clause BSD\nlicensed.\n\n------------\nContributing\n------------\n\nContributions are always welcome! Fork away!\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/p3732/gpumap", "keywords": "dimension reduction t-sne manifold umap", "license": "BSD", "maintainer": "Peter Eisenmann", "maintainer_email": "p3732@gmx.de", "name": "gpumap", "package_url": "https://pypi.org/project/gpumap/", "platform": "", "project_url": "https://pypi.org/project/gpumap/", "project_urls": { "Homepage": "http://github.com/p3732/gpumap" }, "release_url": "https://pypi.org/project/gpumap/0.1.1/", "requires_dist": [ "numpy (>=1.13)", "scikit-learn (>=0.16)", "scipy (>=0.19)", "numba (>=0.37)", "faiss (>=1.5.3)", "cupy (>=6.0.0)" ], "requires_python": "", "summary": "UMAP with GPUs", "version": "0.1.1" }, "last_serial": 5357217, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4ba0618fa960cd3875ce14dd419a803b", "sha256": "34cd972d1c416289d1d4cffc2262554691b3438853b3447e9406b4261d42d6a4" }, "downloads": -1, "filename": "gpumap-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4ba0618fa960cd3875ce14dd419a803b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 52730, "upload_time": "2019-06-04T09:27:48", "url": "https://files.pythonhosted.org/packages/49/0e/862bd6994a50128d7703ce66b8f2cb2cfe57076b51fb484e00391155954c/gpumap-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd98099aba7bf08538c92d4d398415e7", "sha256": "3498b82c062a88c3cdee667d9538d12ee45e5fb2bdc70bc552199275772d5806" }, "downloads": -1, "filename": "gpumap-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fd98099aba7bf08538c92d4d398415e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43272, "upload_time": "2019-06-04T09:27:51", "url": "https://files.pythonhosted.org/packages/e4/1d/66956445d1174465938eb8681735feaf48ed5bc8437eb8aef0ee63878f6a/gpumap-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0c21d5c9945d9c3425c5c98a419a3869", "sha256": "dd1a04b9b99b379248ab179c6555d30416424958f2e6e7edefe417e73184d6f7" }, "downloads": -1, "filename": "gpumap-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0c21d5c9945d9c3425c5c98a419a3869", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 52734, "upload_time": "2019-06-04T12:43:57", "url": "https://files.pythonhosted.org/packages/91/68/cb9459a558d826086e1c668b85b32a9f04cc7eeb0758f6dba571989f097e/gpumap-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b17aa913694bab94db20f58e65d472aa", "sha256": "f8f6a72081f957ff5642c72f8c9c87bf419bd991bf7e85ed1ee1d387f48ecc82" }, "downloads": -1, "filename": "gpumap-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b17aa913694bab94db20f58e65d472aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43269, "upload_time": "2019-06-04T12:43:58", "url": "https://files.pythonhosted.org/packages/e7/2d/7264c32ceb1fb2135b715775c381adf83611a958d9a9fa0e8dbad3e5b7cd/gpumap-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0c21d5c9945d9c3425c5c98a419a3869", "sha256": "dd1a04b9b99b379248ab179c6555d30416424958f2e6e7edefe417e73184d6f7" }, "downloads": -1, "filename": "gpumap-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0c21d5c9945d9c3425c5c98a419a3869", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 52734, "upload_time": "2019-06-04T12:43:57", "url": "https://files.pythonhosted.org/packages/91/68/cb9459a558d826086e1c668b85b32a9f04cc7eeb0758f6dba571989f097e/gpumap-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b17aa913694bab94db20f58e65d472aa", "sha256": "f8f6a72081f957ff5642c72f8c9c87bf419bd991bf7e85ed1ee1d387f48ecc82" }, "downloads": -1, "filename": "gpumap-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b17aa913694bab94db20f58e65d472aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43269, "upload_time": "2019-06-04T12:43:58", "url": "https://files.pythonhosted.org/packages/e7/2d/7264c32ceb1fb2135b715775c381adf83611a958d9a9fa0e8dbad3e5b7cd/gpumap-0.1.1.tar.gz" } ] }