İçeriğe geç
edumintsBlog
DevOps3 dk okuma

Llama.cpp Konteyner İmajı Oluşturma

Kaynak: dev.to

Paylaş
İç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ı sudo olmadan ç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:

  1. Llama.cpp proje dosyalarınızı saklamak için yeni bir dizin oluşturun: $ mkdir llama-project
  2. Oluşturduğunuz dizine geçiş yapın: $ cd llama-project
  3. Git kullanarak Llama.cpp proje deposunu klonlayın: $ git clone https://github.com/ggerganov/llama.cpp/
  4. Dosyaları listeleyin ve yeni llama.cpp dizininin mevcut olduğunu doğrulayın: $ ls Çıktı olarak llama.cpp dizinini göreceksiniz.
  5. llama.cpp proje dizinine geçiş yapın: $ cd llama.cpp
  6. Tüm gizli dosyaları listeleyin ve yeni .devops dizininin mevcut olduğunu doğrulayın: $ ls -a Çıktıda CMakeLists.txt, convert.py gibi proje dosyalarının yanı sıra .devops dizini 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:

  1. main.Dockerfile dosyasını .devops dizininden ana llama.cpp proje dizinine kopyalayın: $ cp .devops/main.Dockerfile .
  2. Proje dizinindeki tüm dosyalarla birlikte main.Dockerfile kullanarak yeni bir konteyner imajı derleyin (llama-image kısmını istediğiniz imaj adıyla değiştirin): $ docker build -f main.Dockerfile -t llama-image .
  3. Sunucudaki tüm Docker imajlarını görüntüleyin ve yeni llama-image imajının mevcut olduğunu doğrulayın: $ docker images Çıktıda yaklaşık 80.1MB boyutunda llama-image imajı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:

  1. main-cuda.Dockerfile dosyası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