Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Running Gemma 2B on Kubernetes (k3d) with Ollama: A Complete Local AI Setup

2025年09月20日に「Dev.to」が公開したITニュース「Running Gemma 2B on Kubernetes (k3d) with Ollama: A Complete Local AI Setup」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

軽量AIモデルGemma 2Bを、Ollamaと軽量Kubernetes(k3d)でローカル環境に導入する方法を解説。手動設定でのモデル再ダウンロードやデータ消失の課題を解決し、コンテナ化と永続ストレージで安定したAI実行環境を構築する手順を紹介する。

ITニュース解説

システムエンジニアを目指す初心者が、大規模言語モデル(LLM)を自分のパソコン上で動かす方法について解説する。近年、OpenAIのChatGPTのようなAIが注目を集めているが、こうしたAIを動かすには通常、高性能なコンピュータやクラウドサービスが必要となる。しかし、費用をかけずに、自分の手元の環境でAIを動かし、その仕組みを深く理解したいと考える人も多いだろう。この記事では、Googleが開発した軽量な大規模言語モデル「Gemma 2B」を、自分のPCで効率的かつオフラインで動かすための具体的な方法を、主要な技術要素とともに紹介する。

まず、なぜこのようなローカルAI環境の構築が求められるのか。多くの人がLLMをローカルで動かすことに魅力を感じているが、実際に試みるといくつかの課題に直面することがあった。例えば、Gemma 2Bのような大規模なモデルを動かすには、そのモデルのデータ(重み)をダウンロードする必要がある。これを手動で行うと手間がかかるだけでなく、もしモデルを動かすためのコンテナ(アプリケーションとその実行環境をまとめたもの)を再起動するたびに、モデルのデータが失われ、再度ダウンロードし直さなければならないといった非効率な問題が発生する。また、コンテナが予期せず停止した場合、環境が復旧できなくなるなど、安定性や運用のしやすさ(オーケストレーション)が欠けていた。

そこで、これらの課題を解決し、「Gemma 2Bをコンテナ化された状態で効率的に、Kubernetesによって管理され、クリーンなローカル環境で実行できるか」という疑問に対する答えが、今回紹介する技術スタックの組み合わせである。具体的には、「k3d」「Ollama」「Kubernetes」「Gemma 2B」の四つを活用することで、この目標を実現する。

この解説を通じて、あなたは以下のことを学べるだろう。まず、Ollamaを使ってGemma 2Bをk3dという軽量なKubernetesクラスター内にデプロイする方法。次に、デプロイしたGemma 2Bが提供するAPI(プログラムから操作するための窓口)を、自分のPCからアクセスできるように公開する方法。さらに、モデルのデータを永続的に保存し、コンテナの再起動や再デプロイの際にモデルを再ダウンロードせずに済むようにする方法。そして、コンテナがうまく動かない時の基本的なトラブルシューティングについても触れる。

今回の環境構築で中心となる技術要素を見ていこう。 一つ目は「Ollama」である。Ollamaは、GemmaやLlama、Phiといったさまざまな大規模言語モデルをローカルで手軽に実行するためのツールだ。モデルのデータをインターネットから取得し、それを元にAIが質問に答えるためのREST API(Webサービスでよく使われる通信方式)を提供する。一度モデルのデータをダウンロードしてしまえば、その後は完全にオフラインで動作するため、インターネット接続や高価なクラウドサービスに依存することなく、自分のPC上でチャットボットのようにAIと対話できるのが大きな魅力だ。例えば、「ollama run gemma:2b」というコマンド一つで、Gemma 2Bを使ったチャットボットをすぐに起動できる。

二つ目は「Kubernetes」とその軽量版である「k3d」である。Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するための強力なシステムだ。通常、Kubernetesは大規模なサーバー群で利用されることが多いが、k3dはDockerという技術を使って、自分のPCの中に軽量なKubernetesクラスターを構築できる。なぜOllamaを直接PC上で動かすのではなく、Kubernetesを使うのかというと、そこにはいくつかのメリットがある。 k3dを使うことで、Ollamaが動く環境をより安定させ、柔軟に管理できるようになる。Kubernetesの中では、アプリケーションは「Pod(ポッド)」という単位で実行される。Podは一つ以上のコンテナを含み、OllamaのコンテナもこのPodの中で動作する。もしPodが停止しても、Kubernetesが自動的に新しいPodを起動してくれるため、アプリケーションが常に稼働し続けるように管理できる。 また、Kubernetesには「PersistentVolumeClaim(PVC)」という仕組みがある。これは、コンテナが利用するストレージ(データの保存場所)を永続化するための機能だ。OllamaがダウンロードしたGemma 2Bのモデルデータは、非常に大きい(約1.7GB)。もしOllamaが動いているPodが何らかの理由で停止し、新しいPodが起動した場合、PVCを使わなければモデルデータは失われ、再度ダウンロードし直さなければならない。PVCを設定することで、モデルデータはPodのライフサイクルに依存せず、永続的に保存されるため、このような無駄な再ダウンロードを防ぎ、効率的な運用が可能になる。 さらに、Kubernetesの「Service(サービス)」という機能を使うことで、Ollamaが提供するAPIを自分のPCの特定のポート(通信の窓口)に簡単に公開できる。これにより、自分のPCのWebブラウザや他のプログラムから、Ollamaが動いているGemma 2BのAPIにアクセスできるようになる。

具体的なセットアップ手順の概要は以下のようになる。まず、k3dをインストールし、Gemma 2Bを動かすためのKubernetesクラスターを自分のPC内に作成する。次に、Ollamaのコンテナと、モデルデータを保存するためのPVC、そしてOllama APIを公開するためのServiceを定義した設定ファイル(YAMLファイル)を作成し、Kubernetesクラスターに適用する。これにより、OllamaがKubernetes上で起動し、モデルデータを保存するための領域が確保される。その後、Kubernetesのコマンドを使って、起動したOllamaのPod内でGemma 2Bモデルをダウンロードする。最後に、curlコマンドというツールを使って、ローカルで公開されたOllamaのAPIにアクセスし、Gemma 2Bが正しく動作してプロンプト(指示)に対する応答を生成できるかを確認する。

実際にこの環境を構築する際に遭遇する可能性のある問題とその解決策についても知っておこう。例えば、OllamaのPodが繰り返し起動と停止を繰り返す「CrashLoopBackOff」という状態になることがある。これは通常、Podに割り当てられたCPUやメモリが不足している場合に発生するため、デプロイメントの設定でこれらのリソースを増やすことで解決できる。また、せっかくダウンロードしたモデルがPodの再起動で消えてしまうという問題は、前述のPVCを適切に設定することで永続化される。さらに、OllamaのAPIにアクセスできない場合は、KubernetesのServiceのタイプを「LoadBalancer」に設定し、k3dのポートマッピング機能を使うことで、ローカルホストからのアクセスを可能にできる。

このように、k3d、Ollama、Kubernetes、Gemma 2Bを組み合わせることで、手元のPC上で大規模言語モデルを効率的かつ安定して運用する環境を構築できる。これは、複雑なAIインフラの仕組みを理解するための素晴らしい第一歩となるだろう。次のステップとして、この環境でAIがどれくらいのCPUやメモリを使っているか、応答にどれくらいの時間がかかっているかなどを監視するために、PrometheusやGrafanaといったツールを追加することも考えられる。これにより、さらに深くシステム運用の知識を習得できるはずだ。