ruGPT-3 XL模型迁移与恢复:适配现代框架
开发者在运行2021年发布的旧版语言模型ai-forever/rugpt3xl(13亿参数)时面临诸多挑战。该模型最初基于俄语语料库从零开始训练,是GPT-2的变体,以Megatron-LM检查点格式存储,依赖PyTorch 1.7和transformers 3.5。将其转换为Hugging Face格式后,即可兼容现代推理与微调工具。
此过程涉及从mp_rank_00_model_states.pt中提取权重,将其映射到GPT2Model结构,并创建适用于transformers的自定义类。
权重结构对比:Megatron-LM vs Hugging Face
原始权重采用融合的QKV投影 [6144, 2048],需拆分为三个独立的Q、K、V矩阵,每块大小为 [2048, 2048]。完整映射如下:
| Megatron-LM | HuggingFace |
|-------------|-------------|
| 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(复制自embed_tokens) |
convert.py脚本可将检查点转换为支持transformers的safetensors格式。
自定义模型类
构建的新类不依赖Megatron-LM或DeepSpeed:
- RuGPT3XLConfig:继承
PretrainedConfig,包含参数(vocab_size=50264,hidden_size=2048,num_layers=24)。 - RuGPT3XLAttention:多头注意力机制,支持独立的Q/K/V及
DynamicCache缓存。 - RuGPT3XMLP:MLP模块(up_proj → GELU → down_proj)。
- RuGPT3XLDecoderLayer:解码器层(预归一化 → 注意力 → 后归一化 → MLP)。
- RuGPT3XLModel:嵌入层 + 24层 + 最终归一化。
- RuGPT3XLForCausalLM:包含lm_head。
关键优化:
- 标准
forward()接口,适配SFTTrainer/LoRA。 - 使用
DynamicCache实现KV缓存。 - 支持梯度检查点。
- 可通过
device_map="auto"在CPU/GPU上运行。
该模型现已在Hugging Face平台发布,地址为evilfreelancer/ruGPT3XL。
测试结果
在RTX 4090(float16)上的生成表现:
- 平均速度:66.7 tokens/秒(batch_size=1)
- 长提示下仍能保持上下文连贯性
- 生成文本准确,适用于菜谱、历史叙述等场景
MERA基准测试(总分:0.198):
- PARus(常识理解):0.500
- ruHateSpeech(仇恨言论检测):0.558
- BPS(代码/数学):0.528
- RWSD(推理能力):0.488
- ruTiE(对话生成):0.502
- ruMMLU(综合知识):0.252
数学与代码性能接近基线——符合未经过指令微调的基础模型预期。
转换为GGUF格式以适配llama.cpp
完成HF格式转换后,convert_hf_to_gguf.py脚本已适配ruGPT-3 XL。模型可在llama.cpp中运行,无需依赖Megatron,支持KV缓存与现代推理功能。
这使得用户可通过LoRA或SFT对自定义数据集进行微调,集成至自动化流程,并在边缘设备上进行测试。
核心要点
- 兼容性:支持transformers ≥4.x,无需遗留技术栈。
- 性能:RTX 4090上达66.7 t/s,支持KV缓存生成。
- 可训练性:已准备好用于LoRA/SFTTrainer,支持梯度检查点。
- 基准表现:常识与仇恨言论识别能力强(>0.5),数学与代码能力较弱。
- 格式支持:同时提供HF与GGUF格式,覆盖广泛生态。
— Editorial Team
暂无评论。