ホームページ > 記事 > テクノロジー周辺機器 > 分散機械学習をついに誰かがわかりやすく説明した
分散機械学習 (分散学習とも呼ばれる) は、複数のコンピューティング ノード (ワーカー ノード、ワーカーとも呼ばれる) を使用して機械学習または深層学習を実行するアルゴリズムとシステムを指します。パフォーマンスの向上、プライバシーの保護、および拡張を目的としています。より大きなトレーニング データとより大きなモデルに対応します。
フェデレーテッド ラーニングは特殊なタイプの分散学習とみなすことができ、分散機械学習で遭遇する問題の一部をさらに解決し、それによってプライバシー保護のための人工知能アプリケーションと製品を構築できます。
近年、新技術の急速な発展により、データ量はかつてないほど増大しています。機械学習アルゴリズムは、データセットの分析や意思決定システムの構築にますます使用されています。また、自動運転車の制御、音声認識、消費者行動の予測などの問題が複雑なため (Khandani et al. 2010 を参照)、アルゴリズムによる解決策は実現できません。
場合によっては、単一マシンでのモデル トレーニングの実行時間が長いため、ソリューション設計者は分散システムを使用して、複雑なアプリケーションに必要な並列処理量と I/O 帯域幅を増やす必要があります。トレーニング データは簡単にテラバイト レベルに達します。 。
データ自体が分散している場合や、単一マシンに保存するにはボリュームが大きすぎる場合には、一元化されたソリューションは望ましくない場合もあります。たとえば、大企業は、別の場所に保存されたデータに対してトランザクション処理を実行したり、データ量が大きすぎて移動したり一元化したりできません。
このようなタイプのデータ セットを機械学習問題のトレーニング データとしてアクセスできるようにするには、並列コンピューティングが可能で、複数のデータ分布に適応し、障害回復機能を備えたアルゴリズムを選択して実装する必要があります。
近年、機械学習技術が広く活用されています。競合するさまざまな方法やアルゴリズムが登場していますが、使用されているデータ表現は構造的に非常に似ています。機械学習の計算のほとんどは、ベクトル、行列、またはテンソルの基本的な変換に関するものであり、線形代数の一般的な問題です。
この操作を最適化する必要性は、ハイ パフォーマンス コンピューティング (HPC) の分野で数十年にわたって非常に活発な研究の方向性でした。したがって、HPC コミュニティの一部のテクノロジとライブラリ (BLAS や MPI など) は、機械学習コミュニティによって首尾よく採用され、システムに統合されています。
同時に、HPC コミュニティは機械学習を新たな高価値ワークロードとして認識し、HPC メソッドを機械学習に適用し始めています。
Coates らは、商用ハイパフォーマンス コンピューティング (COTSHPC) システム上で、わずか 3 日間で 10 億のパラメータを備えたネットワークをトレーニングしました。
あなたらは 2017 年に、高性能コンピューティング アプリケーション向けに設計されたインテルのナイツ ランディング チップでニューラル ネットワークのトレーニングを最適化することを提案しました。
Kurth らは、2017 年に、深層学習の問題 (気象パターンの抽出など) を大規模な並列 HPC システム上でどのように最適化および拡張できるかを実証しました。
Yan らは 2016 年に、クラウド コンピューティング インフラストラクチャ上でディープ ニューラル ネットワーク アプリケーションをスケジューリングするという課題は、HPC の軽量分析やその他のテクノロジを借用してワークロード要件をモデル化することで解決できると提案しました。
Li らは 2017 年に、アクセラレータ (アクセラレータは多くの場合、主要な高性能コンピューティング システムに導入されています) 上で実行されている場合のハードウェア エラーに対するディープ ニューラル ネットワークの回復特性を研究しました。
他の大規模コンピューティングの課題と同様、ワークロードを高速化するための根本的に異なる 2 つの補完的な方法があります。1 つはマシンにリソースを追加する (GPU などの垂直スケーリング/継続的な改善) TPU コンピューティング コア)、システムにノードを追加します(水平拡張、低コスト)。
従来のスーパーコンピューター、グリッド、クラウドの間の境界線は、特に機械学習などの要求の厳しいワークロードに最適な実行環境に関しては、ますます曖昧になってきています。たとえば、GPU とアクセラレータは、主要なクラウド データ センターでより一般的です。したがって、許容可能なパフォーマンスを大規模に達成するには、機械学習ワークロードの並列化が重要です。ただし、集中ソリューションから分散システムに移行すると、分散コンピューティングはパフォーマンス、スケーラビリティ、障害回復力、またはセキュリティの点で深刻な課題に直面します。
各アルゴリズムには固有の通信パターンがあるため、通常の機械学習を効果的に分散できる一般的なシステムを設計するのは困難です。現在、分散機械学習にはさまざまな概念と実装がありますが、設計空間全体をカバーする共通のアーキテクチャを紹介します。一般に、機械学習の問題はトレーニング段階と予測段階に分類できます (図 1-5 を参照)。
▲図 1-5 機械学習の構造。トレーニング フェーズでは、トレーニング データを使用し、ハイパーパラメーターを調整して ML モデルが最適化されます。トレーニングされたモデルはシステムにデプロイされ、新しい入力データの予測を提供します
トレーニング フェーズには、大量のトレーニング データを入力し、進化的アルゴリズム (EA) やルールベースの機械学習アルゴリズムなど、一般的に使用される ML アルゴリズム (デシジョン ツリーや相関ルールなど) を使用することによる機械学習モデルのトレーニングが含まれます。 )、トピックモデル(TM)、行列分解(Matrix Factorization)、確率的勾配降下法(SGD)に基づくアルゴリズムなどを利用してモデルを更新します。
特定の問題に対して適切なアルゴリズムを選択することに加えて、選択したアルゴリズムに対してハイパーパラメータ調整を実行する必要もあります。トレーニング フェーズの最終結果は、トレーニングされたモデルを取得することです。予測フェーズでは、トレーニングされたモデルを実際にデプロイします。トレーニングされたモデルは、新しいデータを (入力として) 受け取り、予測を (出力として) 生成します。
モデルのトレーニング フェーズは通常、大量の計算を必要とし、大規模なデータセットを必要としますが、推論はより少ない計算能力で実行できます。トレーニング フェーズと予測フェーズは相互に排他的ではありません。増分学習ではトレーニング フェーズと予測フェーズを組み合わせ、予測フェーズで新しいデータを使用してモデルを継続的にトレーニングします。
分散に関しては、データ並列処理またはモデル並列処理という 2 つの異なる方法ですべてのマシンに問題を分割できます (図 1-6 を参照)。両方の方法を同時に適用することもできます。
#▲図 1-6 分散機械学習における並列性。データ並列処理は、トレーニング データ セットの異なるサブセットで同じモデルの複数のインスタンスをトレーニングすることですが、モデル並列処理は、単一モデルの並列パスを複数のノードに分散することです。
データ並列 (データ並列) メソッドでは、データはシステム内のワーカー ノードの数だけパーティション化され、すべてのワーカー ノードが同じアルゴリズムを異なるデータ セットに適用します。すべてのワーカー ノードで同じモデルを (集中化またはレプリケーションを通じて) 利用できるため、一貫した単一の出力が自然に生成されます。この方法は、データ サンプル上の独立した同一の分布の仮定を満たすすべての ML アルゴリズム (つまり、ほとんどの ML アルゴリズム) に使用できます。
モデル並列アプローチでは、データ セット全体の正確なコピーがワーカー ノードによって処理され、ワーカー ノードはモデルのさまざまな部分を操作します。したがって、モデルはすべてのモデル部分の集合体です。モデルパラメータは通常分割できないため、モデル並列処理手法をすべての機械学習アルゴリズムに自動的に適用することはできません。
1 つのオプションは、同じまたは類似のモデルの異なるインスタンスをトレーニングし、アンサンブルのようなメソッド (バギング、ブースティングなど) を使用して、トレーニングされたすべてのモデルの出力を集約することです。アーキテクチャの最終的な決定は、分散機械学習システムのトポロジです。分散システムを構成するさまざまなノードは、豊富な機能を実現するために、特定のアーキテクチャ パターンを通じて接続する必要があります。これは一般的なタスクです。ただし、モードの選択は、ノードが果たせる役割、ノード間の通信の程度、展開全体の障害回復力に影響します。
図 1-7 は、分散通信ネットワークの Baran の一般的な分類と一致する 4 つの可能なトポロジを示しています。集中型アーキテクチャ (図 1-7a) では、集約に対して厳密に階層的なアプローチが使用され、集約は単一の中央の場所で行われます。分散構造により中間集約が可能になり、集約がすべてのノード (ツリー トポロジなど) にブロードキャストされるとき (図 1-7b)、または複数のパラメーター サーバー間でシャーディングされたパーティション モデルを使用するときにレプリケーション モデルが継続的に更新されます (図 1) -7b)、1-7c)。完全分散アーキテクチャ (図 1-7d) は、ソリューションを統合する独立したノードのネットワークで構成され、各ノードには特定の役割が割り当てられません。
▲図 1-7 分散機械学習トポロジ
分散型機械学習の開発により、プライバシー保護のニーズも生まれ、その結果、コンテンツの一部がフェデレーテッド ラーニングと重複するようになりました。安全なマルチパーティ計算、準同型計算、差分プライバシーなどの一般的な暗号化手法も、分散機械学習で徐々に使用されています。一般に、フェデレーテッド ラーニングは、分散リソースを使用して機械学習モデルを共同でトレーニングする効果的な方法です。
フェデレーテッド ラーニングは、元のデータを単一のサーバーやデータ センターに移動せずに分散させたまま、複数のユーザーが協力してモデルをトレーニングする分散機械学習アプローチです。 Federated Learningでは、生データ、または生データを安全に処理して生成されたデータがトレーニングデータとして使用されます。フェデレーテッド ラーニングでは、トレーニング データの送信を回避しながら、分散コンピューティング リソース間の中間データの送信のみが許可されます。分散コンピューティング リソースとは、エンドユーザーのモバイル デバイスまたは複数の組織のサーバーを指します。
フェデレーテッド ラーニングは、データをコードに導入するのではなく、コードをデータに導入し、プライバシー、所有権、データの場所に関する基本的な問題を技術的に解決します。このように、フェデレーテッド ラーニングにより、法的なデータ制約を満たしながら、複数のユーザーが協力してモデルをトレーニングできるようになります。
この記事は、『Federated Learning: アルゴリズムとシステム実装の詳細な説明』(ISBN: 978-7-111-70349-5) から抜粋し、出版社の許可を得て掲載しています。
以上が分散機械学習をついに誰かがわかりやすく説明したの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。