Ollama tidak dapat menggunakan GPU di Docker pada QNAP (RTX 3090, inisialisasi CUDA gagal)

Hai semua,

Saya sedang mencoba menjalankan Ollama dengan akselerasi GPU di dalam Docker pada QNAP NAS saya, tetapi selalu kembali ke CPU. Saya sudah cukup banyak melakukan debugging dan akan sangat menghargai saran atau konfirmasi apakah ini memang keterbatasan yang sudah diketahui.


:desktop_computer: Setup saya

  • QTS: 5.2.9

  • Kernel: 5.10.60-qnap

  • GPU: NVIDIA GeForce RTX 3090

  • NVIDIA Driver (QPKG): 575.64.05

  • Tipe driver: NVIDIA Open Kernel Module

  • Docker: Container Station + CLI (--gpus all)


:white_check_mark: Yang Berfungsi

  • nvidia-smi berfungsi di host (melalui container)

  • nvidia-smi berfungsi di dalam container

  • Perangkat /dev/nvidia* tersedia

  • Modul NVIDIA yang dimuat:

nvidia
nvidia_uvm
nvidia_modeset
nvidia_drm

Jadi, GPU passthrough ke container tampaknya berjalan baik.


:cross_mark: Yang TIDAK Berfungsi

Ollama tidak mendeteksi GPU dan selalu menggunakan CPU:

inference compute id=cpu library=cpu
total_vram="0 B"

Padahal GPU tersedia.


:microscope: Yang Sudah Saya Uji

1. Versi Ollama yang Berbeda

  • 0.20.6-rc1

  • 0.20.5

  • 0.19.0

    → hasil sama (hanya CPU)


2. Library CUDA

Di dalam container, library CUDA tersedia:

/usr/lib/ollama/cuda_v12/libcudart.so.12
/usr/lib/ollama/cuda_v12/libcublas.so.12
/usr/lib/ollama/cuda_v12/libcublasLt.so.12

Awalnya ldd menunjukkan library hilang, tapi setelah mengatur:

LD_LIBRARY_PATH=/usr/lib/ollama:/usr/lib/ollama/cuda_v12:/usr/lib/x86_64-linux-gnu

→ semua dependensi ter-resolve dengan benar.


3. Masih Gagal

Walaupun begitu, Ollama gagal inisialisasi CUDA:

ggml_cuda_init: failed to initialize CUDA: initialization error

4. Log Kernel (ini mencurigakan)

NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY]
NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer

:brain: Pemahaman Saya Saat Ini

Sepertinya:

  • GPU passthrough berfungsi (sisi Docker OK)

  • Library CUDA tersedia

  • tapi inisialisasi CUDA gagal saat runtime

Karena saya menggunakan NVIDIA Open Kernel Module, saya menduga:

:backhand_index_pointing_right: mungkin belum sepenuhnya mendukung workload CUDA di lingkungan ini

:backhand_index_pointing_right: atau ada masalah kompatibilitas dengan kernel QNAP (5.10.60)


:red_question_mark: Pertanyaan

  1. Apakah ada yang berhasil menjalankan Ollama (atau aplikasi berat CUDA lain) dengan GPU di QNAP?

  2. Apakah ini memang keterbatasan yang diketahui dari NVIDIA Open Kernel Module di QNAP?

  3. Apakah memungkinkan menggunakan driver NVIDIA proprietary (proprietary NVIDIA driver) alih-alih open module?

  4. Apakah ada yang pernah melihat error NV_ERR_NO_MEMORY seperti ini?


:puzzle_piece: Solusi Sementara

Saat ini saya mempertimbangkan:

  • menjalankan Ollama di mesin Linux terpisah (Debian/Ubuntu)

  • dan menggunakan QNAP hanya untuk UI/layanan

jika Anda menggunakan file docker compose, tambahkan yang berikut ini ke bagian ollama.

    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all 
              capabilities: [gpu]

Halo, apa maksud Anda:

Docker: Container Station + CLI

nvidia-smi works on host (via container)

===

Silakan ikuti langkah-langkah berikut untuk memeriksa masalah Anda:

  1. Ambil tangkapan pengaturan GPU di panel kontrol.

  2. Gunakan file YAML ini untuk membuat aplikasi baru di Container Station.

    services:
      ollama:
        image: ollama/ollama:latest
        volumes:
          - ollama:/root/.ollama
        restart: unless-stopped
        environment:
          - OLLAMA_SCHED_SPREAD=1
        ports:
          - 11434:11434
        deploy:
          resources:
            reservations:
              devices:
                - driver: nvidia
                  count: all 
                  capabilities: [gpu] 
    volumes:
      ollama:
    
  3. Buka terminal di kontainer Ollama baru Anda dan ketik nvidia-smi untuk memeriksa apakah dapat mendeteksi GPU NVIDIA.

Halo,

Terima kasih. Maksud saya dengan:

“Docker: Container Station + CLI”
adalah saya telah menguji keduanya:

  • kontainer yang dibuat dari QNAP Container Station

  • kontainer yang dijalankan secara manual melalui Docker CLI

Juga, untuk memperjelas:

nvidia-smi tidak tersedia sebagai perintah native di shell QNAP,
namun berfungsi dengan baik di dalam kontainer Docker yang dijalankan dengan akses GPU.

Saya sekarang akan menguji setup minimal Container Station yang Anda sarankan dan memeriksa:

  • nvidia-smi di dalam kontainer

  • apakah Ollama masih hanya mendeteksi CPU saat startup

Masalah utama saya adalah meskipun GPU terlihat di dalam kontainer, Ollama sering melaporkan:

inference compute id=cpu library=cpu
total_vram="0 B"

dan kadang-kadang:

ggml_cuda_init: failed to initialize CUDA: initialization error

Saya akan melaporkan hasil dari pengujian YAML Anda.

Saat ini kami menduga masalah ini juga mungkin disebabkan oleh bug alokasi memori pada driver. Kami akan merilis pembaruan yang ditujukan untuk driver baru tersebut. Kami mohon maaf atas ketidaknyamanan yang mungkin ditimbulkan!

Bagi saya, sepertinya saat saya reboot, ollama + gpu bisa digunakan. Setelah beberapa waktu gpu tidak digunakan, gpu tidak responsif lagi di ollama. Menariknya, gpu menjadi terlihat di qts dan emby (.qpkg, bukan versi Container) bisa menggunakannya. Padahal, gpu sudah didedikasikan untuk Container BUKAN QTS.

Bagaimana bisa?

Setelah mencoba, saya juga tidak dapat mengakses GPU di Container untuk menjalankan Ollama dengan GPU lagi. Bahkan nvidia-smi berfungsi di konsol Ollama. Pengaturan sama seperti dengan Igorgogi. Namun Ollama tidak dapat mendapatkan VRAM yang tersedia dari GPU dan karena itu memutuskan untuk menggunakan CPU. Model LLM yang sangat kecil dipilih. VRAM tersedia: 12GB

±----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.05 Driver Version: 575.64.05 CUDA Version: 12.9 |
|-----------------------------------------±-----------------------±---------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA RTX A2000 12GB Off | 00000000:01:00.0 Off | Off |
| 30% 46C P8 13W / 70W | 1MiB / 12282MiB | 0% Default |
| | | N/A |
±----------------------------------------±-----------------------±---------------------+

±----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
±----------------------------------------------------------------------------------------+

Log Ollama:

\u001b\]11;?\u001b\\time=2026-04-18T14:24:46.098Z level=INFO source=routes.go:1752 msg=“server config” env=“map\[CUDA_VISIBLE_DEVICES: GGML_VK_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: HIP_VISIBLE_DEVICES: HSA_OVERRIDE_GFX_VERSION: HTTPS_PROXY: HTTP_PROXY: NO_PROXY: OLLAMA_CONTEXT_LENGTH:0 OLLAMA_DEBUG:INFO OLLAMA_DEBUG_LOG_REQUESTS:false OLLAMA_EDITOR: OLLAMA_FLASH_ATTENTION:false OLLAMA_GPU_OVERHEAD:0 OLLAMA_HOST:xxx OLLAMA_KEEP_ALIVE:5m0s OLLAMA_KV_CACHE_TYPE: OLLAMA_LLM_LIBRARY:cuda OLLAMA_LOAD_TIMEOUT:5m0s OLLAMA_MAX_LOADED_MODELS:0 OLLAMA_MAX_QUEUE:512 OLLAMA_MODELS:/root/.ollama/models OLLAMA_MULTIUSER_CACHE:false OLLAMA_NEW_ENGINE:false OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NO_CLOUD:false OLLAMA_NUM_PARALLEL:1 OLLAMA_ORIGINS:xxx app://\* file://\* tauri://\* vscode-webview://\* vscode-file://\*\] OLLAMA_REMOTES:\[ollama.com\] OLLAMA_SCHED_SPREAD:true OLLAMA_VULKAN:false ROCR_VISIBLE_DEVICES: http_proxy: https_proxy: no_proxy:\]”

time=2026-04-18T14:24:46.103Z level=INFO source=types.go:60 msg=“inference compute” id=cpu library=cpu compute=“” name=cpu description=cpu libdirs=ollama driver=“” pci_id=“” type=“” total=“31.3 GiB” available=“25.7 GiB”

time=2026-04-18T14:24:46.102Z level=INFO source=routes.go:1810 msg=“Listening on \[::\]:11434 (version 0.20.7)”

time=2026-04-18T14:24:46.102Z level=INFO source=images.go:506 msg=“total unused blobs removed: 0”

time=2026-04-18T14:24:46.101Z level=INFO source=images.go:499 msg=“total blobs: 25”

time=2026-04-18T14:24:46.103Z level=INFO source=runner.go:67 msg=“discovering available GPUs…”

time=2026-04-18T14:24:46.103Z level=INFO source=routes.go:1860 msg=“vram-based default context” total_vram=“0 B” default_num_ctx=4096

Hai, saya bisa mengonfirmasi masalah yang sangat mirip di QNAP saya — driver yang sama, QTS yang sama, GPU berbeda.

Konfigurasi saya:

  • NAS: QNAP TS-673A - RAM 32GB
  • GPU: RTX 3050 OC Low Profile 6G (GA107)
  • QTS: 5.2.9 / Kernel: 5.10.60-qnap
  • Driver NVIDIA: 575.64.05 (Open Kernel Module)
  • CUDA: 12.9
  • Docker via Container Station, runtime: nvidia-runtime

Kontainer yang menggunakan GPU:

  • Jellyfin — transcoding hardware NVENC
  • go-vod — NVENC untuk pemrosesan video Nextcloud Memories

Kedua kontainer memakai runtime: nvidia-runtime dengan NVIDIA_VISIBLE_DEVICES disetel ke UUID GPU dan NVIDIA_DRIVER_CAPABILITIES=compute,video,utility. Tidak memakai privileged: true dan tidak ada mount device manual — nvidia-runtime sudah mengatur itu otomatis.

Yang berfungsi (setidaknya di awal):

  • nvidia-smi di host dan di dalam kontainer ✓
  • Encoding hardware NVENC di Jellyfin ✓
  • NVENC di go-vod untuk Nextcloud Memories ✓

Setelah beberapa waktu tidak aktif, inisialisasi CUDA gagal secara bersamaan di semua kontainer GPU — Jellyfin dan go-vod sama-sama berhenti berfungsi pada waktu yang sama. Satu-satunya solusi yang konsisten adalah reboot NAS secara penuh. Restart kontainer saja tidak membantu.

Sudah saya coba segala solusi yang saya temukan:

  • nvidia-smi -pm 1 (persistence mode) — tidak berpengaruh
  • privileged: true — menimbulkan masalah saat startup
  • mounting device manual — tidak berpengaruh
  • Driver cgroupfs di docker.json — ada sedikit perbaikan

Saya sudah buka tiket support ke QNAP selama hampir sebulan. Sampai sekarang hanya dapat jawaban bahwa “mereka sedang mengerjakan masalah ini” — tidak ada ETA, tidak ada solusi sementara, dan tidak ada info konkret sama sekali. Sangat membuat frustrasi karena ini jelas masalah yang bisa direproduksi yang mempengaruhi banyak pengguna dengan GPU berbeda di beberapa thread forum.

Solusi Sementara hingga QNAP Merilis Driver Workaround

Saya mengalami masalah yang sama, benar-benar bikin frustasi! Ollama dan Open WebUI berjalan di Container Station, dengan passthrough GPU RTX 3060 12gb. Setiap kali Ollama idle setelah penggunaan awal, aplikasi langsung beralih ke CPU meskipun GPU masih terdeteksi dengan nvidia-smi—tidak ada cara untuk mengaktifkan GPU lagi tanpa restart kontainer.

Akhirnya saya memindahkan instalasi Ollama ke NVME dan sekarang semuanya berjalan lancar—bahkan saat mengganti model secara cepat, model baru langsung dimuat ke GPU dan hasil keluar hampir seketika. Saat Ollama idle, GPU otomatis offload seperti biasa, dan ketika saya mulai chat lagi, GPU langsung aktif dan semuanya berjalan tanpa hambatan. Dari pengalaman saya, Ollama yang terinstal di HDD NAS (Ironwolf) terlalu lambat untuk GPU sehingga sistem malah beralih ke CPU.

Semoga ini membantu teman-teman lain sementara waktu!

Halo,

Saya mengalami masalah yang sama seperti Anda (RTX Pro 4000 Blackwell), baik untuk RAG di Qsirch maupun di dalam kontainer Ollama. Sering kali, secara tidak teratur (tidak selalu setelah waktu tunggu yang sama), model menggunakan CPU daripada GPU. Saya juga sudah membuat tiket dukungan (masih menunggu tanggapan).

Saya sudah mencoba Ollama selama beberapa hari terakhir, dan mulai mengenal beberapa perintah dasar, tapi saya belum bisa menemukan sumber masalahnya.

Di sisi saya, semua aplikasi, kontainer, dan model berada di SSD RAID.

Saya selalu menjalankan container di SSD, jadi cara ini bukan untuk saya. Saya sudah membuka tiket selama sebulan dan sejauh ini saya hanya mendapat balasan bahwa mereka sedang mengerjakannya. Saya sudah memasukkan informasi tambahan, tapi belum mendapat respons lagi.

Terus saja tanyakan, ada perkembangan apa dengan tiketnya…

Jawaban dari 7.5. adalah …

Hai

Terima kasih atas balasannya, mohon bersabar, tim pengembangan kami membutuhkan waktu untuk menangani masalah ini.

Saat ini, tim pengembangan kami masih mengerjakannya

Jika ada tanggapan dari mereka, saya akan segera kabari Anda. Terima kasih

Saya sudah mengalami masalah ini sejak sekitar Januari, setelah pembaruan firmware yang mengharuskan saya menginstal ulang driver Nvidia secara manual dirilis. Saya sudah membuka tiket Q-202606-32810 untuk menyediakan sumber daya lain seperti log atau yang sejenisnya agar masalah ini bisa diselesaikan, karena saya mulai kesulitan dengan alur kerja akibat penggunaan CPU 100% ketika sistem kembali ke itu dari CUDA.

Saya bisa mengonfirmasi bahwa upgrade ke QuTS Hero 6.0 (dan pembaruan driver NvKernel yang menyertainya) telah menyelesaikan masalah saya. Teman-teman yang bekerja dengan saya berhasil menjalankan sekitar 2 juta aset lewat OCR, menghentikan proses sehingga GPU menjadi idle, mengganti model, dan kemudian menjalankan beberapa beban kerja lainnya tanpa masalah selama akhir pekan. Pagi ini, pekerjaan berjalan setelah tidak ada pekerjaan selama sekitar 18 jam, dan model dapat dimuat tanpa masalah, tidak lagi memberikan error GPU.

Sayangnya, dalam kasus saya, pada saat postingan pertama saya, saya sudah menggunakan beta dari QuTS Hero 6, dengan driver terbaru, dan transisi ke versi final tidak mengubah apa pun. Saya masih mengalami perubahan dari GPU ke CPU. Tapi saya memang mencatat ada “peningkatan”, dan ini mungkin disebabkan oleh kelebihan memori di sisi model. Saya akan memantau ini dalam beberapa hari ke depan.
Catatan: tiket dukungan saya sudah ditutup tanpa adanya bantuan.

Saya sudah mendapatkan jawabannya, lihat di bawah. Saya sudah coba, awalnya sepertinya tidak membantu. Saya harus restart NAS, tapi masih tidak ada perubahan, bahkan malah makin parah dan sistem tidak bisa menggunakan kartu grafis. Lalu saya instal ulang NvKernelDriver dan semuanya mulai berjalan normal. Sudah 5 jam sejak itu dan semuanya tetap lancar. Kita lihat saja besok pagi…

Hi

Tim pengembangan kami menyediakan solusi sementara

Silakan akses NAS melalui SSH dan jalankan perintah berikut:

# sync; echo 3 > /proc/sys/vm/drop_caches

Setelah itu, restart aplikasi. Jika masalah tetap terjadi, reboot penuh seharusnya bisa mengatasinya.

Terima kasih.

Setelah beberapa jam, masalahnya kembali lagi, jadi ini bahkan bukan solusi sementara.

Kita semua harus terus menuntut Qnap untuk memperbaiki masalah ini, karena sangat membuat frustrasi, bukan hanya untuk saya tapi juga banyak orang di forum ini.

Jika ada yang terbantu sementara, saya menemukan solusi/perbaikan dengan melakukan ping ke agen percakapan ollama setiap 4 menit di home assistant. Sejak saya melakukan ini, saya tidak pernah mengalami lonjakan CPU atau model yang lepas dari GPU.

Jika kamu menginstal home assistant, beserta conversation agent, maka otomatisasi berikut ini adalah solusi sementara

alias: Ollama QNAP GPU Keep Alive
description: Melakukan ping ke Extended OpenAI Conversation setiap 4 menit untuk mencegah QTS CUDA drop
triggers:

  • minutes: /4
    trigger: time_pattern
    actions:
  • action: conversation.process
    data:
    agent_id: conversation.extended_openai_conversation
    text: ping
    mode: single

Saya menduga masalah ini disebabkan oleh driver NVIDIA yang bermasalah dan kombinasi driver spesifik dari QNAP.

Berikut pengalaman yang saya alami saat ini. Saya menggunakan RTX 3050 6GB LP, persis model yang tercantum dalam daftar kompatibilitas untuk TS-473A saya.

  • Saat perangkat di-reboot, saya bisa memakai container dengan akselerasi GPU tanpa masalah.
  • Namun, setelah perangkat hidup selama 24-48 jam (bisa bervariasi), akselerasi GPU mulai gagal saat inisialisasi. Ketika saya cek dmesg, banyak muncul baris error NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY].
  • sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches' tidak berhasil. Ketika saya cek meminfo, tidak ada perubahan.

Masalah ini sebenarnya bukan tentang VRAM atau GPU Anda. Driver meminta alokasi RAM sistem dengan tipe tertentu, dan gagal melakukannya karena ada bug pada driver.

Saat mencari tahu seputar isu ini, saya menemukan sejumlah laporan bug serupa di forum lain yang diposting sekitar setahun lalu.

(Catatan: JANGAN JALANKAN /proc/sys/vm/compact_memory di sistem Anda. Ini bisa memicu bug kernel yang dapat menyebabkan sistem tidak stabil dan butuh reboot. Ini bug kernel OpenZFS terpisah yang tidak bisa diperbaiki QNAP sendiri. Patch harus berasal dari pengembang utama ZFS.)

Jadi menurut saya masalah ini bukan sepenuhnya tanggung jawab QNAP… (Tetap saja, sangat menjengkelkan; QNAP saat ini mempromosikan lini NAS AI mereka, dan masalah ini mencegah pengguna menjalankan AI dengan lancar… sebaiknya ini cepat diperbaiki.)


Satu-satunya solusi sementara yang saya temukan adalah menjalankan proses/container/apapun yang menggunakan GPU tepat setelah reboot, dan pastikan proses itu tetap memakai GPU selama mungkin tanpa dilepas - sehingga prosesnya tidak perlu diinisialisasi ulang. Bug ini hanya terjadi saat inisialisasi (tepatnya pada tahap alokasi RAM), bukan saat proses sudah berjalan dan memegang RAM/GPU. (Ini sebabnya “ping” ke Ollama tiap 4 menit bisa berfungsi.)