Pythonベースの分散型高可用性拡張エンジンRay 0.3.0リリース

6241 ワード

Ray:0.3リリース
私たちはRayの0.3バージョンを発表することを喜んでいます.今回のリリースには主にdistributed actor handlesとRayが含まれています.tune-一連のバグの修復と安定性の向上を含む新しいスーパーパラメトリック検索ライブラリ.最新バージョンに更新するには、次の操作を行います.
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.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におけるA 3 CのPyTorchモデルのサポートを増加させた.次のA 3 C構成でこれを試してみてください.
    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アプリケーションの実現に有用であることを見出した.