Vectorized Secure Evaluation of Decision Forests

paper algorithm

BGV scheme で決定木をvectorize

@inproceedings{malik2021vectorized,
  title={Vectorized secure evaluation of decision forests},
  author={Malik, Raghav and Singhal, Vidush and Gottfried, Benjamin and Kulkarni, Milind},
  booktitle={Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation},
  pages={1049--1063},
  year={2021}
}

Abstract

通常のニューラルネットワークモデルはベクトル化が簡単

決定森などの複雑なMLモデルはベクトル化しにくいので自動的にベクトル化可能なプリミティブに再構築してコンパイルすることにした

様々な決定森モデルにおいてx10+ faster, スケーラビリティに優れている

1.Introduction

FHEは計算速度が遅いがパッキングでいくらかマシになる

回路がパッキングされた暗号文に対する演算として表現できれば同型演算の総数が減少してスケーリングできる

課題は任意の計算をベクトル化すること

NNの計算はもともとベクトル化されているのでFHEの応用の魅力的な対象になっている

決定木は各枝での比較があるのでFHEの加算乗算primitiveを使って表現するのが難しいしそもそも逐次的

1.1 COPSE: Secure Evaluation of Decision Forests

FHEスキームが提供するprimitiveは非干渉を保証するセマンティクスを持つ命令セットと考えられる

= 測定可能な出力から機密情報が漏れることはない

ので分岐を禁止しなければならない(そうしないとサイドチャネル攻撃みたいなことされる)

COPSEは決定木評価という逐次的なプロセスを効率的なFHEprimitiveにマッピングするためのシステム

2.3.3で紹介するが
Blindfolded Evaluation of Random Forests with Multi-Key Homomorphic Encryption
の多項式ベースな方式と違う

流れとして決定ノードを並列に評価 -> 決定を正規の順序に並べる reshaping -> 木の特定の深さのすべての決定を評価するレベル処理 -> 各深さの結果を最終分類に結合する集約

木の閾値をエンコードしてベクトルに, 分岐形状を行列に, して HELibを用いた C++に変換される.

1.2 Summary of contributions

決定森を効率的なFHE演算に変換するベクトル化コンパイラ

生成されたFHEプログラムの複雑度の解析

回路の深さが小さいか(低オーバーヘッドにつながる)

効率的なパッキングか(並列化の効率)

HElib 1.1.0 現在, MKHE は実装されていない

Multi-Key HEはサーバー, モデル所有者, データ所有者が全て異なること

2. Background

2.1 Decision Forests

決定木は分類モデル, 葉がクラスラベルに対応, false: 左, true: 右として選んでいく
決定森: 複数の決定木を並べたもので各木からクラスラベルを得た後結合する(平均, 多数決, etc)
木の親と子に依存関係があるため並列化できない, それぞれの木の構造が違うので森でまとめることもできない

2.3.1 Securely evaluating decision treees

決定森の代表的なsecurelyな推論方法2つ

oblivious transfer based methods (21: Wu et al.)

OT=紛失通信
additive homomorphismを用いてinteractiveに森の経路を明らかにすること無く評価できる
サーバーは決定結果がわからない

サーバーは木にダミーノードを追加しランダムに枝を並び替える

モデルがサーバーから平文で利用可能である必要がある

モデルを暗号文で提供するのでクライアント・サーバー両方から隠蔽

constructuing polynomial representations of the trees

Blindfolded Evaluation of Random Forests with Multi-Key Homomorphic Encryption
各木をBool多項式で表現して各決定ノードが変数, 各ラベルが多項式の項に対応して各項のANDが経路を符号化

ex.

, true: , false: のとき th多項式

はラベル ビット目

乗算深さは多項式の次数に比例
関連性のない決定ノード間のSIMD並列性を利用する我々の技術とは異なる

2.3.2 Evaluationg vectorized decision forests

決定木の評価をベクトル化するために
(19) では各枝の制御依存性をデータ依存性に変えるために各木を連続したメモリにレイアウトしている
その結果森の各木を1つのSIMDスロットに収める事ができて, 森全体の評価を並列に行える
各stepで次に評価するノードのインデックスをもらってそれにアクセスするのが必要なので
FHE上では効率的に行えない

2.3.3 Vectorized interence

CHET
はNN推論のための効率的なデータレイアウト, 暗号化パラメータを決定する. テンソルのような規則的なデータ構造では性能向上できるが, 決定木などの複雑なデータ構造は扱えない

3. Overview

Maurice: model owner モデルをベクトル化されたものにコンパイラで変換
Diane: data owner 各特徴量を分類して結果を得る
Sally: performs the computation実行

3.3 The Evaluation Algorithm

Step 0: 特徴量

木の特徴量の最大重複度を求める(図1だとyが3つなので3)
その回数だけ特徴量を繰り返す ()
これを暗号文とする

Step1: 比較

ツリー内の全ての閾値を含むベクトルを作成する. 対応がないところはセンチネル値で埋める(

)
暗号文と比較をする(1ステップで出来る)

Step2: 並び替え

を削除しながら訪れた順で並び替える

Step3: Level Processing

評価の順序が正しいので, それぞれのレベル(葉から数える)で処理を分離できる.
それぞれのレベルで2値のマスクを構築する

4. Vectorizable Evaluation Algorithm

4.1. Preliminaries

4.1.1. Definitions and Important Properties

Decision Forest

は 木 を持ち,
は枝 とラベル の集合
構造はベクトルの組 にエンコードされる.
: 特徴量の集合
: 特徴量のインデックス,
閾値
ex. なら
: 特徴量
の重複度
,
(ex. )

Representing Non-integral Values

閾値を精度 の固定小数点値で表す. この値は長さ のビットベクトルで表され,この表現は比較演算を並列で行うのに役立つ
Integer Comparison
Blindfolded Evaluation of Random Forests with Multi-Key Homomorphic Encryption で言われている 等しいビット長の2値を比較する SecCompアルゴリズム

Matrix Representation

行列は一般化対角行列(generalized diagonals)を並べて表される. 行列

Matrix Multiplication

Algorithms in HElib の方法で
行列 ベクトル の積を計算.

行列 vector で表す.
-th diagonal ベクトルは

mult depth 1 で計算できる.

Classfiication Result

比較結果を bitvector で持つ.

4.2. Algorithmic Primitives

4.2.1 Padded Threshold Vector

特徴量ベクトルと1:1対応するしきい値ベクトルは bitベクトルのシーケンス.
layout: vec[i]: 各しきい値の i th bit
長さにバラツキが出るのでセンチネル値()でpaddingする

4.2.2 Reshuffling Matrix

バイナリ行列 : 判定結果ベクトルと乗算すると正しい順序の判定結果となる行列 = 列と行で1つしかないやつ

4.2.3 Level Matrices

level matrix:
行,列 1は1つのみ

4.2.4 Level Masks

その枝が含まれるかどうかを表すバイナリ行列のマスク.
trueのパスのとき0, otherwize 1にして各レベルでXORを取るとすべてが1になるように = not は反転するという意味.
各レベルでANDを取ると結果になる.

4.3 Algorithm

今までの流れをアルゴリズムにする.

Algorithm for vectorized inference

SecComp を用いている.

5 Compiler and Runtime

上記のアルゴリズムは自然でないのでこういうアルゴリズムを自動生成するコンパイラについて考える.

Input Representation

決定森をシリアライズしたものを入力として, HElibBGV scheme 実装(C++)を吐き出す.
8章では可能な暗号化パラメータを一通り調べて良いパラメータを見つけた.

6 Complexity Analysis

決定森のパラメータ:
分岐数
レベルの総数
固定小数点精度
量子化幅

FHE回路のパラメータは

  • FHE primitive演算の数
  • FHE回路のmult depth

BFVの#opsと乗算深さ

BFVについてよく知らないので知る

op# of opsmult-depth
Add
AddConst
Multiply

Two Physical Parties

FHEによる計算は2者間プロトコルなので, Model Owner , Data Owner , Server の3つの役割を兼任

  • : “standard computation offloading”
    • leak to : データのshape, 森の深さに関する情報
  • : clientはデータを暗号化してサーバーに送る
    • leak to : ,
  • : Sでデータを見られるかも
    • , ,

Three Parties

が別々の時を考える.

single-keyで のどちらにも, と共謀していないことをしめすのは難しい todo なんで
ので, MultiKey-HEや秘密分散を用いる先行研究がある.
これらは鍵が増えるだけなのでアルゴリズム部分は流用できる

8 Evaluation

8.2 COPSE Performance

逐次処理版(Blindfolded Evaluation of Random Forests with Multi-Key Homomorphic Encryption) の自前実装と比較.
{single, multi} threadsで27のクエリに対して実行時間の中央値を計測したら x5~7 faster

baseline, ours どちらもsingle thread

Multithreading

single thread baseline vs multi threads ours でのCOPSEの速度比

baseline, ours どちらも multi threads

fig6と同じにならないのでCOPSEのスケーリング性能が多少良くない
(packing を多用しているから?)

  • forestのdepth増やしても実行時間にはあまり影響しない
  • 枝数増やすとreshaping, 処理時間が増加
  • 精度を上げると比較時間が増加