なぜ GGUF を ONNX に変換するのですか?
GGUF を .onnx に変換するのは、ONNX Runtime、DirectML、または GGUF を読み込めないその他のクロスプラットフォームアクセラレータでモデルを実行するためです。ONNX は標準的な計算グラフを必要とし、GGUF は llama.cpp 固有の量子化コンテナであるため、まず通常の PyTorch モデルを再構築してからエクスポートする必要があります。
GGUF から ONNX への変換方法
GGUF を safetensors に逆量子化する OPEN-SOURCE
ungguf ツールや gguf 読み取りスクリプトなどのコンバーターを使用して、.gguf を Transformers がロードできるフル精度の safetensors に戻します。
Optimum で ONNX にエクスポートする FREE
再構築されたモデルを Optimum で指定します。optimum-cli export onnx --model ./model-dir onnx-out/ を実行すると .onnx ファイルが書き出されます。
PyTorch で手動エクスポートする OPEN-SOURCE
サポートされていないアーキテクチャの場合は、PyTorch でモデルをロードし、自身で torch.onnx.export(model, dummy_input, "model.onnx") を呼び出します。
これらの形式について
品質と注意点
- 量子化された GGUF を逆量子化しても、量子化中に失われた精度を回復することはできません。また、複雑な量子化タイプ(IQ バリアントなど)は正しく変換されない可能性があります。
- 生成される ONNX はフル精度であるため、元のコンパクトな GGUF よりも数倍大きくなる可能性があります。
- Optimum が標準でサポートしているのは特定のアーキテクチャのみです。ニッチなモデルやカスタムモデルは、手動のエクスポート設定が必要になるか、失敗する可能性があります。