Mixtral混合专家模型

2024-08-15 12:12:56 浏览数 (4)

模型下载

模型地址:mistralai (Mistral AI_) (huggingface.co),需要在这个网页上申请权限(地址填国外)

申请huggingface token:Hugging Face – The AI community building the future.

下载模型可以用huggingface提供的工具,使用方式如下:

代码语言:txt复制
export HF_ENDPOINT="https://hf-mirror.com"
huggingface-cli download --exclude "*pytorch_model*"  --token your_token  --resume-download --local-dir-use-symlinks False mistral-community/mixtral-8x22B-v0.3 --local-dir mixtral-8x22B

国内最好使用镜像站,下载速度快一些。

Sliding Window Attention (SWA,滑动窗口Attention)

cache的存储压力之所以变大,是因为我们的Attention是causal decoder形式的,即每一个token,都要和它之前所有的token做Attention,所以cache中存储的数据量才和seq_len正相关。如果现在我们转换一下思路,假设每一个token只和包含其本身在内的前W个token做Attention,这样不就能把cache的容量维持在W吗?而从直觉上来说,这样的做法也有一定的道理:对当前token来说,距离越远的token,能提供的信息量往往越低,所以似乎没有必要浪费资源和这些远距离的token做Attention。

这种Attention思路的改进,就被称为Sliding Window Attention,其中W表示窗口长度。

普通Attention vs Sliding Window Attention普通Attention vs Sliding Window Attention

Rolling Buffer Cache

当我们使用滑动窗口后,KV Cache就不需要保存所有tokens的KV信息了,你可以将其视为一个固定容量(W)的cache,随着token index增加,我们来“滚动更新” KV Cache。

下图给出了Rolling Buffer Cache的运作流程:

Rolling Buffer CacheRolling Buffer Cache

混合专家

让一个网络模型结构有多条分支,每条分支代表一个Expert(专家),每个Expert都有其擅长的领域,当具体任务来临时,可以通过一个门空位Gate来具体选择采用哪一个或者哪几个Experts进行计算,这样的好处就是让每个Expert更专注特定领域,降低了不同领域数据对权重学习的干扰。当然在训练MoE模型时也要注意各个Experts负载均衡,防止赢者通吃,达不到想要的目的。

值得注意的是,prefill或decode每一次模型的计算都可能用到不同的专家。

普通LLM vs Mixtral混合专家普通LLM vs Mixtral混合专家

1 人点赞