トップ 一覧 検索 ヘルプ 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'

firewalld への追加
 # firewall-cmd --add-port=6379/tcp --zone=public

! サンプル
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)
----