模型下载
模型地址: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表示窗口长度。
Rolling Buffer Cache
当我们使用滑动窗口后,KV Cache就不需要保存所有tokens的KV信息了,你可以将其视为一个固定容量(W)的cache,随着token index增加,我们来“滚动更新” KV Cache。
下图给出了Rolling Buffer Cache的运作流程:
混合专家
让一个网络模型结构有多条分支,每条分支代表一个Expert(专家),每个Expert都有其擅长的领域,当具体任务来临时,可以通过一个门空位Gate来具体选择采用哪一个或者哪几个Experts进行计算,这样的好处就是让每个Expert更专注特定领域,降低了不同领域数据对权重学习的干扰。当然在训练MoE模型时也要注意各个Experts负载均衡,防止赢者通吃,达不到想要的目的。
值得注意的是,prefill或decode每一次模型的计算都可能用到不同的专家。