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 dengandmidecode -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
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
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
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
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
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
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
Jalankan command berikut untuk install docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Oke docker sudah terinstall, bisa di cek dengan perintah berikut
docker -v
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
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
Updet repository
apt update
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}
Setelah terinstall berikutnya kita konfigurasi ke dockernya, jalankan perintah berikut
nvidia-ctk runtime configure --runtime=docker
Lalu restart docker daemon
systemctl restart docker
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
Pada bagian ini
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
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
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
Jalankan perintah berikut untuk pull modelsnya
ollama run gemma3n
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
Modifikasi isinya seperti dibawah
{
"ipv6": false,
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
Restart docker daemon
systemctl restart docker
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
Maka akan terlihat ollama berjalan di GPU
Atau bisa juga dari dockernya, kita masuk ke container Ollama dan cek menggunakan perintah berikut
ollama ps
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
ataudocker-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)