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)