Bu makale, Framework Desktop PC'mi (Max+ 395, 128GB birleşik bellek) Docker konteynerleriyle hem llama.cpp hem de Ollama kullanarak yerel LLM'leri çalıştıracak şekilde nasıl yapılandırdığımı belgeliyor.
Donanım Genel Bakış
Framework Desktop Max+ 395, entegre Radeon grafiklere (Strix Halo) sahip AMD Ryzen AI Max 395 işlemcisini içerir ve şu özelliklere sahiptir:
- 128GB birleşik bellek (CPU/GPU paylaşımlı)
- AMD RDNA 3.5 mimarisi
- gfx1151 GPU hedefi
https://frame.work/gb/en/desktop
GPU Bellek Yapılandırması
GPU iş yükleri için birleşik belleğin tamamı olan 128GB'ı etkinleştirmek için aşağıdaki yapılandırma gereklidir. Bu talimatlar, technigmaai-wiki'deki Ubuntu tabanlı rehberi lhl/strix-halo-testing'in Fedora 43 için LLM kıyaslama kurulumu ile sentezler.
BIOS Kurulumu
- Yeniden başlatın ve BIOS/UEFI'ye girin
- Integrated Graphics/UMA Frame Buffer Size değerini 512MB olarak ayarlayın
- IOMMU'yu devre dışı bırakın
Fedora 43 GRUB Yapılandırması
/etc/default/grub dosyasını düzenleyin ve GRUB_CMDLINE_LINUX_DEFAULT satırını değiştirin:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=off amdgpu.gttsize=131072 ttm.pages_limit=33554432"
Ardından GRUB'u güncelleyin ve yeniden başlatın:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
Bellek Ayarlarını Doğrulama
Yeniden başlattıktan sonra parametrelerin uygulandığını doğrulayın:
cat /proc/cmdline
sudo dmesg | grep -i gtt
sudo dmesg | grep -i ttm
Bu yapılandırma, GPU iş yükleri için yaklaşık 128GB GTT belleğini etkinleştirir; bu da 256K bağlam penceresine sahip Qwen3-Coder-Next gibi büyük modelleri çalıştırmak için kritik önemdedir.
Alternatif Çekirdek Modülü Yapılandırması
Daha ayrıntılı kontrol için /etc/modprobe.d/amdgpu_llm_optimized.conf dosyasını oluşturun:
options amdgpu gttsize=120000
options ttm pages_limit=31457280
options ttm page_pool_size=15728640
Ardından initramfs'i yeniden üretin:
sudo dracut --force
Neden LLM'ler için Fedora 43?
Pek çok rehber Ubuntu'yu hedeflese de Fedora 43, yerel LLM iş yükleri için çeşitli avantajlar sunar:
Daha Güncel Çekirdek: Fedora 43, ROCm 7.x ve Ryzen AI Max 395'in GPU'su için daha iyi destek sağlayan 6.18.4+ çekirdeğiyle gelir
Daha İyi ROCm Desteği: Linux çekirdeğinin AMDGPU sürücüsündeki daha yeni çekirdeklerde yer alan iyileştirmeler, LLM iş yükleri için daha iyi birleşik bellek yönetimi ve VRAM tahsisine dönüşür
Paket Güncelliği: Fedora'nın rolling release modeli, şu gibi temel bağımlılıkların daha yeni sürümlerini sunar:
- HIP derlemesi için LLVM/Clang
- Vulkan sürücüleri (Mesa RADV/AMDVLK)
- CMake ve derleme araç zincirleri
- SELinux Hususları: SELinux ek yapılandırma gerektirse de (ör.
container_use_devices=1), konteynerleştirilmiş LLM iş yükleri için daha iyi güvenlik izolasyonu sağlar
Bu yaklaşımı şekillendiren temel kaynaklar:
Docker Tabanlı LLM Konteynerleri
Hem llama.cpp hem de Ollama çalıştırmak için kyuz0/amd-strix-halo-toolboxes tabanlı Docker konteynerleri oluşturdum.
Konteyner Ön Koşulları
Herhangi bir konteyner çalıştırmadan önce, konteynerlerin GPU aygıtlarına erişebilmesi için SELinux'u etkinleştirin:
sudo setsebool container_use_devices=1
Bu, yeniden başlatmalar arasında kalıcı olması gereken tek seferlik bir yapılandırmadır:
sudo setsebool -P container_use_devices=1
Vulkan ile Ollama (Çalışıyor)
Vulkan arka ucu, Fedora 43 üzerinde Ollama ile kusursuz çalışıyor.
Dockerfile: ollama-vulkan/Dockerfile Docker Compose: ollama-vulkan/docker-compose.yml
# Ollama + Vulkan on Strix Halo (Fedora 43)
FROM registry.fedoraproject.org/fedora-minimal:43
# Base runtime deps + Vulkan userspace
RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \
bash ca-certificates curl tar \
libatomic libstdc++ libgcc \
vulkan-loader vulkan-loader-devel vulkaninfo \
mesa-vulkan-drivers radeontop \
pciutils procps-ng wget gzip zstd \
&& microdnf clean all && rm -rf /var/cache/dnf/*
# Install AMDVLK (optional, can use Mesa RADV)
RUN curl -L -o /tmp/amdvlk-2025.Q2.1.x86_64.rpm \
https://github.com/GPUOpen-Drivers/AMDVLK/releases/download/v-2025.Q2.1/amdvlk-2025.Q2.1.x86_64.rpm \
&& microdnf -y install /tmp/amdvlk-*.rpm \
&& rm -f /tmp/amdvlk-*.rpm
# Install Ollama (generic Linux build with Vulkan support)
RUN wget -P /tmp https://github.com/ollama/ollama/releases/download/v0.15.5-rc2/ollama-linux-amd64.tar.zst \
&& tar --zstd -C /usr -xf /tmp/ollama-linux-amd64.tar.zst \
&& rm -f /tmp/ollama-linux-amd64.tar.zst
RUN mkdir -p /root/.ollama
ENV OLLAMA_VULKAN=1 \
GGML_VK_VISIBLE_DEVICES=0 \
OLLAMA_HOST=0.0.0.0 \
OLLAMA_ORIGINS="*"
EXPOSE 11434
CMD ["/usr/bin/ollama", "serve"]
Vulkan ile Ollama'yı başlatın:
# Build the image
docker build -t ollama-strix-vulkan -f ollama-vulkan/Dockerfile .
# Or using Docker Compose
cd ollama-vulkan
docker compose up -d
Ollama'ya erişin:
ollama list
ollama pull qwen3-coder-next
ROCm ile Ollama (Çalışmıyor - Düzeltme Bekleniyor)
Ollama'nın ROCm uygulaması şu anda Fedora 43 üzerinde ROCm 7.x ile çalışmıyor. Sorun ROCm issue #5902 üzerinden takip ediliyor.
Dockerfile: ollama-rocm/Dockerfile Docker Compose: ollama-rocm/docker-compose.yml
# Ollama + Vulkan on Strix Halo (Fedora 43)
FROM registry.fedoraproject.org/fedora:43
RUN dnf -y --nodocs --setopt=install_weak_deps=False install \
make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \
radeontop git vim patch curl ninja-build tar xz aria2c wget zstd \
&& dnf clean all && rm -rf /var/cache/dnf/*
# find & fetch the latest Linux 7.x.x tarball (gfx1151)
WORKDIR /tmp
ARG ROCM_MAJOR_VER=7
ARG GFX=gfx1151
RUN set -euo pipefail; \
BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \
KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \
| tr '<' '\n' \
| grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \
| sort -V | tail -n1)"; \
echo "Latest tarball: ${KEY}"; \
aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz
RUN mkdir -p /opt/rocm-7.0 \
&& tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1
ENV ROCM_PATH=/opt/rocm-7.0 \
HIP_PLATFORM=amd \
HIP_PATH=/opt/rocm-7.0 \
HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \
HIP_INCLUDE_PATH=/opt/rocm-7.0/include \
HIP_LIB_PATH=/opt/rocm-7.0/lib \
HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \
PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \
LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \
CPATH=/opt/rocm-7.0/include \
PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig
RUN printf '%s\n' \
'export ROCM_PATH=/opt/rocm-7.0' \
'export HIP_PLATFORM=amd' \
'export HIP_PATH=/opt/rocm-7.0' \
'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \
'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \
'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \
'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \
'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \
'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \
'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \
'export CPATH="$HIP_INCLUDE_PATH"' \
'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \
> /etc/profile.d/rocm.sh \
&& chmod +x /etc/profile.d/rocm.sh \
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
# Install the Ollama ROCm drivers (v0.15.2)
RUN wget -P /tmp https://github.com/ollama/ollama/releases/download/v0.15.5-rc3/ollama-linux-amd64-rocm.tar.zst \
&& tar -C /usr --use-compress-program=unzstd -xf /tmp/ollama-linux-amd64-rocm.tar.zst \
&& rm -f /tmp/ollama-linux-amd64-rocm.tar.zst
# Install ollama (v0.15.2)
RUN wget -P /tmp https://github.com/ollama/ollama/releases/download/v0.15.5-rc3/ollama-linux-amd64.tar.zst \
&& tar -C /usr --use-compress-program=unzstd -xf /tmp/ollama-linux-amd64.tar.zst \
&& rm -f /tmp/ollama-linux-amd64.tar.zst
# Make Ollama + ROCm shared libs visible to the runtime linker
RUN printf '%s\n' \
/usr/lib/ollama \
/opt/rocm-7.0/lib \
> /etc/ld.so.conf.d/ollama-rocm.conf \
&& ldconfig
# Create /opt/rocm symlink that Ollama expects
RUN ln -sfn /opt/rocm-7.0 /opt/rocm
# Data directory
RUN mkdir -p /root/.ollama
# Expose Ollama API port
EXPOSE 11434
# profile
RUN printf '%s\n' \
'export ROCBLAS_USE_HIPBLASLT=1' \
> /etc/profile.d/rocm.sh && chmod +x /etc/profile.d/rocm.sh \
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
ENV OLLAMA_HOST=0.0.0.0 \
OLLAMA_ORIGINS="*"
# Start the server
CMD ["/usr/bin/ollama", "serve"]
ROCm arka ucu, sistem ~111GB kullanılabilir VRAM rapor etse bile "out of memory" hatalarıyla başarısız oluyor. Bu, ROCm 7.2'de Ollama'nın bellek hesaplamasını etkileyen bir regresyon gibi görünüyor.
Mevcut Durum: AMD/ROCm ekibinden upstream düzeltme bekleniyor.
Vulkan ile llama.cpp
Dockerfile: llamacpp/Dockerfile.llamacpp-strix-vulkan
# build stage
FROM registry.fedoraproject.org/fedora:43 AS builder
# deps
RUN dnf -y --nodocs --setopt=install_weak_deps=False install \
git vim \
make gcc cmake ninja-build lld clang clang-devel compiler-rt libcurl-devel \
vulkan-loader-devel vulkaninfo mesa-vulkan-drivers \
radeontop glslc \
&& dnf clean all && rm -rf /var/cache/dnf/*
# llama.cpp
WORKDIR /opt/llama.cpp
RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git .
# build
RUN git clean -xdf \
&& git submodule update --recursive \
&& cmake -S . -B build -G Ninja \
-DGGML_VULKAN=ON \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_RPC=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLLAMA_BUILD_TESTS=OFF \
-DLLAMA_BUILD_EXAMPLES=ON \
-DLLAMA_BUILD_SERVER=ON \
&& cmake --build build --config Release \
&& cmake --install build --config Release
# libs
RUN find /opt/llama.cpp/build -type f -name 'lib*.so*' -exec cp {} /usr/lib64/ \; \
&& ldconfig
# runtime stage
FROM registry.fedoraproject.org/fedora-minimal:43
# runtime deps
RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \
bash ca-certificates libatomic libstdc++ libgcc \
vulkan-loader vulkan-loader-devel vulkaninfo mesa-vulkan-drivers radeontop \
&& microdnf clean all && rm -rf /var/cache/dnf/*
# copy
COPY --from=builder /usr/ /usr/
COPY --from=builder /usr/local/ /usr/local/
COPY --from=builder /opt/llama.cpp/build/bin/rpc-* /usr/local/bin/
# ld
RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \
&& echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \
&& ldconfig \
&& cp -n /usr/local/lib/libllama*.so* /usr/lib64/ 2>/dev/null || true \
&& ldconfig
# shell
CMD ["/bin/bash"]
llama.cpp için Vulkan arka ucu kararlı ve iyi test edilmiştir. Tüm model boyutları için güvenilir performans sağlar.
Docker Compose Girdisi:
qwen-3-coder-vulkan:
image: llamacpp-strix-vulkan
container_name: llamacpp
restart: unless-stopped
devices:
- /dev/dri:/dev/dri
group_add:
- "video"
volumes:
- /home/mark/running-llms/:/root/running-llms
ports:
- "8080:8080"
security_opt:
- seccomp=unconfined
command: >
bash -c "llama-server --alias Qwen3-Coder-30B -m /root/running-llms/hf-models/unsloth/Qwen3-Coder-30B-A3B-Instruct-1M-BF16/BF16/Qwen3-Coder-30B-A3B-Instruct-1M-BF16-00001-of-00002.gguf --ctx-size 262144 -fa 1 --no-mmap --host 0.0.0.0 --port 8080 --temp 0.7 --top-k 20 --min-p 0.01 --top-p 0.8 --repeat-penalty 1.05 --jinja -ngl 99 --threads -1"
ROCm ile llama.cpp (Daha Hızlı - ~%30 Performans Artışı)
Dockerfile: llamacpp/Dockerfile.llamacpp-rocm
# build
FROM registry.fedoraproject.org/fedora:43 AS builder
RUN dnf -y --nodocs --setopt=install_weak_deps=False install \
make gcc cmake lld clang clang-devel compiler-rt libcurl-devel \
radeontop git vim patch curl ninja-build tar xz aria2c \
&& dnf clean all && rm -rf /var/cache/dnf/*
# find & fetch the latest Linux 7.x.x tarball (gfx1151)
WORKDIR /tmp
ARG ROCM_MAJOR_VER=7
ARG GFX=gfx1151
RUN set -euo pipefail; \
BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \
KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \
| tr '<' '\n' \
| grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \
| sort -V | tail -n1)"; \
echo "Latest tarball: ${KEY}"; \
aria2c -x 16 -s 16 -j 16 --file-allocation=none "${BASE}/${KEY}" -o therock.tar.gz
RUN mkdir -p /opt/rocm-7.0 \
&& tar xzf therock.tar.gz -C /opt/rocm-7.0 --strip-components=1
ENV ROCM_PATH=/opt/rocm-7.0 \
HIP_PLATFORM=amd \
HIP_PATH=/opt/rocm-7.0 \
HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \
HIP_INCLUDE_PATH=/opt/rocm-7.0/include \
HIP_LIB_PATH=/opt/rocm-7.0/lib \
HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \
PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \
LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \
CPATH=/opt/rocm-7.0/include \
PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig
RUN printf '%s\n' \
'export ROCM_PATH=/opt/rocm-7.0' \
'export HIP_PLATFORM=amd' \
'export HIP_PATH=/opt/rocm-7.0' \
'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \
'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \
'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \
'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \
'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \
'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \
'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \
'export CPATH="$HIP_INCLUDE_PATH"' \
'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \
> /etc/profile.d/rocm.sh \
&& chmod +x /etc/profile.d/rocm.sh \
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
WORKDIR /opt/llama.cpp
RUN git clone --recursive https://github.com/ggerganov/llama.cpp.git . \
&& git clean -xdf \
&& git submodule update --recursive
RUN cmake -S . -B build \
-DGGML_HIP=ON \
-DAMDGPU_TARGETS=gfx1151 \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_RPC=ON \
-DLLAMA_HIP_UMA=ON \
&& cmake --build build --config Release -- -j$(nproc) \
&& cmake --install build --config Release
# keep bin; drop headers/docs/static libs (retain llama.cpp for rpc binaries)
RUN find /opt/rocm-7.0 -type f -name '*.a' -delete \
&& rm -rf /opt/rocm-7.0/include /opt/rocm-7.0/share \
/opt/rocm-7.0/llvm/include /opt/rocm-7.0/llvm/share
# runtime
FROM registry.fedoraproject.org/fedora-minimal:43
RUN microdnf -y --nodocs --setopt=install_weak_deps=0 install \
bash ca-certificates libatomic libstdc++ libgcc radeontop vim procps-ng \
&& microdnf clean all && rm -rf /var/cache/dnf/*
COPY --from=builder /opt/rocm-7.0 /opt/rocm-7.0
COPY --from=builder /usr/local/ /usr/local/
COPY --from=builder /opt/llama.cpp/build/bin/rpc-* /usr/local/bin/
# COPY gguf-vram-estimator.py /usr/local/bin/
# RUN chmod +x /usr/local/bin/gguf-vram-estimator.py
ENV ROCM_PATH=/opt/rocm-7.0 \
HIP_PLATFORM=amd \
HIP_PATH=/opt/rocm-7.0 \
HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin \
HIP_INCLUDE_PATH=/opt/rocm-7.0/include \
HIP_LIB_PATH=/opt/rocm-7.0/lib \
HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode \
PATH=/opt/rocm-7.0/bin:/opt/rocm-7.0/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
LD_LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64:/opt/rocm-7.0/llvm/lib \
LIBRARY_PATH=/opt/rocm-7.0/lib:/opt/rocm-7.0/lib64 \
CPATH=/opt/rocm-7.0/include \
PKG_CONFIG_PATH=/opt/rocm-7.0/lib/pkgconfig
RUN printf '%s\n' \
'export ROCM_PATH=/opt/rocm-7.0' \
'export HIP_PLATFORM=amd' \
'export HIP_PATH=/opt/rocm-7.0' \
'export HIP_CLANG_PATH=/opt/rocm-7.0/llvm/bin' \
'export HIP_INCLUDE_PATH=/opt/rocm-7.0/include' \
'export HIP_LIB_PATH=/opt/rocm-7.0/lib' \
'export HIP_DEVICE_LIB_PATH=/opt/rocm-7.0/lib/llvm/amdgcn/bitcode' \
'export PATH="$ROCM_PATH/bin:$HIP_CLANG_PATH:$PATH"' \
'export LD_LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64:$ROCM_PATH/llvm/lib"' \
'export LIBRARY_PATH="$HIP_LIB_PATH:$ROCM_PATH/lib:$ROCM_PATH/lib64"' \
'export CPATH="$HIP_INCLUDE_PATH"' \
'export PKG_CONFIG_PATH="$ROCM_PATH/lib/pkgconfig"' \
> /etc/profile.d/rocm.sh \
&& chmod +x /etc/profile.d/rocm.sh \
&& echo 'source /etc/profile.d/rocm.sh' >> /etc/bashrc
# make /usr/local libs visible without touching env
RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf \
&& echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf \
&& ldconfig
CMD ["/bin/bash"]
llama.cpp için ROCm arka ucu, Vulkan'a göre yaklaşık %30 daha iyi performans sağlar. Bunun nedeni ROCm'un, LLM çıkarımı gibi hesaplama ağırlıklı iş yükleri için optimize edilmiş AMD'nin yerel GPU hesaplama platformu olmasıdır.
Docker Compose Girdisi:
qwen-3-coder-rocm:
image: llamacpp-rocm
container_name: llamacpp
restart: unless-stopped
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd
group_add:
- "video"
- "render"
volumes:
- /home/mark/running-llms/:/root/running-llms
ports:
- "8080:8080"
security_opt:
- seccomp=unconfined
command: >
bash -c "llama-server --alias Qwen3-Coder-30B -m /root/running-llms/hf-models/unsloth/Qwen3-Coder-30B-A3B-Instruct-1M-BF16/BF16/Qwen3-Coder-30B-A3B-Instruct-1M-BF16-00001-of-00002.gguf --ctx-size 262144 -fa 1 --no-mmap --host 0.0.0.0 --port 8080 --temp 0.7 --top-k 20 --min-p 0.01 --top-p 0.8 --repeat-penalty 1.05 --jinja -ngl 99 --threads -1"
Modelleri Çalıştırma
Qwen3-Coder-Next (80B MoE)
Framework Desktop'ın gerçekten parladığı yer burası. Qwen3-Coder-Next'in tam 256K bağlam penceresiyle birlikte UD-Q8_K_XL tam sürümünü çalıştırabiliyorum.
Bağlantılar:
Model özellikleri:
- Mimari: 80B MoE (3B aktif parametre)
- Bağlam Penceresi: 262,144 token
- Gerekli Bellek: UD-Q8_K_XL (8-bit) için ~93.4 GB
- Önerilen Ayarlar: temp=1.0, top_p=0.95, top_k=40, min_p=0.01
Mevcut Model Kurulumu
docker-compose.yml dosyam birden fazla servis tanımlar:
| Hizmet | Arka uç | Model | Bağlam |
|---|---|---|---|
| qwen-3-coder-next-rocm | ROCm | Qwen3-Coder-Next (UD-Q8_K_XL) | 262k |
| qwen-3-coder-next-vulkan | Vulkan | Qwen3-Coder-Next | 262k |
| qwen-3-next-rocm | ROCm | Qwen3-Next-80B-A3B-Thinking | 32k |
| gpt-oss-rocm | ROCm | gpt-oss-120b-GGUF | 131k |
| glm-4.7 | Vulkan | GLM-4.7 | 16k |
Başlatma Komutları
Ollama servisini başlatın:
cd ollama-vulkan
docker compose up -d
Belirli bir model için llama.cpp'yi başlatın:
docker compose up -d qwen-3-coder-next-rocm
Tüm servisleri durdurun:
docker compose down
Ajan Tabanlı İş Akışları ve Claude Code
Bu yapılandırmada tamamen otonom Claude Code oturumlarını saatlerce çalıştırıyorum. Framework Desktop, bu makalenin büyük bölümünü bu otonom oturumlar aracılığıyla yazdı.
Claude Code Yapılandırması
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://your-framework-desktop-ip:11434
claude --model qwen3-coder-next
Not: your-framework-desktop-ip değerini gerçek alan adınız veya IP adresinizle değiştirin.
Mevcut Sorunlar
Ajan tabanlı iş akışlarında Ollama ile ilgili bir sorunla karşılaştım - bkz. Ollama issue #13939. Claude Code zaman zaman yerelde mevcut olmayan model adlarını kullanmaya çalışıyor ve bu da zaman aşımlarına yol açıyor.
Geçici Çözüm: llama.cpp'yi doğrudan kullanmak, kurulumumda ajan tabanlı iş akışları için daha güvenilir sonuçlar veriyor. Kararlılık ve tutarlılık belirgin şekilde daha iyi.
Bu Kurulumdan Neden Çok Memnunum
Ücretsiz Sonsuz "Token"
Bu yapılandırma, 7/24 ücretsiz olarak sonsuz LLM token'ı "yakmama" olanak tanıyor. Ücretli modeller daha hızlı olsa da bu kurulum şunları mümkün kılıyor:
- Farklı modeller ve istemlerle sonsuz deneme
- Uzun süre çalışan otonom ajan oturumları
- Token başı maliyet endişesi olmaması
- Tam veri gizliliği ve çevrimdışı çalışma
Performans Özellikleri
- Ücretli modellerden daha yavaş: Evet, ancak fark çoğu görev için kabul edilebilir
- Kodlama için daha iyi: Yerel modeller kod tamamlama ve anlama konusunda çok başarılı
- Sınırsız bağlam: Qwen3-Coder-Next'in 256K bağlam penceresi oyunun kurallarını değiştiriyor
Gelecek
Bu yapılandırma inanılmaz derecede üretken oldu. Artık:
- Saatlerce tamamen otonom Claude Code oturumları çalıştırıyorum
- Farklı quantisation'lar ve model mimarileriyle denemeler yapıyorum
- Yerel GPU'dan yararlanan özel ajan iş akışları geliştiriyorum
Yakında Claude Code kurulumum ve bunu bu yerel modellerle çalışacak şekilde nasıl yapılandırdığım hakkında bir makale ekleyeceğim.
Atıf ve Teşekkür
Bu kurulum, açık kaynak topluluğunun inanılmaz çalışmaları olmadan mümkün olmazdı. Şunlara büyük teşekkürler:
- kyuz0/amd-strix-halo-toolboxes - Vulkan ve ROCm arka uçları için hazır imajlarla, Docker konteynerleri için ilham kaynağı
- technigmaai-wiki - GPU bellek yapılandırması için kapsamlı adım adım talimatlar
- lhl/strix-halo-testing - Strix Halo için ayrıntılı LLM kıyaslama kurulumu
- Unsloth - Harika GGUF optimize edilmiş modeller sağladığı için
- ROCm - Açık GPU yazılım yığını
- llama.cpp - ggerganov ve katkıda bulunanların inanılmaz çalışması
Bu kaynaklar ciddi bir emeği temsil ediyor ve AMD donanımı üzerinde yerel LLM çıkarımının en ileri noktasını yansıtıyor.
