トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

PY-Ray

  Python マルチ API

インストール

./00venv/bin/pip3 install --upgrade ray

起動方法

ヘッドノード(pythonスクリプトを起動するノード)

./00venv00/bin/ray start --head --port=6379

ワーカーノード

./00venv00/bin/ray start --address='<ヘッドノードのIP>:6379'
## ./00venv00/bin/ray start --address='192.168.21.201:6379'

サンプル

pythonコードをヘッドノードで起動する


#!/bin/env python3
# -*- coding: utf-8 -*-

import ray
import time

@ray.remote
def worker_func(pid):
   time.sleep(5)
   return f"pid {pid} finished"

ray.init()
start = time.time()
results = [worker_func.remote(i) for i in range(20)]
print(ray.get(results))
print("Elapsed:", time.time() - start)

numba と Ray の混在(@njit をRayから呼び出す??)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
from numba import njit
import ray

@njit(fastmath=True)
def mz_centroid(_int_f, _mz_f):
   return ((_int_f/_int_f.sum()) * _mz_f).sum()

@ray.remote
def f():
   a = np.random.random(10)
   b = 123
   return mz_centroid(a, b)

ray.init()
results = ray.get([f.remote() for i in range(10)])
print(results)