本記事では、できるだけシンプルにローカルLLMを使えるようにすること、PythonでローカルLLMを使えるようにするところまでをまとめています。
実際に自分のPCでも無料でローカルLLMを使えるようになります。
思ったよりも無料で使えるLLMが多いので、色々比較してみるのも面白そうです。
ローカルLLMって何?
ローカルLLM(Large Language Model)とは、ChatGPTのような大規模言語モデル(LLM)をクラウドではなく、自分のPCやサーバーなどローカル環境で動作させるものを指します。
クラウド上で動作するChatGPTなどと異なり、ローカルLLMはインターネットに接続せずに使えるのが特徴です。
ローカルLLMの主な特徴はこちらです。
Ollama:LLMを使うためのツール
LLMを使うためのツールとして本記事ではOllamaを使います。
Ollamaを通じて、様々なLLMを利用することができるようになります。

Ollamaをインストール
Ollamaのトップページから「Download」を選択します。

OSを選択する画面に移りますので、インストールしたいOSのソフトウェアをダウンロードします。

「OllamaSetup.exe」というファイル名で保存されます。
ダウンロードした「OllamaSetup.exe」ファイルをダブルクリックで実行するとインストーラが起動しますので、「Install」をクリックします。

インストールは以上です。
インストール後、Windowsのメニューに「Ollama」が登録されていると思います。
LLM(gemma3)を使えるようにする
Ollamaのインストールは完了しましたが、この状態では利用できるLLMが存在しません。
このため、利用したいLLMをダウンロードして使えるようにする必要があります。
まずはWindows PowerShellを起動して確認してみます。
「ファイル名を指定して実行」(Win+R)で「powershell」と入力して「OK」を選択すると、Windows PowerShellを起動することができます。

「ollama --version
」でOllamaが利用できることの確認と、「ollama list
」で利用できるLLMの一覧を表示することができます。この状態は利用可能なLLMが存在しないことを示しています。
PS C:\Users\XXXXXXX> ollama --version
ollama version is 0.6.5
PS C:\Users\XXXXXXXX> ollama list
NAME ID SIZE MODIFIED
PS C:\Users\XXXXXXXX>
本記事では、Googleが2025年3月12日に発表した最新のオープンAIモデルである「gemma3」を利用してみたいと思います。
利用の仕方も非常に簡単で、「ollama run gemma3
」と実行するだけで、gemma3をダウンロードして、実際に使えるところまで進めてくれます。
gemma3の容量は3.3GB程度ありますので、ダウンロードに多少時間が掛かります。
PS C:\Users\XXXXXXXX> ollama run gemma3
pulling manifest
pulling aeda25e63ebd... 100% ▕████████████████████████████████████████████████████▏ 3.3 GB
pulling e0a42594d802... 100% ▕████████████████████████████████████████████████████▏ 358 B
pulling dd084c7d92a3... 100% ▕████████████████████████████████████████████████████▏ 8.4 KB
pulling 3116c5225075... 100% ▕████████████████████████████████████████████████████▏ 77 B
pulling b6ae5839783f... 100% ▕████████████████████████████████████████████████████▏ 489 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)
実際に問い合わせてみると応答してくれます。
>>> こんばんは!
こんばんは!何かお手伝いできることはありますか?😊
>>> 4月22日は何の日ですか?
4月22日は**地球の日**です。
地球環境の保護を啓発し、国際的な環境保護運動への協力を呼びかける日として、1977年から世界中で様々なイベントが開催
されています。
何か地球の日に関する情報について知りたいことはありますか?
>>> Send a message (/? for help)
終了する場合は「/bye
」を入力するか、Ctrl-Dを入力します。
Ollamaコマンドオプション
再度「ollama list
」を再度実行してみると、gemma3モデルが追加されていることが分かります。
NAME列がモデル名で、Pythonから利用する場合にモデル名を指定する必要がありますので、この場合は「gemma3:latest
」を指定することになります。
PS C:\Users\XXXXXX> ollama list
NAME ID SIZE MODIFIED
gemma3:latest a2af6cc3eb7f 3.3 GB 4 minutes ago
PS C:\Users\XXXXXX>
その他のオプションは「ollama --help
」を実行することで確認できます。
PS C:\Users\XXXXXX> ollama --help
Large language model runner
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
PythonでローカルLLMを使ってみる
ollamaパッケージが存在しますので、簡単にローカルLLMを利用することができます。
ollamaパッケージをインストール
「pip install ollama
」コマンドでollamaパッケージをインストールします。
Pythonバージョンは3.13.0で試しています。
PS C:\Users\XXXXXXXX> pip install ollama
Collecting ollama
Downloading ollama-0.4.8-py3-none-any.whl.metadata (4.7 kB)
:
Downloading ollama-0.4.8-py3-none-any.whl (13 kB)
Installing collected packages: ollama
Successfully installed ollama-0.4.8
スクリプトを作成する
サンプルとして実行するために「localllm.py
」に以下のコードを保存します。
コードとしてはこれだけです。
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='gemma3:latest', messages=[
{
'role': 'user',
'content': 'なぜ空は青いの?',
},
])
print(response['message']['content'])
スクリプトを実行する
「python localllm.py
」を実行すると結果が返ってくると思います。
実行するPCのスペックによって結果が返ってくるまでの時間が変わりますが、私が使っている貧弱なPCで2-3分くらい掛かって結果が返ってきます。
その間CPUもほぼ100%に張り付いてしまいますので、かなり負荷は掛かっています。
PS C:\Users\XXXXXXX> python localllm.py
空が青く見える理由は、光の散乱現象、特に「レイリー散乱」と呼ばれる現象が関係しています。
以下に詳しく説明します。
1. **太陽光の構成:** 太陽から届く光は、実際には様々な色の光が混ざり合っています。虹の色(赤、橙、黄、緑、青、藍、紫)を思い浮かべてみてください。
2. **大気と分子:** 地球の周りには、窒素や酸素などの気体分子がたくさん存在しています。
3. **レイリー散乱:** 太陽光が地球の大気中のこれらの分子にぶつかる際に、光が四方八方に散らばります。この散乱の度合いは、光の波長によって異なります。
* 波長の短い光(青や紫)は、波長の長い光(赤やオレンジ)よりも強く散乱されます。これは、光の波長が分子の大きさとほぼ同じくらいだからです。
4. **青い光が目に届きやすい:** 太陽光に含まれる青い光は、他の色の光よりも強く散乱されます。散乱された青い光が空全体に広がっていくため、空を見上げると私たちの目に青い光が多く届き、空が青く見えるのです。
**なぜ紫ではなく青なのか?**
紫色の光も青色の光と同様に散乱されやすいですが、以下の理由から空は青く見えることがあります。
* 太陽から届く光に含まれる紫色の光の量は、青色の光に比べて少なめです。
* 人間の目は、紫色の光に比べて青色の光に敏感です。
**夕焼けが赤い理由:**
夕焼けのときは、太陽光が地球の大気中を通過する距離が長くなります。その間に、青い光は散乱されてしまい、波長の長い光(赤やオレンジ)が私たちの目に届きやすくなります。
より詳しく知りたい場合は、以下のキーワードで検索してみてください。
* レイリー散乱
* 光の散乱
* 大気光学
これらの情報が、空が青く見える理由を理解するのに役立つことを願っています。
まとめ
本記事では、ローカルLLMを使えるようにすること、PythonでローカルLLMを使えるようにするところまでをまとめてみました。
インターネット環境を前提としたChatGPTなどが主流ではありますが、セキュリティなどの理由でローカルLLMを選択する必要もあると思いますので、その際の参考になれば幸いです。
コメント