星火大模型的主页:iFlytekSpark-13B: 讯飞星火开源-13B(iFlytekSpark-13B)拥有130亿参数,新一代认知大模型,一经发布,众多科研院所和高校便期待科大讯飞能够开源。 为了让大家使用的更加方便,科大讯飞增加了更多的数据,并针对工具链进行了优化。此次正式开源拥有130亿参数的iFlytekSpark-13B模型(讯飞星火开源-13B),也是首个基于全国产化算力平台"飞星一号"的大模型,正式开源!https://gitee.com/iflytekopensource/iFlytekSpark-13B其介绍已经说得很详细了,我只是简单总结一下GPU版的推理部署方法。这里是GPU版的说明页面:deepspeed-megatron/README.md · 讯飞星火开源/iFlytekSpark-13B - Gitee.comhttps://gitee.com/iflytekopensource/iFlytekSpark-13B/blob/master/deepspeed-megatron/README.md严格按照其环境要求配置环境环境即可。里面也说到,需要手动安装flash-attention和apex,这两个我都没装过,发现装后者确实有坑。期间也遇到了其他问题,例如CUDA版本之类,但都好解决,但是apex安装之后,发现有各种问题。例如报:No module named 'fused_layer_norm_cuda'。
也有博客中有解决方法:ModuleNotFoundError: No module named 'fused_layer_norm_cuda'modulenotfounderror: no module named 'fused_layer-CSDN博客文章浏览阅读5.3k次,点赞5次,收藏22次。Nvidia Apex安装与简单使用_modulenotfounderror: no module named 'fused_layer_norm_cudahttps://blog.csdn.net/Zhangye1011/article/details/125962036但是照做还是会报错,试了无数次,最终在这里看到:GPU版本报错no module named 'fused_layer_norm_cuda' · Issue #I91FJC · 讯飞星火开源/iFlytekSpark-13B - Gitee.com
结合上面的博客,感觉有可能确实是分支的问题。 apex也确实有这样的分支:
GitHub - NVIDIA/apex at 22.04-dev
所以把repo clone下来之后,首先:
bash
git checkout 22.04-dev
再运行:
bash
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
竟然就没错了!想不通这么多人遇到的问题为啥不好好解决。
另外就是下载已经训练好的模型,是在这里下载:
iFlytekSpark-13B-model-GPU: 星火开源大模型13BGPU的模型权重https://gitee.com/iflytekopensource/i-flytek-spark-13-b-model-gpu需要注意的是,如上面repo里介绍的,由于模型太大所以使用Git LFS存储,如果直接用git clone是没法下载的。需要做的是先安装Git LFS(有很多git工具已经自带了):
bash
sudo apt-get install git-lfs
然后:
bash
git lfs install
接下来就可以clone这个repo了:
bash
git lfs clone https://gitee.com/iflytekopensource/i-flytek-spark-13-b-model-gpu.git
需要注意的是,从网页上看mp_rank_00_model_states.pt大概大小有50GB,两个权重文件加起来也只有100GB,我怎么clone了458GB。估计是因为repo中多次commit,不知道设置clone深度会不会解决,我没有测试。
最后总结一下目录关系,这点repo里写得也不是很详细:
运行推理的bash脚本在:iFlytekSpark-13B/deepspeed-megatron/examples_deepspeed/iFlytekSpark里,但是repo和bash脚本里写的权重文件和tokenizer的位置:
# 若文件结构如上所示,则对应参数如下 from_pretrained="/data/ckpt_download" tokenizer_file="/data/tokenizer/tokenizer" #注意使用tokenizer/目录下.model和vocab的前缀名字tokenizer ,而不是只到tokenizer/目录
让人不明就里,实际上可以写成绝对路径,例如我为方便起见,改成了:
bash
from_pretrained="/home/quyu/Projects/iFlytekSpark-13B/Data/ckpt_download"
tokenizer_file="/home/quyu/Projects/iFlytekSpark-13B/Data/tokenizer/tokenizer"
最后说说硬件要求,我做完了以上配置就不报别的错了,只是还是显存溢出了,我的电脑是3090*2的,看来最低只能用40GB单卡,两个24GB由于各种原因会爆显存。