https://github.com/lutzroeder/Netron
ONNXのモデルを可視化するやつ
500MBあるBERTをONNXに変換した後に量子化したら110MBほどになってLambdaで動かせるようになった。
Githubに乗せるファイルは100MB以下でないとだめなので、ダメ押しでgzipで圧縮したら75MBになった。
const onnx_zip = fs.readFileSync('./sonoisa_sentence-bert-base-ja-mean-tokens-v2_onnx/model_quantized.gz');
const onnx_buffer = zlib.unzipSync(onnx_zip)
const session = await ort.InferenceSession.create(onnx_buffer);
python3 -m transformers.onnx --model=sentence-transformers/paraphrase-multilingual-mpnet-base-v2 onnx/ --opset=18
optimum-cli onnxruntime quantize --onnx_model ./onnx --output onnx_quantize/ --arm64
遺伝的プログラミングの学習結果をonnxにするというアイデアが降りてきた。
onnxのエコシステムに乗っけられるのが嬉しいポイント
「ONNXならGo言語で動くし、AWS LambdaでSentence Embeddingの計算イケんじゃね???」と思われたが、そもそも日本語のSentence Embeddingに対応した小さいモデルが市井になかった。終わり。
「自分で作れや」というあれがある。GPUがねぇ。いい加減にGoogle Colaboratoryの有償契約をすべきか。