![見出し画像](https://assets.st-note.com/production/uploads/images/148669732/rectangle_large_type_2_28ffc4d159963f4d0e354bbed6070c15.png?width=1200)
RDMA プロセス
RDMA(Remote Direct Memory Access)は、ノード間の低レイテンシー、高スループットのデータ転送を容易にします。RDMAは、メモリ間の直接通信を可能にし、CPUやオペレーティング・システムをバイパスすることで、データ移動を最適化し、アプリケーションのパフォーマンスを向上させ、AIトレーニングやリアルタイム分析などのデータ集約型環境におけるスケーラブルなデプロイメントをサポートします。
RDMAはAIプロセスにとって本当に重要です。なぜなら、カーネルやCPUの割り込みを待つことは、プロセス全体のレイテンシに大きく影響し、総消費時間が増大するからです。(ChatGPTやLlamaのトレーニングに2倍から3倍以上の時間がかかることを想像してみてください)。
RoCEやInfinibandの話は抜きにして、RDMA処理について説明します。
1- 接続
RDMA 操作を開始する前に、通信するノードは接続を確立する必要があります。ノードは通常、管理サービスを使用してお互いを検出し、InfiniBandやRoCE/iWARPのTCPコネクションのような信頼性の高いコネクションを確立します。その後、キュー・ペア(QP)、完了キュー(CQ)、保護ドメイン(PD)などのリソースを割り当てます。
2- メモリの登録
RNIC(RDMA NIC)はメモリに直接アクセスするためにメモリ領域の物理アドレスが必要なので、 メモリを登録することは非常に重要です。最初のステップは、メモリ領域を確立するために RNIC にメモリバッファを登録することです。その後、メモリ領域へのローカル・アクセスを許可するためのローカル・キー(L_Key)が作成され、リモート・アクセスのためのリモート・キー(R_Key)が生成されます。R_Keyはメモリ・アクセスのために別のノードと交換されます。最後のステップは、登録されたメモリがオペレーティング・システムによってページアウトされないように、確実にピン留め(物理メモリにロック)することです。
3- QPのセットアップ
QPはRDMAにおける主要な通信ポイントであり、従来のネットワーキングにおけるソケットの仕組みに似ています。各QPは送信キュー(SQ)と受信キュー(RQ)で構成されます。
QPが生成されると、それらはPDと関連付けられ、PDはRDMAにおけるセキュリティとリソース管理のメカニズムを提供します。PDは、メモリ領域、QP、CQなどのリソースが相互作用できるスコープを確立します。これはネットワークにおけるVRFに似ています。
その後、初期化プロセスにおいて、QPは様々な状態(RESET、INIT、RTR、RTS)を経て、データの送受信に備えます。作業要求は作業キュー・エントリ(WQE)の形をとり、QPの送信キューまたは受信キューに提出されます。これらのエントリーは、操作のタイプ(RDMAリード/ライト、送信/受信など)と関係するメモリ・バッファを指定します。
4- データ転送
QPがセットアップされると、データ転送が可能になります。RDMAは、書き込み、読み出し、送受信の各操作をサポートしています。
作業要求は、RDMAの読み書きまたは送信操作の場合はQPの送信キューに、受信タスクの場合は受信キューに向けられます。RNICはこれらの作業要求を処理し、CPUをバイパスしてノードのメモリ間で必要なデータ転送操作を直接実行しているのです。操作が完了すると、それが成功したかどうかを示す完了キュー・エントリ(CQE)がCQに追加されます。CQには、QPに提出された操作の完了ステータスに関する情報を提供するCQEが含まれています。
5- 完了
アプリケーションはCQをポーリングするか、イベント駆動型メカニズムを使用して、操作が完了したときの通知を受け取ります。その後、アプリケーションはCQEを処理してRDMA操作の結果を判断し、リソースの解放や操作の再試行など、必要なアクションを実行します。
この記事が気に入ったらサポートをしてみませんか?