3行でいうと

  • Ollamaは、公式FAQによるとモデルを標準で5分間メモリに置き、その後に解放します。keep_aliveで変えられます。
  • LM Studioは、API経由で自動的に読み込まれたモデルを、標準で60分の無操作の後に解放します。
  • macOSのデスクトップ機では、ディスプレイが消えても自動スリープしない設定が、システム設定にあります。
  • 自動起動、メモリの保持時間、スリープは、別々の設定です。どれか一つだけでは、常駐になりません。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。

先に結論

家のAIを「いつでも答える」状態にするには、次の3つがそろう必要があります。

  1. 起動:パソコンを起動、ログインしたときに、AIのサーバーが自動で立ち上がる。
  2. モデルの保持:使う前にモデルを読み込む待ち時間を減らすなら、メモリに置く時間を長くする。逆にメモリを空けたいなら、短くする。
  3. スリープ対策:パソコンが眠ってしまうと、外からも届かない。

見立てです。常に最速で答えてほしいなら、保持を長くします。他の作業とメモリを分け合うなら、標準の5分や60分のまま、自動で解放される設定のほうが扱いやすいと思います。「常駐」と「メモリに置きっぱなし」は、同じではありません。

前提:言葉の整理

1. 自動起動

Ollama

公式FAQには、「WindowsとmacOS版のOllamaは、インストール時にログイン項目として登録される」とあります。つまり、標準で、ログインすると自動で立ち上がります。止めたいときは、Macなら「システム設定」で「ログイン項目」を検索し、「バックグラウンドで許可」の中のOllamaを切ります。更新をまたいでも、この設定は守られるとあります。

Linuxは、公式のインストール手順に「起動サービスとして追加する(推奨)」があります。systemdという仕組みのサービスファイルを作り、systemctl enable ollama で有効にします。ファイルには Restart=always(落ちたら再起動)が入っています。

LM Studio

公式文書では、使い方が2つあります。

launchdは必要か

Appleの開発者文書(過去の資料として保存されているもの)は、macOSで裏で動くプログラムを起動するには、launchdが推奨だと説明しています。設定は、plistという形式のファイルで書き、ユーザーごとのものは ~/Library/LaunchAgents に置きます。KeepAlive というキーを真にすると、「いつも動いている状態を保つ」指定になります。

ただし、OllamaのmacOSアプリは標準でログイン項目に入るので、普通はlaunchdを自分で書く必要は薄いと見ています。これは見立てです。サーバーだけを画面なしで動かしたいときの選択肢です。その場合、OllamaのCLIの場所は、公式のmacOSの文書にある Ollama.app/Contents/Resources/ollama です。この記事は、実際に使って確かめた記録ではありません。

2. モデルをメモリに置く時間

3つの道具の「置く時間」を比べる
道具 標準 変え方(公式文書)
Ollama 5分 APIの keep_alive、または環境変数 OLLAMA_KEEP_ALIVE
LM Studio APIで読み込まれたモデルは60分(Idle TTL) リクエストの ttl(秒)、アプリの既定値、lms load --ttl
llama.cpp(llama-server) 標準では解放しない(--sleep-idle-seconds の既定は-1で無効) --sleep-idle-seconds に秒数を指定

Ollamaの keep_alive に渡せる値は、公式FAQによると次のとおりです。

  • "10m" や "24h" のような時間の文字列
  • 秒数の数字(例:3600)
  • 負の数(-1など):ずっと置いたままにする
  • 0:答え終わったらすぐ解放する

APIの keep_alive は、環境変数 OLLAMA_KEEP_ALIVE より優先されると書かれています。

LM Studioは、lms load で自分で読み込んだモデルには、標準ではTTLがなく、手で解放するまでメモリに残ります。APIで自動的に読み込まれたモデル(JIT読み込み)のほうが、標準で60分で解放されます。さらに、Auto-Evictが標準でオンなので、JITで読み込まれたモデルは同時に最大1つまでです。

llama.cppは、--sleep-idle-seconds を指定すると、無操作の時間のあと、モデルとKVキャッシュ(会話の記憶の置き場所)をRAMから外します。次の依頼で自動的に読み込み直します。ただし、GET /health などの確認用の窓口は、無操作のタイマーをリセットしません。

Ollamaの操作

公式FAQとCLIの文書にある操作は、次のとおりです。

環境変数でサーバー全体の既定を変えるには、Macのアプリ版なら、公式のとおり launchctl setenv OLLAMA_KEEP_ALIVE "24h" のように設定してから、アプリを再起動します。Linuxはsystemdの Environment= 行、Windowsはユーザーの環境変数です。

3. スリープ対策

macOSのAppleサポートの文書(「Macのスリープとスリープ解除の設定」)に、次の項目があります。

同じ文書に、「スリープを遅らせたり防いだりすると、消費電力が増えることがある」という注意があります。

コマンドでは、caffeinate があります。マニュアルでは、「システムがスリープするのを防ぐ」コマンドです。-i はアイドル時のスリープ防止、-s はAC電源の使用中だけ有効、-t で秒数の指定ができます。マニュアルの例は caffeinate -i make で、コマンドの実行中だけスリープを防ぎます。なお、僕らが見た版のマニュアルの日付は2012年で、お使いのmacOSの内容は man caffeinate で確認してください。

見立てです。ネットワークアクセスによるスリープ解除で、Ollamaなどの依頼でMacが起きるかは、公式資料に書かれていませんでした。家のAIを外から使うなら、確実なのは、スリープしない設定にしておくことだと考えます。

組み合わせの例(見立て)

僕らの考えでは、次の2通りが分かりやすいと思います。実行はしていません。

使い方 起動 保持 スリープ
自分の家でときどき使う ログイン項目(標準のまま) 標準(5分/60分) 普段どおり
外出先から、いつでも使いたい ログイン項目+サーバーを立てたままにする keep_aliveを長く(例:24h)か、-1 デスクトップ機は自動スリープをオフ

keep_aliveを-1にすると、モデルがメモリに残り続けます。たとえば15GBのモデルなら、32GBのMacでは、常に15GBが埋まった状態です。他のアプリが使えるメモリが減るので、ほかの作業が重くなる場合があります。これは僕らの見立てで、実機での測定ではありません。

よくあるつまずき

気をつけること

出典

更新履歴