**RLのポスト・トレーニング時に、重みの転送を2 秒未満で行う**

2026/01/20 4:53

**RLのポスト・トレーニング時に、重みの転送を2 秒未満で行う**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


要約

Kimi‑K2 は、256 個の BF16 訓練 GPU から 128 個の FP8 推論 GPU に重みを転送することで、1 兆パラメータモデルに対して 1.3 秒 のクロスマシンパラメータ更新を実現します。転送は一方向の RDMA WRITE を使用しています。

更新ワークフローはコントローラーによって駆動され、以下の手順で構成されています:

  1. すべての訓練 GPU からパラメータメタデータを収集します。
  2. 各ソース GPU をターゲット推論 GPU にマッピングし、転送順序を定義する静的重み転送スケジュールを計算します。
  3. このスケジュールをすべての訓練 GPU に配布します。
  4. 各訓練ステップ後に GPU を通知して予定された転送を開始させます。

訓練パラメータは Fully Sharded Data Parallel (FSDP) でシャーディングされ、

full_tensor()
は任意の GPU がフルパラメータを再構築できるようにします。複数のDeviceMesh グループが並列に動作し、グループ内ではポイント・ツー・ポイント通信、グローバル同期は Ethernet 上の GLOO を介して行われます。

転送タスクは 4 段階にパイプライン化されます:

  • ホストからデバイスへの memcpy(オフロード時)。
  • 投影融合 / 量子化。
  • RDMA WRITE による宛先 GPU メモリへの書き込み。
  • グローバルバーリア同期。

各段階のタスクはキューに入れられ重ね合わせて、ハードウェア資源を最大限活用します。GPU メモリ使用量は設定可能な ウォーターマーク により制御され、新しいタスクはオンザフライ一時メモリがこの上限未満のときのみ開始されます。これにより過負荷を防ぎつつネットワークを飽和状態に保ちます。

1.3 秒更新時間を実現する主な設計選択:

  • ポイント・ツー・ポイント通信は、単一の rank‑0 ボトルネックではなくネットワーク全体を飽和させる。
  • 一方向 RDMA は RPC/シリアライズオーバーヘッドを排除し、推論エンジンに変更を加える必要がない。
  • 静的スケジュールはステップごとの制御プレーンレイテンシーを削減する。
  • コンポーネントの明確な分離は、設計・テスト・最適化を容易にする。

結果として得られる 1.3 秒更新ウィンドウ は、大規模強化学習微調整で Kimi‑K2 上の 1 兆パラメータシステムを迅速かつ信頼性高く転送できる基盤となり、研究者や企業がダウンタイムを最小限に抑えながら生産性向上を図れるようにします。

本文

最近、Kimi‑K2(1 Tパラメータ)に対して 1.3秒でクロスマシンのパラメータ更新 を実現しました。これは256台のトレーニングGPU(BF16)から128台の推論GPU(FP8)へ重みを転送したものです。
非同期強化学習ファインチューニングでは、トレーニングと推論が別々のGPUで実行されます。各トレーニングステップ後に新しい重みを推論ノードへプッシュする必要がありますが、従来のフレームワークだと数秒、あるいは数分かかることもあります。

RDMA ポイント‑ツー‑ポイント通信 を活用することで、推論エンジンを変更せずに重み転送を爆速化し、コードを書きやすく保守もしやすくしています。


RDMA WRITE:一方通行転送

私たちのソリューションは

RDMA_WRITE
に基づいています。これは一方向性のプリミティブで、ソースが直接宛先GPUメモリに書き込みます:

def rdma_write(src_ptr, dst_ptr, size, src_mr, dst_mr):
    ...

宛先側は転送を検知しません。
これにより、トレーニングノードから推論ノードへ低遅延・高スループット・ゼロコピーの転送が可能になり、推論ノード側には制御ロジックが不要です。


高水準ワークフロー

  1. メタデータ収集 – コントローラが全トレーニングおよび推論GPUからパラメータメタデータを取得
  2. スケジュール計算 – スタティックな重み転送スケジュールを算出し、どのトレーニングGPUがどのパラメータをどの推論GPUへ何順で送るか決定
  3. スケジュール配布 – コントローラが全トレーニングGPUにスケジュールを送信
  4. 実行 – 各トレーニングステップ後、コントローラが転送開始をトレーニングGPUへシグナル

重み転送の実行

DeviceMesh と Mesh Groups

  • トレーニング中のパラメータは FSDP 配置に従って分散
  • full_tensor()
    を使うと、DeviceMesh の全GPUが完全なパラメータを再構築できるため、任意の GPU が転送元になり得る
  • 複数の disjoint DeviceMeshesmesh group を形成。同一グループ内は分離されているので転送が干渉せず完全に並列で実行可能
  • Mesh グループ間ではグローバルバリアを挿入し順序を保証

タスクパイプライン

各パラメータテンソルの転送をタスクとみなし、重み転送プロセスは複数種類のハードウェア源を利用するため、時間的に重なるように異なるパイプラインステージへ分割します:

ステージ操作
1. Host → Device memcpyFSDP が CPU にオフロードした場合
2. パラメータ準備
full_tensor()
で完全重みを再構築、プロジェクション融合適用、必要なら量子化
3. RDMA 転送リモート推論GPUメモリへゼロコピー書き込み
4. グローバルバリア
full_tensor()
が完了した後、Ethernet 経由で GLOO を使って Mesh グループ間を同期

実装では各ステージの FIFO キューを保持し、キュー先頭が完了すると次のステージの末尾へ移動させます。

GPU メモリ使用量制御

full_tensor()
やその他 GPU 操作は一時的なメモリ消費を増加させるため、タスク実行は現在のオンザフライタスクが占有する一時 GPU メモリが設定可能ウォーターマーク未満の場合にのみ開始します。


なぜ高速でシンプルなのか

  1. ポイント‑ツー‑ポイント通信

    • 従来は全パラメータを rank‑0 GPU 経由で集約→送信→再分散するため、PCIe バンド幅と NIC(≈400 Gbps ≈ 50 GB/s)に限定されるボトルネックが発生
    • ポイント‑ツー‑ポイント構成は各トレーニング GPU が直接推論 GPU に送信し、ネットワーク全体をフルに活用
  2. 一方通行データ転送

    • いくつかのシステムでは
      update_weight()
      を推論エンジンで呼び出すたびに RPC、シリアライズ、制御平面調整が発生
    • RDMA_WRITE
      により推論 GPU メモリを静かに更新(コピー不要、CPU 制御ロジック不要、推論エンジン変更不要)
  3. パイプライニング

    • 重み転送はホスト‑デバイスのデータ移動、GPU でのプロジェクション融合/量子化計算、RDMA ネットワーク、Ethernet の制御平面という四つのハードウェアリソースを活用
    • タスクをパイプラインステージに分割し、これらリソース間で時間的オーバーラップを実現
  4. スタティックスケジュール

    • 一部実装は各トレーニングステップごとに転送スケジュールを再計算し、余分な制御平面遅延を招く
    • 当社のスケジュールは初期化時に一度だけ計算され、以降はそのプランを再生するだけで実行が予測可能かつ軽量
  5. クリーンな分離

    • メタデータ収集、ノード内集約、プロジェクション融合、量子化、ネットワーク転送などを個別コンポーネントに分割
    • 各コンポーネントは単体テスト可能で、独立して最適化が行える

結論

高速かつ信頼性の高い重み転送は、大規模 RL ファインチューニングに不可欠な構成要素です。

RDMA_WRITE
プリミティブ、スタティック転送スケジュール、およびパイプライン実行を組み合わせることで、Kimi‑K2 で 1.3 秒 のトランザクション時間にまで縮小しました。この手法は直感的に理解でき、保守が容易であり、従来設計のボトルネックを回避します。

同じ日のほかのニュース

一覧に戻る →

2026/01/20 2:13

**回答** **Aレコード**が先に登場しました。 * DNSでは、A(Address)レコードはホスト名をIPv4アドレスへ直接結び付けます。 * CNAME(Canonical Name)レコードは後に導入され、IP アドレスではなく別の名前へのエイリアスとして機能します。そのため解決には A(あるいは AAAA)レコードが必要です。

## Japanese Translation: (以下、翻訳) **改訂された要約** 2026年1月8日、Cloudflare の 1.1.1.1 リゾルバは、12 月 2 日にコード変更が行われた結果、DNS 応答で CNAME レコードの順序が再構成され(回答セクション内で最初から最後へ移動)、世界的な DNS 障害を起こしました。Linux の glibc `getaddrinfo` や Cisco Ethernet スイッチの DNSC プロセスなど、A/AAAA レコードより前に CNAME を期待するスタブリゾルバは有効な回答を無視し、全世界で解決失敗が発生しました。 Cloudflare は問題を迅速に検知しました。変更は 12 月 10 日にテストされ、1 月 7 日からグローバルに展開されました。インシデントは 18:19 に宣言され、18:27 にリバートが開始され、19:55 にはサービスが完全に復旧しました。根本原因は RFC 1034 の非規範的「一つ以上の CNAME RRs による前置」の表現であり、CNAME が他のレコードよりも先に来ることを許容しています。一方、RFC 4035 は署名付きゾーンについて明示的な「MUST」を使用しますが、未署名ゾーンの順序付けは必須としません。 再発防止策として Cloudflare は IETF に対して draft‑jabley‑dnsop‑ordered‑answer‑section を提出し、CNAME が他のレコードタイプよりも前に出現すべきであることを提案します。その間、クライアントは DNS 応答を許容的に解析するよう採用すべきです。今回のインシデントは、レコード順序の一貫性テストを強化し、将来の障害を防ぐために業界標準を明確にする必要性を浮き彫りにしました。

2026/01/20 5:01

**C++ の所有権システムの理解** C++ はオブジェクトがどのように作成・使用・破棄されるかを決定する「所有権モデル」に依存しています。所有権を適切に管理することは、リソース安全性やパフォーマンス、メモリリークやデングリングポインタなどのバグを回避するために不可欠です。 --- ### 1. 基本概念 | 概念 | 定義 | |------|------| | **リソース** | 解放が必要なもの(メモリ、ファイルハンドル、ソケット等)。 | | **所有権** | リソースを不要になったときに解放する責任。 | | **スコープ** | オブジェクトが存在する期間の範囲。 | --- ### 2. 所有権パターン - **自動ストレージ(スタック)** - オブジェクトはスタック上で作成される。 - スコープを抜けたときに自動的に破棄される。 - 高速で手動解放不要。 - **動的割り当て(ヒープ)** - `new`/`delete` や生ポインタを使用。 - 呼び出し側が明示的にメモリを解放する必要がある。 - 適切に管理されないとリークやデングリングポインタの危険がある。 - **スマートポインタ**(C++11以降) - **`std::unique_ptr<T>`** - 単一所有者、コピー不可。 - 移動セマンティクスで所有権を移譲。 - **`std::shared_ptr<T>`** - 参照カウントによる共有所有。 - C++17以降はスレッド安全な参照カウント。 - **`std::weak_ptr<T>`** - `shared_ptr` の非所有オブザーバー。 - 循環参照を打破する。 - **リソース取得=初期化(RAII)** - コンストラクタでリソース取得をカプセル化。 - デストラクタで解放。 - 例外が投げられた場合でもクリーンアップを保証。 --- ### 3. ベストプラクティス 1. **可能な限り自動ストレージを優先**:手動クリーニング不要。 2. **動的リソースにはスマートポインタを使用** - 排他所有なら `unique_ptr`。 - 真の共有所有が必要なときだけ `shared_ptr` を使う。 3. **公開インターフェイスで生ポインタは非所有の場合に限定し、意図を文書化**。 4. **リソース管理クラスにはムーブセマンティクスを実装**:コピーコストを抑える。 5. **循環参照が起きそうな場合は `weak_ptr` を活用**。 6. **「Rule of Five」を遵守**:デストラクタ、コピー/ムーブコンストラクタ・代入演算子を必要に応じて実装。 --- ### 4. よくある落とし穴 | 問題 | 原因 | 対策 | |------|------|------| | メモリリーク | `delete` を忘れる、またはスマートポインタを使わない | RAII / スマートポインタを使用 | | デングリングポインタ | オブジェクトが最後の参照よりも先に破棄される | スマートポインタで管理、デングリング参照を避ける | | 二重解放 | 同じポインタを複数所有者が `delete` する | 単一所有 (`unique_ptr`) を強制 | | 循環依存 | 相互に `shared_ptr` が参照し合う | 適切な箇所で `weak_ptr` に置き換える | --- ### 5. 要約 C++ の所有権システムは、リソースがいつ割り当てられ、いつ解放されるかを制御するためのルールとツールのセットです。自動ストレージ、RAII、およびスマートポインタを活用すれば、安全で効率的、かつ保守性の高いコードを書くことができます。

## Japanese Translation: 記事では、C++ がオブジェクトの所有権、ライフタイム、およびリソース転送をどのように管理しているかを説明し、コードが安全で効率的かつバグフリーであることを保証しています。明示的な所有権ルールを強調しており、`char*` を返す関数は呼び出し側が解放するためにメモリを割り当てる場合もあれば、別のオブジェクトが所有するデータへのポインタを渡す場合もあります。呼び出し側はどちらの場合かを知っておく必要があります。 主な仕組みとして RAII(リソース獲得=初期化)、正しいデストラクタ設計、参照のライフタイム、およびムーブセマンティクスが挙げられます。RAII はリソースのライフタイムを変数のスコープに結び付け、オブジェクトがスコープから外れると自動的にデストラクタでクリーンアップされることを保証します。テキストは参照やポインタが指すオブジェクトより長く生存してはならないと警告し、長寿命のオブジェクトに参照を保存するとダングリング参照が発生する可能性があると述べています。 例では、手動の `new`/`delete` と例外処理との対比として `std::unique_ptr<char[]>` の使用を示し、スマートポインタがどれほど安全で例外安全であるかを説明しています。記事は `std::move` が単にオブジェクトを右辺値参照(`T&&`)へキャストするだけであり、自身でムーブ操作を行うわけではないと明確にし、むしろムーブコンストラクタやムーブ代入演算子が選択されるようオーバーロード解決を可能にしていると説明しています。右辺値参照はオブジェクトが安全に変更できるか、そのリソースが転送可能であることを示し、左辺値参照はコピーを意味します。 この記事は、基本的な C++ に慣れた開発者に対して RAII とムーブセマンティクスを自身のプロジェクトに取り入れるよう促しています。そうすることでプログラムは例外安全になり、`std::vector` の再割り当てなどコンテナ操作が改善され、最終的にはメモリエラーを減らし、パフォーマンスを向上させ、チームや企業の保守コストを低減する、より明確で安全なコードになると述べています。 記事はまた、ムーブセマンティクスと RAII に関する詳細情報を得るためのリンク(例:cppreference のページ)も提供しています。

2026/01/20 3:15

**AppleのNano‑Texture(2025年)に関する注記** - 3 nmプロセスで開発され、前例のない高密度を実現 - インター・チップ帯域幅は最大10 Tb/sをサポート - 統合AIアクセラレータが従来世代に比べ50倍の速度向上を提供 - 同等性能で電力消費を約30 %削減 - 既存のARMベースSoCパッケージング規格と互換性あり - 2025年第4四半期リリース予定。ハイ・パフォーマンスコンピューティングおよびデータセンター向けを想定 ---

## Japanese Translation: --- ### Summary Appleの2024年版MacBook Pro Nano‑Textureディスプレイは、輝きを大幅に抑えることで屋外使用を想定して設計されており、黒字白背景のテキストが2021年モデルの光沢画面よりも遥かに読みやすくなっています。しかし、明るい日差しの中で内容を見るにはバックライトを約**90 %以上**に設定する必要があります。バックライトをオフにすると画面は暗くなります。Nano‑Texture表面は指紋・汚れ・飛沫が付着すると非常に目立つため、Appleは特別クリーニングクロス(アルコールで濡らして使用)を提供し、定期メンテナンスのために**最低でも5枚**携帯することを推奨しています。ノートパソコンを閉じるとキーボードとトラックパッドが接触した部分に微細な擦り傷が残る場合がありますが、バックライトオフ時にのみ目立ち、通常の使用には影響しません。 このアップグレードは既にプレミアム価格であるMacBook Proに対して約**$150**を追加します。以前の屋外向けディスプレイ(Daylight Computerの転写型LCDなど)と比較すると、後者はグレースケール表示で直射日光下ではバックライトオフが最適ですが、Nano‑Textureはテキスト密度(ドット数)が高く、バックライトをオンに保つ必要があり、より頻繁な清掃が求められます。 屋外で信頼性のあるコンピューティングが必要なユーザーは、追加のワイプを携帯し、アウトドアではバックライトをオンにしてデバイスを丁寧に扱い、擦り傷を避けることになるでしょう。この慣習が屋外対応ノートパソコンで標準化される可能性がありますが、追加コストとメンテナンスは、継続的なアウトドア使用を重視するプロフェッショナルに限定されるかもしれません。企業はエルゴノミクスのメリットと高価格点とのバランスを検討します。