For the complete documentation index, see llms.txt. This page is also available as Markdown.

In GGUF speichern

Modelle für GGUF auf 16 Bit speichern, damit Sie es verwenden können für Unsloth Studio, Ollama, llama.cpp und mehr!

Um als GGUF zu speichern, verwenden Sie Folgendes, um lokal zu speichern:

model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")

Um an den Hugging-Face-Hub zu übertragen:

model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")

Alle unterstützten Quantisierungsoptionen für quantization_method sind unten aufgeführt:

# https://github.com/ggml-org/llama.cpp/blob/master/examples/quantize/quantize.cpp#L19
ALLOWED_QUANTS = \
{
    "not_quantized"  : "Empfohlen. Schnelle Konvertierung. Langsame Inferenz, große Dateien.",
    "fast_quantized" : "Empfohlen. Schnelle Konvertierung. OK-Inferenz, OK-Dateigröße.",
    "quantized"      : "Empfohlen. Langsame Konvertierung. Schnelle Inferenz, kleine Dateien.",
    "f32"     : "Nicht empfohlen. Behält 100 % Genauigkeit bei, ist aber extrem langsam und speicherhungrig.",
    "f16"     : "Schnellste Konvertierung + behält 100 % Genauigkeit bei. Langsam und speicherhungrig.",
    "q8_0"    : "Schnelle Konvertierung. Hoher Ressourcenverbrauch, aber im Allgemeinen akzeptabel.",
    "q4_k_m"  : "Empfohlen. Verwendet Q6_K für die Hälfte der attention.wv- und feed_forward.w2-Tensoren, sonst Q4_K",
    "q5_k_m"  : "Empfohlen. Verwendet Q6_K für die Hälfte der attention.wv- und feed_forward.w2-Tensoren, sonst Q5_K",
    "q2_k"    : "Verwendet Q4_K für die attention.wv- und feed_forward.w2-Tensoren, Q2_K für die anderen Tensoren.",
    "q3_k_l"  : "Verwendet Q5_K für die attention.wv-, attention.wo- und feed_forward.w2-Tensoren, sonst Q3_K",
    "q3_k_m"  : "Verwendet Q4_K für die attention.wv-, attention.wo- und feed_forward.w2-Tensoren, sonst Q3_K",
    "q3_k_s"  : "Verwendet Q3_K für alle Tensoren",
    "q4_0"    : "Ursprüngliche Quantisierungsmethode, 4 Bit.",
    "q4_1"    : "Höhere Genauigkeit als q4_0, aber nicht so hoch wie q5_0. Hat jedoch schnellere Inferenz als q5-Modelle.",
    "q4_k_s"  : "Verwendet Q4_K für alle Tensoren",
    "q4_k"    : "Alias für q4_k_m",
    "q5_k"    : "Alias für q5_k_m",
    "q5_0"    : "Höhere Genauigkeit, höherer Ressourcenverbrauch und langsamere Inferenz.",
    "q5_1"    : "Noch höhere Genauigkeit, Ressourcenverbrauch und langsamere Inferenz.",
    "q5_k_s"  : "Verwendet Q5_K für alle Tensoren",
    "q6_k"    : "Verwendet Q8_K für alle Tensoren",
    "iq2_xxs" : "2,06 bpw-Quantisierung",
    "iq2_xs"  : "2,31 bpw-Quantisierung",
    "iq3_xxs" : "3,06 bpw-Quantisierung",
    "q3_k_xs" : "3-Bit-Quantisierung in extra klein",
}

Die Ausführung in Unsloth funktioniert gut, aber nach dem Export und der Ausführung auf anderen Plattformen sind die Ergebnisse schlecht

Es kann vorkommen, dass Ihr Modell in Unsloth ausgeführt wird und gute Ergebnisse liefert, aber wenn Sie es auf einer anderen Plattform wie Ollama oder vLLM verwenden, sind die Ergebnisse schlecht oder Sie erhalten Kauderwelsch, endlose/unendliche Generierungen oder wiederholte Ausgaben.

  • Die häufigste Ursache für diesen Fehler ist die Verwendung einer falschen Chat-Vorlage. Es ist wichtig, dieselbe Chat-Vorlage zu verwenden, die beim Training des Modells in Unsloth genutzt wurde, und später auch dann, wenn Sie es in einem anderen Framework wie llama.cpp oder Ollama ausführen. Beim Inferenzieren aus einem gespeicherten Modell ist es entscheidend, die richtige Vorlage anzuwenden.

  • Sie müssen das richtige eos-Tokenverwenden. Andernfalls erhalten Sie bei längeren Generierungen möglicherweise Kauderwelsch.

  • Es könnte auch daran liegen, dass Ihre Inferenz-Engine ein unnötiges "Start-of-Sequence"-Token hinzufügt (oder umgekehrt eines fehlt) – stellen Sie also sicher, dass Sie beide Hypothesen überprüfen!

  • Verwenden Sie unsere Konversations-Notebooks, um die Chat-Vorlage zu erzwingen – das behebt die meisten Probleme.

Speichern nach GGUF / vLLM 16 Bit stürzt ab

Sie können versuchen, die maximale GPU-Nutzung während des Speicherns zu reduzieren, indem Sie maximum_memory_usage.

Die Voreinstellung ist model.save_pretrained(..., maximum_memory_usage = 0.75). Reduzieren Sie es beispielsweise auf 0,5, um 50 % des GPU-Spitzen-speichers oder weniger zu nutzen. Dies kann OOM-Abstürze beim Speichern reduzieren.

Wie speichere ich manuell nach GGUF?

Speichern Sie zuerst Ihr Modell über 16 Bit mit:

Kompilieren Sie llama.cpp wie unten aus dem Quellcode:

Speichern Sie dann das Modell als F16:

Zuletzt aktualisiert

War das hilfreich?