QNAP TS-473a(出所がOEM版)を使っていてQuTS Hero 6 RCを入れている。多分メインは、QuTS Heroになっていくのだろうか。コンテナレジストリやOllamaのモデルファイル、オブジェクトストレージといたAIやObject Storage用途だとファイルシステム的にはZFSの恩恵が受けられないのでQuTS HeroでExt4もサポートして欲しいところ。それかQTS 6を出してくれるか。
閑話休題
以下、QNAPがサポートしている方法ではないのでやるなら自己責任に。
QNAPにGPUカードをいれているとLLM Coreというアプリをインストールすることができる。ただ、このLLM Coreというのは、QsirchにローカルLLMを提供するためのツールで、Ollamaが「Qsirch専用」でインストールされる。
実際は、LLM Coreは、Dockerで動いている。dockerのソケットを変えて実行すると
docker -H unix:///var/run/system-docker.sock ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7dc2fc43ff6 llmcore-ollama “/bin/ollama serve” 32 hours ago Up 32 hours 127.0.0.1:5046->11434/tcp llmcore-ollama
bf93cb3cd48c llmcore-api “sh -c ‘\n HOST=127.…” 32 hours ago Up 32 hours llmcore-api
78f7eff9f3fa qumagie-core-x86:latest “/root/daemon/entryp…” 32 hours ago Up 32 hours aicore.container
docker -H unix:///var/run/system-docker.sock compose ls
NAME STATUS CONFIG FILES llmcore running(2) /share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.yml,/share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.gpu.yml
docker -H unix:///var/run/system-docker.sock image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
llmcore-ollama 0.17.6-x86_64 70a821216ac6 6 weeks ago 5.67GB
llmcore-ollama latest 70a821216ac6 6 weeks ago 5.67GB
qumagie-core-x86 2.2.6 689a8b4fade9 2 months ago 2.97GB
qumagie-core-x86 latest 689a8b4fade9 2 months ago 2.97GB
llmcore-api 1.0.2-x86_64 324c5b61f34f 6 months ago 77.8MB
llmcore-api latest 324c5b61f34f 6 months ago 77.8MB
docker -H unix:///var/run/system-docker.sock compose \
-f /share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.yml \
-f /share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.gpu.yml \
ps
WARN[0000] The “QNAP_QPKG” variable is not set. Defaulting to a blank string. WARN[0000] The “LLMCORE_STATIC_PATH” variable is not set. Defaulting to a blank string. WARN[0000] The “LLMCORE_SOURCE_HOST” variable is not set. Defaulting to a blank string. WARN[0000] The “LLMCORE_ENV” variable is not set. Defaulting to a blank string. WARN[0000] The “QNAP_QPKG” variable is not set. Defaulting to a blank string. NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS llmcore-api llmcore-api “sh -c ‘\n HOST=127.…” api 32 hours ago Up 32 hours llmcore-ollama llmcore-ollama “/bin/ollama serve” ollama 32 hours ago Up 32 hours 127.0.0.1:5046->11434/tcp
docker -H unix:///var/run/system-docker.sock compose \
-f /share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.yml \
-f /share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.gpu.yml \
logs
curl -s http://localhost:5046/api/version
{“version”:”0.17.6″}
いくつかモデルを足してみた。VRAM2GBで動きそうなもの。(容量順に並べ直した。)
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama ls
NAME ID SIZE MODIFIED
gemma2:2b 8ccf136fdd52 1.6 GB 20 hours ago
qwen3.5:0.8b f3817196d142 1.0 GB 20 hours ago
qwen2.5-coder:1.5b d7372fd82851 986 MB 20 hours ago
qwen2.5:1.5b 65ec06548149 986 MB 20 hours ago
gemma3:1b 8648f39daa8f 815 MB 20 hours ago
qwen3-embedding:0.6b ac6da0dfba84 639 MB 20 hours ago
granite-embedding:278m 1a37926bf842 562 MB 20 hours ago
qwen2.5:0.5b a8b0c5157701 397 MB 20 hours ago
gemma3:270m e7d36fb2c3b3 291 MB 20 hours ago
ロードしてみる。ちゃんとGPUに乗っている。
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama run gemma3:1b
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
gemma3:1b 8648f39daa8f 1.2 GB 100% GPU 4096 59 minutes from now
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama stop gemma3:1b
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
LLM Coreは、GPUカードが入っていないとインストールできないが、とりあえず適当なサポートされるNVIDIA GPU (Low Profile / 補助電源無し/ 消費電力が低い)が入ってていればインストール可能。一度LLM Coreが入ってしまえば、GPUオフロードではなく、CPUオフロードでも大きいモデルがロードができてしまう。(遅くてたまらないが。)
docker -H unix:///var/run/system-docker.sock exec llmcore-ollama ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
gemma2:2b 8ccf136fdd52 3.1 GB 55%/45% CPU/GPU 4096 59 minutes from now
/share/ZFS530_DATA/.qpkg/llmcore/docker/docker-compose.yml の127.0.0.1を0.0.0.0にしてdocker composeを書き換えてcomposeを再立ち上げすると、外部からLLM Coreのollamaがlocalhost:5046としてアクセスができるようになる。これでOllamaを複数動かすということも不要になる。ちなみに最新のLLM CoreだとQwen 3.5が使えるようになった。(単にOllamaのバージョンが上がっただけだが。)
入れているGPUカードは、パスカルコアのGTX 1050でVRAMが2GBしかないのと、HDDがメインで使っているので、大したモデルはロードできない。VRAMの容量が多いGPUに変えたとしてもNASにはHDDしか入れておらず自分の場合は投資対効果が低い。
さらにQuTS Hero 6RCでも、CU129。一部のBlackwellのカードは一応使える(インストールされているドライバが少し古いので、Blackwell Pro2000はまだ動かない。)が、Blackwellの最適化は完全ではない。ComfyUIだとCU129は、CU130の2倍くらい遅い。CU130になって欲しいところ。逆にこのVRAM2GBの使い道は、ハルシネーションのデモとかでも使えそう。
以下のようなAPIでモデルのロードもできる。
curl -s http://localhost:5046/api/pull -d ‘{“name”: “qwen2.5:1.5b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “qwen2.5:0.5b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “qwen3-embedding:0.6b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “qwen3.5:0.8b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “qwen2.5-coder:1.5b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “gemma3:1b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “gemma3:270m”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “gemma2:2b”}’
curl -s http://localhost:5046/api/pull -d ‘{“name”: “granite-embedding:278m”}’
curl -s http://localhost:5046/api/tags | jq
実際にロードしてみると、以下だった。モデルのサイズ=VRAMに載る量ではないということ。
|
モデル |
SIZE |
PROCESSOR |
評価 |
|---|---|---|---|
|
gemma2:2b |
3.1 GB |
55% / 45% CPU/GPU |
重い。CPU依存が強い |
|
qwen3.5:0.8b |
2.3 GB |
37% / 63% CPU/GPU |
やや重い。完全GPUには載らない |
|
qwen2.5-coder:1.5b |
1.6 GB |
12% / 88% CPU/GPU |
かなり良好 |
|
qwen2.5:1.5b |
1.6 GB |
12% / 88% CPU/GPU |
かなり良好 |
|
gemma3:1b |
1.2 GB |
100% GPU |
非常に良好 |
|
qwen2.5:0.5b |
755 MB |
100% GPU |
非常に軽い |
|
gemma3:270m |
525 MB |
100% GPU |
超軽量 |
というわけで
常用
• qwen2.5:1.5b
• qwen2.5-coder:1.5b
• gemma3:1b
• qwen3-embedding:0.6b
• qwen2.5:1.5b
• qwen2.5-coder:1.5b
• gemma3:1b
• qwen3-embedding:0.6b
補助
• qwen2.5:0.5b
実験枠
• gemma3:270m
• qwen3.5:0.8b
外してよい候補
• gemma2:2b
2GB VRAM機の主力としては重い。