# Qwen-7B_CPP ## 模型介绍 通义千问-7B(Qwen-7B) 是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。 本项目主要针对Qwen-7B-Chat在DCU平台的推理性能优化,达到DCU平台较快的对话效果。 ## 模型结构 Qwen-7B的构建采用了类似LLaMA的架构。与标准transformer的主要差异有:1)使用非连接嵌入、2)使用旋转位置嵌入、3)在注意力中除了QKV外不使用偏置、4)使用RMSNorm代替LayerNorm、5)使用SwiGLU代替ReLU、以及6)采用快速注意力来加速训练。该模型共有32层,嵌入维度为4096,注意力头数为32。 ## 模型下载 [原版Qwen模型下载](https://huggingface.co/Qwen/Qwen-7B-Chat/tree/main) ## 模型推理 ### 下载镜像 在光源可拉取推理的docker镜像,拉取方式如下: ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:glm-ft-v1.0 ``` ### 安装方法 ``` #进入本工程目录 cd package python setup install ``` ### Qwen-7B-Chat原版模型转换 ``` # 为了精简镜像,光源镜像中未提供原版qwen模型运行所需要的依赖,模型转换需要将模型转换脚本qwen2flm.py移动到原版qwen-7b的运行环境中 # 如果使用已经下载完成的模型或者自己finetune的模型需要修改qwen2flm.py文件中创建tokenizer, model时的模型存放路径 # 执行: python3 qwen2flm.py qwen-7b-fp16.bin float16 # 导出fp16模型,参数为导出的模型路径 python3 qwen2flm.py qwen-7b-int8.bin int8 # 导出int8模型,参数为导出的模型路径 ``` ### 运行Qwen-7B-Chat模型实例 ``` # 命令行聊天程序,使用了模型创建以及流式对话效果 python cli_demo.py -p qwen-7b-int8.bin # 简易webui,需要先安装streamlit-chat streamlit run web_demo.py qwen-7b-int8.bin ``` ## 源码仓库及问题反馈 https://developer.hpccube.com/codes/modelzoo/qwen-7b_cpp ## 参考 https://github.com/QwenLM/Qwen-7B