一個嵌套并行的簡單例子。一個應用運行兩個并行實驗(每個都是長時間運行任務),每個實驗運行一定數量的并行模擬(每一個同時也是一個任務)。

Ray 有兩種主要使用方法:通過低級 API 或高級庫。高級庫是構建在低級 API 之上的。目前它們包括 Ray RLlib,一個可擴展強化學習庫;和 Ray.tune,一個高效分布式超參數搜索庫。

Ray 的低層 API

開發 Ray API 的目的是讓我們能更自然地表達非常普遍的計算模式和應用,而不被限制為固定的模式,就像 MapReduce 那樣。

動態任務圖

Ray 應用的基礎是動態任務圖。這和 TensorFlow 中的計算圖很不一樣。TensorFlow 的計算圖用于表征神經網絡,在單個應用中執行很多次,而 Ray 的任務圖用于表征整個應用,并僅執行一次。任務圖對于前臺是未知的,隨著應用的運行而動態地構建,且一個任務的執行可能創建更多的任務。

計算圖示例。白色橢圓表示任務,藍色方框表示對象。箭頭表示任務依賴于一個對象,或者任務創建了一個對象。

任意的 Python 函數都可以當成任務來執行,并且可以任意地依賴于其它任務的輸出。如下示例代碼所示:

# Define two remote functions. Invocations of these functions create tasks

# that are executed remotely.

@ray
.
remote

def
multiply
(
x
,
y
):

return
np
.
dot
(
x
,
y
)

@ray
.
remote

def
zeros
(
size
):

return
np
.
zeros
(
size
)

# Start two tasks in parallel. These immediately return futures and the

# tasks are executed in the background.

x_id
=
zeros
.
remote
((
100
,

100
))

y_id
=
zeros
.
remote
((
100
,

100
))

# Start a third task. This will not be scheduled until the first two

# tasks have completed.

z_id
=
multiply
.
remote
(
x_id
,
y_id
)

# Get the result. This will block until the third task completes.

z
=
ray
.
get
(
z_id
)

動作器(Actor)

僅用遠程函數和上述的任務所無法完成的一件事是在相同的共享可變狀態上執行多個任務。這在很多機器學習場景中都出現過,其中共享狀態可能是模擬器的狀態、神經網絡的權重或其它。Ray 使用 actor 抽象以封裝多個任務之間共享的可變狀態。以下是關于 Atari 模擬器的虛構示例:

import
gym

@ray
.
remote

class

Simulator
(
object
):

def
__init__
(
self
):

self
.
env
=
gym
.
make
(
"Pong-v0"
)

self
.
env
.
reset
()

def
step
(
self
,
action
):

return
self
.
env
.
step
(
action
)

# Create a simulator, this will start a remote process that will run

# all methods for this actor.

simulator
=

Simulator
.
remote
()

observations
=

[]

for
_
in
range
(
4
):

# Take action 0 in the simulator. This call does not block and

# it returns a future.

observations
.
append
(
simulator
.
step
.
remote
(
0
))

Actor 可以很靈活地應用。例如,actor 可以封裝模擬器或神經網絡策略,并且可以用于分布式訓練(作為參數服務器),或者在實際應用中提供策略。

圖左:actor 為客戶端進程提供預測/操作。圖右:多個參數服務器 actor 使用多個工作進程執行分布式訓練。

參數服務器示例

一個參數服務器可以作為一個 Ray actor 按如下代碼實現:

@ray
.
remote

class

ParameterServer
(
object
):

def
__init__
(
self
,
keys
,
values
):

# These values will be mutated, so we must create a local copy.

values
=

[
value
.
copy
()

for
value
in
values
]

self
.
parameters
=
dict
(
zip
(
keys
,
values
))

def
get
(
self
,
keys
):

return

[
self
.
parameters
[
key
]

for
key
in
keys
]

def
update
(
self
,
keys
,
values
):

# This update function adds to the existing values, but the update

# function can be defined arbitrarily.

for
key
,
value
in
zip
(
keys
,
values
):

self
.
parameters
[
key
]

+=
value

這里有更完整的示例:http://ray.readthedocs.io/en/latest/example-parameter-server.html

執行以下代碼初始化參數服務器:

parameter_server 
=

ParameterServer
.
remote
(
initial_keys
,
initial_values
)

執行以下代碼,創建 4 個長時間運行的持續恢復和更新參數的工作進程:

@ray
.
remote

def
worker_task
(
parameter_server
):

while

True
:

keys
=

[
'key1'
,

'key2'
,

'key3'
]

# Get the latest parameters.

values
=
ray
.
get
(
parameter_server
.
get
.
remote
(
keys
))

# Compute some parameter updates.

updates
=



# Update the parameters.

parameter_server
.
update
.
remote
(
keys
,
updates
)

# Start 4 long-running tasks.

for
_
in
range
(
4
):

worker_task
.
remote
(
parameter_server
)

Ray 高級庫

Ray RLib 是一個可擴展的強化學習庫,其建立的目的是在多個機器上運行,可以通過示例訓練腳本或者 Python API 進行使用。目前它已有的實現為:

UC Berkeley 的開發者在未來將繼續添加更多的算法。同時,RLib 和 OpenAI gym 是完全兼容的。

Ray.tune 是一個高效的分布式超參數搜索庫。它提供了一個 Python API 以執行深度學習、強化學習和其它計算密集型任務。以下是一個虛構示例的代碼:

from
ray
.
tune
import
register_trainable
,
grid_search
,
run_experiments

# The function to optimize. The hyperparameters are in the config

# argument.

def
my_func
(
config
,
reporter
):

import
time
,
numpy
as
np

i
=

0

while

True
:

reporter
(
timesteps_total
=
i
,
mean_accuracy
=(
i
**
config
[
'alpha'
]))

i
+=
config
[
'beta'
]

time
.
sleep
(
0.01
)

register_trainable
(
'my_func'
,
my_func
)

run_experiments
({

'my_experiment'
:

{

'run'
:

'my_func'
,

'resources'
:

{
'cpu'
:

1
,

'gpu'
:

0
},

'stop'
:

{
'mean_accuracy'
:

100
},

'config'
:

{

'alpha'
:
grid_search
([
0.2
,

0.4
,

0.6
]),

'beta'
:
grid_search
([
1
,

2
]),

},

}

})

可以使用 TensorBoard 和 rllab’s VisKit 等工具對運行狀態的結果進行實時可視化(或者直接閱讀 JSON 日志)。Ray.tune 支持網格搜索、隨機搜索和更復雜的早停算法,如 HyperBand。

本文章轉載微信公眾號@機器之心

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
返回頂部
上一篇
數據庫融入DevOps基因后,運維再也不用做背鍋俠了!
下一篇
LLM之RAG實戰|? 高級RAG:通過使用LlamaIndex重新排序來提高檢索效率
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
国产精品久久三| 亚洲国产精品一区二区www在线 | 蜜臀久久99精品久久久画质超高清| 欧美一区二区福利视频| 亚洲国产综合91精品麻豆| 色爱区综合激月婷婷| 日本视频一区二区三区| 亚洲欧洲日产国产综合网| 国产精品1区2区3区在线观看| 国产91丝袜在线18| 欧美久久久一区| 国产女人aaa级久久久级| 91精品国产综合久久香蕉麻豆| 免费在线一区观看| 欧美放荡的少妇| 成人av电影在线播放| 欧美最猛黑人xxxxx猛交| 日韩**一区毛片| 一区二区三区蜜桃网| 欧美成人a∨高清免费观看| 日韩电影免费一区| 99这里只有精品| 蜜桃精品在线观看| 欧美一级精品大片| 国产呦精品一区二区三区网站| 在线免费av一区| av在线一区二区三区| 91麻豆高清视频| 亚洲欧洲av在线| 成人av午夜电影| 国产精品家庭影院| 国产精品日韩精品欧美在线| 制服丝袜日韩国产| 91久久精品午夜一区二区| 粉嫩欧美一区二区三区高清影视| 欧美中文字幕一区二区三区亚洲| 亚洲激情图片小说视频| 在线播放/欧美激情| 日韩黄色片在线观看| 粉嫩av一区二区三区在线播放| 久久疯狂做爰流白浆xx| 三级在线观看一区二区| 中文字幕亚洲电影| 在线精品视频一区二区三四| 久久久久久97三级| 综合激情网...| 日日摸夜夜添夜夜添亚洲女人| 图片区小说区国产精品视频 | 一二三区精品福利视频| 欧美一卡二卡三卡四卡| 99国产麻豆精品| 国产精品一区久久久久| 欧美一区二区三区视频免费| 欧美国产欧美亚州国产日韩mv天天看完整| 国产亚洲人成网站| 欧美人与z0zoxxxx视频| 一区二区三区在线免费播放| 国产麻豆精品在线| 欧美人与性动xxxx| 亚洲色欲色欲www| 91浏览器打开| 欧美日韩电影在线| 国产在线视频一区二区三区| 国产精品一二三在| 成人国产精品免费观看动漫| 精品一区二区在线视频| www久久精品| 国产久卡久卡久卡久卡视频精品| 91在线播放网址| 免费观看成人av| 成人激情电影免费在线观看| 欧美三级韩国三级日本一级| 欧美日韩精品电影| 国产精品综合av一区二区国产馆| 欧美一区二区三区视频在线观看 | 欧美日韩免费不卡视频一区二区三区| 国产精品久久久久久久蜜臀 | 成人h精品动漫一区二区三区| 性做久久久久久久免费看| 香蕉av福利精品导航| 精品中文字幕一区二区小辣椒 | 亚洲三级小视频| 欧美午夜片在线看| 另类专区欧美蜜桃臀第一页| 色嗨嗨av一区二区三区| 欧美日韩国产综合视频在线观看 | 狠狠色丁香久久婷婷综合丁香| 国产午夜亚洲精品理论片色戒| 99re热视频精品| 国产精品免费免费| 国产精品污网站| 日本一区二区电影| 国产精品女上位| 国产精品伦理在线| 中文字幕的久久| 免费观看在线色综合| 免费欧美日韩国产三级电影| 亚洲午夜激情av| 免费观看日韩av| 中文字幕一区av| 亚洲国产精品一区二区尤物区| 国产精品免费久久久久| 亚洲视频资源在线| 香蕉久久夜色精品国产使用方法 | 青娱乐精品在线视频| 黄色日韩三级电影| 丁香五精品蜜臀久久久久99网站| 成人h版在线观看| 色欧美片视频在线观看| 日韩免费高清视频| 色欧美88888久久久久久影院| 欧美二区乱c少妇| www.亚洲在线| 2022国产精品视频| 蜜桃久久久久久| 欧洲精品一区二区| 欧美国产日产图区| 国产三级欧美三级| 福利电影一区二区三区| 成人丝袜18视频在线观看| 国产蜜臀97一区二区三区| 成人精品小蝌蚪| 麻豆国产欧美日韩综合精品二区 | 国产精品视频免费| 欧美日本乱大交xxxxx| 亚洲综合男人的天堂| 免费观看在线综合| 91麻豆精品在线观看| 亚洲精品乱码久久久久久黑人| 972aa.com艺术欧美| 亚洲男同性视频| 成人性生交大片| av一本久道久久综合久久鬼色| 久久精品男人天堂av| 暴力调教一区二区三区| 一卡二卡三卡日韩欧美| 欧美一区二区啪啪| 国产成人精品亚洲午夜麻豆| 亚洲h在线观看| 国产网站一区二区| 欧美一区二区视频在线观看2022| 久久激情五月婷婷| 亚洲一区二区三区三| 久久久久久久久97黄色工厂| 99视频在线精品| 国产成人h网站| 久99久精品视频免费观看| 综合激情成人伊人| 日本少妇一区二区| 99久久er热在这里只有精品15 | 亚洲色图都市小说| 日本一区二区免费在线| 久久一二三国产| 一区二区三区av电影| 亚洲一区二区在线免费观看视频| 亚洲国产美女搞黄色| 亚洲男女毛片无遮挡| av一区二区三区| 久久不见久久见中文字幕免费| 91精品婷婷国产综合久久性色| 一区二区三区四区中文字幕| 亚洲欧美日韩一区| 亚洲国产成人91porn| 国产精品资源站在线| 欧美视频第二页| 日韩一区欧美一区| 福利电影一区二区三区| 51精品视频一区二区三区| 精品久久久久久久人人人人传媒| 中文字幕欧美日本乱码一线二线| 亚洲男女毛片无遮挡| 高清shemale亚洲人妖| 精品国产乱码久久久久久免费| 亚洲午夜久久久久中文字幕久| 成人国产一区二区三区精品| 欧美xxxxx裸体时装秀| 久久精品国产999大香线蕉| 91精彩视频在线| 中文字幕第一区| 亚洲精品免费一二三区| 99热在这里有精品免费| 欧美日韩视频在线一区二区| 日韩视频一区二区| 精品一区二区三区在线播放视频| 欧美精品视频www在线观看| 亚洲曰韩产成在线| 欧美日韩免费一区二区三区 | 2017欧美狠狠色| 国产精品一区在线| 欧美极品aⅴ影院| 91国偷自产一区二区三区成为亚洲经典| 中文字幕日韩av资源站| 日韩一区二区精品| 色综合色狠狠综合色| 国产经典欧美精品| 亚洲 欧美综合在线网络| 亚洲女爱视频在线| 亚洲男帅同性gay1069| 在线免费观看一区| 欧美吻胸吃奶大尺度电影|