Thesis , Juliaで HE Compiler
2022-04-01 - 2022-02-01
repo: wakame-tech/FHESimu.jl
poster: poster
-
[eML Text Classification on GPU(CKKS)(https://arxiv.org/pdf/1908.06972.pdf)
-
秘密計算 言語作るの有り
- front end: 適当な言語 → LLVM IR
- backend: LLVM Passでgraph最適化
- 余裕があればCKKS LibもGPU対応してfull-stackedに
大学院の研究これにしようかな
- 「任意の関数DAGに変換してくれる君」を作る
- relinearize まずはナイーブに
- BootStrapはノイズをへらすのでbit(TFHE)のbootstrapつかうことでif文の誤差を減らせないか?
- 各種非線形関数(max, min, sin, log) とかの誤差評価をする
- 多項式近似で
- HEAANのbootstrapはノイズへらない regain level
- CGGI scheme
- 関数の中にあらかじめ0と1を暗号化したものをおいておく
- 謎の暗号文(0 or 1)が来た時にソレに対応したものが出力される
- CKKS方式の多項式をTFHEの形式bに変換するのは難しそう
予定
- DAGを使って何をしたいのか
- 計算を効率化(の何を?)
- bootstraping problemとかだと整数計画問題とかあまりわからないものが関わってきそう
- 準同型演算をopcodeとみてコンパイラの最適化手法を使いたい
- ループ 最適化: ループの変化しない変数を外に出す
- 行列積: rotation等を駆使して効率的に(batching) を使う
- どうやって暗号文を0 or 1にするか
- 非線形関数を多項式近似して評価
- CKKS BootStrappingの理解
アイデア: 1/0 + eps を RotRしてRotLしたらノイズ減ったりしないかな(scale: 1bit) で演算する
→ Rotate演算はVectorを回転させる処理
→ しかも左シフトしか出来ない
LookUpTable
名前の通りテーブルを引くので誤差とかはなく非線形でも問題ないが
取りうる値の数だけ結果を用意しておく必要がある
取りうる値減らせば実用的かも
-
- FHEの暗号文のブリッジを作った(やばい)
-
やっぱり計算グラフ最適化したい
- 乗算を減らすために依存していない
- 乗算ノード同士をパッキング
- 内積・行列積もローテーションと加乗算を駆使して書き換える
- ベクトル中の並び替えが自由にできない
- 内積・行列積もローテーションと加乗算を駆使して書き換える
-
- CKKS scheme における非線形関数への対処の記述あり
やること
-
EVA: グループ機能 ✅ 2024-07-17
-
EVA: ciphertextの依存見つける ✅ 2024-07-17
-
nGraph-he読む ✅ 2024-07-17
-
ゼミスライド: DL特有の関数のノード ✅ 2024-07-17
-
FHE-BOOK書きながら論文に書く理論決める
-
非線形演算を含む計算回路の誤差と時間の評価したい
-
非線形関数が入力されたら多項式近似して誤差を測る
- → 新規性: 任意の非線形関数に対応できる
実験手法
abs,ReLU,hevisideなどの非線形関数に対して- 多項式近似の手法をいくつか比較
- 実際にコードにして処理時間や誤差などを検証
論文に必要な理論
- 準同型暗号
- CKKS
- 演算とか、暗号化などの理論
- オーダーの話
- 多項式近似
- CKKS
先行研究
-
CKKS型準同型暗号における非線形関数を含む計算グラフの評価手法と誤差の分析
NN触れる -
パラメタ変えてゲート数みる
- 処理時間もはかる
- どうやって削減するのか(新規性)
-
mul, add, rescaling, modswitch のノイズ増加, 演算コストをシミュレートする
- 非線形演算は適切なパラメータnで近似
- いい感じの計算グラフを出力できる
-
新しい体系
-
FHE loadmap
-
論文見つからない
- boolean circuit optimization
- non-boolean circuit optimization
-
HE Compiler のリサーチ
-
「トランザクション張っておけば大丈夫」と思ってませんか? バグの温床になる、よくある実装パターン
- 為
-
たけるの通う小学校にDragon BookやSystemC等の専門書籍がてんこもりでヤバイでゲソ! - xhlメモ @ hatena
- アニメ内に技術書が出てくるやつ
-
Haskell 等の遅延評価(=call by need) = 正格評価と関連
-
やはり, FHEのopをDSLとして表現し, FHEの知見を活かした最適化手法を研究するお気持ち
- CKKS(= arithmetic based FHE) に囚われず一般的な配列操作に対する最適化手法を考えたい
- e.g. 添字アクセスを効率化
- いきなり手を動かすな → まず仮説, 定式化を立てろ
- 試行錯誤はノートブックとかでやれ
Fully Homomorphically Encrypted Deep Lerning as a Service
-
Cryptographic Computations Need Compilers
- HE Compiler の紹介
-
limited SIMD operations での最適化手法を知りたい
→ 愚直グラフからグラフ簡約してどうなるか
-
Achieving Fast Fully Homomorphic Encryption with Graph Reductions
-
SAT: bool = F_2 上の論理
- SMT: F_p 上のソルバ
- キーワード: DAG-optimization
- SATソルバ作るみたいな
- term DIMACS_CNF_format: 論理式のCNFの入力フォーマット, デファクトスタンダード
- tips 今どきの SAT solver はDPLLというアルゴリズムが使われているらしい
- DPLLアルゴリズム - Wikipedia
- SATが命題論理, SMTが一階述語論理に対応しているらしい
- Bit vector, 定理証明
- グラフ理論始まってしまうのは避けられないのか?
- キーワード: SIMD最適化
- なぜこんなに関連研究がないのだろう?
- 仮説: あまりDAGでの最適化に期待できないから?
- CHETとかのFHE Graph Compilerは割と成果出ている
- 仮説: cryptographerにはarithmetic-based FHEがadd, mult, rotしか出来ないSIMDマシンに見えていないから?
- “SIMDを考慮した効率的なDAG Term Rewritingをしたい” は欲張りすぎ
- KVSPみたいな話かな
- う~ん今日も進捗ゼロ!!w
- ゼミまで残り:23日, 研究できる日: 14日, リサーチ:実験:スライド=2:10:2
- Pattern Rewriting : Generic DAG-to-DAG Rewriting
-
- SAT符号化の話、問題をどうやって落とし込むか
- Z3による汎用大域的最適化 - Qiita
- 充足判定を繰り返すことで最適化問題を解ける
-
- LLVM loop optimization passの話
-
- BootStrapping problemの話
- 各レイヤーで最適化をしたらかなり早くなったよ
- 抽象高レイヤーの最適化周りを調査しないといけないが低レイヤーの話も気になるというか全然詳しくない
- fhe operation scheduring の話もされていた
- 今の論文呼んだら(12h + まとめ 6h + 実装 12h)
- 次の論文これ読め(6h + まとめ 6h + 実装 6h)
Auto-vectorization of interleaved data for SIMD
- その後、 loop indexing optimization を検討しろ(12h)
- スライド作ろう(おさらい, 概観 20 + ConeRewriting 30 + SIMD 20 + Indexing Redution 30枚目標), まとめているなら簡単に出来る(6h)
- あと丸7日もあるので出来るはず
2021-10-04
研究やること
- MatMul のFHE IRを作れ (3h)
- FHE IRのベンチマーク作りたい
- algo から DAG(フォーマットは?) を吐き出せるツール
Incremental column-wise verification of arithmetic circuits using computer algebra - PubMed
- Verify circuit の分野? で arithmetic circuitの話が, わからん
Boolean: XOR, ANDは可換だが,
Vec<Complex> Rotは可換じゃないのでこういう最適化(ConeRewriting) 難しそう
→ いや可換
EAGLYS(イーグリス)
準同型暗号ベースの秘密計算はどこへ向かっているのか(社会の取り組み編)|EAGLYS株式会社 https://www.eaglys.co.jp/developers-blog/product/mihara_01
個人情報保護法ニュースNo.1:リクナビ事件と個人情報保護法の改正 | 弁護士法人 三宅法律事務所
https://miyake.gr.jp/topics/201912/個人情報保護法ニュースno1:リクナビ事件と個人情報保護法の改正
タスク
- 数値実験(8h) ✅ 2024-07-17
- 改善(4h) ✅ 2024-07-17
- ポスター作成(24h) ✅ 2024-07-17
- かなり切羽つまっている
Connected Papers | Find and explore academic papers
- My Algorithm : kopricky アルゴリズムライブラリ
- ハッシュ値を使って木の同型判定O(n), ruiさんのmoldでも使ったとか書いてあった
- My Algorithm : kopricky アルゴリズムライブラリ
- 教プロ周辺のアルゴリズムについてかなり詳しく載っている
CKKSで比較するやるの改善が出ていた
2021-11-26
ゲートレベルで乗算深さを最適化したい
-
添字アクセスアルゴリズムを
-
tools
-
papers
-
meme 戦略を持って時間を過ごさないのは時間を浪費しているのと同じ
-
ゲートレベルの最適化は大した最適化が出来ないので
-
身近なナイーブに実装すると乗法深さが深くなるアルゴリズム e.g. 多項式評価
- BSGS 法とか double-hoisting で限界まで深さ低減&ノイズ削減&高速化されている
-
ReScaleするタイミングを最適化するのは?
- 平文のスケールに依存しない?, それも考慮するのか
-
cyclic shift vector simdでけんさく- https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=96831&item_no=1&attribute_id=1&file_no=1
- https://www.ics.uci.edu/~swjun/courses/2019S-CS295/slides/lec2 - Modern Processors - SIMD.pptx
- https://on-demand.gputechconf.com/gtc/2014/presentations/S4664-transposition-fast-array-structure-accesses.pdf
2021-12-20
ポスターフィードバック

ごみと言われなくてよかった(本当はごみ)