DEV Community

Fega Suseno
Fega Suseno

Posted on • Edited on

How to Running Llama4 on Docker

Oke pada postingan ini saya ingin berbagi pengalaman mengkonfigurasi LLM di PC Rakitan. Akan lebih baik jika saya ceritakan sedikit mengapa PC rakitan ini ada dan peruntukanya untuk apa. Okeh, pc di ini rencana kita gunakan untuk membantu tim medis guna mencari tahu lebih dalam tentang diagnosa penyakit yang di derita pasien sekaligus akan kita integrasi dengan SIMRS kita.

Spesification PC

Karena berencana di gunakan untuk production dan penggunaan models dengan parameter skala besar, maka spesifikasinya juga terbilang cukup gahar, berikut detailnya:

  • OS: Ubuntu 24.04.2 LTS x86_64
  • Mother Board: ASUS ROG CROSSHAIR X870E HERO
  • CPU: AMD Ryzen 9 9950X3D (32) @ 5.752GHz
  • GPU: AMD ATI 7a:00.0 Device 13c0
  • GPU: NVIDIA 01:00.0 NVIDIA Corporation Dev - RTX 5090
  • Memory: 40418MiB / 61912MiB

Pada PC ini ada 2 GPU, satu bawaan dari motherboard dan satu lagi d kita tambahkan NVIDIA RTX 5090.

Untuk mengetahuinya saya menggunakan neofetch dan membaca motherboard dengan dmidecode -t baseboard.

Install Driver NVIDIA

Pada percobaan pertama install driver sempat salah versi. Jadi berdasarkan referensi, NVIDIA RTX 5090 ini keluaran terbaru. Sehingga di rekomendasikan versi driver terbaru yaitu versi 575.64.05.

Setelah di download dan di run kita menemukan peringatan tidak bisa menginstall drivernya, alasanya karena secure boot pada motherboard masih enable. Kita perlu mendisable sercure boot pada bios.
Masuk ke Bios F2, masuk ke Advance Mode dan pada menu Boot di bagian bawah ada Boot\Secure boot, ubah OS Type ke Other OS dan Secure Boot Mode ke Custom.

Setelah coba di jalankan driver masih tetap tidak terinstall. Akhirnya di coba dengan menggunakan driver dari repository ubuntu 24.04.

ubuntu-drivers devices
Enter fullscreen mode Exit fullscreen mode

nanti akan muncul recomended drivernya, dan ternyata recomendednya tetap yg versi nvidia-driver-575-open - distro non-free recommended. Cobalah untuk menjalankan auto install

ubuntu-drivers autoinstall
Enter fullscreen mode Exit fullscreen mode

dan boomm, hasilnya tetap tidak terdeteksi.

Setelah dicari di website resminya ternyata driver yg work itu ada di versi 570.172.08. Okeh baiklah, kita hapus dulu semua driver yang tadi kita install agar tidak bentrok

apt purge '^nvidia-.*' --yes
apt autoremove
rm -rf /usr/local/cuda*
rm -rf /etc/X11/xorg.conf
rm -rf /lib/modules/$(uname -r)/kernel/drivers/video/nvidia*
update-grub
reboot
Enter fullscreen mode Exit fullscreen mode

Kita download dulu driver yg sesuai di web resmi nvidianya
https://www.nvidia.com/en-us/drivers/details/249194/

wget https://us.download.nvidia.com/XFree86/Linux-x86_64/570.172.08/NVIDIA-Linux-x86_64-570.172.08.run
Enter fullscreen mode Exit fullscreen mode

Ubah permissionya agar executable dan jalankan filenya

chmod NVIDIA-Linux-x86_64-570.172.08.run
chmod +x NVIDIA-Linux-x86_64-570.172.08.run
./NVIDIA-Linux-x86_64-570.172.08.run
Enter fullscreen mode Exit fullscreen mode

Daann yuupsss, berhasil

Untuk membaca VGA yang ada bisa dengan menggunakan perintah lspci | grep -i vga.

Bisa di cek dengan menggunakan nvidia-smi

Install Docker

Untuk panduan install docker saya mengacu pada dokumentasi resmi pada websitenya. Mungkin sedikit saya rangkum bagian teknis installasinya

Dokumentasi: https://docs.docker.com/engine/install/ubuntu/

Sesuai link dokumentasi yg saya cantumkan, metode installasinya masih bisa di pakai sampai dengan ubuntu 24.10 (terbaru saatt artikel ini dibuat)

Jalankan command ini untuk uninstall paket yg menyebabkan docker conflict

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Enter fullscreen mode Exit fullscreen mode

Copy paste di terminal kode dibawah, ini bertujuan untuk menambahkan repository resmi docker.io untuk Ubuntu

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

Jalankan command berikut untuk install docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Enter fullscreen mode Exit fullscreen mode

Oke docker sudah terinstall, bisa di cek dengan perintah berikut

docker -v
Enter fullscreen mode Exit fullscreen mode

Installing the NVIDIA Container Toolkit

Berikutnya kita harus mensetting docker agar container Ollama nanti bisa menggunakan resource dari GPU buka CPU. Untuk itu kita perlu masuk ke dokumentasi NVIDIA. Seperti biasa saya akan buatkan rangkuman teknisnya

Dokumentasi: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

Dari dokumentasi di atas, kita perlu menambahkan repository untuk install nvidia-container-toolkit. Ini semacam runtime yg menjembatani env docker agar bisa menggunakan resource GPU. Detailnya cek chatgpt atau website resmi nvidia.
Tambahkan repository production

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Enter fullscreen mode Exit fullscreen mode

bisa tambahkan juga command berikut jika ingin experiment dengan paket beta

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
Enter fullscreen mode Exit fullscreen mode

Updet repository

apt update
Enter fullscreen mode Exit fullscreen mode

Jalankan command berikut untuk installnya

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
  sudo apt-get install -y \
      nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
Enter fullscreen mode Exit fullscreen mode

Setelah terinstall berikutnya kita konfigurasi ke dockernya, jalankan perintah berikut

nvidia-ctk runtime configure --runtime=docker
Enter fullscreen mode Exit fullscreen mode

Lalu restart docker daemon

systemctl restart docker
Enter fullscreen mode Exit fullscreen mode

Install & Config ollama + Open-WebUI

Karena kita akan jalan di docker jadi kita akan buat confignya di docker-compose.yml. Untuk docker composenya saya mengacu pada dokumentasinya di github dan di dokumentasi resmi dockernya

Dokumentasi

Oke berikut saya cantumkan docker-compose, kita di rekomendasikan di taruh di /var/lib/project. Saya asumsikan host kita running di IP 192.168.10.15.

services:
  ollama:
    container_name: ollama
    restart: unless-stopped
    image: ollama/ollama
    ports:
      - 11434:11434
    volumes:
      - ollama-data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    networks:
      - net-ai

  open-webui:
    image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
    container_name: open-webui
    volumes:
      - openwebui-data:/app/backend/data
    depends_on:
      - ollama
    networks:
      - net-ai
    dns:
      - 8.8.8.8
      - 1.1.1.1
    ports:
      - 3000:8080
    environment:
      - "OLLAMA_BASE_URL=http://192.168.10.15:11434"
      - "WEBUI_SECRET_KEY="
    extra_hosts:
      - host.docker.internal:host-gateway
    restart: unless-stopped

volumes:
  ollama-data:
    name: ollama-data
    driver: local

  openwebui-data:
    name: openwebui-data
    driver: local

networks:
  net-airsmp:
    name: net-ai

Enter fullscreen mode Exit fullscreen mode

Pada bagian ini

deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
Enter fullscreen mode Exit fullscreen mode

Bertujuan agar container bisa menggunakan GPU resource saat menjalankan models AI. Detailnya cek di dokumentasi resmi yang saya cantumkan di atas.
Untuk menjalankan docker-compose langsung gunakan perintah berikut

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Untuk mengecek ollama dan openwebui bisa kita cek lewat browser

  • Ollama : http://192.168.10.15:11434
  • OpenWebUI : http://192.168.10.15:3000

Oke sedikit saya jelaskan konsep singkatnya anatara Ollama dan OpenWebUi ini:
Ollama adalah platform lokal untuk menjalankan model bahasa besar (LLM) seperti LLaMA dan Mistral secara offline di komputer, baik menggunakan CPU maupun GPU. Sementara itu, OpenWebUI merupakan interface web berbasis browser yang dirancang untuk terhubung dengan Ollama, memungkinkan pengguna berinteraksi dengan LLM melalui tampilan yang user-friendly seperti ChatGPT. Keduanya bekerja sama di mana Ollama menangani proses pemodelan dan inferensi, sementara OpenWebUI menyajikan pengalaman chat secara visual. Kombinasi ini memungkinkan puser menggunakan AI pribadi yang sepenuhnya berjalan secara lokal tanpa ketergantungan pada layanan cloud.

Install & Run Models AI (Gemma3n & llama4)

Untuk install model bisa dengan mengakses WebUI, pada bagian Models bisa search nama model dan clik pull from ollama.com. Secara otomatis akan mendownload.

atau
dengan menggunakan CLI, ini sedikit tricky. Kita perlu masuk ke container Ollama

docker exec -ti ollama /bin/bash
Enter fullscreen mode Exit fullscreen mode

Jalankan perintah berikut untuk pull modelsnya

ollama run gemma3n
Enter fullscreen mode Exit fullscreen mode

Tunggu hingga selesai dan bisa langsung akses atau di pakai via cli.

Catatan:
Sepengalaman di saya, ketika sedang pulling models kadang suka disconnect dan terhenti. Hal ini disebabkan docker meresolver ipv6 sedangkan di saya tidak support. Untuk mengakali hal itu kita perlu meresolver via container atau via docker daemon. Untuk kasus saat ini saya konfig dari docker daemon. Gunakan perintah berikut

nano /etc/docker/daemon.json
Enter fullscreen mode Exit fullscreen mode

Modifikasi isinya seperti dibawah

{
    "ipv6": false,
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Restart docker daemon

systemctl restart docker
Enter fullscreen mode Exit fullscreen mode

Jik semua langkah sudah dilakukan maka seharusnya kita sudah bisa menggunakan AI secara online maupun offline dengan models AI yg ada di pc kita. Berikut tampilanya akan seperti ini

Untuk memastikan proses menggunakan AI berjalan di GPU bukan dari CPU bisa kita cek dengan perintah

nvidia-smi
Enter fullscreen mode Exit fullscreen mode

Maka akan terlihat ollama berjalan di GPU

Atau bisa juga dari dockernya, kita masuk ke container Ollama dan cek menggunakan perintah berikut

ollama ps
Enter fullscreen mode Exit fullscreen mode

Perhatikan pada bagian processor harusnya tampil menggunakan GPU.

Ollama ps hanya akan mendeteksi ketika ollama run models sedang berjalan

Conclusion

Sedikit kita bahas kesimpulan yang di dapat dari study case di atas.

Kelebihan

  • Isolasi env, tidak mencampur dependensi ke sistem host.
  • Mudah di-deploy dan direplikasi dengan docker run atau docker-compose.
  • Versi terkontrol, bisa pilih atau rollback image tertentu.
  • Bisa membatasi dan mengatur penggunaan resource (CPU, RAM). Pokoknya semua kelebihan docker include ya.
  • Lebih aman karena berjalan dalam container (sandboxed).

Oke saya rasa cukup sekian artikel kali ini, terima kasih sudah membaca. semoga bermanfaat.

Top comments (0)