MiniMax 近期宣布推出其最新的语言模型,标志着该公司首次全面开源其技术。这次发布包括两个重要模型:文本模型 MiniMax-Text-01 和多模态模型 MiniMax-VL-01。其中,Lightning Attention 架构的引入,使得模型在处理长文本时,计算复杂度从平方级别降低到线性级别,大幅提升了推理效率。相关资源如下:
MiniMax-Text-01: 语言模型的新纪元
MiniMax 在人工智能领域取得了重大突破,推出了其最新的语言模型——MiniMax-Text-01。该模型拥有令人印象深刻的4560 亿参数,旨在处理大量上下文信息,使其在 AI 领域中成为强有力的竞争者。
1. MiniMax-Text-01 简介
MiniMax-Text-01 是一款先进的语言模型,采用混合架构,结合了 Lightning Attention、Softmax Attention 和Mixture-of-Experts (MoE)技术。这种创新设计使得模型每个 token 可以激活 45.9 亿参数,从而高效处理长文本序列。值得注意的是,该模型能够管理高达100 万 token 的训练上下文,并在推理时处理最多 400 万 token 的上下文。
通过引入先进的并行处理策略,如 线性注意序列并行加(LASP+)和 专家张量并行(ETP),MiniMax-Text-01 在显著减少计算成本的同时提升了性能。该模型在多个学术基准测试中表现出色,巩固了其作为领先模型的地位。
2. 模型架构
MiniMax-Text-01 的架构特点如下:
- 总参数量:4560 亿
- 每个 token 激活参数量:45.9 亿
- 层数:80
- 混合注意机制:每 7 层 Lightning Attention 后跟随一层 Softmax Attention
- 注意力头数量:64
- 每个注意力头维度:128
- 专家混合机制:
- 专家数量:32
- 专家隐藏维度:9216
- Top- 2 路由策略
- 位置编码:对一半注意力头维度应用旋转位置嵌入(RoPE),基频为 10,000,000
- 隐藏层大小:6144
- 词汇表大小:200,064
这种架构使得 MiniMax-Text-01 在需要深度上下文理解和长文本处理的任务中表现出色。
3. 性能评估
在与其他领先模型(如 GPT-4o 和 Claude-3.5-Sonnet)的严格评估中,MiniMax-Text-01 在多个基准测试中表现出色:
核心学术基准
任务 | MiniMax-Text-01 | GPT-4o | Claude-3.5-Sonnet |
---|---|---|---|
MMLU | 88.5 | 85.7 | 88.3 |
SimpleQA | 23.7 | 39.0 | 28.1 |
IFEval (平均) | 89.1 | 84.1 | 90.1 |
长文本基准
MiniMax 在处理极长上下文方面的能力在“针在干草堆测试”中得到了体现:
模型 | 上下文长度 (4k – 1M) |
---|---|
MiniMax-Text-01 | 高达 0.910(1M 时) |
GPT-4o | 高达 0.970(4k 时) |
这些结果突显了 MiniMax 在处理复杂任务时的能力。
4. 快速入门指南
对于希望利用 MiniMax-Text-01 的开发者,这里提供一个快速入门指南,用于加载分词器并生成内容:
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoConfig, QuantoConfig, GenerationConfig
# 加载 HF 配置
hf_config = AutoConfig.from_pretrained("MiniMax-Text-01", trust_remote_code=True)
# 量化配置
quantization_config = QuantoConfig(
weights="int8",
modules_to_not_convert=[
"lm_head",
"embed_tokens",
] + [f"model.layers.{i}.coefficient" for i in range(hf_config.num_hidden_layers)]
+ [f"model.layers.{i}.block_sparse_moe.gate" for i in range(hf_config.num_hidden_layers)]
)
# 设置多 GPU 设备映射
device_map = {
'model.embed_tokens': 'cuda:0',
'model.norm': f'cuda:{world_size - 1}',
'lm_head': f'cuda:{world_size - 1}'
}
# 假设使用多个 GPU
world_size = 8
layers_per_device = hf_config.num_hidden_layers // world_size
for i in range(world_size):
for j in range(layers_per_device):
device_map[f'model.layers.{i * layers_per_device + j}'] = f'cuda:{i}'
# 加载分词器并生成响应
tokenizer = AutoTokenizer.from_pretrained("MiniMax-Text-01")
prompt = "Hello!"
text = tokenizer(prompt, return_tensors="pt").to("cuda")
# 加载模型并生成响应
model = AutoModelForCausalLM.from_pretrained("MiniMax-Text-01", torch_dtype="bfloat16", device_map=device_map)
generated_ids = model.generate(text['input_ids'], max_new_tokens=20)
response = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
print(f"响应: {response}")