📌

safetensors を C/C++ で読むメモ

2023/11/14に公開

機械学習の weight は最近は safetensors が流行りね.

https://github.com/huggingface/safetensors

safetensors を C/C++ で読みたい...
Python 非依存で機械学習とか, スマホで動かすとか.
あとはそこそこ汎用のシリアライゼ―ションフォーマットとして使いたいとか.

safetensors-cpp

https://github.com/syoyo/safetensors-cpp

というわけで書きました.
dependency-free, header-only です!

fuzz tested されていて安全!(のはず)

  • safetensors のロード
    • file(mmap あり)
    • memory
  • safetensors の保存
    • file
    • memory

があります. fp16 と BF16 の変換もあるよ.

C++ で機械学習を極めよう!

internal

JSON の parse には minijson を使っています.

https://github.com/syoyo/minijson

こちらも fuzz tested されていて安全.

ただ, safetensors の JSON はかなり制限されているので, 自前で手書きパーサー書いてもいいかもはしれません.

Discussion