项目简介
PowerMoE-3b 是一个名为 PowerMoE 的广义混合专家模型(sMoE),其特点是拥有 30 亿个参数。该模型采用了 Power 学习率调度器进行训练。与传统的密集模型相比,PowerMoE-3b 有着更优秀的表现,特别是在自然语言多选、代码生成和数学推理等基准测试中的表现尤为显著。
模型特点
PowerMoE-3b 在处理每个标记时会稀疏激活约 8 亿个参数。值得注意的是,模型结合了开源和专有数据集进行训练,从而提升了模型的泛化能力和准确性。在与参数激活数为其两倍的密集模型的对比中,PowerMoE-3b 始终呈现出更为优异的性能。
模型表现
在以下数据集上的具体评估结果如下:
任务:文本生成
- 数据集:ARC(lm-eval-harness)
- 准确率:65.0
- 标准化准确率:58.1、71.5、41.0、79.1、65.0
- 数据集:humaneval(bigcode-eval)
- 通过率@1:20.1、32.4
这些评估指标显示出 PowerMoE-3b 在不同任务场景中的多样化能力。
使用说明
要使用 PowerMoE-3b 模型,用户需要安装 Hugging Face transformers 库的最新源码版本。以下是一个简单的使用示例:
示例代码
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # 或 "cpu"
model_path = "ibm/PowerMoE-3b"
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 若在 CPU 上运行,请移除 device_map
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
# 可自定义输入文字
prompt = "创建一个代码来寻找列表中最大值。"
# 对文本进行标记化
input_tokens = tokenizer(prompt, return_tensors="pt")
# 将标记化输入转移至设备
for i in input_tokens:
input_tokens[i] = input_tokens[i].to(device)
# 生成输出标记
output = model.generate(**input_tokens, max_new_tokens=100)
# 解码输出标记为文本
output = tokenizer.batch_decode(output)
# 对批量输出进行循环打印,本示例中批量大小为 1
for i in output:
print(i)
通过以上代码示例,可以有效地生成和理解 PowerMoE-3b 模型在文本生成任务中的应用方式。使用该模型,用户可以在各类自然语言处理任务中获得优异的结果,提升工作效率。