Skip to main content

MARS: a tensor-based unified framework for large-scale data computation.

Project description

PyPI version Docs Build Coverage Quality License

Mars is a tensor-based unified framework for large-scale data computation. Documentation.

Installation

Mars is easy to install by

pip install pymars

When you need to install dependencies needed by the distributed version, you can use the command below.

pip install 'pymars[distributed]'

For now, distributed version is only available on Linux and Mac OS.

Developer Install

When you want to contribute code to Mars, you can follow the instructions below to install Mars for development:

git clone https://github.com/mars-project/mars.git
cd mars
pip install -e ".[dev]"

More details about installing Mars can be found at getting started section in Mars document.

Mars tensor

Mars tensor provides a familiar interface like Numpy.

Numpy

Mars tensor

import numpy as np
a = np.random.rand(1000, 2000)
(a + 1).sum(axis=1)
import mars.tensor as mt
a = mt.random.rand(1000, 2000)
(a + 1).sum(axis=1).execute()

The following is a brief overview of supported subset of Numpy interface.

  • Arithmetic and mathematics: +, -, *, /, exp, log, etc.

  • Reduction along axes (sum, max, argmax, etc).

  • Most of the array creation routines (empty, ones_like, diag, etc). What’s more, Mars does not only support create array/tensor on GPU, but also support create sparse tensor.

  • Most of the array manipulation routines (reshape, rollaxis, concatenate, etc.)

  • Basic indexing (indexing by ints, slices, newaxes, and Ellipsis)

  • Advanced indexing (except combing boolean array indexing and integer array indexing)

  • universal functions for elementwise operations.

  • Linear algebra functions, including product (dot, matmul, etc.) and decomposition (cholesky, svd, etc.).

However, Mars has not implemented entire Numpy interface, either the time limitation or difficulty is the main handicap. Any contribution from community is sincerely welcomed. The main feature not implemented are listed below:

  • Tensor with unknown shape does not support all operations.

  • Only small subset of np.linalg are implemented.

  • Operations like sort which is hard to execute in parallel are not implemented.

  • Mars tensor doesn’t implement interface like tolist and nditer etc, because the iteration or loops over a large tensor is very inefficient.

Eager Mode

Mars supports eager mode which makes it friendly for developing and easy to debug.

Users can enable the eager mode by options, set options at the beginning of the program or console session.

>>> from mars.config import options
>>> options.eager_mode = True

Or use a context.

>>> from mars.config import option_context
>>> with option_context() as options:
>>>     options.eager_mode = True
>>>     # the eager mode is on only for the with statement
>>>     ...

If eager mode is on, tensor will be executed immediately by default session once it is created.

>>> import mars.tensor as mt
>>> from mars.config import options
>>> options.eager_mode = True
>>> t = mt.arange(6).reshape((2, 3))
>>> print(t)
Tensor(op=TensorRand, shape=(2, 3), data=
[[0 1 2]
[3 4 5]])

Easy to scale in and scale out

Mars can scale in to a single machine, and scale out to a cluster with thousands of machines. Both the local and distributed version share the same piece of code, it’s fairly simple to migrate from a single machine to a cluster due to the increase of data.

Running on a single machine including thread-based scheduling, local cluster scheduling which bundles the whole distributed components. Mars is also easy to scale out to a cluster by starting different components of mars distributed runtime on different machines in the cluster.

Threaded

execute method will by default run on the thread-based scheduler on a single machine.

>>> import mars.tensor as mt
>>> a = mt.ones((10, 10))
>>> a.execute()

Users can create a session explicitly.

>>> from mars.session import new_session
>>> session = new_session()
>>> session.run(a + 1)
>>> (a * 2).execute(session=session)
>>> # session will be released when out of with statement
>>> with new_session() as session2:
>>>     session2.run(a / 3)

Local cluster

Users can start the local cluster bundled with the distributed runtime on a single machine. Local cluster mode requires mars distributed version.

>>> from mars.deploy.local import new_cluster

>>> # cluster will create a session and set it as default
>>> cluster = new_cluster()

>>> # run on the local cluster
>>> (a + 1).execute()

>>> # create a session explicitly by specifying the cluster's endpoint
>>> session = new_session(cluster.endpoint)
>>> session.run(a * 3)

Distributed

After installing the distributed version on every node in the cluster, A node can be selected as scheduler and another as web service, leaving other nodes as workers. The scheduler can be started with the following command:

mars-scheduler -a <scheduler_ip> -p <scheduler_port>

Web service can be started with the following command:

mars-web -a <web_ip> -s <scheduler_endpoint> --ui-port <ui_port_exposed_to_user>

Workers can be started with the following command:

mars-worker -a <worker_ip> -p <worker_port> -s <scheduler_endpoint>

After all mars processes are started, users can run

>>> sess = new_session('http://<web_ip>:<ui_port>')
>>> a = mt.ones((2000, 2000), chunk_size=200)
>>> b = mt.inner(a, a)
>>> sess.run(b)

Getting involved

Thank you in advance for your contributions!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymars-0.2.0b2.tar.gz (1.4 MB view details)

Uploaded Source

Built Distributions

pymars-0.2.0b2-cp37-cp37m-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.7mWindows x86-64

pymars-0.2.0b2-cp37-cp37m-manylinux1_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.7m

pymars-0.2.0b2-cp37-cp37m-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.7mmacOS 10.10+ Intel (x86-64, i386)macOS 10.10+ x86-64macOS 10.9+ Intel (x86-64, i386)macOS 10.9+ x86-64

pymars-0.2.0b2-cp36-cp36m-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.6mWindows x86-64

pymars-0.2.0b2-cp36-cp36m-manylinux1_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.6m

pymars-0.2.0b2-cp36-cp36m-macosx_10_7_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.6mmacOS 10.10+ Intel (x86-64, i386)macOS 10.10+ x86-64macOS 10.7+ x86-64macOS 10.9+ Intel (x86-64, i386)macOS 10.9+ x86-64

pymars-0.2.0b2-cp35-cp35m-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.5mWindows x86-64

pymars-0.2.0b2-cp35-cp35m-manylinux1_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.5m

pymars-0.2.0b2-cp35-cp35m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.5mmacOS 10.10+ Intel (x86-64, i386)macOS 10.10+ x86-64macOS 10.6+ x86-64macOS 10.9+ Intel (x86-64, i386)macOS 10.9+ x86-64

pymars-0.2.0b2-cp27-cp27mu-manylinux1_x86_64.whl (7.0 MB view details)

Uploaded CPython 2.7mu

pymars-0.2.0b2-cp27-cp27m-manylinux1_x86_64.whl (7.0 MB view details)

Uploaded CPython 2.7m

pymars-0.2.0b2-cp27-cp27m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.2 MB view details)

Uploaded CPython 2.7mmacOS 10.10+ Intel (x86-64, i386)macOS 10.10+ x86-64macOS 10.6+ x86-64macOS 10.9+ Intel (x86-64, i386)macOS 10.9+ x86-64

File details

Details for the file pymars-0.2.0b2.tar.gz.

File metadata

  • Download URL: pymars-0.2.0b2.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pymars-0.2.0b2.tar.gz
Algorithm Hash digest
SHA256 559774e9a05779516f9a30eb4493d8ca6980846a0723094fbf8f172cea2d2f01
MD5 6a3fdefa40d7daa12dae1619a9cd6557
BLAKE2b-256 259c2ecd94109ccbfa923fd03a71ebae6643d0bd2c97216636d897662f5ed59b

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for pymars-0.2.0b2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b3b5d7777a55abab1dc6b346dc9ae122987f5656091e38b7386296f110db401e
MD5 cbb9182345278890083e2c83c7c77d8d
BLAKE2b-256 2dc6b1844d109af248401d991fe86c108faaad54da1716a4c7812db7c204d31b

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for pymars-0.2.0b2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9ff177f1c0146b44d693441ab1a45715794cccb422b2da784397236955a60718
MD5 0e5bbf66150370746a875e49c610134a
BLAKE2b-256 3db59fed02e7e0a7fb5a7b2fd72723eb0caae609e3a1441793a73d59b59ab559

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp37-cp37m-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for pymars-0.2.0b2-cp37-cp37m-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 dbe6ce197b0ff21a81ec3e3e1944dc0b291a3ed350377a0fc130a4b9aa1a9908
MD5 d1f07dc45832a025c992314c56fef6e1
BLAKE2b-256 bcbec8c5b48d27916a9ab205d5a0ddb156e36cb32995c3194c35f4b453a472b2

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pymars-0.2.0b2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ec10299cb19bd6cf1ccf6387b6111e982f44a5357aaacecefe90f6df44b49555
MD5 503eb2e5e1ecf18fc4b1a4cbb481ecb8
BLAKE2b-256 e50b9d849ba8427c794cf92c26e26505a261a156564275720e28b14ee7db4509

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pymars-0.2.0b2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b2a273ad1110e6918d7db62e09fc6bb2b770f2e033d9e6f1f305802e1406247e
MD5 dfa204f1e5262cbc583f6e0d1a8e7922
BLAKE2b-256 66abba522367bdd9310d308dd111132d60fba97c607cf42123cd9e20de8dcc2b

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp36-cp36m-macosx_10_7_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for pymars-0.2.0b2-cp36-cp36m-macosx_10_7_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 ae4bbf21a2e40baa2fa7a388b7efdfd33e9f2291ce04bb385186bb113c8904c2
MD5 820047af2750bf326b61ed545fac9be6
BLAKE2b-256 af6b9dbbf75e94922dbcb9b5981efad006449029ebd44076c028425970df8262

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.4

File hashes

Hashes for pymars-0.2.0b2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 f6b81ba8458a687f9fc8111543380a04be905f2585689cd4d8eccb8256ccfc96
MD5 fc28c3b647a4b61e0a31d08760430d60
BLAKE2b-256 eb9f9c1d14aac0e01f708ebb6e530df1aff951cb71aef6fac0a09046ec503f38

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.6

File hashes

Hashes for pymars-0.2.0b2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1da96ebc239f311c4cae91e649b2ac18c915f8cd5f696906fe7bb3533d9d3d91
MD5 4a3ee20889e2082db6446f9c2b3c085a
BLAKE2b-256 cc2f88147985e84c72edf9befa554ddd073bf0e7ba1a6af0f4b67b7353f63190

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp35-cp35m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for pymars-0.2.0b2-cp35-cp35m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 af09aadb25525f88f5a8a447146abbd49d3b6568822f85b72d182d04cb772661
MD5 c75e8e16148c621648c80e51053f9b4c
BLAKE2b-256 39a86cc8fbc932aabc510f63656bcac9b09464e2b8fac40a74d30aa622d5352f

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.16

File hashes

Hashes for pymars-0.2.0b2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8528fec2844ff95ea2e1a6b60c27590bb198c1b5e3ea3fa1fff3c5239f34efa6
MD5 d6380e6611a76b79d682a962c4f445fb
BLAKE2b-256 4bb7eb5634125306d789d58b410560d5a85392dbedb3d8a42f7a9605e56b7c5c

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymars-0.2.0b2-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.16

File hashes

Hashes for pymars-0.2.0b2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 df0b9c97371b1a74aac260c45e2426594beac4bcdfd5ce84a250d3aae9dfd436
MD5 387581ce2c5e4f6854ec9e615572c78d
BLAKE2b-256 352cf2f67df06b5b3739984078b5f5c3932451454334a5e7573441d459460859

See more details on using hashes here.

File details

Details for the file pymars-0.2.0b2-cp27-cp27m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for pymars-0.2.0b2-cp27-cp27m-macosx_10_6_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 25497e37052935351fb50d445a88dfc71ce3f8c3cc152a9d393d5ff7e8f706e4
MD5 4a2b5332702f3a40d1715566236c7c5e
BLAKE2b-256 f7d1c7142f38346bf86d52411a827abc07db4eeeb3c007c173639da147f2207a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page