欢迎来到Mixtral – Hugging Face上的一群卓越专家们的最新创作

Mixtral - Hugging Face专家团队的最新创意,热烈欢迎您的加入

Mixtral 8x7b是今天Mistral发布的一种令人兴奋的大型语言模型,它在开放访问模型方面达到了全新的最先进水平,并在许多基准测试中超越了GPT-3.5。我们非常高兴能够在Hugging Face生态系统中全面融合Mixtral 🔥!

在今天发布的功能和整合中,我们有:

目录

什么是Mixtral 8x7b?

Mixtral与Mistral 7B具有相似的架构,但带有一个变化:实际上它是8个“专家”模型的结合体,这得益于一种称为专家混合(MoE)的技术。对于transformers模型,它的工作方式是将一些前馈层替换为稀疏的MoE层。MoE层包含一个路由网络,以高效地选择哪些专家处理哪些令牌。对于Mixtral而言,每个时间步选取两个专家,使该模型能够以12B参数密集模型的速度进行解码,尽管它包含了4倍的有效参数数量!

有关MoE的更多详情,请参阅我们附带的博客文章:hf.co/blog/moe

Mixtral发布-简略版:

  • 发布基础版和Instruct版
  • 支持32k令牌的上下文长度。
  • 在大多数基准测试中,能够超越Llama 2 70B并与GPT3.5相匹配或超过
  • 能够使用英语、法语、德语、西班牙语和意大利语。
  • 在编码方面表现良好,HumanEval得分为40.2%
  • 商业许可证为Apache 2.0

那么Mixtral模型有多好呢?以下是该模型的基本概述及其在LLM排行榜上与其他开放模型的表现对比(得分越高越好):

对于指导和聊天模型,评估MT-Bench或AlpacaEval等基准更好。下面是Mixtral指导模型与顶级封闭和开放接入模型的表现对比(得分越高越好):

令人印象深刻的是,Mixtral指导在MT-Bench上超过了所有其他开放接入模型,并且是第一个达到与GPT-3.5可比较性能的模型!

关于命名

Mixtral MoE被称为,但它不具有56B参数。在发布后不久,我们发现有些人误解为该模型的行为类似于具有每个7B参数的8个模型的集合,但这不是MoE模型的工作原理。只有模型的某些层(前馈块)被复制;其余的参数与7B模型相同。总参数数量不是56B,而是约45B。一个更好的名字可能是,以更好地传达体系结构。有关MoE的更多详细信息,请参阅我们的“专家混合解释”文章。

提示格式

基本模型没有提示格式。与其他基本模型一样,它可以用于继续输入序列并生成合理的延续,或者用于零样本/少样本推理。它还是对自己的用例进行微调的绝佳基础。指导模型具有非常简单的对话结构。

<s>[INST]用户指令1[/INST]模型回答1</s>[INST]用户指令2[/INST]

为了有效使用,必须精确复制此格式。稍后我们将展示如何使用中提供的聊天模板轻松重现指导提示。

我们不了解的内容

与前一个Mistral 7B版本一样,关于这一新系列模型有一些未知问题。特别是,我们对用于预训练的数据集的大小、组成或其如何进行预处理没有任何信息。

同样,对于Mixtral指导模型,没有分享有关微调数据集或与SFT和DPO相关的超参数的详细信息。

演示

您可以在Hugging Face Chat上与Mixtral指导模型进行聊天!请在此处查看:https://huggingface.co/chat/?model=mistralai/Mixtral-8x7B-Instruct-v0.1

推理

我们提供两种主要方法来运行Mixtral模型的推理:

  • 通过🤗Transformers的<pipeline() function。
  • 通过文本生成推理,支持高级功能,如连续批处理、张量并行等,可实现快速结果。

对于每种方法,可以以半精度(float16)或带有量化权重的方式运行模型。由于Mixtral模型的大小大致相当于45B参数密集模型,我们可以根据以下方式估算所需的最小VRAM量:

使用🤗 Transformers

从transformers 4.36版本开始,您可以使用 Mixtral 并利用 Hugging Face 生态系统中的所有工具,如:

  • 训练和推断的脚本和示例
  • 安全的文件格式(safetensors
  • 与工具集成,如 bitsandbytes(4位量化)、PEFT(参数高效调整)和 Flash Attention 2
  • 用于运行模型生成的实用程序和辅助工具
  • 导出模型部署的机制

确保使用最新的transformers版本:

pip install -U "transformers==4.36.0" --upgrade

在下面的代码片段中,我们展示了如何使用🤗 Transformers 和 4位量化来进行推断。由于模型的大小较大,您需要一个至少有 30 GB RAM 的显卡来运行。这包括 A100(80或40GB 版本)或 A6000(48 GB)等显卡。

from transformers import AutoTokenizerimport transformersimport torchmodel = "mistralai/Mixtral-8x7B-Instruct-v0.1"tokenizer = AutoTokenizer.from_pretrained(model)pipeline = transformers.pipeline(    "text-generation",    model=model,    model_kwargs={"torch_dtype": torch.float16, "load_in_4bit": True},)messages = [{"role": "user", "content": "在不超过 100 个字的情况下解释什么是专家混合模型。"}]prompt = pipeline.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)outputs = pipeline(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)print(outputs[0]["generated_text"])

< s >[INST] 在不超过 100 个字的情况下解释什么是专家混合模型。[/INST] 专家混合模型是一种集成学习方法,它将多个模型或“专家”组合在一起,以做出更准确的预测。每个专家都专注于数据的不同子集,并通过一个门控网络确定适合给定输入的专家。这种方法使模型能够适应数据中的复杂非线性关系,并提高整体性能。

使用文本生成推断

文本生成推断 是 Hugging Face 开发的可投入生产的推断容器,可方便地部署大型语言模型。它具有连续批处理、流式分词、快速多 GPU 推断的张量并行和可投入生产的日志记录和跟踪等功能。

您可以使用 Hugging Face 的推断端点部署 Mixtral,该端点使用 Text Generation Inference 作为后端。要部署 Mixtral 模型,请转到模型页面,然后单击“部署 -> 推断端点”小部件。

注意:您可能需要通过电子邮件请求配额升级,以访问 A100s,请发送请求至

您可以在我们的博客中了解更多有关使用 Hugging Face 推断端点部署 LLMs的信息。该博客包括有关支持的超参数以及如何使用 Python 和 JavaScript 流式传输响应的信息。

您还可以使用仿真器在本地使用2个A100(80GB)运行文本生成推理,具体操作如下:

docker run --gpus all --shm-size 1g -p 3000:80 -v /data:/data ghcr.io/huggingface/text-generation-inference:1.3.0 \    --model-id mistralai/Mixtral-8x7B-Instruct-v0.1 \    --num-shard 2 \    --max-batch-total-tokens 1024000 \    --max-total-tokens 32000

使用🤗 TRL进行微调

训练语言模型(LLMs)在技术和计算上是具有挑战性的。在本部分中,我们将介绍Hugging Face生态系统中用于在单个A100 GPU上高效训练Mixtral的工具。

下面是一个在OpenAssistant的聊天数据集上进行Mixtral微调的示例命令。为了节省内存,我们使用了4位量化和QLoRA,以针对注意力块中的所有线性层。请注意,与稠密变换器不同,不应将目标对准MLP层,因为它们是稀疏的,并且与PEFT的交互效果不佳。

首先,安装🤗 TRL的最新版本并克隆存储库以访问训练脚本

pip install -U transformerspip install git+https://github.com/huggingface/trlgit clone https://github.com/huggingface/trlcd trl

然后可以运行脚本:

accelerate launch --config_file examples/accelerate_configs/multi_gpu.yaml --num_processes=1 \    examples/scripts/sft.py \    --model_name mistralai/Mixtral-8x7B-v0.1 \    --dataset_name OpenAssistant/oasst_top1_2023-08-25 \    --batch_size 2 \    --gradient_accumulation_steps 1 \    --learning_rate 2e-4 \    --save_steps 20_000 \    --use_peft \    --peft_lora_r 16 --peft_lora_alpha 32 \    --target_modules q_proj k_proj v_proj o_proj \    --load_in_4bit

这个过程需要大约9个小时在单个A100上训练,但可以通过调整--num_processes与您可用的GPU数量并行执行。

免责声明和持续工作

  • 量化:混合专家(MoEs)的量化是一个活跃的研究领域。虽然TheBloke已经进行了4位和8位量化的初步实验,但模型质量会显著下降。未来几天和几周内这个领域的发展将是令人兴奋的。此外,最近的研究工作,如QMoE,实现了MoEs的亚1位量化,可以应用于这里。
  • 高VRAM使用:虽然MoEs可以非常快速地进行推理,但仍然需要大量VRAM(因此需要昂贵的GPU)。这使得在本地环境中使用MoEs变得具有挑战性。MoEs非常适合具有许多设备和大容量VRAM的设置。Mixtral需要半精度下的90GB VRAM 🤯

其他资源

结论

我们非常激动Mixtral即将发布!在接下来的几天,准备好了解更多有关如何优化和使用Mixtral的方法。