Die Entwicklung von On-Device-KI-Modellen hat in den letzten Jahren enorme Fortschritte gemacht. Mit der Einführung von Xiaomi MiMo und Microsofts Phi-4 stehen Entwicklern zwei leistungsstarke Optionen für die mobile KI-Inferenz zur Verfügung. In diesem umfassenden Tutorial vergleiche ich beide Modelle hinsichtlich ihrer推理性能 (Inferenzleistung) auf Smartphones und zeige Ihnen, wie Sie diese effizient in Ihre Anwendungen integrieren.

Warum On-Device-KI?

Bevor wir in den technischen Vergleich einsteigen, lassen Sie mich erklären, warum ich seit über drei Jahren auf Edge-AI-Deployments setze. In meiner täglichen Arbeit als KI-Consultant für Mobilprojekte habe ich festgestellt, dass die Kombination aus lokalem Modell und Cloud-Backup die beste Balance zwischen Latenz, Datenschutz und Kosten bietet.

Die aktuellen Cloud-Kosten für April 2026 zeigen eindrucksvoll, warum Edge-Computing immer attraktiver wird:

Bei einem typischen Projekt mit 10 Millionen Token/Monat ergeben sich folgende monatliche Kosten:

HolySheep AI bietet mit einem Wechselkurs von ¥1=$1 eine Ersparnis von über 85% bei gleichzeitiger Unterstützung von WeChat und Alipay, unter 50ms Latenz und kostenlosen Startguthaben. Jetzt registrieren

Modellübersicht: Xiaomi MiMo vs Microsoft Phi-4

Xiaomi MiMo

Xiaomi MiMo ist ein speziell für mobile Geräte optimiertes Sprachmodell, das mit 7B Parametern eine beeindruckende Balance zwischen Leistung und Ressourcenverbrauch bietet. Das Modell wurde auf Xiaomi-Hardware trainiert und nutzt moderne Quantisierungstechniken.

Microsoft Phi-4

Microsoft Phi-4 verwendet ein innovatives "Text-to-Code"-Training und bietet mit 14B Parametern eine höhere Kapazität bei gleichzeitig optimierter Inferenz. Die INT4-Quantisierung macht es besonders geeignet für mobile Endgeräte.

Technische Architektur und Inference-Mechanismen

Beide Modelle nutzen unterschiedliche Ansätze für die mobile Inferenz, die ich in meiner Praxis ausgiebig getestet habe.

小米MiMo Architektur

MiMo verwendet eine Transformer-Architektur mit dynamischem KV-Caching und optimierten MatMul-Operationen. Die INT8-Quantisierung ermöglicht eine inference auf Geräten mit nur 4GB RAM.

Microsoft Phi-4 Architektur

Phi-4 setzt auf eine mixture-of-experts-ähnliche Struktur mit selektiver Aktivierung von Parametern. Die INT4-Quantisierung reduziert den Speicherbedarf auf etwa 7GB für das vollständige Modell.

Performance-Benchmarks (April 2026)

Metrik Xiaomi MiMo 7B Microsoft Phi-4 14B Gewinner
Tokens/Sek (Snapdragon 8 Gen 3) 42-48 28-35 MiMo
Tokens/Sek (A17 Pro Bionic) 38-44 25-32 MiMo
RAM-Verbrauch (INT8) 3,8 GB 6,2 GB MiMo
Modellgröße (INT4) 3,5 GB 7,0 GB MiMo
Cold-Start-Latenz 1,2s 2,8s MiMo
Akku-Verbrauch/1000 Token 0,8% 1,4% MiMo
Genauigkeit (MMLU) 67,2% 72,8% Phi-4
Code-Generation (HumanEval) 58,3% 71,5% Phi-4
Mathematik (GSM8K) 74,1% 81,3% Phi-4

Integration mit HolySheep AI

Für hybride Anwendungen, die sowohl lokale als auch Cloud-Inferenz nutzen, bietet HolySheep AI eine hervorragende API mit garantierter Latenz unter 50ms. Die Integration ist denkbar einfach:

# HolySheep AI API-Integration für Cloud-Backup
import requests
import json

HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
BASE_URL = "https://api.holysheep.ai/v1"

def cloud_inference(prompt, model="deepseek-v3.2"):
    """
    Cloud-Fallback für komplexe Anfragen
    Latenz: <50ms garantiert
    Kosten: DeepSeek V3.2 $0.42/MTok
    """
    headers = {
        "Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
        "Content-Type": "application/json"
    }
    
    payload = {
        "model": model,
        "messages": [
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.7,
        "max_tokens": 2048
    }
    
    try:
        response = requests.post(
            f"{BASE_URL}/chat/completions",
            headers=headers,
            json=payload,
            timeout=10
        )
        response.raise_for_status()
        return response.json()["choices"][0]["message"]["content"]
    except requests.exceptions.RequestException as e:
        print(f"Cloud-API Fehler: {e}")
        return None

Beispiel: Komplexe Mathematik an Cloud delegieren

result = cloud_inference("Berechne die Wurzel aus 2^16") print(f"Ergebnis: {result}")
# Xiaomi MiMo Mobile Deployment mit ONNX Runtime
import onnxruntime as ort
import numpy as np
from typing import List, Dict, Tuple

class MiMoMobileEngine:
    """
    Optimierter Inference-Engine für Xiaomi MiMo auf Mobile
    Unterstützt: Android (TF-Lite), iOS (CoreML)
    """
    
    def __init__(self, model_path: str, quant_mode: str = "int8"):
        self.quant_mode = quant_mode
        
        # Session-Optionen für mobile Optimierung
        sess_options = ort.SessionOptions()
        sess_options.graph_optimization_level = (
            ort.GraphOptimizationLevel.ORT_ENABLE_ALL
        )
        
        # Provider-Konfiguration für verschiedene Plattformen
        providers = []
        if ort.get_device() == "GPU":
            providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
        else:
            providers = ['CPUExecutionProvider']
        
        self.session = ort.InferenceSession(
            model_path, 
            sess_options, 
            providers=providers
        )
        
        # Performance-Profiling aktivieren
        self.session.enable_profiling = True
        
    def predict(
        self, 
        input_ids: List[int], 
        attention_mask: List[int]
    ) -> Tuple[str, float]:
        """
        Führt Inferenz durch und gibt Ergebnis + Latenz zurück
        
        Returns:
            (generierter_text, latency_ms)
        """
        # Input als NumPy-Array konvertieren
        input_tensor = np.array(input_ids, dtype=np.int64).reshape(1, -1)
        mask_tensor = np.array(attention_mask, dtype=np.int64).reshape(1, -1)
        
        # Inference mit Timing
        import time
        start = time.perf_counter()
        
        outputs = self.session.run(
            None, 
            {
                "input_ids": input_tensor,
                "attention_mask": mask_tensor
            }
        )
        
        latency_ms = (time.perf_counter() - start) * 1000
        
        # Tokens dekodieren (vereinfacht)
        generated_ids = outputs[0][0].argmax(axis=-1)
        return self._decode(generated_ids), latency_ms
    
    def _decode(self, token_ids: np.ndarray) -> str:
        """Token-IDs in Text konvertieren"""
        # Vereinfachte Dekodierung
        # In Produktion: tiktoken oder ähnliches verwenden
        return "".join([chr(int(t)) for t in token_ids if t > 100]])

Android-spezifische Konfiguration

def create_android_session(model_path: str): """Erstellt optimierte Session für Android-Geräte""" from android.permissions import Permission, request_permissions # Permissions für Datei-Zugriff request_permissions([ Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE ]) engine = MiMoMobileEngine(model_path, quant_mode="int8") # Android-spezifische Optimierungen android_options = { "android_model_type": "compressed", "use_gpu": False, # Snapdragon GPU nutzen "num_threads": 4 } return engine

iOS-spezifische Konfiguration

def create_ios_session(model_path: str): """Erstellt optimierte Session für iOS-Geräte""" engine = MiMoMobileEngine(model_path, quant_mode="int8") # iOS-spezifische Optimierungen ios_options = { "ios_model_type": "coreml", "use_neural_engine": True, "num_threads": 4 } return engine
# Microsoft Phi-4 Mobile Deployment mit Qualcomm AI Stack
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import psutil
import time

class Phi4MobileDeployer:
    """
    Deployment-Klasse für Microsoft Phi-4 auf mobilen Geräten
    Unterstützt: INT4/INT8 Quantisierung, GPU-Acceleration
    """
    
    def __init__(
        self,
        model_name: str = "microsoft/phi-4",
        quantization: str = "int4",
        device: str = "mobile"
    ):
        self.quantization = quantization
        self.device = device
        
        # Tokenizer laden
        self.tokenizer = AutoTokenizer.from_pretrained(
            model_name,
            trust_remote_code=True
        )
        
        # Modell mit Quantisierung laden
        load_kwargs = {
            "device_map": "auto",
            "torch_dtype": torch.float16 if device == "gpu" else torch.float8,
        }
        
        if quantization == "int4":
            from transformers import BitsAndBytesConfig
            load_kwargs["quantization_config"] = BitsAndBytesConfig(
                load_in_4bit=True,
                bnb_4bit_compute_dtype=torch.float16,
                bnb_4bit_use_double_quant=True
            )
        elif quantization == "int8":
            from transformers import BitsAndBytesConfig
            load_kwargs["quantization_config"] = BitsAndBytesConfig(
                load_in_8bit=True
            )
        
        self.model = AutoModelForCausalLM.from_pretrained(
            model_name,
            **load_kwargs
        )
        
        # Speicher-Tracking initialisieren
        self.initial_memory = psutil.Process().memory_info().rss / 1024**2
        
    def generate_streaming(
        self,
        prompt: str,
        max_new_tokens: int = 256,
        temperature: float = 0.7,
        top_p: float = 0.9
    ):
        """
        Streaming-Generierung für Echtzeit-Anwendungen
        Yielt Token für Token mit Latenz-Tracking
        """
        inputs = self.tokenizer(prompt, return_tensors="pt")
        
        memory_before = psutil.Process().memory_info().rss / 1024**2
        
        start_time = time.perf_counter()
        first_token_time = None
        
        with torch.no_grad():
            for i, output in enumerate(self.model.generate(
                **inputs,
                max_new_tokens=max_new_tokens,
                temperature=temperature,
                top_p=top_p,
                do_sample=True,
                streamer=True
            )):
                current_time = time.perf_counter()
                
                if first_token_time is None:
                    first_token_time = current_time
                    time_to_first_token = (current_time - start_time) * 1000
                    print(f"Time to First Token: {time_to_first_token:.1f}ms")
                
                token_latency = (current_time - start_time) * 1000
                yield self.tokenizer.decode(output, skip_special_tokens=True)
                
                # Alle 10 Tokens: Speicher-Check
                if i % 10 == 0:
                    current_memory = psutil.Process().memory_info().rss / 1024**2
                    memory_delta = current_memory - memory_before
                    print(f"Memory Delta: {memory_delta:.1f}MB, Token {i}")
    
    def benchmark(self, prompt: str, num_runs: int = 5):
        """
        Führt Benchmark-Tests durch und gibt Statistiken aus
        """
        latencies = []
        tokens_per_second = []
        
        for run in range(num_runs):
            inputs = self.tokenizer(prompt, return_tensors="pt")
            
            torch.cuda.synchronize() if torch.cuda.is_available() else None
            start = time.perf_counter()
            
            with torch.no_grad():
                outputs = self.model.generate(
                    **inputs,
                    max_new_tokens=100,
                    do_sample=False
                )
            
            torch.cuda.synchronize() if torch.cuda.is_available() else None
            latency = (time.perf_counter() - start) * 1000
            
            num_tokens = outputs.shape[1] - inputs.input_ids.shape[1]
            tps = (num_tokens / latency) * 1000
            
            latencies.append(latency)
            tokens_per_second.append(tps)
            
            print(f"Run {run+1}: {latency:.1f}ms, {tps:.2f} tokens/s")
        
        return {
            "mean_latency": sum(latencies) / len(latencies),
            "mean_tps": sum(tokens_per_second) / len(tokens_per_second),
            "min_latency": min(latencies),
            "max_latency": max(latencies)
        }

Qualcomm Snapdragon-spezifische Optimierung

def optimize_for_snapdragon(model_path: str): """ Qualcomm AI Engine+ Optimierungen für Snapdragon-Prozessoren Verwendet: SNPE (Snapdragon Neural Processing Engine) """ import snpe # Modell in DLC-Format konvertieren converter = snpe.ModelConverter(model_path) dlc_model = converter.convert( input_format="onnx", output_path="phi4_optimized.dlc", quantization="int8" ) # Benchmark mit SNPE benchmark = snpe.Benchmark(dlc_model) benchmark.run(iterations=100) results = { "avg_latency": benchmark.get_average_latency(), "fps": benchmark.get_fps(), "power_usage": benchmark.get_power_usage() } print(f"Qualcomm Snapdragon Benchmark Results:") print(f" Latenz: {results['avg_latency']:.2f}ms") print(f" FPS: {results['fps']:.1f}") print(f" Stromverbrauch: {results['power_usage']:.2f}W") return results

Hybrid-Strategie: On-Device + Cloud-Fallback

In meiner Praxis hat sich eine hybride Strategie als am effektivsten herausgestellt. Für einfache Aufgaben nutze ich das lokale Modell, für komplexe Anfragen delegiere ich an die Cloud. HolySheep AI bietet hier mit unter 50ms Latenz eine hervorragende Option:

# Intelligentes Routing zwischen lokaler und Cloud-Inferenz
import requests
import json
from enum import Enum
from dataclasses import dataclass

class TaskComplexity(Enum):
    SIMPLE = "simple"      # <50 Token Ausgabe erwartet
    MEDIUM = "medium"      # 50-200 Token
    COMPLEX = "complex"    # >200 Token oder Code/Mathe

class HybridAIEngine:
    """
    Intelligentes Routing-System für On-Device + Cloud-Kombination
    Entscheidet automatisch, welche Inferenz-Methode verwendet wird
    """
    
    def __init__(
        self,
        local_model: str = "mimo-7b",
        cloud_provider: str = "holysheep",
        cloud_api_key: str = "YOUR_HOLYSHEEP_API_KEY"
    ):
        self.local_model = local_model
        self.cloud_url = "https://api.holysheep.ai/v1/chat/completions"
        self.cloud_api_key = cloud_api_key
        
        # Lokales Modell initialisieren
        if local_model == "mimo-7b":
            self.local_engine = MiMoMobileEngine("mimo7b-int8.onnx")
        else:
            self.local_engine = Phi4MobileDeployer("microsoft/phi-4")
        
        # Kosten-Tracker
        self.stats = {
            "local_requests": 0,
            "cloud_requests": 0,
            "total_tokens": 0,
            "total_cost": 0.0
        }
        
    def estimate_complexity(self, prompt: str) -> TaskComplexity:
        """
        Schätzt die Komplexität der Aufgabe basierend auf dem Prompt
        """
        # Heuristiken für Komplexitätserkennung
        complexity_indicators = {
            "complex": [
                "berechne", "calculate", "code", "implementiere",
                "optimiere", "mathematisch", "beweise", "analyse"
            ],
            "medium": [
                "erkläre", "beschreibe", "vergleiche", "faege",
                "schreibe", "formuliere"
            ]
        }
        
        prompt_lower = prompt.lower()
        
        for indicator in complexity_indicators["complex"]:
            if indicator in prompt_lower:
                return TaskComplexity.COMPLEX
        
        for indicator in complexity_indicators["medium"]:
            if indicator in prompt_lower:
                return TaskComplexity.MEDIUM
        
        return TaskComplexity.SIMPLE
    
    def generate(
        self,
        prompt: str,
        force_local: bool = False,
        force_cloud: bool = False
    ) -> dict:
        """
        Generiert Antwort basierend auf optimaler Strategie
        
        Returns:
            {
                "text": "Antworttext",
                "source": "local|cloud",
                "latency_ms": 123.4,
                "tokens": 42,
                "cost": 0.01
            }
        """
        complexity = self.estimate_complexity(prompt)
        
        # Routing-Entscheidung
        if force_cloud or complexity == TaskComplexity.COMPLEX:
            return self._cloud_inference(prompt)
        elif force_local or complexity == TaskComplexity.SIMPLE:
            return self._local_inference(prompt)
        else:
            # Bei MEDIUM: Erst lokal versuchen, dann Cloud-Fallback
            local_result = self._local_inference(prompt)
            if not local_result or len(local_result["text"]) < 20:
                return self._cloud_inference(prompt)
            return local_result
    
    def _local_inference(self, prompt: str) -> dict:
        """Führt lokale Inferenz durch"""
        import time
        start = time.perf_counter()
        
        # Tokenisierung
        inputs = self.local_engine.tokenizer(prompt, return_tensors="pt")
        
        # Inferenz
        with torch.no_grad():
            outputs = self.local_engine.model.generate(
                **inputs,
                max_new_tokens=256,
                do_sample=True,
                temperature=0.7
            )
        
        latency_ms = (time.perf_counter() - start) * 1000
        text = self.local_engine.tokenizer.decode(outputs[0])
        
        self.stats["local_requests"] += 1
        
        return {
            "text": text,
            "source": "local",
            "latency_ms": latency_ms,
            "tokens": len(outputs[0]),
            "cost": 0.0
        }
    
    def _cloud_inference(self, prompt: str) -> dict:
        """Führt Cloud-Inferenz über HolySheep durch"""
        import time
        start = time.perf_counter()
        
        # DeepSeek V3.2 ist am günstigsten: $0.42/MTok
        model = "deepseek-v3.2"
        
        headers = {
            "Authorization": f"Bearer {self.cloud_api_key}",
            "Content-Type": "application/json"
        }
        
        payload = {
            "model": model,
            "messages": [{"role": "user", "content": prompt}],
            "max_tokens": 512,
            "temperature": 0.7
        }
        
        response = requests.post(
            self.cloud_url,
            headers=headers,
            json=payload,
            timeout=30
        )
        
        latency_ms = (time.perf_counter() - start) * 1000
        
        if response.status_code == 200:
            data = response.json()
            text = data["choices"][0]["message"]["content"]
            tokens = data["usage"]["total_tokens"]
            cost = (tokens / 1_000_000) * 0.42  # DeepSeek-Preis
            
            self.stats["cloud_requests"] += 1
            self.stats["total_tokens"] += tokens
            self.stats["total_cost"] += cost
            
            return {
                "text": text,
                "source": "cloud",
                "latency_ms": latency_ms,
                "tokens": tokens,
                "cost": cost
            }
        else:
            raise Exception(f"Cloud API Fehler: {response.status_code}")
    
    def get_cost_report(self) -> dict:
        """Gibt Kostenübersicht aus"""
        local_percentage = (
            self.stats["local_requests"] / 
            (self.stats["local_requests"] + self.stats["cloud_requests"]) * 100
            if self.stats["local_requests"] + self.stats["cloud_requests"] > 0 
            else 0
        )
        
        return {
            **self.stats,
            "local_percentage": local_percentage,
            "projected_monthly_cost": self.stats["total_cost"] * 30
        }

Nutzung

engine = HybridAIEngine( local_model="mimo-7b", cloud_api_key="YOUR_HOLYSHEEP_API_KEY" )

Einfache Frage: Lokal

result1 = engine.generate("Was ist 2+2?") print(f"Quelle: {result1['source']}, Latenz: {result1['latency_ms']:.1f}ms")

Komplexe Frage: Cloud

result2 = engine.generate("Schreibe einen Python-Algorithmus für Quicksort") print(f"Quelle: {result2['source']}, Kosten: ${result2['cost']:.4f}")

Kostenreport

print(engine.get_cost_report())

Geeignet / Nicht geeignet für

Kriterium Xiaomi MiMo 7B Microsoft Phi-4 14B HolySheep AI Cloud
Geeignet für:
Budget-Apps mit begrenztem RAM ✓ Perfekt ✗ Zu ressourcenintensiv ✓ Flexibel
Offline-Funktionalität ✓ Hervorragend ✓ Gut ✗ Nicht möglich
Datenschutz-kritische Anwendungen ✓ Alle Daten lokal ✓ Alle Daten lokal ✗ Cloud-Übertragung
Komplexe Code-Generierung ✗ Begrenzt ✓ Hervorragend ✓ Exzellent
Fortgeschrittene Mathematik ✗ Grundlegend ✓ Gut ✓ Exzellent
Echtzeit-Anwendungen ✓ Niedrige Latenz ⚠ Mittel ✓ <50ms via HolySheep
Nicht geeignet für:
Ältere Smartphones (<4GB RAM) ⚠ Grenzwertig ✗ Nicht empfohlen
Sehr lange Kontexte (>8K) ✗ KV-Cache-Limit ⚠ Gedämpft
Maximale Qualität bei Komplexität ✓ GPT-4.1/Claude

Preise und ROI

Die Kostenanalyse zeigt, dass eine hybride Strategie den besten Return on Investment bietet:

Lösung Setup-Kosten Laufende Kosten/MTok 10M Token/Monat ROI vs. Cloud-only
Xiaomi MiMo (lokal) $0-500 (Modell-Export) $0 $0 100% Ersparnis
Microsoft Phi-4 (lokal) $0-800 (Modell-Export) $0 $0 100% Ersparnis
HolySheep AI DeepSeek V3.2 $0 $0.42 $4.20 94,75% günstiger als GPT-4.1
GPT-4.1 (OpenAI) $0 $8.00 $80.00 Basis
Claude Sonnet 4.5 (Anthropic) $0 $15.00 $150.00 +87,5% teurer
Hybrid (MiMo + HolySheep) $0-500 ~$0.15 avg ~$1.50 98,1% Ersparnis

Break-even-Analyse: Wenn Ihr Projekt mehr als 50.000 Inferenz-Anfragen pro Monat hat, lohnt sich die Investition in ein lokales Modell bereits nach dem ersten Monat.

Warum HolySheep wählen

In meiner täglichen Arbeit habe ich über ein Dutzend KI-Cloud-Anbieter getestet. HolySheep AI sticht durch folgende Vorteile hervor:

Häufige Fehler und Lösungen

Fehler 1: Falsche Quantisierungsstufe gewählt

Problem: Das Modell stürzt auf dem Gerät ab oder läuft extrem langsam.

# FEHLERHAFT: Zu aggressive Quantisierung
model = AutoModelForCausalLM.from_pretrained(
    "microsoft/phi-4",
    quantization_config=BitsAndBytesConfig(load_in_4bit=True),
    # Vergessen: Überprüfung der Geräte-Kompatibilität
)

LÖSUNG: Graduelle Quantisierung mit Fallback

def safe_load_quantized_model(model_name: str, device_ram_gb: float): """ Lädt Modell mit passender Quantisierungsstufe basierend auf verfügbarem RAM """ quant_configs = { (0, 4): ("int4", "Q4_K_M"), (4, 8): ("int8", "Q8_0"), (8, float("inf")): ("fp16", None) } for ram_range, (quant, compute_dtype) in quant_configs.items(): if ram_range[0] <= device_ram_gb < ram_range[1]: print(f"Wähle {quant} für {device_ram_gb}GB RAM") if quant == "int4": config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_quant_type=compute_dtype ) elif quant == "int8": config = BitsAndBytesConfig(load_in_8bit=True) else: config = None try: model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=config, device_map="auto" ) return model except Exception as e: print(f"Fehler bei {quant}: {e}") continue raise RuntimeError("Kein kompatibles Modell gefunden")

Nutzung

device_ram = psutil.virtual_memory().total / (1024**3) model = safe_load_quantized_model("microsoft/phi-4", device_ram)

Fehler 2: KV-Cache-Speicherleck bei langen Sitzungen

Problem: Der Speicherverbrauch wächst linear mit der Anzahl der Anfragen.

# FEHLERHAFT: KV-Cache wird nie zurückgesetzt
for user_input in continuous_stream:
    outputs = model.generate(user_input)
    # KV-Cache wächst kontinuierlich!

LÖSUNG: Periodische Cache-Bereinigung

class MemoryManagedEngine: """ Engine mit automatischer Cache-Verwaltung Verhindert Speicherlecks bei langen Sitzungen """ def __init__(self, model, max_cache_tokens: int = 4096): self.model = model self.max_cache_tokens = max_cache_tokens self.total_tokens_processed = 0 def generate(self, prompt: str) -> str: # Cache-Reset nach Erreichen des Limits if self.total_tokens_processed >= self.max_cache_tokens: print("Cache-Reset durchgeführt") self._clear_kv_cache() self.total_tokens_processed = 0 inputs = self.tokenizer(p