# GGUF への保存

{% tabs %}
{% tab title="ローカルに" %}
GGUF に保存するには、以下を使用してローカルに保存してください:

```python
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")
```

Hugging Face ハブにプッシュするには:

```python
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")
```

のすべてのサポートされている量子化オプション `quantization_method` は以下に一覧されています:

```python
# https://github.com/ggml-org/llama.cpp/blob/master/examples/quantize/quantize.cpp#L19
ALLOWED_QUANTS = \
{
    "not_quantized"  : "推奨。変換は高速。推論は遅く、ファイルは大きい。",
    "fast_quantized" : "推奨。変換は高速。推論はまずまず、ファイルサイズはまずまず。",
    "quantized"      : "推奨。変換は遅い。推論は高速、ファイルは小さい。",
    "f32"     : "推奨されません。100% の精度を保持しますが、非常に遅くメモリを大量に消費します。",
    "f16"     : "最速の変換 + 100% の精度を保持。推論は遅くメモリを多く消費します。",
    "q8_0"    : "変換は高速。リソース使用量は高いが、概ね許容範囲です。",
    "q4_k_m"  : "推奨。attention.wv と feed_forward.w2 の半分に Q6_K を使用し、それ以外は Q4_K を使用します",
    "q5_k_m"  : "推奨。attention.wv と feed_forward.w2 の半分に Q6_K を使用し、それ以外は Q5_K を使用します",
    "q2_k"    : "attention.vw と feed_forward.w2 に Q4_K を使用し、他のテンソルには Q2_K を使用します。",
    "q3_k_l"  : "attention.wv、attention.wo、および feed_forward.w2 に Q5_K を使用し、それ以外は Q3_K を使用します",
    "q3_k_m"  : "attention.wv、attention.wo、および feed_forward.w2 に Q4_K を使用し、それ以外は Q3_K を使用します",
    "q3_k_s"  : "すべてのテンソルに Q3_K を使用します",
    "q4_0"    : "オリジナルの量子化方法、4 ビット。",
    "q4_1"    : "q4_0 より精度は高いが q5_0 ほどではない。ただし q5 モデルより推論は速い。",
    "q4_k_s"  : "すべてのテンソルに Q4_K を使用します",
    "q4_k"    : "q4_k_m の別名",
    "q5_k"    : "q5_k_m の別名",
    "q5_0"    : "より高い精度、より高いリソース使用、より遅い推論。",
    "q5_1"    : "さらに高い精度、リソース使用、およびより遅い推論。",
    "q5_k_s"  : "すべてのテンソルに Q5_K を使用します",
    "q6_k"    : "すべてのテンソルに Q8_K を使用します",
    "iq2_xxs" : "2.06 bpw の量子化",
    "iq2_xs"  : "2.31 bpw の量子化",
    "iq3_xxs" : "3.06 bpw の量子化",
    "q3_k_xs" : "3 ビットのエクストラスモール量子化",
}
```

{% endtab %}

{% tab title="手動での保存" %}
まずモデルを 16 ビットで保存してください:

```python
model.save_pretrained_merged("merged_model", tokenizer, save_method = "merged_16bit",)
```

次にターミナルで以下を実行してください:

{% code overflow="wrap" %}

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp

python llama.cpp/convert-hf-to-gguf.py FOLDER --outfile OUTPUT --outtype f16
```

{% endcode %}

または <https://rentry.org/llama-cpp-conversions#merging-loras-into-a-model> の手順に従い、モデル名を "merged\_model" として GGUF にマージしてください。
{% endtab %}
{% endtabs %}

### Unsloth での実行はうまくいくが、エクスポートして他のプラットフォームで実行すると結果が悪い

モデルが Unsloth 上で実行され良い結果を出すが、Ollama や vLLM のような別のプラットフォームで使用すると結果が悪くなったり、意味不明な出力や無限生成が発生することがあります。 *または* 出力が繰り返され&#x308B;**.**

* このエラーの最も一般的な原因は、 <mark style="background-color:blue;">**誤ったチャットテンプレート**</mark>**.** Unsloth でモデルをトレーニングしたときに使用したのと同じチャットテンプレートを、llama.cpp や Ollama など別のフレームワークで実行する際にも必ず使用することが重要です。保存されたモデルから推論する場合は、正しいテンプレートを適用することが重要です。
* 正しいものを使用する必要があります `eos トークン`。そうでないと、長い生成時に意味不明な出力が発生する可能性があります。
* 推論エンジンが不必要な「シーケンス開始」トークンを追加している（または逆に欠如している）ために起こることもあるので、両方の仮説を確認してください！
* <mark style="background-color:green;">**チャットテンプレートを強制するために我々の会話ノートブックを使用してください — これでほとんどの問題が解決します。**</mark>
  * Qwen-3 14B 会話ノートブック [**Colab で開く**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(14B\)-Reasoning-Conversational.ipynb)
  * Gemma-3 4B 会話ノートブック [**Colab で開く**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\).ipynb)
  * Llama-3.2 3B 会話ノートブック [**Colab で開く**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_\(1B_and_3B\)-Conversational.ipynb)
  * Phi-4 14B 会話ノートブック [**Colab で開く**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Phi_4-Conversational.ipynb)
  * Mistral v0.3 7B 会話ノートブック [**Colab で開く**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Mistral_v0.3_\(7B\)-Conversational.ipynb)
  * **さらに多くのノートブックは我々の** [**ノートブック ドキュメント**](https://unsloth.ai/docs/jp/meru/unsloth-notebooks)

### GGUF / vLLM 16bit への保存でクラッシュする

保存中の最大 GPU 使用量を減らすために、次を変更してみてください `maximum_memory_usage`.

デフォルトは `model.save_pretrained(..., maximum_memory_usage = 0.75)`。例えば 0.5 に減らしてピーク GPU メモリの 50% を使用するようにするか、それ以下にしてください。これにより保存中の OOM クラッシュを減らすことができます。

### GGUF に手動で保存するにはどうすればよいですか？

まず次を使ってモデルを 16 ビットで保存してください:

```python
model.save_pretrained_merged("merged_model", tokenizer, save_method = "merged_16bit",)
```

以下のようにソースから llama.cpp をコンパイルしてください:

{% code overflow="wrap" %}

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

{% endcode %}

次に、モデルを F16 に保存します:

```bash
python llama.cpp/convert_hf_to_gguf.py merged_model \
    --outfile model-F16.gguf --outtype f16 \
    --split-max-size 50G
```

```bash
# BF16 の場合:
python llama.cpp/convert_hf_to_gguf.py merged_model \
    --outfile model-BF16.gguf --outtype bf16 \
    --split-max-size 50G
    
# Q8_0 の場合:
python llama.cpp/convert_hf_to_gguf.py merged_model \
    --outfile model-Q8_0.gguf --outtype q8_0 \
    --split-max-size 50G
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment/saving-to-gguf.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
