計算負荷の高いタスクに直面した場合、マルチプロセスに加えて分散コンピューティングが必要になります。 Python で分散コンピューティングを実装するにはどうすればよいでしょうか?今日は、Ray を使用する非常に簡単な方法を紹介します。 レイとは何かRay は、動的グラフ コンピューティング モデルを使用し、分散アプリケーションを作成するためのシンプルで汎用的な API を提供する Python ベースの分散コンピューティング フレームワークです。とても便利です。デコレータを使用すると、ごくわずかなコードを変更するだけで、元々単一のマシンで実行されていた Python コードの分散コンピューティングを簡単に実装できます。現在は主に機械学習に使用されています。 Ray の特徴: 1. 分散アプリケーションを構築および実行するためのシンプルなプリミティブを提供します。 2. ユーザーがコードをほとんどまたはまったく変更せずに、単一マシンのコードを並列化できるようにします。 3. Ray Core には、複雑なアプリケーションをサポートするためのアプリケーション、ライブラリ、ツールの大規模なエコシステムが含まれています。 Tune、RLlib、RaySGD、Serve、データセット、ワークフローなど。 Rayをインストールする公式バージョンをインストールする最も簡単な方法:
Windowsシステムの場合は、Visual C++ランタイムをインストールする必要があります。 その他のインストール方法については、公式ドキュメントを参照してください。 Rayの使用デコレータは分散コンピューティングを処理できます。
まず ray.init() を実行し、分散タスクを実行する関数の前にデコレータ @ray.remote を追加して分散コンピューティングを実装します。デコレータ @ray.remote はクラスを装飾することもできます。
もちろん、前述の分散コンピューティングは、分散形式で、自分のコンピュータ上で実行されます。プログラムの実行中に、http://127.0.0.1:8265/#/ と入力して、分散タスクの実行ステータスを表示できます。 では、Ray クラスター コンピューティングをどのように実装するのでしょうか?続きをお読みください。 レイクラスターの使用Ray の強みの 1 つは、同じプログラムで複数のマシンを活用できることです。もちろん、Ray は 1 台のマシン上でも実行できます。通常は、マシンは 1 台しかないからです。しかし、本当の力は、マシンのクラスター全体で Ray を使用することです。 Ray クラスターは、ヘッド ノードとワーカー ノードのセットで構成されます。まずヘッドノードを起動し、ヘッドノードのアドレスをワーカーノードに割り当てて、クラスターを形成する必要があります。 Ray Cluster Launcher を使用してマシンを構成し、マルチノード Ray クラスターを起動できます。クラスター ランチャーは、AWS、GCP、Azure、Kubernetes、Alibaba Cloud、オンプレミス、Staroid、さらにはカスタム ノード プロバイダーでも使用できます。 Ray クラスターは Ray Autoscaler も活用できます。これにより、Ray はクラウド プロバイダーと対話して、仕様やアプリケーションのワークロードに基づいてインスタンスを要求またはリリースできます。 それでは、Ray クラスターの機能を簡単に説明しましょう。ここでは、Docker を使用して 2 つの Ubuntu コンテナを起動し、クラスターをシミュレートします。
具体的な手順: 1. Ubuntuイメージをダウンロードする
2. Ubuntuコンテナを起動し、依存関係をインストールする最初の開始
2番目を開始
IP アドレスを確認します:
次に、コンテナにそれぞれpython、pip、rayをインストールします。
3. ヘッドノードとワーカーノードを起動するコンテナの 1 つをヘッド ノードとして選択し、ここでは 172.17.0.2 を選択して、次を実行します。
デフォルトのポートは 6379 です。--port パラメータを使用して、デフォルトのポートを変更できます。起動後の結果は次のとおりです。 警告を無視するとプロンプトが表示されます。他のノードをヘッドにバインドする場合は、次のようにします。
別のノードで上記のコマンドを実行して、ワーカー ノードを起動します。 シャットダウンするには、次を実行します。
4. タスクを実行する任意のノードを選択し、次のスクリプトを実行して、ray.init() 関数のパラメータを変更します。
実行結果は次のとおりです。 172.17.0.2 は 4751 個のタスクを実行し、172.17.0.3 は 5249 個のタスクを実行し、分散コンピューティングの効果を実現していることがわかります。 最後の言葉Ray を使用すると、Python のマルチプロセスを使用せずに並列コンピューティングを実装できます。今日の機械学習は主に計算集約型のタスクであり、分散コンピューティングの助けがなければ、速度は非常に遅くなります。 Ray は、分散コンピューティングを簡単に実装するためのソリューションを提供します。公式ドキュメントには非常に詳細なチュートリアルと例が記載されています。ご興味がございましたら、ぜひご覧ください。 もし役に立つなら、私をフォローして毎日 Python テクノロジーを学んでみてはいかがでしょうか。 |
>>: 1分でDockerを使って新しいSentry-CLIを使い始める - バージョンを作成する
背景コンテナ プラットフォームの 3 つの価値、つまり安定性、効率性、コストはすべて容量管理に依存し...
Directspace の Web サイトが刷新され、コンピューター ルームがアップグレードされまし...
ウェブサイトの最適化に関して、人々の頭の中やインターネット上で最も多く知られている情報は、友好的なリ...
今朝ウェブサイトを更新したところ、ウェブサイトの PR が 1 から 3 に増加していることに驚きま...
VMware は、デジタル エンタープライズの本質的セキュリティ戦略を推進するために、2020 RS...
Tencent Cloudの12月の特別イベントが発表され、香港、北京、上海、成都、重慶のデータセン...
アプリケーションの継続的デリバリーと同様に、インフラストラクチャの継続的デリバリー パイプラインを構...
1. Baidu 360 はまたも国境紛争に直面。次の戦いはモバイル検索との戦いになるだろう1月26...
ウェブサイトの運用とメンテナンスの最適化中に遭遇する最適化の障害の分析。ご存知のように、ウェブサイト...
tmhhostの618イベントが始まりました(他のものよりかなり遅れて)、すべてのクラウドサーバーが...
年に設立された vpscreed は、ドイツと米国にデータ センターを持つインドの商人です。マネージ...
dedipath では、1 Gbps の帯域幅、無制限のトラフィック、デュアルコア E5、ニューヨー...
この記事の目的は、Bind9 を介して独自のサーバー (VPS) 上に独自の DNS サーバーを簡単...
spinservers は、米国サンノゼのデータセンターに 120 台の独立したサーバーを補充し、デ...
忙しくて長い間ブログを書いていませんでした。昨夜、シェアしたいという子供が、どこかで学んだ SEO ...