llama.cpp、Hexagonバックエンドに複数デバイスへのrow-split分割を追加

llama.cppのリリースb10920で、Hexagonバックエンドに複数デバイスへモデル処理を分割するrow-split(multi-device model split)のサポートが入りました(#28589)。共同著者としてMax KrasnyanskyとAlexander Luがクレジットされています。

何が新しいか

変更はhex-mdevを中心に、マルチデバイス構成向けの広範な更新をまとめたものです。融合カーネルへのwork splittingの追加、演算子ごとのwork partitioning、fence・barrier・session処理、エラー処理、バッファ管理が複数デバイス前提で書き直されています。hex-contではmnpu向けにチャンクをキャッシュラインへ揃える処理も追加されました。

マルチデバイス側の状態はhtp_mdev_groupに集約され、分割ロジックはif (mdev_count > 1) {...}の内側に収める形へリファクタリングされています。MUL_MAT、CPY、ROPE、GLU、PAD、argsort、binary系などの各演算子も、mdev下でのwork splittingに合わせて更新されました。fence周りでは、予約スロットによるfence確保の堅牢化、dirty rangeのマージによるflush削減、ALLREDUCEのエラー処理改善、宛先が重なる場合にALLREDUCE+ADDを融合しない対応が入っています。

設定と試し方

項目 内容
デバイス構成 複数デバイスのグループ設定に対応
実行スクリプト デバイスグループを解析できるよう更新
ドキュメント ユーザー向け・開発者向けに新機能と演算子開発ガイドを追加

デバイス設定はデバイスグループを表現できるよう拡張され、実行スクリプトもグループ指定をパースできるようになっています。開発者向けドキュメントには演算子開発の詳細ガイドが加わり、冗長なnullチェックを避ける記述に更新されました。

この記事の固有名詞

コメント (0)

まだコメントはありません。

コメントを書く

2000文字以内