💭

RAM 32GBなThinkPadをollama serverにする

に公開

やれるようになったこと

  • thinkpad (32GB RAM)でollama動作
  • macbookからそれにアクセスしてai使用

ollamaのインストール

https://ollama.com

からwindows向けにダウンロード&インストール。インストール後に、ターミナルでモデルをダウンロードする。今回入れたモデルは以下の4つ。RAMは32あるのでちょっと大きめのモデルも入れました。

  • gemma3:4b
  • gemma3:12b
  • deepseek-r1:8b
  • nomic-embed-text:latest
ollama pull gemma3:4b
ollama pull gemma3:12b
ollama pull deepseek-r1:8b
ollama pull nomic-embed-text

portとかの解放

このままだとwindowsがfirewallで弾いてしまうので、ポートを解放します。(linuxならufwで一発なのに)

もし、defenderではなく他のセキュリティを使ってる場合は、そのソフトの設定でポートを解放してください。

windows defenderの左のペインからファイアーウォールの項目、下の方にある詳細設定を開く。右上あたりのルールの追加を押して、11434[1]を許可します。

あと、なんかollama側でもネットワーク越しのリクエストを受けるため(?)に設定が必要らしく以下です。

sudo setx OLLAMA_HOST "0.0.0.0:11434" /M
pingについて

ちなみにおそらくデフォルトではpingも返さないので、先ほどのファイアーウォール設定でFile and Printer Sharing (Echo Request - ICMPv4-In)ファイルとプリンターの共有の(おそらくprivate)を許可にするとpingが通るはず

macから接続可能か

まずwindowsのipアドレスを調べます。今回は1.7なので以下のようにします。これでOllama is running%と返ってくれば成功です。ダメなら、windowsの再起動など。あんま詳しく知らないので...

$ curl http://192.168.1.7:11434
Ollama is running%

editorでの設定

vscodeの場合

https://marketplace.visualstudio.com/items?itemName=Continue.continue

continueという拡張機能を使って、ollamaに接続します。しかしそのままではローカルのollamaに繋がってしまうので、apiBaseに先ほどのurlとポートを入れます。

yaml ver. config
name: Server Assistant
version: 1.0.0
schema: v1
context:
  - provider: code
  - provider: docs
  - provider: diff
  - provider: terminal
  - provider: problems
  - provider: folder
  - provider: codebase

models:
  - model: gemma3:12b
    provider: ollama
    name: gemma3_12b
    apiBase: http://192.168.1.7:11434
  - model: deepseek-r1:8b
    provider: ollama
    name: deepseek_r1_8b
    apiBase: http://192.168.1.7:11434

contextProviders:
  - name: code
    params: {}
  - name: docs
    params: {}
  - name: diff
    params: {}
  - name: terminal
    params: {}
  - name: problems
    params: {}
  - name: folder
    params: {}
  - name: codebase
    params: {}

slashCommands:
  - name: share
    description: Export the current chat session to markdown
  - name: cmd
    description: Generate a shell command
  - name: commit
    description: Generate a git commit message

embeddingsProvider:
  provider: ollama
  model: nomic-embed-text

reranker:
  name: free-trial

# apiBase: http://localhost:11434/v1

customCommands:
  - name: test
    prompt: "{{{ input }}}\n\nWrite a comprehensive set of unit tests for the selected code. It should setup, run tests that check for correctness including important edge cases, and teardown. Ensure that the tests are complete and sophisticated. Give the tests just as chat output, don't edit any file."
    description: "This is an example custom command. Open config.json to edit it and create more"
  - name: doc
    description: "write a doc for code."
    prompt: "write a only doc comment. don't write a function code . i want to paste it as it is."

tabAutocompleteOptions:
  disable: false

zedの場合

zedは~/.config/zed/config.jsonlanguage_modelsという項目を入れれば動きます。最初、supports_toolsという項目を設定していたのですが、エラーになり、chatGPT曰くgemmaはツールに対応してないからエラーになったとのこと。

~/.config/zed/config.json
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
  // ~~~省略~~~
  "language_models": {
    "ollama": {
      "api_url": "http://192.168.1.7:11434",
      "available_models": [
        {
          "name": "gemma3:12b",
          "max_tokens": 32768,
          "display_name": "gemma3 12b"
        },
        {
          "name": "gemma3:4b",
          "max_tokens": 32768,
          "display_name": "gemma3 4b"
        }
      ]
    }
  }
}

まとめ

これで16GB macbookを苦しめずにローカルllmができます。まあ家から出れば使えませんが。

あと、構築が楽しかっただけで普段からollama使ってるわけでないことは秘密。

追記2025/06/07: gemma3 12bに書かせた自分のlibのREADME

コードブロックが若干崩れたのでそれだけ私が修正。まだ確認してないですが一応そのまま載せてます。

https://github.com/Uliboooo/local_issues_lib/blob/develop/README_written_by_gemma3_12b.md

脚注
  1. これはollamaのデフォルトポートですが、llamaを数字で表すと11AMA(AとMをそれぞれ横に)になるからだそうです。 ↩︎

GitHubで編集を提案

Discussion