ruGPT-3 XL für moderne Frameworks konvertieren und wiederherstellen
Entwickler hatten Schwierigkeiten, das veraltete Sprachmodell ai-forever/rugpt3xl (1,3 Milliarden Parameter) aus dem Jahr 2021 zu nutzen. Ursprünglich als GPT-2-Variante von Grund auf auf einer russischen Korpus trainiert, ist es im Megatron-LM-Checkpoint-Format gespeichert und erfordert PyTorch 1.7 und transformers 3.5. Die Umwandlung in Hugging Face-Format ermöglicht die Kompatibilität mit modernen Inferenz- und Fine-Tuning-Tools.
Der Prozess umfasst das Extrahieren der Gewichte aus mp_rank_00_model_states.pt, deren Zuordnung zur GPT2Model-Struktur und die Erstellung benutzerdefinierter Klassen für transformers.
Gewichtsstruktur: Megatron-LM vs. Hugging Face
Die ursprünglichen Gewichte verwenden eine verschmolzene QKV-Projektion [6144, 2048], die in separate Q-, K- und V-Matrizen der Größe [2048, 2048] aufgeteilt werden muss. Vollständige Zuordnung:
| Megatron-LM | Hugging Face |
|-------------|--------------|
| word_embeddings.weight | model.embed_tokens.weight |
| position_embeddings.weight | model.embed_positions.weight |
| transformer.layers.{i}.input_layernorm. | model.layers.{i}.input_layernorm. |
| transformer.layers.{i}.attention.query_key_value.weight | model.layers.{i}.self_attn.{q,k,v}_proj.weight |
| transformer.layers.{i}.attention.query_key_value.bias | model.layers.{i}.self_attn.{q,k,v}_proj.bias |
| transformer.layers.{i}.attention.dense. | model.layers.{i}.self_attn.o_proj. |
| transformer.layers.{i}.post_attention_layernorm. | model.layers.{i}.post_attention_layernorm. |
| transformer.layers.{i}.mlp.dense_h_to_4h. | model.layers.{i}.mlp.up_proj. |
| transformer.layers.{i}.mlp.dense_4h_to_h. | model.layers.{i}.mlp.down_proj. |
| transformer.final_layernorm. | model.norm. |
| - | lm_head.weight (Kopie von embed_tokens) |
Das Skript convert.py wandelt den Checkpoint in safetensors um, die mit transformers kompatibel sind.
Benutzerdefinierte Modellklassen
Neue Klassen wurden ohne Abhängigkeiten von Megatron-LM oder DeepSpeed erstellt:
- RuGPT3XLConfig: erbt von
PretrainedConfigmit Parametern (vocab_size=50264, hidden_size=2048, num_layers=24). - RuGPT3XLAttention: Multi-Head-Attention mit separaten Q/K/V und
DynamicCache. - RuGPT3XMLP: MLP-Block (up_proj → GELU → down_proj).
- RuGPT3XLDecoderLayer: Decoder-Schicht (pre-LN → Attention → post-LN → MLP).
- RuGPT3XLModel: Embeddings + 24 Schichten + finale LN.
- RuGPT3XLForCausalLM: Enthält lm_head.
Wichtige Verbesserungen:
- Standardisierte
forward()-Funktion für SFTTrainer/LoRA. - KV-Cache über
DynamicCache. - Gradient Checkpointing.
- Läuft auf CPU/GPU mit
device_map="auto".
Das Modell ist nun unter evilfreelancer/ruGPT3XL auf Hugging Face verfügbar.
Testergebnisse
Generierung auf RTX 4090 (float16):
- Durchschnittliche Geschwindigkeit: 66,7 Tokens/Sekunde (batch_size=1).
- Behält Kontext bei langen Prompts bei.
- Generiert präzise Texte (Rezepte, historische Erzählungen).
MERA-Benchmark (Gesamtscore: 0,198):
- PARus (Alltagswissen): 0,500
- ruHateSpeech: 0,558
- BPS (Code/Mathematik): 0,528
- RWSD (Schlussfolgern): 0,488
- ruTiE (Dialoge): 0,502
- ruMMLU: 0,252
Mathematik- und Code-Leistung liegt nahe am Baseline – wie erwartet für ein Basismodell ohne Anweisungstuning.
Konvertierung in GGUF für llama.cpp
Nach der HF-Format-Konvertierung wurde das Skript convert_hf_to_gguf.py für ruGPT-3 XL angepasst. Das Modell läuft nun in llama.cpp ohne Megatron-Abhängigkeiten und unterstützt KV-Cache sowie moderne Inferenz.
Dies ermöglicht das Fine-Tuning auf eigenen Datensätzen via LoRA oder SFT, die Integration in Pipelines und Tests auf Edge-Geräten.
Schlüsselerkenntnisse
- Kompatibilität: Funktioniert mit transformers ≥4.x, keine veralteten Stack-Abhängigkeiten erforderlich.
- Leistung: 66,7 t/s auf RTX 4090, KV-Cache-Unterstützung für Generierung.
- Trainierbarkeit: Bereit für LoRA/SFTTrainer mit Gradient Checkpointing.
- Benchmarks: Stark bei Alltagswissen und Hassrede-Erkennung (>0,5), schwächer bei Mathematik und Code.
- Formate: HF + GGUF für breite Ökosystemunterstützung.
— Editorial Team
Noch keine Kommentare.