ローカルLLM入門!LM Studioをバックグラウンドで実行しObsidianと連携する
はじめに
生成AI盛り上がってますね。私は置いていかれています。
そんな私、奇遇なことに30コアGPUを積んだMacBookを持っているではないですか。
本当は最近キラキラなAI(Devin, Claude Codeなど)を使いたいのですが、時代に逆行してローカルLLMに入門してみます。
この記事では以下のことをします。
- LM Studioに入門
- Obsidianと連携
- LM Studio CLIを使ってバックグラウンドで実行
一応、ObsidianというのはMarkdownのノートアプリです。本記事では詳しく解説しません。
デモ
本記事の手順を最後まで実施すると、LM Studioのデスクトップアプリを立ち上げることなく、ObsidianからローカルLLMを使えるようになります。
PCスペックはこちら
良ければ
以下の記事では、技術イベントの音声を文字起こししています。整理されていない大量のテキストを、Gemini CLIを使わず、オフラインで要約したいと考えたことがローカルLLMに興味を持ったきっかけです。ぜひ読んでみてください!
ローカルLLMについて
ローカルLLMとは
ローカルLLMとは、「大規模言語モデル(LLM: Large Language Model)」をインターネットを介することなく、自分のパソコンやサーバーなどのローカル環境で動かすことです。データを外部に送信することなく、プライバシーを保護しながらAIの機能を利用できます。
ローカルLLMツール
ローカルLLMができるツールをいくつか調べてみました。
- LM Studio
- Ollama
- GPT4All
- LangChain
- Llama.cpp
- AMD Gaia
LM StudioはGUIが用意されており、初心者でも簡単に扱えるそうなので、今回はLM Studioを使ってみます。
LM Studio
LM Studioとは、ローカル環境でLLMを簡単に実行できるアプリケーションです。
GUIが用意されており、技術的なハードルが低く、初心者でも扱いやすいのが特徴です。モデルのダウンロードから実行まで、すべてGUI上で完結します。
ここで一つ押さえておきたいのは、LM Studioは非常にOpenAIライクなインターフェースを持っていることです。公式ドキュメントにも頻繁にOpenAIという言葉が使われています。
LM Studioは業務利用でも無料
これまでは個人利用の範囲では無料でしたが、2025年7月8日に業務内でも無料で利用可能になりました。ただし、商用サービスとしての提供は禁止されていることには注意が必要です。詳しくは公式の情報を参照してください。
環境構築
公式サイトからLM Studioをダウンロードできます。
モデルのダウンロード
LM StudioはHugging Faceに公開されているモデルを簡単にダウンロード・実行できます。今回はGoogleが開発したGemmaモデルを使用します。Googleの有名なGeminiファミリーと同じテクノロジーを使用して構築されており、Geminiの軽量バージョンのようなものです。
LM Studioデスクトップアプリを起動し、左側のサイドバーにある検索アイコンの「Discover」からモデルを検索できます。「gemma」と入力すると、ダウンロードできるモデルの一覧が表示されます。今回は「google/gemma-3-12b」をダウンロードします。
モデルをダウンロードしただけでは使用できません。ダウンロードしたモデルをメモリにロードします。上部の「Select a model to load」から「gemma-3-12b」を選択するとロードできます。
チャットする
左側のサイドバーにあるチャットアイコンの「Chat」に遷移すると、チャットできます。
ChatGPTみたいですね!先ほど述べた通り、UIやAPI等のインターフェースはOpenAIライクに実装されています。
Obsidianと連携
いよいよObsidianとLM Studioを連携させてみます。今回はSmart Composerプラグインを使用して、Obsidian上からローカルLLMを実行します。
LM Studioのローカルサーバーを起動
LM Studioのデスクトップアプリ以外からローカルLLMを使うためには、LM Studioのローカルサーバーを起動する必要があります。再び「Developer」に遷移し、以下の設定を行います。
- StatusをRunningに設定
- Enable CORSを有効化
Server Portの番号は任意です。今回はデフォルトの1234を使用します。Serve on Local Networkを有効化すると、ローカルネットワーク上の他のデバイスからもアクセス可能になります。今回は使用しません。
上記の設定を終えると、Developer Logsにエンドポイントが表示されます。これでLM Studio側の準備完了です。
GET http://localhost:1234/v1/models
POST http://localhost:1234/v1/chat/completions
POST http://localhost:1234/v1/completions
POST http://localhost:1234/v1/embeddings
Smart Composerの導入
今回、ObsidianでAI機能を使うためにSmart Composerを利用します。Smart ComposerはVSCodeやCursorのAI機能に近い体験をObsidian上で提供してくれます。
Smart Composerのインストール
Obsidianのコミュニティプラグインから「Smart Composer」をインストールして有効化します。
Smart Composerの設定画面で以下を設定します。
Providers
Providersのlm-studio
の設定に以下を入力します。
- API Key: 空欄
- Base URL:
http://localhost:1234
Models
モデルはデフォルトで用意されていないので、「Add custom model」から登録します。
- ID:
gemma-3-12b
(任意) - Provider ID:
lm-studio
- Model Name:
google/gemma-3-12b
- Prompt Level:
default
Obsidianから使う
Smart Composerからgoogle/gemma-3-12b
を選択して質問を投げかけてみましょう!
良い感じですね!
少し気になる点として、Applyに時間がかかると感じました。
LM Studio CLI
おいおい、LM Studioのデスクトップアプリを立ち上げているじゃないか!
と思った方、落ち着いてください。これから説明します。
調べてみると、LM Studioはデスクトップアプリで有名に思えますが、実はCLIツールも提供しています。これを使うことで、LM Studioの機能をコマンドラインから操作できるようになります。LM Studio CLIを使うことで、バックグラウンドでLM Studioを実行できるのです!
環境構築
LM Studio CLIのインストール方法と使い方は以下の公式ドキュメントに載っています。
LM Studioにはコマンドラインツールが付属しており、デスクトップアプリをダウンロードすると一緒にインストールされています。ただし、コマンドラインツールのパスを通す必要があるため、以下のコマンドを実行する必要があります。
# Macの場合のインストール方法
$ ~/.lmstudio/bin/lms bootstrap
$ sudo ~/.lmstudio/bin/lms bootstrap # 権限でエラーが出る場合はsudoをつけて実行
ダウンロードが完了すると、注意事項にある通り、新規でターミナルを開く必要があります。新しくターミナルを開いてlms
を実行してみましょう。
$ lms
カッコいいですね!
CLIを使ってバックグラウンドで実行
バックグラウンドで実行してみましょう。これから実行するコマンドは、実はGUIで行っていた操作と同じことをするだけです。
# CORSを有効化し、ポート1234でローカルサーバーを起動
$ lms server start --cors --port 1234
W CORS is enabled. This means any website you visit can use the LM Studio server.
Starting server...
Success! Server is now running on port 1234
# ダウンロード済みモデルの一覧の確認
$ lms ls
You have 3 models, taking up 25.03 GB of disk space.
LLMs (Large Language Models) PARAMS ARCHITECTURE SIZE
google/gemma-3-27b gemma3 16.87 GB
google/gemma-3-12b gemma3 8.07 GB
Embedding Models PARAMS ARCHITECTURE SIZE
text-embedding-nomic-embed-text-v1.5 Nomic BERT 84.11 MB
# モデルをロード
$ lms load
! Use the arrow keys to navigate, type to filter, and press enter to select.
? Select a model to load | google/gemma-3-12b
Loading model "google/gemma-3-12b"...
Model loaded successfully in 7.63s. (8.07 GB)
To use the model in the API/SDK, use the identifier "google/gemma-3-12b".
To set a custom identifier, use the --identifier <identifier> option.
# サーバーのステータス確認
$ lms status
┌ Status ──────────────────────────────┐
│ │
│ Server: ON (Port: 1234) │
│ │
│ Loaded Models │
│ · google/gemma-3-12b - 8.07 GB │
│ │
└──────────────────────────────────────┘
これで準備完了です!LM Studioのデスクトップアプリとターミナルを完全に終了してから、Obsidianで再度実行してみましょう。
うまくいきましたね!
サーバーを停止する場合は以下のコマンドを実行します。
# サーバーの停止
$ lms server stop
Stopped the server on port 1234.
まとめ
LM Studioを使ってローカルLLMに入門し、Obsidianと連携させてみました。オフライン環境で生成AIが実行できるのは感動しますね。
言うまでもありませんが、検索や開発を行う場合は、ChatGPTやClaude Codeに勝てるはずもありません。
ただ、ドキュメント作成や要約などの単純なタスクを実行する場合は、ローカルLLMでも十分に活用できると思いました。この前も、WiFiが提供されていない技術イベントの会場で要約タスクを実行させましたが、精度に関しては十分なものでした。
LM Studioは非常に簡単にローカルLLMができるので、ぜひ使ってみてください!
Discussion