皆様いかがお過ごしでしょうか。歌乃です。
LLM (大規模言語モデル) は Deep learning(深層学習)によって事前にテキストを学習させ、それにより言語処理をおこなう仕組みのことで、世間一般では「AI (の一種)」と呼ばれ、テキスト、特に最近では自然言語の処理に特化した能力を有しています。
私がよく利用している「Stable Diffusion」は「生成AI」と呼ばれるモデル (画像生成モデル) で、LLM はその中でもテキスト (言語) の理解や生成に特化したモデルという事です。
さて、私が使う「Stable Diffusion」は画像生成時に prompt と呼ばれる「こういった画像を生成してね」という指示を与えるテキストが必要になります。
この「prompt」を LLM を使って生成すれば楽なんじゃね?という、ありがちな理由で今回の記事はできています。
(いつものごとく大半が戯言です)
「prompt 術士」なんていうネットスラングができるほどにこの「prompt」というやつは奥が深いです。
生成 AI モデルによって癖や言語解釈に違いがあるため、同じ prompt でもモデルが違うと結果が変わってきます。
ネットでは「短い」prompt よりも「長い」prompt の方が良い結果が得られる確率が高い、という噂もあります。
また、最近のモデルでは単純な形容詞だけでなく、状況やキャラクターの心境と言った目に見えないものに関する prompt によっても結果に違いが出るようになってきました (と感じるのは私だけ?)。
ということで、自分が考えるより LLM に考えてもらったほうがより良い結果が得られるんじゃないか?と思うわけです。
こう考えるのは私だけではないようで、多くの諸兄が似たような内容でネット上に情報を公開されています。
AIにさせる作業内容の指示をAIに考えさせる、いやーおもしろい時代になったもんです。
Ollama はローカル環境で LLM を実行できるように開発されたオープンソース (MIT ライセンス) のツールです。
Linux や MacOS、Windows で利用でき、Model のダウンロードも自動でやってくれるなど、手軽に LLM を利用することができるようになります。
筆者の OS は Windows10 です。
Windows 版のセットアップファイルは GitHub のリンクまたは オフィシャルのダウンロードページ からダウンロードできます。
OllamaSetup.exe をそのまま実行すると \Users\<ユーザー名>\AppData\Local\Programs\ollama の配下 (大抵はシステムドライブであるC:) にインストールされます。
インストール先を指定したい場合はコマンドプロンプトやパワーシェルから
OllamaSetup.exe /DIR="d:\data\AI\Ollama"
という感じでインストール先を指定して、実行します。(詳細はGitHubのDoc参照 https://github.com/ollama/ollama/blob/main/docs/windows.md )
インストール完了後は、 コマンドプロンプトやパワーシェルを使って Ollama を実行できます。
インストール時に自動で Ollama サーバーが起動 (タスクバーにラマのアイコンが表示される) しますが、起動していない場合は、手動で起動します。
スタートメニューに Ollama (ラマのアイコン) ショートカットが登録されているのでそちらをクリックして起動します。
Ollama サーバーが稼働しているかどうかは、お使いのブラウザで http://localhost:11434/ にアクセスすると確認できます。
「Ollama is running」と表示されれば稼働しています。
Ollama 単体では LLM は利用できません。LLM 本体をダウンロードする必要があります。
とは言っても Ollama には LLM を自動でダウンロードする機能があるので難しいことはなにもありません。
Ollama には公式でさまざまなモデルが用意されています。
https://github.com/ollama/ollama/tree/main?tab=readme-ov-file#model-library
モデルによって得意分野 (学習による偏り) があるので自分の用途に合ったモデルを選ぶ必要があります。
また、生成 AI の場合にも言えることですが、PC環境 (主にRAM容量) によっても選べるモデルが制限されます。
7B モデルを実行するには少なくとも 8 GB、13B モデルを実行するには 16 GB、33B モデルを実行するには 32 GB の RAM が必要です。
ここでは「現時点で最高性能」とラマちゃんが言っている gemma3 の 12B 量子化モデルをダウンロードしてみます。
gemma3 には 1b 4b 12b 27b があり、パラメータ数が大きいほど性能も高くなりますが、その分PCのリソース (主にRAM) が必要になります。27b を選びたいところですが、PCの性能上 12b で妥協しました。
なお gemma3 には QAT (Quantization aware trained models、量子化モデル) が用意されているので、多少の性能低下を許容できるなら、少ないリソースで稼働可能な量子化モデルを選択するという手もあります。
コマンドプロンプトまたはパワーシェルから、以下のコマンドでダウンロードできます。
ollama pull gemma3:12b-it-qat
モデルは結構な容量 (数GB~数十GB) があるのでダウンロードには時間がかかります。のんびり待ちましょう。
ダウンロードされたモデルは \Users\<ユーザー名>.ollama\models 配下 (大抵はシステムドライブC:) に保存されます。
LLM は大抵、数GB から 数十GB と大容量です。ディスク容量やファイル管理の問題で、別の場所を指定したい場合は、環境変数に「OLLAMA_MODELS」という変数を追加して保存先を指定することができます。
ウィンドウズキー + Pause/Break で「システムの詳細情報」を呼び出して「システムの詳細設定」をクリックするか、スタートボタンを右クリックして「ファイル名を指定して実行」から「SystemPropertiesAdvanced.exe」と打ち込んで実行することで、システムのプロパティを呼び出します。
システムのプロパティから「環境変数」をクリックして環境変数ダイアログを呼び出し「ユーザーの環境変数」に新規で環境変数を追加し、保存します。
環境変数追加後は Ollama サーバーを再起動、コマンドプロンプトまたはパワーシェルも開きなおしてください。
ダウンロードした LLM を確認するにはコマンドプロンプトまたはパワーシェル上で以下のコマンドを実行します。
ollama list
ローカルに保存されている LLM の一覧が表示されます。
ollama で LLM を実行 (対話) するにはコマンドプロンプトまたはパワーシェル上で以下のコマンドを実行します。
ollama run gemma3:12b-it-qat
run の後には保存した LLM を指定します (ここでは gemma3:12b-it-qat )
プロンプトが >>> に変化してメッセージの入力待ちになります。
試しに「ollama について教えて」と聞いてみます。
ちゃんと日本語も理解してくれるようです。私の書く記事よりもよほど簡潔にまとまった要約を返してくれますね(;・∀・)
以下のコマンドで対話を終了することができます。
>>> /bye
ここまでの記事で Ollama を使用して LLM と対話することができるようになったと思います。
ただ Ollama だけでは、RAG (Retrieval Augmented Generation、検索拡張生成) や会話の履歴保存、モデル切り替えといった web にある AI チャットボット のような便利な機能は使えません。
そこで、そういった機能を補ってくれるプラットフォームを利用します。
ローカルで LLM を手軽に利用するためのプラットフォームはいろいろありますが、ここでは「Open web UI」を紹介します。
Open WebUI は OSS でライセンスは改訂版BSD-3ライセンスです。
ライセンスはこちらで確認できます。
Open WebUIは、完全にオフラインで動作するセルフホスト型AIプラットフォームで、Ollama と相性が良く、RAG用の推論エンジンも内蔵しています。
以下の内容は python 開発環境が構築されていることを前提にしています。windows 用の python (3.11)、git、nodejs などがすでにインストール済みであることを確認してください。
Docker コンテナを利用した方法が良く紹介されていますが、Windowsの場合 WSL を利用することになります。
少しでもリソースを節約したいので、Python (pip) を利用してローカルにインストールする方法を取ります。
まずはインストールしたいディレクトリに python の仮想環境を構築します。
2025/05/17 現在 python3.12 でも動く「らしい」ですが、Open WebUI 公式では 3.11 を推奨しているのでそれに従います。
py -3.11 -m venv venv
仮想環境が構築出来たら pip をアップデート (お約束ですね) しておきます。
.\venv\Scripts\activate
(venv) > python -m pip install --upgrade pip
仮装環境に Open WebUI をインストールします。
(venv) > pip install open-webui
インストールが完了したら、以下のコマンドで Open WebUI サーバーを起動します。
(venv) > open-webui serve
model snapshot path などのエラーが出ますが、INFO: Started server process、INFO: Waiting for application startup メッセージの後にログメッセージが表示されればサーバーは起動しています。
Open WebUI サーバーが起動したら http://localhost:8080 からアクセスできます。
画面下の「Get Started」をクリックしてユーザー登録画面に進んでください。
初回起動時にはユーザー登録が必要です。といっても管理者としてローカルに保存されるだけなので気にせず登録しましょう。
管理者登録が完了 (ログイン) すると、チャット画面が表示されます。
ollama サーバーが起動していれば自動的に ollama でダウンロードした LLM (ここでは gemma3:12b-it-qat ) が選択されます。ollama サーバーが起動していないようであれば ollama サーバーを起動 (windows のスタートメニューにあるラマのアイコンから起動) します。
チャット入力欄からメッセージを入力して LLM と対話を開始できます。
その他の LLM に切り替えたい場合は画面上部のモデル名 (ダウンロードしてあれば他のモデル名がリスト表示される) をクリックして選択します。
Open WebUI を利用することでテキストだけでなく画像による入力やチャット履歴の再利用など、便利な機能が利用できるようになります。
さて、ここからが本番です。
本来の目的である LLM に画像生成用 prompt を書かせてみましょう( ゚Д゚)
と、その前に、画像生成用 prompt を書くのが得意な LLM をダウンロードしなければなりません。
現時点 (2025/05/17 現在) での Ollama では公式以外のモデルでもGGUFであれば (huggingface なども) ダウンロードできるようになっています。
ここでは https://huggingface.co/impactframes/llama3_if_ai_sdpromptmkr_q4km のモデルを利用します。
このモデルは llama3 をトレーニングしてファインチューンされたモデルで、 ComfyUI 用の Custom node「ComfyUI-IF_AI_tools」の製作元である Impact Frames が公開しているモデルになります。
コマンドプロンプトまたはパワーシェルから以下のコマンドでモデルをダウンロードできます。
ollama pull impactframes/llama3_ifai_sd_prompt_mkr_q4km:latest
ダウンロードが完了したら OpenWebUI をリロードして、画面上部のモデル一覧に「llama3_ifai_sd_prompt_mkr_q4km」がリストされることを確認します。
これでやっと本来の目的である画像生成用 prompt を LLM にお願いする下準備が出来ました( ゚Д゚)
OpenWebUI で 画面上部のモデル一覧から「llama3_ifai_sd_prompt_mkr_q4km」を選択します。
「新しいチャット」を作成します。
次のような要件定義を作成してチャット欄に打ち込みます。
Theme: Fantasy world
Character: A woman appear 20 years old
Scene: A female swordsman in armor holds a large sword
Background: medieval fort
Style: Anime concept art
Other: Summary must be within 150 words
以下の内容が返ってきました。
Dramatic pose, striking features, determined gaze, strong arms wrapped around the hilt of her massive greatsword, encased in polished silver steel, gleaming in the warm sunlight filtering through castle battlements. Towering stone walls rise behind her, adorned with flags bearing family crest. Intricate armor plates cover her torso and limbs, adorned with emblems representing loyalty, honor, and chivalry. A flowing cape streams behind her like a banner, as she surveys her domain, an air of quiet commandment emanating from this skilled warrior princess, ready to defend her kingdom against any threat that may arise in this whimsical fantasy world of magic, wonder, adventure!
出力された prompt を使って画像を生成してみます。
まあまあ、それなりに指示が反映された画像が出来上がりました。
(Style の Anime concept art はどこいったんだ?( ゚Д゚)?)
この後は、最初の指示の内容を編集して、再度 prompt を書かせるか、出来上がった prompt に対して修正するように指示を出していき、希望の prompt になるように推敲していきます。
今回の例で言えば「Anime concept art is a required words.」と言った感じで、対話して prompt を再提出してもらいます。
最低限の要件から内容を膨らませて prompt を生成してくれるので、自分とはまた違った感性のものができあがってきて面白いです。
prompt にせよ生成画像にせよ、一発出しで納得できなかった場合は、結局ガチャを引くことになるんですけどね (;・∀・)