Llama.cpp Konteyner İmajı Oluşturma
Kaynak: dev.to

İçindekiler 4 başlık
Llama.cpp, Llama, Falcon ve Mistral gibi Büyük Dil Modelleri (LLM'ler) için tasarlanmış yüksek performanslı bir çıkarım (inference) platformudur. Hem CPU hem de GPU sistemleriyle uyumlu, akıcı bir geliştirme ortamı sunar. Bu rehber, Llama.cpp'yi CPU ve GPU sistemleri için bir Docker konteyner imajına nasıl dönüştüreceğinizi ve hazırlanan imajı bir konteyner kayıt defterine (container registry) nasıl göndereceğinizi açıklar. Yazılım geliştirme süreçlerinde LLM'leri konteynerize etmek, ortam bağımlılıklarını ortadan kaldırarak taşınabilir ve tekrarlanabilir dağıtımlar yapmanızı sağlar.
Ön Koşullar#
Başlamadan önce aşağıdaki gereksinimlerin hazır olduğundan emin olun:
- Docker kurulu bir sunucu (GPU derlemesi için NVIDIA sürücüleri ve NVIDIA Container Toolkit kurulu, GPU destekli bir sunucu).
- Sunucuya SSH ile erişim.
Docker servisini başlatın:
$ sudo systemctl start docker
Root olmayan kullanıcıyı Docker grubuna ekleyin (örneğin, linuxuser):
$ sudo usermod -aG docker linuxuser
Kullanıcıya geçiş yapın:
$ su - linuxuser
Pratik Çıkarım: Docker komutlarını
sudoolmadan çalıştırmak hem güvenlik hem de CI/CD otomasyon süreçlerinde pratiklik açısından kritik bir en iyi uygulamadır.
1. Proje Dizinini Hazırlama#
Llama.cpp kaynak kodlarını ve yapılandırma dosyalarını düzenli bir şekilde yönetmek için aşağıdaki 6 adımı izleyin:
- Llama.cpp proje dosyalarınızı saklamak için yeni bir dizin oluşturun:
$ mkdir llama-project - Oluşturduğunuz dizine geçiş yapın:
$ cd llama-project - Git kullanarak Llama.cpp proje deposunu klonlayın:
$ git clone https://github.com/ggerganov/llama.cpp/ - Dosyaları listeleyin ve yeni
llama.cppdizininin mevcut olduğunu doğrulayın:$ lsÇıktı olarakllama.cppdizinini göreceksiniz. llama.cppproje dizinine geçiş yapın:$ cd llama.cpp- Tüm gizli dosyaları listeleyin ve yeni
.devopsdizininin mevcut olduğunu doğrulayın:$ ls -aÇıktıdaCMakeLists.txt,convert.pygibi proje dosyalarının yanı sıra.devopsdizini yer alacaktır.
.devops dizini aşağıdaki Dockerfile kaynaklarını içerir:
- main.Dockerfile: CPU sistemleri için derleme bağlamını (build context) içerir.
- main-cuda.Dockerfile: GPU sistemleri için derleme bağlamını içerir.
Hazır Dockerfile şablonlarını incelemek, C++ tabanlı yapay zeka kütüphanelerinin derleme bağımlılıklarını anlamak adına harika bir öğrenme fırsatıdır.
2. CPU Sistemleri İçin Llama.cpp Konteyner İmajı Oluşturma#
CPU tabanlı sistemler için gerekli tüm bağımlılık paketlerini kuran ve gerekli derleme bağlamını içeren main.Dockerfile dosyasını kullanarak yeni bir imaj oluşturmak için aşağıdaki 3 adımı izleyin:
main.Dockerfiledosyasını.devopsdizininden anallama.cppproje dizinine kopyalayın:$ cp .devops/main.Dockerfile .- Proje dizinindeki tüm dosyalarla birlikte
main.Dockerfilekullanarak yeni bir konteyner imajı derleyin (llama-imagekısmını istediğiniz imaj adıyla değiştirin):$ docker build -f main.Dockerfile -t llama-image . - Sunucudaki tüm Docker imajlarını görüntüleyin ve yeni
llama-imageimajının mevcut olduğunu doğrulayın:$ docker imagesÇıktıda yaklaşık80.1MBboyutundallama-imageimajını görebilirsiniz. Bu kadar küçük bir imaj boyutu, mikroservis mimarilerinde hızlı ölçeklenme avantajı sağlar.
3. GPU Sistemleri İçin Llama.cpp Konteyner İmajı Oluşturma#
Llama.cpp main-cuda.Dockerfile kaynağı, en güncel CUDA sürücü paketlerini çalıştıran NVIDIA GPU sistemleri için derleme bağlamını içerir. GPU uyumlu bir imaj derlemeye başlamak için şu adımı uygulayın:
main-cuda.Dockerfiledosyasını Llama.cpp proje dizinine kopyalayın:$ cp .devops/main-cuda.Dockerfile .
Donanım hızlandırmalı çıkarım yapmak, üretim ortamlarında yanıt sürelerini (latency) düşürmek için temel adımdır.
Kaynak ve atıf
Bu yazı, dev.to üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- dev.to/vultr/building-a-llamacpp-container-image-48g9