# Gemma 3 - 実行ガイド

Googleが新しい270Mモデルと、従来の1B、4B、12B、27Bサイズを備えたGemma 3をリリースしました。270Mと1Bはテキスト専用ですが、より大きなモデルはテキストとビジョンの両方を扱えます。GGUFと、それを効果的に実行する方法、そしてファインチューニングと実行の方法についてのガイドを提供します [RL](/docs/jp/meru/reinforcement-learning-rl-guide.md) をGemma 3で！

{% hint style="success" %}
**新規 2025年8月14日 अपडेट:** ファインチューニングを試す [Gemma 3 (270M) ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(270M\).ipynb) および [実行用GGUF](https://huggingface.co/collections/unsloth/gemma-3-67d12b7e8816ec6efa7e4e5b).

また、こちらもご覧ください [Gemma 3n ガイド](/docs/jp/moderu/tutorials/gemma-3-how-to-run-and-fine-tune/gemma-3n-how-to-run-and-fine-tune.md).
{% endhint %}

<a href="#gmail-running-gemma-3-on-your-phone" class="button primary">こともできます。</a><a href="#fine-tuning-gemma-3-in-unsloth" class="button secondary">実行チュートリアル</a>

**Unslothは、Gemma 3の推論と学習をfloat16マシンで動かせる唯一のフレームワークです。** つまり、無料のTesla T4 GPUを使うColabノートブックでも動作します！

* ビジョンサポート付きでGemma 3 (4B) をファインチューニングするには、こちらの [無料Colabノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\)-Vision.ipynb)

{% hint style="info" %}
Gemmaチームによると、推論に最適な設定は\
`temperature = 1.0, top_k = 64, top_p = 0.95, min_p = 0.0`
{% endhint %}

**最適な設定でのUnsloth Gemma 3のアップロード:**

| GGUF                                                                                                                                                                                                                                                                                                                                                                                                          | Unsloth Dynamic 4-bit Instruct                                                                                                                                                                                                                                                                                                                                                                                                               | 16-bit Instruct                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it-GGUF">270M</a> - 新規</li><li><a href="https://huggingface.co/unsloth/gemma-3-1b-it-GGUF">1B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-GGUF">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b-it-GGUF">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-GGUF">27B</a></li></ul> | <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it-unsloth-bnb-4bit">270M</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-1b-it-bnb-4bit">1B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-bnb-4bit">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-unsloth-bnb-4bit">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-bnb-4bit">27B</a></li></ul> | <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it">270M</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-1b">1B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b">27B</a></li></ul> |

## :gear: 推奨推論設定

Gemmaチームによると、推論の公式推奨設定は次のとおりです:

* Temperature 1.0
* Top\_K 64
* Min\_P 0.00（任意ですが、0.01 でもうまく動作します。llama.cpp のデフォルトは 0.1 です）
* Top\_P 0.95
* Repetition Penalty 1.0。（1.0は llama.cpp と transformers では無効を意味します）
* チャットテンプレート：

  <pre data-overflow="wrap"><code><strong>&#x3C;bos>&#x3C;start_of_turn>user\nこんにちは！&#x3C;end_of_turn>\n&#x3C;start_of_turn>model\nやあ！&#x3C;end_of_turn>\n&#x3C;start_of_turn>user\n1+1は？&#x3C;end_of_turn>\n&#x3C;start_of_turn>model\n
  </strong></code></pre>
* \nを含むチャットテンプレート `\n`改行が反映されています（最後を除く）

{% code overflow="wrap" %}

```
<bos><start_of_turn>user
こんにちは！<end_of_turn>
<start_of_turn>model
やあ！<end_of_turn>
<start_of_turn>user
1+1は？<end_of_turn>
<start_of_turn>model\n
```

{% endcode %}

{% hint style="danger" %}
llama.cppや他の推論エンジンは \<bos> を自動で追加します - \<bos> を2つ入れないでください！モデルにプロンプトを与えるときは \<bos> を無視してください！
{% endhint %}

### ✨スマホでGemma 3を実行 <a href="#gmail-running-gemma-3-on-your-phone" id="gmail-running-gemma-3-on-your-phone"></a>

モデルをスマホで実行するには、スマホのようなエッジデバイス上でGGUFをローカル実行できるモバイルアプリの使用をおすすめします。ファインチューニング後にGGUFへエクスポートし、スマホ上でローカル実行できます。モデルを処理できるだけの十分なRAM/電力があることを確認してください。過熱する可能性があるため、この用途ではGemma 3 270MまたはGemma 3nモデルの使用を推奨します。以下を試せます [オープンソースプロジェクトAnythingLLMの](https://github.com/Mintplex-Labs/anything-llm) モバイルアプリで、こちらからダウンロードできます [Android版はこちら](https://play.google.com/store/apps/details?id=com.anythingllm) または [ChatterUI](https://github.com/Vali-98/ChatterUI)。どちらもスマホでGGUFを実行するのに最適なアプリです。

{% hint style="success" %}
なお、すべてのチュートリアルでモデル名 'gemma-3-27b-it-GGUF' を 'gemma-3-270m-it-GGUF:Q8\_K\_XL' のような任意のGemmaモデルに変更できます。
{% endhint %}

## :llama: チュートリアル: OllamaでGemma 3を実行する方法

1. インストール `ollama` まだなら、

```bash
apt-get update
apt-get install pciutils -y
curl -fsSL https://ollama.com/install.sh | sh
```

2. モデルを実行します！失敗した場合は `ollama serve`を別の端末で呼び出せることに注意してください。修正内容と推奨パラメータ（temperature など）はすべて、Hugging Face のアップロード内の `params` Hugging Faceへのアップロードはこちらにあります！モデル名 'gemma-3-27b-it-GGUF' は 'gemma-3-270m-it-GGUF:Q8\_K\_XL' のような任意のGemmaモデルに変更できます。

```bash
ollama run hf.co/unsloth/gemma-3-27b-it-GGUF:Q4_K_XL
```

## 📖 チュートリアル: llama.cppでGemma 3 27Bを実行する方法

1. 最新の `llama.cpp` を [GitHub こちら](https://github.com/ggml-org/llama.cpp)から取得してください。以下のビルド手順に従うこともできます。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。 **Apple Mac / Metal デバイスの場合**、次を設定して `-DGGML_CUDA=OFF` その後は通常どおり続けてください - Metal サポートは既定で有効です。

```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=ON -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split llama-mtmd-cli
cp llama.cpp/build/bin/llama-* llama.cpp
```

2. もし `llama.cpp` モデルを直接読み込むには、以下を実行できます:（:Q4\_K\_XL）は量子化タイプです。Hugging Faceからもダウンロードできます（ポイント3）。これは `ollama run`

```bash
./llama.cpp/llama-mtmd-cli \
    -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL
```

3. **または** （をインストールした後に）モデルをダウンロードしてください。Q4\_K\_M や他の量子化版（たとえば BF16 の完全精度）を選べます。 `pip install huggingface_hub hf_transfer` ）。Q4\_K\_M、または他の量子化版（たとえばBF16のフル精度）を選べます。その他の版はこちら： <https://huggingface.co/unsloth/gemma-3-27b-it-GGUF>

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/gemma-3-27b-it-GGUF",
    local_dir = "unsloth/gemma-3-27b-it-GGUF",
    allow_patterns = ["*Q4_K_XL*", "mmproj-BF16.gguf"], # Q4_K_M用
)
```

4. UnslothのFlappy Birdテストを実行
5. 編集 `--threads 32` CPU スレッド数を `--ctx-size 16384` コンテキスト長用（Gemma 3は128Kのコンテキスト長をサポート！） `--n-gpu-layers 99` GPU オフロードする層数を指定します。GPU のメモリ不足になる場合は調整してみてください。CPU のみで推論する場合は、これも削除してください。
6. 会話モードの場合：

```bash
./llama.cpp/llama-mtmd-cli \
    --model unsloth/gemma-3-27b-it-GGUF/gemma-3-27b-it-Q4_K_XL.gguf \
    --mmproj unsloth/gemma-3-27b-it-GGUF/mmproj-BF16.gguf \
    --ctx-size 16384 \\
    --n-gpu-layers 99 \\
    --seed 3407 \\
    --prio 2 \\
    --temp 1.0 \
    --repeat-penalty 1.0 \
    --min-p 0.01 \\
    --top-k 64 \
    --top-p 0.95
```

7. Flappy Birdをテストする非会話モード用:

```bash
./llama.cpp/llama-cli \\
    --model unsloth/gemma-3-27b-it-GGUF/gemma-3-27b-it-Q4_K_XL.gguf \
    --ctx-size 16384 \\
    --n-gpu-layers 99 \\
    --seed 3407 \\
    --prio 2 \\
    --temp 1.0 \
    --repeat-penalty 1.0 \
    --min-p 0.01 \\
    --top-k 64 \
    --top-p 0.95 \
    -no-cnv \\
    --prompt "<start_of_turn>user\nPythonでFlappy Birdゲームを作成してください。次のものを必ず含めてください:\n1. pygameを使用すること。\n2. 背景色はランダムに選択される薄い色にすること。最初は薄い青色から始めてください。\n3. SPACEを複数回押すと鳥が加速すること。\n4. 鳥の形はランダムに正方形、円、三角形のいずれかにすること。色はランダムに暗い色にすること。\n5. 下部に、ランダムに選ばれた濃い茶色または黄色の地面を配置すること。\n6. 右上にスコアを表示すること。パイプを通過して当たらなければ加算すること。\n7. 十分な間隔を空けてランダム配置のパイプを作ること。色はランダムに濃い緑、薄い茶色、または濃い灰色にすること。\n8. 負けたときはベストスコアを表示すること。テキストは画面内に収めること。qまたはEscを押すとゲームを終了すること。再開はSPACEをもう一度押すこと。\n最終的なゲームはPythonのマークダウンセクション内に入れてください。最終的なマークダウンセクションの前に、コードのエラーを確認して修正してください。<end_of_turn>\n<start_of_turn>model\n"
```

私たちの <https://unsloth.ai/blog/deepseekr1-dynamic> 1.58bitブログからの全文入力は次のとおりです:

{% hint style="danger" %}
Gemma 3は自動で \<bos> を追加するので、\<bos> を削除するのを忘れないでください！
{% endhint %}

{% code overflow="wrap" %}

```
<start_of_turn>user
Python で Flappy Bird ゲームを作成してください。以下を必ず含めてください:
1. pygame を使うこと。
2. 背景色はランダムに選び、明るい色にすること。最初は薄い青にしてください。
3. SPACE を何度も押すと鳥が加速すること。
4. 鳥の形は四角、円、三角形のいずれかからランダムに選ぶこと。色は暗い色からランダムに選ぶこと。
5. 画面下部に、濃い茶色または黄色からランダムに選んだ色の地面を配置すること。
6. 右上にスコアを表示すること。パイプを通過して当たらなければ加点すること。
7. 十分な間隔を空けてランダムな位置にパイプを配置すること。色は濃い緑、薄い茶色、または濃い灰色からランダムにすること。
8. 失敗したらベストスコアを表示すること。テキストは画面内に収めること。q または Esc を押すとゲームを終了し、SPACE をもう一度押すと再開すること。
最終的なゲームはPythonのマークダウンセクション内に入れてください。コードのエラーを確認
```

{% endcode %}

## :sloth: UnslothでGemma 3をファインチューニングする

**Unslothは、Gemma 3の推論と学習をfloat16マシンで動かせる唯一のフレームワークです。** つまり、無料のTesla T4 GPUを使うColabノートブックでも動作します！

* 新しいものを試す [Gemma 3 (270M) ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(270M\).ipynb) これにより、270Mパラメータのモデルがチェスを非常に上手くプレイできるようになり、次のチェスの一手を予測できます。
* 次の用途向けに、私たちのノートブックを使ってGemma 3 (4B) をファインチューニングしてください: [**テキスト**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\).ipynb) または [**Vision**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\)-Vision.ipynb)
* またはファインチューニング [Gemma 3n (E4B)](/docs/jp/moderu/tutorials/gemma-3-how-to-run-and-fine-tune/gemma-3n-how-to-run-and-fine-tune.md) を [テキスト](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Conversational.ipynb) • [Vision](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Vision.ipynb) • [音声](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Audio.ipynb)

{% hint style="warning" %}
Gemma 3のフルファインチューニング（FFT）を試すと、float16デバイスでは全レイヤーがデフォルトでfloat32になります。Unslothはfloat16を想定しており、動的にアップキャストします。これを修正するには、 `model.to(torch.float16)` を読み込み後に実行するか、bfloat16対応のGPUを使用してください。
{% endhint %}

### Unslothのファインチューニング修正

Unslothにおける私たちの解決策は3つあります:

1. すべての中間アクティベーションをbfloat16形式に保持する - float32でも可能だが、その場合は2倍のVRAMまたはRAMを使用する（Unslothの非同期勾配チェックポイント機能による）
2. 行列乗算はすべてtensor coresを使ってfloat16で行い、Pytorchの混合精度autocastの助けを借りずに手動でアップキャスト/ダウンキャストする。
3. 行列乗算を必要としない他のオプション（レイヤー正規化など）はすべてfloat32にアップキャストする。

## 🤔 Gemma 3 修正の分析

<figure><img src="/files/ed0562b9c5e28cddcbeb47d1c105497bcac6de89" alt="" width="563"><figcaption><p>Gemma 3の1Bから27Bはfloat16の最大値65504を超える</p></figcaption></figure>

まず、Gemma 3をファインチューニングまたは実行する前に、float16の混合精度を使用すると、勾配と **アクティベーションが無限大に** 残念ながらなります。これは、float16のtensor coresしか持たないT4 GPU、RTX 20xシリーズ、V100 GPUで起こります。

RTX 30x以上、A100、H100などの新しいGPUにはbfloat16のtensor coresがあるため、この問題は発生しません！ **でも、なぜ？**

<figure><img src="/files/f2e9b4448f30ea936c16b266fedaa183faf6c03b" alt="" width="375"><figcaption><p>Wikipedia <a href="https://en.wikipedia.org/wiki/Bfloat16_floating-point_format">https://en.wikipedia.org/wiki/Bfloat16_floating-point_format</a></p></figcaption></figure>

Float16で表現できる数値は最大で **65504**までですが、bfloat16では最大で **10^38**という巨大な数値を表現できます！ただし、どちらの数値形式も16ビットしか使いません！これは、float16のほうがより多くのビットを割り当てているため小数をよりよく表現できる一方で、bfloat16は分数をうまく表現できないからです。

でも、なぜfloat16なのか？単にfloat32を使えばいいのでは！ しかし残念ながら、GPUでのfloat32は行列乗算が非常に遅く、ときには4〜10倍も遅いのです！そのため、これは使えません。


---

# 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/moderu/tutorials/gemma-3-how-to-run-and-fine-tune.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.
