Xiaomi MiMo-V2-Flash'ı Yerel Olarak Nasıl Çalıştırılır: Tam Kurulum Kılavuzu
Xiaomi MiMo-V2-Flash'ı Yerel Olarak Nasıl Çalıştırılır: Tam Kurulum Kılavuzu
Xiaomi'nin MiMo-V2-Flash modeli, toplam 309 milyar parametreye sahip olup, çıkarım sırasında sadece 15 milyarının aktif olduğu verimli bir AI model tasarımında çığır açtı. Bu Mixture-of-Experts (MoE) mimarisi, mükemmel performans sunarken, yerel dağıtım için makul donanım gereksinimleri de sağlar. Bu kapsamlı rehberde, MiMo-V2-Flash'ı bilgisayarınızda yerel olarak çalıştırmak için birden fazla yöntemi adım adım anlatacağız.
Neden MiMo-V2-Flash'ı Yerel Olarak Çalıştırmalısınız?
MiMo-V2-Flash'ı yerelde çalıştırmanın birçok avantajı vardır:
- Veri Gizliliği: Hassas verileriniz cihazınızdan dışarı çıkmaz
- Maliyet Verimliliği: Token başına API ücreti veya abonelik yok
- Düşük Gecikme Süresi: Donanıma doğrudan erişim ile daha hızlı çıkarım
- Özelleştirme: Model parametreleri ve ince ayar üzerinde tam kontrol
- Çevrimdışı Kullanım: Kurulum sonrası internet bağlantısı gerektirmez
- Performans: Yerel GPU'nuzu en yüksek hızda kullanır
Donanım Gereksinimleri
Minimum Sistem Gereksinimleri
| Bileşen | Gereksinim | Tavsiye Edilen |
|---|---|---|
| GPU | NVIDIA RTX 3080 (12GB VRAM) | RTX 4090 (24GB VRAM) veya A6000 |
| RAM | 32GB | 64GB veya daha fazlası |
| Depolama | 100GB boş alan | 200GB+ NVMe SSD |
| CPU | Intel i7-10700K / AMD Ryzen 7 3700X | Intel i9-12900K / AMD Ryzen 9 5900X |
| CUDA | 11.8+ | 12.4+ |
Model Boyutu ile İlgili Detaylar
- Toplam Model Boyutu: ~180GB (kuantize formatlarda)
- Maksimum GPU Belleği: 15-20GB VRAM (aktif parametreler)
- Bağlam Uzunluğu: 256K token (yüksek RAM kullanımı)
Yazılım Gereksinimleri
Kurulumdan önce aşağılar yüklü olmalıdır:
- Python 3.10+
- CUDA Toolkit 11.8+ veya 12.4+
- NVIDIA Sürücüleri (en güncel sürüm)
- Git (repository klonlamak için)
CUDA Kurulumunu Doğrulama
nvidia-smi
nvcc --versionYöntem 1: SGLang Kullanarak Kurulum (Önerilen)
SGLang, MoE modelleri için optimize edilmiş performans sunan MiMo-V2-Flash için önerilen framework’tür.
Adım 1: SGLang Kurulumu
# Sanal ortam oluştur
python -m venv mimo-env
source mimo-env/bin/activate # Windows için: mimo-env\Scripts\activate
# CUDA destekli PyTorch kurulumu
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# SGLang kurulumu
pip install sglangAdım 2: Modeli İndir
# Hugging Face giriş yap
huggingface-cli login
# MiMo-V2-Flash modelini indir
huggingface-cli download XiaomiMiMo/MiMo-V2-Flash --local-dir ./models/MiMo-V2-FlashAdım 3: SGLang Sunucusunu Başlat
python -m sglang.launch_server \
--model-path ./models/MiMo-V2-Flash \
--host 0.0.0.0 \
--port 30000 \
--trust-remote-code \
--dtype float16 \
--max-model-len 262144 \
--gpu-memory-utilization 0.9Adım 4: Kurulumu Test Et
import requests
import json
url = "http://localhost:30000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
data = {
"model": "MiMo-V2-Flash",
"messages": [
{"role": "user", "content": "Write a Python function to calculate fibonacci numbers"}
],
"temperature": 0.7,
"max_tokens": 500
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())Yöntem 2: Hugging Face Transformers ile Kurulum
Adım 1: Gereksinimleri Yükleyin
pip install transformers==4.51.0
pip install accelerate
pip install bitsandbytes
pip install torch --index-url https://download.pytorch.org/whl/cu124Adım 2: Basit Kullanım Script’i
run_mimo.py adlı dosyayı oluşturun:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# Model kimliği
model_id = "XiaomiMiMo/MiMo-V2-Flash"
# Tokenizer ve modeli yükle
print("Tokenizer yükleniyor...")
tokenizer = AutoTokenizer.from_pretrained(
model_id,
trust_remote_code=True
)
print("Model yükleniyor...")
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True,
load_in_8bit=True, # 8-bit kuantizasyonu etkinleştir
max_memory={0: "15GB"} # GPU bellek sınırı
)
# Metin üretimi
prompt = "Explain the concept of machine learning"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
print("Yanıt üretiliyor...")
outputs = model.generate(
**inputs,
max_new_tokens=200,
temperature=0.7,
do_sample=True
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"\n{response}")Adım 3: Script’i Çalıştırın
python run_mimo.pyYöntem 3: Ollama ile (Deneysel)
Adım 1: Ollama’yı Yükleyin
# macOS/Linux için
curl -fsSL https://ollama.com/install.sh | sh
# Windows: ollama.com üzerinden indirinAdım 2: Özel Modelfile Oluşturun
MiMo-V2-Flash için Modelfile oluşturun:
FROM ./models/MiMo-V2-Flash
# Parametreleri ayarla
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 50
PARAMETER num_ctx 262144Adım 3: Oluştur ve Çalıştır
# Modeli oluştur
ollama create mimo-v2-flash -f Modelfile
# Modeli çalıştır
ollama run mimo-v2-flashYöntem 4: Docker Dağıtımı
Adım 1: Dockerfile Oluşturun
Dockerfile oluşturun:
FROM nvidia/cuda:12.4-devel-ubuntu20.04
# Python ve bağımlılıkları yükle
RUN apt-get update && apt-get install -y \
python3.10 \
python3-pip \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
RUN pip3 install sglang transformers accelerate
# Model ve uygulamayı kopyala
COPY models/MiMo-V2-Flash /app/models/MiMo-V2-Flash
COPY app.py /app/
# Portu aç
EXPOSE 30000
# Sunucuyu başlat
CMD ["python3", "-m", "sglang.launch_server", "--model-path", "/app/models/MiMo-V2-Flash", "--host", "0.0.0.0", "--port", "30000"]Adım 2: İmajı Oluştur ve Çalıştır
# İmajı oluştur
docker build -t mimo-v2-flash .
# Konteyneri çalıştır
docker run --gpus all -p 30000:30000 -v $(pwd)/models:/app/models mimo-v2-flashİleri Düzey Konfigürasyon
Flash Attention’ı Etkinleştirin
Daha iyi performans için Flash Attention kurun:
pip install flash-attn --no-build-isolationSonra model konfigürasyonuna ekleyin:
from sglang import set_default_backend, RuntimeBackend
set_default_backend(RuntimeBackend.CUDA)Bellek Optimizasyonu
Out-of-memory (OOM) hatası alırsanız:
# Kuantizasyon kullan
model = AutoModelForCausalLM.from_pretrained(
model_id,
load_in_4bit=True, # 4-bit kuantizasyon kullanımı
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)Çoklu GPU Kurulumu
Birden fazla GPU varsa:
# Modeli GPU’lara dağıt
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
max_memory={0: "10GB", 1: "10GB", 2: "10GB", 3: "10GB"}
)Performans Optimizasyonu
1. GPU Bellek Kullanımını Ayarlayın
python -m sglang.launch_server \
--gpu-memory-utilization 0.95 # GPU belleğinin %95'ini kullan2. Bağlam Uzunluğunu Optimize Edin
# Daha fazla hız için bağlam uzunluğunu azaltın
--max-model-len 32768 # 256K yerine 32K3. Tensor Paralelliğini Etkinleştirin
# Çıkarım için birden fazla GPU kullanın
--tensor-parallel-size 4Yaygın Sorunların Giderilmesi
Sorun 1: Bellek Yetersizliği (OOM)
Çözüm:
# Gradient checkpointing etkinleştir
model.gradient_checkpointing_enable()
# Ya da daha küçük batch boyutları kullan
batch_size = 1 # Daha büyük yerineSorun 2: CUDA Belleği Yetersiz
Çözüm:
--gpu-memory-utilizationdeğerini 0.8'e düşürün- Kuantizasyonu (8-bit veya 4-bit) etkinleştirin
- Başka GPU yoğun uygulamaları kapatın
Sorun 3: Model Yükleme Hataları
Çözüm:
# Önbelleği temizle ve yeniden indir
huggingface-cli download XiaomiMiMo/MiMo-V2-Flash --local-dir ./models/MiMo-V2-Flash --resume-downloadSorun 4: Yavaş Çıkarım
Çözümler:
- Flash Attention yükleyin:
pip install flash-attn - Çoklu GPU için tensor paralelliği kullanın
- Bağlam uzunluğunu azaltın
- GPU bellek kullanımını artırın
Sorun 5: Import Hataları
Çözüm:
# Bağımlılıkları yeniden yükleyin
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip uninstall sglang
pip install sglangKurulumunuzu Test Etme
Kapsamlı Test Script’i
test_mimo.py oluşturun:
import requests
import json
def test_mimo():
url = "http://localhost:30000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
# Test 1: Basit metin üretimi
data1 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Write a hello world program in Python"}],
"max_tokens": 100
}
# Test 2: Kod üretimi
data2 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Create a REST API with FastAPI"}],
"max_tokens": 200
}
# Test 3: Matematiksel çıkarım
data3 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Solve: What is the derivative of x^2 + 3x + 5?"}],
"max_tokens": 100
}
for i, data in enumerate([data1, data2, data3], 1):
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print(f"Test {i} başarılı!")
print(response.json()["choices"][0]["message"]["content"])
else:
print(f"Test {i} başarısız: {response.status_code}")
if __name__ == "__main__":
test_mimo()Testi çalıştırın:
python test_mimo.pyEn İyi Uygulamalar
- GPU Kullanımını İzleyin:
nvidia-smiile GPU bellek ve sıcaklık takibi yapın - Batch Boyutunu Ayarlayın: Öncelikle 1 ile başlayıp kademeli artırın
- Sanal Ortam Kullanın: Bağımlılıkları venv veya conda ile izole edin
- Düzenli Güncelleme: Sürücüleri ve CUDA toolkit’leri güncel tutun
- Model Yedekleyin: İndirilen model dosyalarının yedeğini alın
Performans Ölçümü
Basit Bir Benchmark Çalıştırın
import time
import torch
def benchmark_model(model, tokenizer, prompt):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
start_time = time.time()
outputs = model.generate(**inputs, max_new_tokens=200)
end_time = time.time()
tokens_generated = len(outputs[0])
tokens_per_second = tokens_generated / (end_time - start_time)
return tokens_per_second
# Benchmark için örnek prompt
prompt = "Write a detailed explanation of quantum computing"
tps = benchmark_model(model, tokenizer, prompt)
print(f"Tokens per second: {tps:.2f}")Sonuç
Xiaomi’nin MiMo-V2-Flash modelini yerelde çalıştırmak, gizlilik ve kontrolü korurken en yeni AI yeteneklerinden faydalanmanın güçlü bir yoludur. Maksimum performans için SGLang’ı tercih edebilir ya da kullanım kolaylığı için Hugging Face Transformers seçeneklerini değerlendirebilirsiniz; bu rehber başlangıç için tüm gerekli bilgileri sağlar.
Önemli Noktalar:
- Optimal performans için SGLang önerilir
- Yeterli GPU belleği sağlanmalıdır (15GB+ VRAM)
- Bellek kısıtlaması varsa kuantizasyon kullanın
- Performans ve hız dengesi için bağlam uzunluğunu deneyin
- GPU kullanımını aşırı ısınmayı önlemek için izleyin
Yerel donanım sınırlarını aşmak veya daha fazla ölçeklendirme için bulut GPU sağlayıcılarını değerlendirebilirsiniz. Öncelikle önerilen SGLang yöntemini deneyin, ardından ihtiyaçlarınıza ve donanımınıza göre diğer framework’leri test edin.