[!Important]
📊 性能
与其他模型的比较
- 所有数据均来自 OpenCompass
不同评估工具包生成的性能可能会有所不同,因为提示语、设置和实现细节存在差异。
数据集 | 模式 | Mistral-7B-v0.1 | Mixtral-8x7B(MoE) | Llama2-70B | DeepSeek-67B-Base | Qwen-72B |
---|---|---|---|---|---|---|
活跃参数 | - | 7B | 12B | 70B | 67B | 72B |
MMLU | PPL | 64.1 | 71.3 | 69.7 | 71.9 | 77.3 |
BIG-Bench-Hard | GEN | 56.7 | 67.1 | 64.9 | 71.7 | 63.7 |
GSM-8K | GEN | 47.5 | 65.7 | 63.4 | 66.5 | 77.6 |
MATH | GEN | 11.3 | 22.7 | 12.0 | 15.9 | 35.1 |
HumanEval | GEN | 27.4 | 32.3 | 26.2 | 40.9 | 33.5 |
MBPP | GEN | 38.6 | 47.8 | 39.6 | 55.2 | 51.6 |
ARC-c | PPL | 74.2 | 85.1 | 78.3 | 86.8 | 92.2 |
ARC-e | PPL | 83.6 | 91.4 | 85.9 | 93.7 | 96.8 |
CommonSenseQA | PPL | 67.4 | 70.4 | 78.3 | 70.7 | 73.9 |
NaturalQuestion | GEN | 24.6 | 29.4 | 34.2 | 29.9 | 27.1 |
TrivialQA | GEN | 56.5 | 66.1 | 70.7 | 67.4 | 60.1 |
HellaSwag | PPL | 78.9 | 82.0 | 82.3 | 82.3 | 85.4 |
PIQA | PPL | 81.6 | 82.9 | 82.5 | 82.6 | 85.2 |
SIQA | GEN | 60.2 | 64.3 | 64.8 | 62.6 | 78.2 |
性能 Mixtral-8x7b
dataset version metric mode mixtral-8x7b-32k
-------------------------- --------- ------------- ------ ------------------
mmlu - naive_average ppl 71.34
ARC-c 2ef631 accuracy ppl 85.08
ARC-e 2ef631 accuracy ppl 91.36
BoolQ 314797 accuracy ppl 86.27
commonsense_qa 5545e2 accuracy ppl 70.43
triviaqa 2121ce score gen 66.05
nq 2121ce score gen 29.36
openbookqa_fact 6aac9e accuracy ppl 85.40
AX_b 6db806 accuracy ppl 48.28
AX_g 66caf3 accuracy ppl 48.60
hellaswag a6e128 accuracy ppl 82.01
piqa 0cfff2 accuracy ppl 82.86
siqa e8d8c5 accuracy ppl 64.28
math 265cce accuracy gen 22.74
gsm8k 1d7fe4 accuracy gen 65.66
openai_humaneval a82cae humaneval_pass@1 gen 32.32
mbpp 1e1056 score gen 47.80
bbh - naive_average gen 67.14
✨ 资源
博客
论文
标题 | 出版地 | 日期 | 代码 | 演示 |
---|---|---|---|---|
专家混合模型与指令调优的结合:大语言模型的制胜组合 | Arxiv | 23.05 | ||
MegaBlocks: 用专家混合模型实现高效的稀疏训练 | Arxiv | 22.11 | megablocks | |
ST-MoE: 设计稳定且可迁移的稀疏专家模型 | Arxiv | 22.02 | ||
Switch Transformers: 使用简单高效的稀疏性扩展到万亿参数模型 | Arxiv | 21.01 | ||
GLaM: 使用专家混合模型高效扩展语言模型 | ICML 2022 | 21.12 | ||
GShard: 使用条件计算和自动分片扩展巨型模型 | Arxiv | 20.06 | ||
在深度专家混合模型中学习因子化的表示 | Arxiv | 13.12 | ||
FastMoE: 一个快速的专家混合模型训练系统 | Arxiv | 21.03 | FastMoE | |
FasterMoE: 大规模动态预训练模型训练的建模和优化 | ACM SIGPLAN PPoPP 2022 | 22.03 | FasterMoE | |
SmartMoE: 通过结合离线和在线并行化高效训练稀疏激活模型 | USENIX ATC 2023 | 22.03 | SmartMoE | |
适应性局部专家混合模型 | Neural Computation | 1991 |
评估
- 评估工具包: OpenCompass
训练
- Megablocks: https://github.com/stanford-futuredata/megablocks
- FairSeq: https://github.com/facebookresearch/fairseq/tree/main/examples/moe_lm
- OpenMoE: https://github.com/XueFuzhao/OpenMoE
- ColossalAI MoE: https://github.com/hpcaitech/ColossalAI/tree/main/examples/language/openmoe
- FastMoE(FasterMoE): https://github.com/laekov/FastMoE
- SmartMoE: https://github.com/zms1999/SmartMoE
微调
- 来自 XTuner 的全参数或 QLoRA 微调脚本
- 来自 DiscoResearch 的微调 Mixtral-8x7B: DiscoLM-mixtral-8x7b-v2
部署
📖 模型架构
Mixtral-8x7B-32K MoE 模型主要由 32 个相同的 MoEtransformer 块组成。MoEtransformer 块与普通 transformer 块的主要区别在于 FFN 层被替换为 MoE FFN 层。在 MoE FFN 层中,张量首先通过一个门控层计算每个专家的得分,然后从 8 个专家中根据专家得分选择前 k 个专家。张量通过前 k 个专家的输出聚合,从而获得 MoE FFN 层的最终输出。每个专家由 3 个线性层组成。值得注意的是,Mixtral MoE 的所有归一化层也使用 RMSNorm,与 LLama 相同。在注意力层中,Mixtral MoE 中的 QKV 矩阵具有 (4096,4096) 的 Q 矩阵形状,K 和 V 矩阵形状为 (4096,1024)。
我们绘制了以下架构图:
📂 模型权重
Hugging Face 格式
原始格式
你可以通过磁力链或 Hugging Face 下载检查点
通过 HF 下载
如果你无法访问 Hugging Face,请尝试 hf-mirror
# 下载 Hugging Face
git lfs install
git clone https://huggingface.co/someone13574/mixtral-8x7b-32kseqlen
# 合并文件(仅用于 HF)
cd mixtral-8x7b-32kseqlen/
# 合并检查点
cat consolidated.00.pth-split0 consolidated.00.pth-split1 consolidated.00.pth-split2 consolidated.00.pth-split3 consolidated.00.pth-split4 consolidated.00.pth-split5 consolidated.00.pth-split6 consolidated.00.pth-split7 consolidated.00.pth-split8 consolidated.00.pth-split9 consolidated.00.pth-split10 > consolidated.00.pth
通过磁力链下载
请使用此链接下载原始文件
magnet:?xt=urn:btih:5546272da9065eddeb6fcd7ffddeef5b75be79a7&dn=mixtral-8x7b-32kseqlen&tr=udp%3A%2F%http://2Fopentracker.i2p.rocks%3A6969%2Fannounce&tr=http%3A%2F%http://2Ftracker.openbittorrent.com%3A80%2Fannounce
MD5 校验
请检查 MD5 确保文件完整。
md5sum consolidated.00.pth
md5sum tokenizer.model
# 一旦验证完毕,你可以删除拆分的文件。
rm consolidated.00.pth-split*
官方 MD5
╓────────────────────────────────────────────────────────────────────────────╖
║ ║
║ ·· md5sum ·· ║
║ ║
║ 1faa9bc9b20fcfe81fcd4eb7166a79e6 consolidated.00.pth ║
║ 37974873eb68a7ab30c4912fc36264ae tokenizer.model ║
╙────────────────────────────────────────────────────────────────────────────╜
🔨 安装
conda create --name mixtralkit python=3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y
conda activate mixtralkit
git clone https://github.com/open-compass/MixtralKit
cd MixtralKit/
pip install -r requirements.txt
pip install -e .
ln -s path/to/checkpoints_folder/ ckpts
🚀 推理
文本补全
python tools/example.py -m ./ckpts -t ckpts/tokenizer.model --num-gpus 2
预期结果:
==============================Example START==============================
[Prompt]:
Who are you?
[Response]:
I am a designer and theorist; a lecturer at the University of Malta and a partner in the firm Barbagallo and Baressi Design, which won the prestig
ious Compasso d’Oro award in 2004. I was educated in industrial and interior design in the United States
==============================Example END==============================
==============================Example START==============================
[Prompt]:
1 + 1 -> 3
2 + 2 -> 5
3 + 3 -> 7
4 + 4 ->
[Response]:
9
5 + 5 -> 11
6 + 6 -> 13
#include <iostream>
using namespace std;
int addNumbers(int x, int y)
{
return x + y;
}
int main()
{
==============================Example END==============================
🏗️ 评估
步骤1:设置 OpenCompass
- 克隆并安装 OpenCompass
# 假设你已经创建了名为 mixtralkit 的 conda 环境
conda activate mixtralkit
git clone https://github.com/open-compass/opencompass opencompass
cd opencompass
pip install -e .
- 准备评估数据集
# 下载数据集到 data/ 文件夹
wget https://github.com/open-compass/opencompass/releases/download/0.1.8.rc1/OpenCompassData-core-20231110.zip
unzip OpenCompassData-core-20231110.zip
如果你需要评估 humaneval,请查看 安装指南 获取更多信息
步骤2:准备评估配置和权重
cd opencompass/
# 将示例配置链接到 opencompass
ln -s path/to/MixtralKit/playground playground
# 将模型权重链接到 opencompass
mkdir -p ./models/mixtral/
ln -s path/to/checkpoints_folder/ ./models/mixtral/mixtral-8x7b-32kseqlen
目前你应该有如下文件结构:
opencompass/
├── configs
│ ├── .....
│ └── .....
├── models
│ └── mixtral
│ └── mixtral-8x7b-32kseqlen
├── data/
├── playground
│ └── eval_mixtral.py
│── ......
步骤3:运行评估实验
HF_EVALUATE_OFFLINE=1 HF_DATASETS_OFFLINE=1 TRANSFORMERS_OFFLINE=1 python run.py playground/eval_mixtral.py
🤝 致谢
🖊️ 引用
@misc{2023opencompass,
title={OpenCompass: A Universal Evaluation Platform for Foundation Models},
author={OpenCompass Contributors},
howpublished = {\url{https://github.com/open-compass/opencompass}},
year={2023}
}