Ana içeriğe geç

Kimi K2’yi Yerelde Çalıştırma: Eksiksiz Kurulum ve Sorun Giderme

Kimi K2’yi 250 GB RAM’li tek bir A100 GPU üzerinde llama.cpp ile nasıl çalıştıracağınızı öğrenin.
· 6 dk. oku

Yapay Zeka ile Keşfedin

Moonshot AI tarafından geliştirilen Kimi K2, son teknoloji bir Uzman Karışımı (MoE) dil modelidir. Sınır bilgi birikimi, akıl yürütme ve kodlama görevlerinde mükemmel olup, araç kullanımı ve otonom problem çözme dahil ajan yetkinlikleri için özel olarak optimize edilmiştir.

Kimi K2 rehberimizde incelediğimiz gibi, model olağanüstü kıyaslama sonuçları elde ediyor ve onu en iyi genel amaçlı açık kaynak dil modeli haline getiriyor. Deepseek R1 anına tanıklık ediyoruz ve bunu kutlamak için bu devasa 1 terabaytlık modeli tek bir GPU üzerinde nasıl çalıştıracağınızı göstereceğim. 

Runpod makinesini nasıl kuracağımızı, llama.cpp’yi nasıl yükleyeceğimizi ve modeli daha hızlı nasıl indireceğimizi öğreneceğiz. Ayrıca, model katmanlarını RAM’e aktararak modeli llama.cpp CLI ile çalıştıracağız. Son olarak, bu modelleri çalıştırırken ortaya çıkan yaygın sorunları ele alacağız. Yeni Agent Swarm’lı Kimi K2.5 için rehberimize de bakabilirsiniz.

Runpod’u Kurma

Runpod GPU Cloud’a gidin ve Python Container Image sürüm 2.8.0’ı kullanarak A100 SXM makinesiyle bir bulut oluşturun. 

Ardından, Edit pod seçeneğini kullanarak konteyner disk depolamasını 300 GB’a çıkarın. 

Container Disk depolamasını artırmak için Pod’u düzenleme.

Her şey kurulduğunda, 300 GB depolama alanınız olduğunu göreceksiniz; bu yeterli, çünkü 1-bit nice’lenmiş modelimiz 250 GB depolama gerektiriyor. 

Runpod 1X A100 SXM makine panosu

llama.cpp’yi Yükleme

1. Bağlan düğmesine tıklayın ve Jupyter Lab örneğini başlatın. Yeni bir not defteri oluşturun ve cmake ve curl gibi gerekli Linux araçlarını yükleyin.

!apt-get update
!apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y

Linux araçlarının yüklenmesi.

2. Dizinizi kök dizine değiştirin. Çalışma alanı dizinini kullanmayacağız. Bunun nedeni, modelin indirme ve yükleme hızlarını artırmaktır. Bununla ilgili daha fazlasını, sonda yer alan sorun giderme bölümünde öğreneceksiniz.

%cd ..

3. llama.cpp deposunun en son sürümünü klonlayın.

!git clone https://github.com/ggml-org/llama.cpp

llama.cpp’nin klonlanması

4. Derleme seçeneklerini ayarlayın. Bir GPU makinesi için derleme yapıyoruz. CPU üzerinde çıkarım yapmak isterseniz, lütfen DGGML_CUDA=ON değerini DGGML_CUDA=OFF olarak değiştirin.

!cmake llama.cpp -B llama.cpp/build \
  -DBUILD_SHARED_LIBS=OFF \
  -DGGML_CUDA=ON \
  -DLLAMA_CURL=ON \
  -DCMAKE_CUDA_ARCHITECTURES="80;90" \
  -DCMAKE_CUDA_FLAGS="-Wno-deprecated-gpu-targets"

llama.cpp derlemesini ayarlama

5. Araçları oluşturmak için cmake komutunu kullanacağız: llama-quantize, llama-cli, llama-gguf-split ve llama-mtmd-cli.

!cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split llama-mtmd-cli

llama-cli ve diğer araçların yüklenmesi.

6. Tüm derleme araçlarını ana depoya kopyalayın, böylece onlara kolayca erişebilelim.

!cp llama.cpp/build/bin/llama-* llama.cpp

Kimi K2’yi xnet ile Hızlı İndirme

Unsloth tarafından sağlanan Kimi K2 modelinin nice’lenmiş sürümleri xnet’i destekler; bu da Git LFS’ten 4 kat daha hızlı indirme ve yüklemeye olanak tanır. Bunu yerelde etkinleştirmek için lütfen huggingface_hub ve hf_transfer’ın en son sürümünü yükleyin:

!pip install huggingface_hub hf_transfer

Hugging Face’ten dosyaları indirmek için Python paketlerinin yüklenmesi.

snapshot_download API’sini kullanarak depodaki yalnızca 1-bit nice’lenmiş GGUF model dosyalarını indirin:

import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0"

from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/Kimi-K2-Instruct-GGUF",
    local_dir = "/unsloth/Kimi-K2-Instruct-GGUF",
    allow_patterns = ["*UD-TQ1_0*"],
)

İndirme işlemi, internet ve depolama hızınıza bağlı olarak biraz zaman alacaktır.

Hugging Face’ten 1-bit nice’lenmiş modelin indirilmesi.

Bizim için oldukça hızlıydı; xnet etkin olduğundan daha hızlı depolama çözümlerine sahibiz. 

Kimi K2 Yerelde Nasıl Çalıştırılır

Artık modelin nice’lenmiş sürümünü test etme zamanı. En çok hata ayıklamaya burada vakit harcadım; çünkü modeli tek bir GPU üzerinde çalıştırmaya çalışıyorum. Bu imkansız değil ancak model yükleme ve yürütmeyle ilgili çeşitli sorunlar getiriyor.

Tüm CPU iş parçacıklarını kullanıyor ve katman yüklemeyi GPU’ya maksimuma çıkarıyoruz; bu da yukarı ve aşağı izdüşüm Uzman Karışımı katmanlarının CPU’ya aktarılmasını içeriyor. 

Terminalde sorunsuz çalışan komut şu şekilde:

./llama.cpp/llama-cli \
  --model /unsloth/Kimi-K2-Instruct-GGUF/UD-TQ1_0/Kimi-K2-Instruct-UD-TQ1_0-00001-of-00005.gguf \
  --cache-type-k q4_0 \
  --threads -1 \
  --n-gpu-layers 99 \
  --temp 0.6 \
  --min_p 0.01 \
  --ctx-size 16384 \
  --seed 3407 \
  -ot ".ffn_(up|down)_exps.=CPU" \
  --prompt "Hey"

Jupyter Lab Terminali, llama-cli çalışırken

Tüm modelin yüklenmesi neredeyse bir dakika sürdü. Gördüğümüz gibi, model makineye mükemmel şekilde sığıyor.

Tensörün CPU ve GPU’ya yüklenmesi.

Runpod panonuzu kontrol ederseniz, CPU kullanımınızın yüksek, RAM ve VRAM belleğinin ise kullanıldığını göreceksiniz.

Runpod panosu RAM ve VRAM kullanımını gösteriyor.

Yaklaşık dört dakikalık yükleme ve ısınmanın ardından, modele sorular sormaya hazırsınız.

llama.cpp arayüzü

Basit bir soru sordum: "Muson nedir? Cevabı tek satırda yazın."

Kimi K2 modelinin test edilmesi

Üretimin tamamlanması neredeyse beş dakika sürdü. 

Token üretiminin neden yavaş olduğuna dair biraz araştırma yaptım ve GPU’nun yalnızca bellek olarak kullanıldığını, tüm işlemenin ise CPU tarafından yapıldığını gördüm. Bu sorunu çözmek için daha fazla katmanı GPU’ya aktarmanız gerekir; bu da 2 A100 makineye ihtiyaç duyacağınız anlamına gelir.

Sorun Giderme

Bu bölümde, büyük bir modeli tek bir GPU üzerinde çalıştırırken karşılaşılan yaygın sorunları ve bunların nasıl aşılacağını ele alacağız.

1. VRAM ve hesaplamayı anlamak

%95 GPU RAM kullanımı, %0 GPU hesaplama ve %99 CPU yükü görüyorsanız, bu genellikle VRAM’in model için bellek depolaması olarak işlev gördüğü, gerçek işlemenin ise CPU’da gerçekleştiği anlamına gelir.

Yüksek oranda nice’lenmiş ve daha küçük 1-bit modeller bile belleğe yüklenmek zorundadır; bu da VRAM kullanımına katkıda bulunur. Hesaplama için GPU kullanımı ancak daha fazla katmanı VRAM’e aktarırsanız başlamaya başlar.

2. Yavaş token üretimini ele alma

Token üretim hızını artırmak için modelin daha fazla katmanını GPU’ya aktarmanız gerekir. Üç A100 GPU gibi çoklu GPU kurulumunu düşünebilirsiniz. Üretilen metinde tekrar ve tutarsızlığı azaltmaya yardımcı olması için sıcaklığı 0,6’ya ayarlayın.

3. Donanım gereksinimleri ve performans

Sınırlı VRAM veya RAM’iniz varsa, yine de 1-bit modelleri bir tüketici sınıfı CPU’da çalıştırabilirsiniz. Ancak token üretimi çok yavaş olacaktır (ör. saniyede 20’de 1 token).

1-bit modelleri çalıştırmak için tek katı gereksinim, toplam disk alanınız + RAM + VRAM’inizin 250 GB’ye eşit veya daha büyük olmasıdır.

En iyi performans (saniyede 5+ token) için en az 250 GB birleşik bellek veya toplamda 250 GB RAM ve VRAM’e ihtiyacınız olacaktır.

4. Yavaş indirmeleri giderme

huggingface_hub ve hf_transfer’ın en son sürümünü kurarak, basit Git LFS’ten 4 kat daha hızlı olan "xnet hızına" erişin.

GGUF parçalı dosyaların depolanması ve yüklenmesini optimize etmek için, depolama için konteyner hacmi yerine konteyner diski kullanılması önerilir. Çünkü konteyner hacimleri, yavaş indirme ve model yüklemeye yol açabilir.

5. Yavaş model yüklemeyi giderme

Yavaş model yükleme genellikle çok büyük bir model yüklediğinizi gösterir. Modelleri ağ depolamasından yüklemek, yükleme sürecini önemli ölçüde yavaşlatabilir. Modellerinizi depolamak için her zaman yerel bir M.2 SSD kullanın. M.2 SSD’ler, geleneksel sabit disklere veya ağ depolamasına kıyasla çok daha yüksek okuma/yazma hızları sunarak yükleme sürelerini ciddi şekilde kısaltır. 

Modeli yüklemek için yeterli RAM yoksa, işletim sistemi verileri diske (swap dosyası kullanarak) takas etmeye başlayabilir; bu, RAM’den çok daha yavaştır ve darboğaz oluşturur. Daha yüksek RAM’e sahip çoklu GPU kurulumu yapmaya çalışın.

Sonuç

Kimi K2’nin nice’lenmiş sürümlerini çalıştırırken yine de zorluklar yaşanabilir; çünkü llama.cpp gibi araçlar, modelin en son güncellemeleriyle aynı hızda ilerlemek için aktif olarak evriliyor. Önümüzdeki haftalarda, daha iyi performans için token üretim hesaplamalarını yalnızca CPU’lara değil GPU’lara kaydıran iyileştirilmiş çözümler bekleyin.

Ayrıca bu benim için değerli bir öğrenme deneyimi oldu. Açık kaynak topluluğunun bu modelleri mümkün olduğunca verimli şekilde optimize etmek ve devreye almak için nasıl işbirliği yaptığını daha iyi anladım.

Kimi K2, açık kaynaklı en iyi modeller arasında öne çıkıyor ve düşünmeyen modeller arasında sınır bilgi, matematik ve kodlamada son teknoloji performansıyla DeepSeek R1 gibi modellere yaklaşan yeteneklere sahip. 

Araç seçimi ve ajan görevlerinde özellikle güçlüdür; bu da onu, Claude 4 Sonnet gibi üst düzey modellere kıyasla kodlama projeleri veya “vibe coding” için uygun maliyetli bir alternatif haline getirir.

Bu rehberi kullanarak Kimi K2’nin nice’lenmiş sürümünü kurum içi çözümleriniz için sunabilirsiniz. Llama.cpp, dil modellerini OpenAI uyumluluğuyla bir API olarak sunmanıza olanak tanır. Öğrenmeye devam etmek için örneklerle Kimi K2 rehberimize mutlaka göz atın. Ajanik yapay zekâ hakkında bilgi edinmek istiyorsanız, LangGraph ile çoklu ajan sistemleri oluşturma konulu yeni kursumuzu mutlaka alın.

Abid Ali Awan

Yazar

Abid Ali Awan

Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

Konular

İlgili