Intel NUCのCPUを使ってローカル LLM

投稿者: | 9月 5, 2025

Intel NUCのGPUを使ってローカル LLMがあまりにも、期待を裏切る、やってもできない子だったので、純粋にIntel CPU(ESXを動かしていたようなクソサーバ)で、LLMを立ててみる。

 

環境

物理、仮想(しなくていいけど)問わず、Ubuntu Server 24.04 最新でDocker CEがインストールされている環境。ちなみにWindowsやMACのDockerでもできると思うが、それだったらLM Studioを使ったほうがいい。

メモリは、少なくとも16GB(ギリギリ)、あればあるほどいい。例えば64GBなど。メモリも少なくともDDR4以上。

 

作成

以下を実行するだけ。結構簡単。

cat <<EOF > compose.yml
services:
ollama:
  image: ollama/ollama
  container_name: ollama
  ports:
    - 11434:11434
  volumes:
    - ./ollama/.ollama:/root/.ollama
  restart: always
openwebui:
  image: ghcr.io/open-webui/open-webui:main
  container_name: open-webui
  environment:
    - OLLAMA_BASE_URL=http://ollama:11434
    - OPENAI_API_KEY=sk-local
  ports:
    - 3000:8080
  depends_on:
    - ollama
  volumes:
    - ./open-webui/data:/app/backend/data
  restart: always
EOF
docker compose up -d
docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui
# Llama 3 8B
docker exec -it ollama ollama pull llama3:8b-instruct-q4_K_M
# Mistral 7B
docker exec -it ollama ollama pull mistral:7b-instruct-q4_K_M
# GPT-OSS 20B
docker exec -it ollama ollama pull gpt-oss:20b
docker exec -it ollama ollama list

 

動作確認

1. ollama runでシンプルに試す

# Llama3-8B (Q4_K_M)

docker exec -it ollama ollama run llama3:8b-instruct-q4_K_M

# Mistral-7B (Q4_K_M)

docker exec -it ollama ollama run mistral:7b-instruct-q4_K_M

# GPT-OSS-20B

docker exec -it ollama ollama run gpt-oss:20b

→ 対話モードが立ち上がり、すぐ動作確認できる。/byeで終了できる。 

 

2. curl で API 経由テスト

Ollama は OpenAI API 互換のエンドポイントを提供している。

モデル一覧確認

curl -s http://127.0.0.1:11434/api/tags | jq .

3つのモデルが表示されればOK

 

実行例(Llama3-8B)

# Llama3-8B
curl -s http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json” \
-d ‘{
  "model":"llama3:8b-instruct-q4_K_M”,
  "messages":[{"role":"user","content":"Say hello in one word.”}],
  "max_tokens": 100
  }' | jq -r '.choices[0].message.content’

実行例(Mistral-7B)

# Mistral-7B
curl -s http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json” \
-d ‘{
  "model":"mistral:7b-instruct-q4_K_M”,
  "messages":[{"role":"user","content":"Say hello in one word.”}],
  "max_tokens": 100
  }' | jq -r '.choices[0].message.content’

実行例(gpt-oss-20b)

# GPT-OSS-20B
curl -s http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json” \
-d ‘{
  "model":"gpt-oss:20b”,
  "messages":[{"role":"user","content":"Say hello in one word.”}],
  "max_tokens": 100
  }' | jq -r '.choices[0].message.content’

 

 

Open-WebUI

http://<IPアドレス> :3000

ユーザを登録

画面にアクセス。

3つのモデルが選択できるようになっているはず。

 

まぁ、インフラクソサーバでもどうにかLLMを動かしたいということが実現できた。でも、やっぱり遅いので、コードから呼ぶときはタイムアウトを余計に設定しておいたほうがいいと思う。

 

 

コメントを残す