これは、なにをしたくて書いたもの?
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のモデルとしてはこちらです。
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でのモデルはこちらです。
今回は、リソースの都合上扱っていません…。
環境
今回の環境はこちら。
$ 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でも、日本語を扱う場合は少ないパラメーターのモデルであればそこそこ軽快に動くので、個人的に
勉強する分には扱いやすいモデルだなと思います。