# Install Ray using pip
!pip install ray
Requirement already satisfied: ray in /opt/venv/lib/python3.7/site-packages (1.0.0)
Requirement already satisfied: colorama in /opt/venv/lib/python3.7/site-packages (from ray) (0.4.4)
Requirement already satisfied: colorful in /opt/venv/lib/python3.7/site-packages (from ray) (0.5.4)
Requirement already satisfied: py-spy>=0.2.0 in /opt/venv/lib/python3.7/site-packages (from ray) (0.3.3)
Requirement already satisfied: opencensus in /opt/venv/lib/python3.7/site-packages (from ray) (0.7.11)
Requirement already satisfied: filelock in /opt/venv/lib/python3.7/site-packages (from ray) (3.0.12)
Requirement already satisfied: jsonschema in /opt/venv/lib/python3.7/site-packages (from ray) (3.2.0)
Requirement already satisfied: aiohttp-cors in /opt/venv/lib/python3.7/site-packages (from ray) (0.7.0)
Requirement already satisfied: msgpack<2.0.0,>=1.0.0 in /opt/venv/lib/python3.7/site-packages (from ray) (1.0.0)
Requirement already satisfied: aiohttp in /opt/venv/lib/python3.7/site-packages (from ray) (3.7.2)
Requirement already satisfied: google in /opt/venv/lib/python3.7/site-packages (from ray) (3.0.0)
Requirement already satisfied: redis<3.5.0,>=3.3.2 in /opt/venv/lib/python3.7/site-packages (from ray) (3.4.1)
Requirement already satisfied: pyyaml in /opt/venv/lib/python3.7/site-packages (from ray) (5.3.1)
Requirement already satisfied: aioredis in /opt/venv/lib/python3.7/site-packages (from ray) (1.3.1)
Requirement already satisfied: click>=7.0 in /opt/venv/lib/python3.7/site-packages (from ray) (7.1.2)
Requirement already satisfied: requests in /opt/venv/lib/python3.7/site-packages (from ray) (2.24.0)
Requirement already satisfied: gpustat in /opt/venv/lib/python3.7/site-packages (from ray) (0.6.0)
Requirement already satisfied: prometheus-client>=0.7.1 in /opt/venv/lib/python3.7/site-packages (from ray) (0.8.0)
Requirement already satisfied: numpy>=1.16 in /opt/venv/lib/python3.7/site-packages (from ray) (1.19.2)
Requirement already satisfied: protobuf>=3.8.0 in /opt/venv/lib/python3.7/site-packages (from ray) (3.13.0)
Requirement already satisfied: grpcio>=1.28.1 in /opt/venv/lib/python3.7/site-packages (from ray) (1.33.2)
Requirement already satisfied: opencensus-context==0.1.2 in /opt/venv/lib/python3.7/site-packages (from opencensus->ray) (0.1.2)
Requirement already satisfied: google-api-core<2.0.0,>=1.0.0 in /opt/venv/lib/python3.7/site-packages (from opencensus->ray) (1.23.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /opt/venv/lib/python3.7/site-packages (from jsonschema->ray) (0.17.3)
Requirement already satisfied: attrs>=17.4.0 in /opt/venv/lib/python3.7/site-packages (from jsonschema->ray) (20.2.0)
Requirement already satisfied: setuptools in /opt/venv/lib/python3.7/site-packages (from jsonschema->ray) (50.3.0)
Requirement already satisfied: six>=1.11.0 in /opt/venv/lib/python3.7/site-packages (from jsonschema->ray) (1.15.0)
Requirement already satisfied: importlib-metadata; python_version < "3.8" in /opt/venv/lib/python3.7/site-packages (from jsonschema->ray) (2.0.0)
Requirement already satisfied: chardet<4.0,>=2.0 in /opt/venv/lib/python3.7/site-packages (from aiohttp->ray) (3.0.4)
Requirement already satisfied: yarl<2.0,>=1.0 in /opt/venv/lib/python3.7/site-packages (from aiohttp->ray) (1.6.2)
Requirement already satisfied: typing-extensions>=3.6.5 in /opt/venv/lib/python3.7/site-packages (from aiohttp->ray) (3.7.4.3)
Requirement already satisfied: multidict<7.0,>=4.5 in /opt/venv/lib/python3.7/site-packages (from aiohttp->ray) (5.0.0)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /opt/venv/lib/python3.7/site-packages (from aiohttp->ray) (3.0.1)
Requirement already satisfied: beautifulsoup4 in /opt/venv/lib/python3.7/site-packages (from google->ray) (4.9.3)
Requirement already satisfied: hiredis in /opt/venv/lib/python3.7/site-packages (from aioredis->ray) (1.1.0)
Requirement already satisfied: idna<3,>=2.5 in /opt/venv/lib/python3.7/site-packages (from requests->ray) (2.10)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/venv/lib/python3.7/site-packages (from requests->ray) (1.25.10)
Requirement already satisfied: certifi>=2017.4.17 in /opt/venv/lib/python3.7/site-packages (from requests->ray) (2020.6.20)
Requirement already satisfied: psutil in /opt/venv/lib/python3.7/site-packages (from gpustat->ray) (5.7.3)
Requirement already satisfied: blessings>=1.6 in /opt/venv/lib/python3.7/site-packages (from gpustat->ray) (1.7)
Requirement already satisfied: nvidia-ml-py3>=7.352.0 in /opt/venv/lib/python3.7/site-packages (from gpustat->ray) (7.352.0)
Requirement already satisfied: pytz in /opt/venv/lib/python3.7/site-packages (from google-api-core<2.0.0,>=1.0.0->opencensus->ray) (2020.1)
Requirement already satisfied: googleapis-common-protos<2.0dev,>=1.6.0 in /opt/venv/lib/python3.7/site-packages (from google-api-core<2.0.0,>=1.0.0->opencensus->ray) (1.52.0)
Requirement already satisfied: google-auth<2.0dev,>=1.21.1 in /opt/venv/lib/python3.7/site-packages (from google-api-core<2.0.0,>=1.0.0->opencensus->ray) (1.23.0)
Requirement already satisfied: zipp>=0.5 in /opt/venv/lib/python3.7/site-packages (from importlib-metadata; python_version < "3.8"->jsonschema->ray) (3.3.0)
Requirement already satisfied: soupsieve>1.2; python_version >= "3.0" in /opt/venv/lib/python3.7/site-packages (from beautifulsoup4->google->ray) (2.0.1)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /opt/venv/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.21.1->google-api-core<2.0.0,>=1.0.0->opencensus->ray) (4.1.1)
Requirement already satisfied: rsa<5,>=3.1.4; python_version >= "3.5" in /opt/venv/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.21.1->google-api-core<2.0.0,>=1.0.0->opencensus->ray) (4.6)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /opt/venv/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.21.1->google-api-core<2.0.0,>=1.0.0->opencensus->ray) (0.2.8)
Requirement already satisfied: pyasn1>=0.1.3 in /opt/venv/lib/python3.7/site-packages (from rsa<5,>=3.1.4; python_version >= "3.5"->google-auth<2.0dev,>=1.21.1->google-api-core<2.0.0,>=1.0.0->opencensus->ray) (0.4.8)
WARNING: You are using pip version 20.2.3; however, version 20.2.4 is available.
You should consider upgrading via the '/opt/venv/bin/python -m pip install --upgrade pip' command.
import ray
import time
import os
ray.__version__
# A toy example to demonstrate normal function in python which might let's say 2 seconds to complete
def basic_function(x):
time.sleep(2)
return x*x
# Exact replicate of the previous function but with a decorator of ray
@ray.remote
def ray_function(x):
time.sleep(2)
return x*x
%%time
# Run the basic python function 4 times
y = [basic_function(x) for x in range(4)]
y
CPU times: user 838 µs, sys: 192 µs, total: 1.03 ms
Wall time: 8.01 s
# Init function of ray the resources can be specified here, for example num_cpus, num_gpus etc.
ray.init(num_cpus=os.cpu_count())
2020-10-31 08:47:11,534 INFO services.py:1166 -- View the Ray dashboard at http://127.0.0.1:8265
2020-10-31 08:47:11,538 WARNING services.py:1625 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 67108864 bytes available. This may slow down performance! You may be able to free up space by deleting files in /dev/shm or terminating any running plasma_store_server processes. If you are inside a Docker container, you may need to pass an argument with the flag '--shm-size' to 'docker run'.
%%time
# Ray function can be used with same arguments but need remote() is added
futures = [ray_function.remote(x) for x in range(4)]
CPU times: user 1.54 ms, sys: 410 µs, total: 1.95 ms
Wall time: 1.74 ms
%%time
# Get function takes all the list of futures from the previous output and materalize the results
y_h = ray.get(futures)
y_h
CPU times: user 37.1 ms, sys: 6.47 ms, total: 43.5 ms
Wall time: 3.2 s
# Check if ray output y_h and python outout y are the same indeed
assert y_h == y