1. 程式人生 > >基於Python的分散式高可用擴充套件引擎Ray 0.3.0釋出

基於Python的分散式高可用擴充套件引擎Ray 0.3.0釋出

Ray: 0.3釋出

我們很高興宣佈釋出Ray的0.3版本,本次釋出主要包括distributed actor handles 和Ray.tune——一個新的超參搜尋庫,還包括修復一系列bug和提高穩定性。
為了更新到最新版本,執行:

pip install -U ray

超參搜尋工具

本版本增加了Ray.tune,這是一個分散式超引數評估工具,用於強化學習和深度學習等訓練時間較長的任務,他目前包括以下功能:

  • 可插入的早期停止演算法,包括中值停止規則和超頻帶
  • 視覺化工具融合,比如TensorBoard、rllab’s VisKit, parallel coordinates visualization
  • 靈活的引數自動搜尋,包括網格搜尋、隨機搜尋、條件引數分佈
  • 資源感知排程,包括支援並行執行需要的GPU演算法,或者他們本身是並行和分佈的。

Ray.tune 提供用於深度學習和其他計算密集型任務的python api,下面是例子:

from ray.tune import register_trainable, grid_search, run_experiments

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的VisKit等工具實時顯示正在執行的結果
(或者可以直接從驅動程式節點讀取JSON格式的日誌):

檢視文件程式碼

Ray.tune與RLib整合

下面的例子可以用Ray.tune來試驗RLlib

cd ray/python/ray/rllib
python train.py -f tuned_examples/cartpole-grid-search-example.yaml

該tuned_examples目錄還包含用於諸如Pong和Humanoid之類的常見基準測試任務的預先調整的超引數配置。檢視 RLlib文件

Rllib開始支援PyTorch

優秀的強化學習庫應該與多個深度學習框架一起工作。作為邁向這一目標的一步,0.3增加了對RLlib中A3C的PyTorch模型的支援。你可以用下面的A3C配置來試試這個。

cd ray/python/ray/rllib
./train.py --run=A3C \
          --env=PongDeterministic-v4 \
          --config='{"use_pytorch": true, "num_workers": 8, "use_lstm": false, "model": {"grayscale": true, "zero_mean": false, "dim": 80, "channel_major": true}}'

分散式Actor Handles

Ray 0.3添加了對分散式actor操作符的支援,也就是說,可以讓多個呼叫者在同一個actor上呼叫方法。Actor的創造者可以將actore手柄作為引數傳遞給其他任務或其他actor方法。下面是一個例子,其中驅動程式建立一個actor來記錄訊息,並將actor handle傳遞給其他任務:

import ray

ray.init()

@ray.remote
class Logger(object):
    def __init__(self):
        self.logs = []
    def log(self, log_msg):
        self.logs.append(log_msg)
    def read_logs(self):
        return self.logs

@ray.remote
def task(logger, task_index):
    # Do some work.
    logged = logger.log.remote('Task {} is done'.format(task_index))

# Create an actor and get a handle to it.
logger = Logger.remote()
# Pass the actor handle to some tasks.
tasks = [task.remote(logger, i) for i in range(10)]
# Wait for the tasks to finish.
ray.get(tasks)
# Get the logs from the tasks.
print(ray.get(logger.read_logs.remote()))

這個特性仍然被認為是實驗性的,但是我們已經發現了分散式的actor 引數對於實現引數伺服器和 流式MapReduce應用程式很有用。

相關推薦

基於Python分散式可用擴充套件引擎Ray 0.3.0釋出

Ray: 0.3釋出 我們很高興宣佈釋出Ray的0.3版本,本次釋出主要包括distributed actor handles 和Ray.tune——一個新的超參搜尋庫,還包括修復一系列bug和提高穩定性。 為了更新到最新版本,執行: pip inst

基於Python分散式可用擴充套件引擎Ray 0.2.0釋出

Ray是為python機器學習、深度學習而開發的高可用、高效能的分散式框架,目前已經發布到0.2.0版本(注:2017-11-1已經發布了0.2.2),下面是版本釋出說明 我們很高興釋出Ray 0.2版本釋出,本次釋出包括以下資訊: * Plasma 物

基於HAProxy+Keepalived可用負載均衡web服務的搭建

1.2 epo cnblogs oba backup 保持 ica mysql redis 一 原理簡介 1.HAProxyHAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那

redis進化三:redis的分散式可用

前面的文章中3個單redis節點的分散式並不支援高可用。 高可用的基礎核心:主從複製結構。 redis的主從複製       支援一主多從,多級主從。根據企業經驗來看最多2級,最多6從       否則結構不穩定(經常不能同步資料) redis的主從結構  

陶輝的專欄(聚焦分散式可用系統。個人網站:www.taohui.pub)

高效能網路程式設計 詳細的從底層kernel提供的各種tcp程式設計介面,包括其使用場景和實現邏輯,到高層的執行緒、鎖、各種設計模式,再到更高層的軟體工層上的思考,細緻探討如何使伺服器的TCP程式設計能夠達到高併發、高TPS、高可

Spark叢集搭建+基於zookeeper的可用HA

export JAVA_HOME=/usr/java/jdk1.8.0_20/ export SCALA_HOME=/home/iespark/hadoop_program_files/scala-2.10.6/ export HADOOP_HOME=/home/iespark/hadoop_program

基於zookeeper的可用Hadoop HA叢集安裝

1.Hadoop叢集方式介紹     1.1 hadoop1.x和hadoop2.x都支援的namenode+secondarynamenode方式          優點:搭建環境簡單,適合開發者模式下除錯程式          缺點:namenode作為很重

kubernetes1.9.2基於kubeadm的可用安裝HA_Kubernetes中文社群

使用kubeadm安裝安全高可用kubernetes叢集 [安裝包地址] 非高可用安裝三步即可 在master上 cd shell && init.sh && master.sh 在node上 init.sh 在node上執行master輸出的join命令

分散式可用高效能檔案系統TFS

簡介 TFS(Taobao !FileSystem)是一個高可擴充套件、高可用、高效能、面向網際網路服務的分散式檔案系統,主要針對海量的非結構化資料,它構築在普通的Linux機器叢集上,可為外部提供高可靠和高併發的儲存訪問。TFS為淘寶提供海量小檔案儲存,通常檔案大小不

jeesz分散式架構-分散式可用

什麼是高可用 高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。 常見網際網路分散式架構如上,分為: (1)客戶端層:典型呼叫方是瀏覽器browser或者手機應用APP  (2)反向代理

理解 OpenStack 可用(HA)(3):Neutron 分散式虛擬路由(Neutron Distributed Virtual Routing)

本系列會分析OpenStack 的高可用性(HA)概念和解決方案:     Neutron 作為 OpenStack 一個基礎性關鍵服務,高可用性(HA)和擴充套件性是它的基本需求之一。對 neutron server 來說,因為它是無狀態的,我們可以使用負載均衡器(Load B

分散式可用性ID伺服器設計實現

服務端/後臺開發中如何生成id是每個開發者都會遇到的問題,在電商、遊戲領域尤其突出。如何保證生成id的唯一性、可靠性、高可用性,如何組織id的格式,在不同的應用場景和限制下實現方式也不盡相同。 我們的應用場景類似電商,在一個訂單的生命週期內,有多個邏輯需要生成各自的id,還要考慮到可讀性和靈活性

基於 ES 的可用搜索服務架構

搜尋,對大家而言既耳熟能詳又廣為使用,且與我們日常生活密切相關,相信大家每天都離不開Google或百度等,電商像淘寶、京東、亞馬遜都提供了非常強大的搜尋功能。本場Chat結合當前主流開源搜尋產品ElasticSearch,從技術角度向大家介紹高可用搜索服務架構。文章主要內容如

分散式可用架構學習筆記

      大型網站系統的系統架構需要考慮網站的業務架構和肺功能性架構,非功能性需要包括效能、可用性和可伸縮性。效能通過快取、負載叢集、非同步和後端代理實現。可用性需要考慮冗餘備份和故障恢復時間兩個方面

如何基於Python構建一個可擴充套件的運維自動化平臺

嘉賓簡介 劉天斯 從事網際網路運維工作已13年,目前就職於騰訊-互動娛樂部,負責遊戲大資料的運營,曾就職於天涯社群,擔任首席架構師/系統管理員。 熱衷開源技術的研究,包括系統架構、運維開發、負載均衡、快取技術、資料庫、NOSQL、分散式儲存、訊息中介軟體、大

Memcached叢集/分散式/可用 及 Magent快取代理搭建過程 詳解

當網站訪問量達到一定時,如何做Memcached叢集,又如何高可用,是接下來要討論的問題。有這麼一段文字來描述“Memcached叢集”Memcached如何處理容錯的?不處理!:) 在memcached節點失效的情況下,叢集沒有必要做任何容錯處理。如果發生了節點失效,應對的措施完全取決於使用者。節點失效時,

基於Docker的可用解決方案

Docker從2013年釋出第一個版本以來,已經火遍全球,技術迭代也比較頻繁,其周邊產品和技術也越來越豐富。Docker的輕量級容器不僅實現了資源隔離,而且幾乎可以執行在任何地方,使得部署和擴充套件變得非常容易,隨著Docker的日趨完善,目前Docker已經被越來越多的公司

使用Docker Compose部署基於Sentinel的可用Redis叢集

大家一定非常熟悉如何利用Docker啟動單個Redis容器用於開發環境,本文將介紹如何利用Docker Compose模板在本機和雲端部署基於Sentinel的高可用Redis 3叢集。Redis叢集可以在一組redis節點之間實現高可用性和sharding。今天我們重點圍繞master-slave的高可用模

HaProxy+keepalived+mycat分散式可用架構

  叢集部署圖的理解: 1、keepalive和haproxy必須裝在同一臺機器上,keepalived負責為該伺服器搶佔VIP。 2、192.168.1.107上的keepalived會搶佔

MaxCompute,基於Serverless的可用大數據服務

插入 很多 挑戰 兩個 導入 可用 以及 server 針對 摘要:2019年1月18日,由阿裏巴巴MaxCompute開發者社區和阿裏雲棲社區聯合主辦的“阿裏雲棲開發者沙龍大數據技術專場”走近北京聯合大學,本次技術沙龍上,阿裏巴巴高級技術專家吳永明為大家分享了MaxCom