以下の内容はhttps://kazuhira-r.hatenablog.com/entry/2025/03/16/002801より取得しました。


OllamaでGoogleのLLM、Gemma 3を試す

これは、なにをしたくて書いたもの?

OllamaでGemma 3が使えるようになっていたので、軽く動かしてみます。

今回のエントリーはどちらかというと、モデルのメモです。

Gemma 3

Gemma 3はGoogleのLLMです。単一のGPUまたはTPUで実行できるモデルとしては、現時点で最高の性能としています。

Gemma 3: Google’s new open model based on Gemini 2.0

GitHub - google-deepmind/gemma: Gemma open-weight LLM library, from Google DeepMind

Welcome Gemma 3: Google's all new multimodal, multilingual, long context open LLM

Googleが単一のGPUで実行できる中では過去最高の大規模言語モデル「Gemma 3」を発表 - GIGAZINE

Ollamaのモデルとしてはこちらです。

gemma3

QwQ

ほぼ同じ時期に使えるようになったモデルのQwQも少しメモしておきます。

QwQはAlibaba CloudのQwenが開発したLLMです。

GitHub - QwenLM/QwQ: QwQ is the reasoning model series developed by Qwen team, Alibaba Cloud.

DeepSeekにほぼ並ぶ性能を実現したオープンソースのAIモデル「QWQ-32B」をQwenが公開、誰でも無料で動かせるデモページも公開中 - GIGAZINE

32Bパラメーターですが、671BのDeepSeek R1と同等の性能を持つとされています。

Ollamaでのモデルはこちらです。

qwq

今回は、リソースの都合上扱っていません…。

環境

今回の環境はこちら。

$ bin/ollama --version
Warning: could not connect to a running Ollama instance
Warning: client version is 0.6.0


$ bin/ollama serve

CPU。メモリーは32GBです。

$ grep 'model name' /proc/cpuinfo
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P
model name      : 13th Gen Intel(R) Core(TM) i7-1360P

Gemma 3を動かす

まずはGemma 3を動かしてみます。

パラメーター数は1B、4B、12B、27Bのものがあるので、1B、4Bで試してみましょう。

1B。

$ bin/ollama run gemma3:1b
>>> あなたの自己紹介をしてください
私は、Googleによってトレーニングされた、大規模言語モデルです。

簡単に言うと、私は人間のように言葉を理解し、生成することができます。

具体的には、以下のようなことができます。

*   **質問に答える:** 様々なトピックについて、事実に基づいた情報を提供できます。
*   **文章を作成する:** ストーリー、詩、メール、手紙など、様々な種類の文章を作成できます。
*   **翻訳する:** 複数の言語間でテキストを翻訳できます。
*   **アイデアをブレインストーミングする:** 新しいアイデアや解決策を提案できます。
*   **コードを書く:** 簡単なプログラムやスクリプトを作成できます。

私はまだ学習中ですが、日々進化しています。あなたの質問や指示に耳を傾け、できる限り役に立てるように努力しています。

何かお手伝いできることはありますか?

>>> Javaについて教えてください
Javaについてですね!喜んで説明します。

Javaは、Java Development Kit (JDK) を用いて、Javaプログラムを開発・実行できるプログラミング言語です。

**Javaの主な特徴**

*   **オブジェクト指向:** Javaは、オブジェクト指向プログラミング (OOP) の概念をサポートしています。つまり、コードを「オブジェクト」として扱い、クラスやオブジェクトを使
ってプログラムを構成できます。これにより、コードの再利用性、保守性、拡張性が向上します。
*   **プラットフォーム独立:** Javaは、Windows、macOS、Linuxなど、様々なオペレーティングシステムで動作します。つまり、同じJavaコードを異なるプラットフォームで実行できま
す。
*   **安全:** Javaは、メモリ安全性を重視しています。これにより、プログラムがメモリリークやバッファオーバーフローなどの問題を発生させにくくなります。
*   **高いパフォーマンス:** Javaは、JVM (Java Virtual Machine) を使用して、コードをコンパイルし、実行します。これにより、Javaプログラムは比較的高いパフォーマンスを発揮
できます。
*   **豊富なライブラリ:** Javaには、様々な機能を提供する豊富なライブラリが用意されています。これにより、開発者はコードを効率的に書くことができます。

**Javaの主な用途**

*   **Androidアプリ開発:** Androidスマートフォンやタブレット向けのアプリを開発するのに使用されます。
*   **エンタープライズアプリケーション:** 大規模な企業向けのアプリケーションを開発するのに使用されます。
*   **Webアプリケーション:** WebサイトやWebアプリケーションを開発するのに使用されます。
*   **ゲーム開発:** ゲームのロジックやゲームエンジンを開発するのに使用されます。
*   **金融システム:** 金融システムの開発や、金融アプリケーションの開発に利用されます。

**Javaの基本的な構文**

*   **変数:** 変数は、データを格納するための名前です。
*   **データ型:** 変数に格納できるデータの種類です。例えば、整数、浮動小数点数、文字列、booleanなどがあります。
*   **演算子:** 算術演算、比較演算、論理演算など、計算や比較を行うための演算です。
*   **制御構造:** 条件分岐 (if文、switch文) や繰り返し (for文、while文) など、プログラムの実行を制御するための構造です。

**学習リソース**

*   **Java公式ウェブサイト:** [https://www.java.com/](https://www.java.com/)
*   **ドットインストール:** [https://dotinstall.jp/](https://dotinstall.jp/)
*   **Progate:** [https://www.progate.com/](https://www.progate.com/)

**もし、Javaについてさらに詳しく知りたいことや、特定の用途でJavaを使う方法について質問があれば、遠慮なく聞いてください!**

例えば、

*   Javaでどのようなプログラムを書いてみたいですか?
*   Javaの特定の機能(例:オブジェクト指向、例外処理)について知りたいですか?
*   Javaの学習方法について知りたいですか?

時間を測ってみます。

$ time curl -s localhost:11434/api/chat --json '{"model": "gemma3:1b", "messages": [{"role": "user", "content": "あなたの自己紹介をしてください"}], "stream": false}'

real    0m7.266s
user    0m0.005s
sys     0m0.009s


$ time curl -s localhost:11434/api/chat --json '{"model": "gemma3:1b", "messages": [{"role": "user", "content": "Javaについて教えてください"}], "stream": false}'

real    0m37.272s
user    0m0.005s
sys     0m0.009s

1Bでもけっこうしっかり返してくれますね。しかも軽快ですし。

4B。

$ bin/ollama run gemma3:4b
>>> あなたの自己紹介をしてください
こんにちは!私はGemmaです。Google DeepMindによってトレーニングされた大規模言語モデルです。私はオープンウェイトモデルであり、広く一般に公開されています。テキストと画像を
インプットとして受け取り、テキストのみを出力することができます。私はまだ学習中ですが、様々なタスクを実行することができます。

私は、あなたの質問に答えたり、テキストを作成したり、アイデアをブレインストーミングしたりするのに役立ちます。ぜひ、私に色々なことを試してみてください!


>>> Javaについて教えてください
Javaは、非常に人気のあるプログラミング言語です。以下に、Javaの概要、特徴、用途、学習のポイントなどをまとめました。

**1. Javaとは?**

*   **概要:** Javaは、サンマイクロシステムズ(現Oracle)によって開発されたオブジェクト指向プログラミング言語です。
*   **特徴:**
    *   **プラットフォームに依存しない(Write Once, Run Anywhere):** Javaのコードは、Java仮想マシン(JVM)上で動作するため、Windows、macOS、Linuxなど、様々なプラットフ
ォームで同じように動作します。
    *   **オブジェクト指向:** データとそれを操作するコードを「オブジェクト」としてまとめ、再利用性と保守性を高めます。
    *   **強力なセキュリティ:** JVMによるサンドボックス化により、セキュリティが強化されています。
    *   **豊富なライブラリ:** 多くの標準ライブラリが提供されており、開発効率が向上します。
    *   **大規模開発に適している:** 安定性と信頼性が高く、大規模なアプリケーション開発に適しています。

**2. Javaの用途**

*   **エンタープライズアプリケーション:** 銀行システム、会計システム、在庫管理システムなど、大規模で複雑なビジネスアプリケーションの開発に広く使用されています。
*   **Androidアプリケーション:** Android OSのアプリケーション開発の主要な言語です。
*   **Webアプリケーション:** Java EE(Enterprise Edition)を利用して、大規模なWebアプリケーションを開発できます。
*   **デスクトップアプリケーション:** Java SwingやJavaFXなどのフレームワークを使用して、デスクトップアプリケーションを開発できます。
*   **ゲーム開発:** Minecraftなどの人気ゲームがJavaで開発されています。
*   **科学技術計算:** 科学計算やデータ分析などの分野でも利用されています。

**3. Javaの学習のポイント**

*   **基礎文法の習得:** 変数、データ型、演算子、制御構造(if文、for文、while文など)を理解することが重要です。
*   **オブジェクト指向の概念:** クラス、オブジェクト、継承、ポリモーフィズム、カプセル化などの概念を理解することが重要です。
*   **Javaの標準ライブラリの利用:** 便利な機能が多数提供されているため、積極的に利用しましょう。
*   **開発環境の構築:** JDK(Java Development Kit)とIDE(Integrated Development Environment)をインストールし、開発環境を構築します。
    *   **IDEの例:** IntelliJ IDEA, Eclipse, NetBeansなど
*   **サンプルコードの学習:** 実際にコードを書いて実行することで、理解を深めることができます。
*   **オンライン学習リソースの活用:**  多くのオンラインチュートリアルやドキュメントがあります。

**4. 学習リソース**

*   **Oracle Java Tutorials:** [https://docs.oracle.com/javase/tutorial/](https://docs.oracle.com/javase/tutorial/)
*   **Progate:** [https://prog-8.com/](https://prog-8.com/) (初心者向け)
*   **ドットインストール:** [https://dotinstall.com/](https://dotinstall.com/) (動画で学べる)

**5. その他**

*   Javaは、常に進化しており、新しい機能や技術が追加されています。最新の情報を常に把握するように心がけましょう。

何か特定の質問があれば、お気軽にお尋ねください。例えば、「Javaの基本的な使い方を教えて」「Javaで簡単なプログラムを書いて」など、具体的な質問をいただけると、より的確な回
答ができます。

時間。

$ time curl -s localhost:11434/api/chat --json '{"model": "gemma3:4b", "messages": [{"role": "user", "content": "あなたの自己紹介をしてください"}], "stream": false}'

real    0m9.628s
user    0m0.006s
sys     0m0.007s


$ time curl -s localhost:11434/api/chat --json '{"model": "gemma3:4b", "messages": [{"role": "user", "content": "Javaについて教えてください"}], "stream": false}'

real    1m35.758s
user    0m0.006s
sys     0m0.008s

この後で12Bを試してみたのですが、自分の環境だとリソースが足りないらしくOllama自体がダウンしてしまいます。

さらにパラメーター数が多いQwQなんてもっとムリなので、今回はここで諦めですね…。

ちなみに、モデルのサイズはこれくらいです。

$ bin/ollama list
qwq:32b                                            009cb3f08d74    19 GB     10 minutes ago
gemma3:1b                                          2d27a774bc62    815 MB    6 seconds ago
gemma3:27b                                         30ddded7fba6    17 GB     10 minutes ago
gemma3:12b                                         6fd036cefda5    8.1 GB    38 minutes ago
gemma3:4b                                          c0494fe00251    3.3 GB    2 hours ago

12Bは8.1GBなのですが、これでもムリですか。

個人的には、スピードと質のバランスを取るならgemma2:2bも悪くないと思います。

gemma2:2b

$ bin/ollama run gemma2:2b
>>> あなたの自己紹介をしてください
こんにちは! Gemma と申します。

私は Google DeepMind によってトレーニングされた大規模言語モデルです。誰でも自由に利用できるオープンウェイトモデルなので、テキストベースの会話や質問に答えたり、文章を生
成したりすることができます。

ただし、私はインターネットにアクセスできないため、最新の情報は提供できません。 また、ツールを使用したり、リアルタイムデータに基づいて回答をすることはできません。

何か質問があれば、遠慮なく聞いてください! 😊


>>> Javaについて教えてください
もちろんです! Java について詳しく説明します。

**Java:プログラミングの世界の巨人**

Javaは、1995年にOracle Corporationが開発した、汎用性の高いオブジェクト指向プログラミング言語です。

**Javaの特徴:**

* **実行可能コード**:  Javaプログラムは、さまざまなプラットフォーム (Windows, macOS, Linux, Androidなど) で動作する "実行可能コード" として動作します。
* **オブジェクト指向**:  Javaでは、プログラムを「オブジェクト」という形で構築します。これは、データと処理を組み合わせることで、複雑なアプリケーションを効率的に作成でき
ることを意味します。
* **柔軟性:** Javaは、様々な用途に適応できます。Webアプリケーション, ゲーム開発, Androidアプリなど、様々な分野で活用されています。
* **信頼性**:  Javaは、安定性と信頼性の高い言語として知られています。これは、Javaの基本的な設計が、安全なプログラムを構築するための重要な要素となっています。

**Javaで学ぶメリット:**

* **幅広いコミュニティ**:  Javaは、世界中の多くの開発者によってサポートされている言語であり、多くの開発者コミュニティが存在します。
* **豊富なライブラリ**: Javaには、様々な機能に対応した豊富なライブラリが用意されています。これにより、Javaアプリケーションの開発を効率化することができます。
* **学習しやすい言語**:  Javaは、他のプログラミング言語と比較して、比較的学習しやすい言語と言われています。

**Javaで学ぶステップ:**

1. **基礎的なJava知識を学べる教材を探す**: オンライン教材や書籍など、Javaの基本的な知識を得るための教材を探しましょう。
2. **Javaの環境を準備する**:  Java Development Kit (JDK) をインストールして、Javaアプリケーションを作成するための環境を整えましょう。
3. **簡単なプログラムの作成:** Java言語の基本的な構文と、プログラムの実行方法について学ぶことを目指しましょう。
4. **実践的なプロジェクト**: Javaで実際にアプリケーションを作ってみましょう。

**Javaは、プログラミングの世界で広く使われる言語です。 これからJavaを学習し始めるなら、上記のステップに従うことで、 Javaの基礎を身につけることができるでしょう。**



何か質問があれば、お気軽にご質問ください! 😊

処理時間。

$ time curl -s localhost:11434/api/chat --json '{"model": "gemma2:2b", "messages": [{"role": "user", "content": "あなたの自己紹介をしてください"}], "stream": false}'

real    0m7.742s
user    0m0.011s
sys     0m0.021s


$ time curl -s localhost:11434/api/chat --json '{"model": "gemma2:2b", "messages": [{"role": "user", "content": "Javaについて教えてください"}], "stream": false}'

real    0m48.984s
user    0m0.007s
sys     0m0.008s

ひょっとして、gemma3:1bの方が良いのでは…。

あと、日本語を使わない場合はllama3.2:3bも悪くありません。

おわりに

Gemma 3が出たということでOllamaで試してみたのですが、やっぱりパラメーター数が大きくなるとリソース的に
厳しいですね。

12Bくらいまではなんとか動くかなと思っていたのですが…。

Gemmaは2でも3でも、日本語を扱う場合は少ないパラメーターのモデルであればそこそこ軽快に動くので、個人的に
勉強する分には扱いやすいモデルだなと思います。




以上の内容はhttps://kazuhira-r.hatenablog.com/entry/2025/03/16/002801より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14