试试号称最好的7B模型


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:人工智能话题分享

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

概述

论文原理

部署与复现

推理

微调

adapter 融合


 本文所有资源均可在该地址处获取。

概述

Mistral 7B 是一个新型的具有 7.3 万亿参数的大语言模型。其性能甚至优于13万亿参数的 Liama2。

Mistral 7B 在所有测试基准中都优于之前最佳的 13B 模型(Llama 2),并在数学和代码生成方面超越了最佳的 34B 模型(LLaMa 34B)。此外,Mistral 7B 在编码性能上接近于 Code-Llama 7B,而不会牺牲非代码相关基准上的性能。Mistral 7B 利用了分组查询注意力(GQA)和滑动窗口注意力(SWA)。GQA 显著加快了推断速度,同时在解码过程中减少了内存需求,从而允许更高的批处理大小,提高了吞吐量,这对于实时应用非常重要。此外,SWA 旨在以较低的计算成本更有效地处理更长的序列,从而缓解了LLM(大型语言模型)的常见限制。这些注意力机制共同促进了 Mistral 7B 的增强性能和效率。

模型论文可见Mistral 7B

论文原理

Mistral 7B 基于 transformer 架构,下图将展示该架构的主要参数。

滑动窗口注意力(SWA)利用 transformer 的堆叠层来关注超出窗口大小 W 范围之外的信息。在层 k 中的位置 i 的隐藏状态 hi 关注前一层中位置在 i − W 和 i 之间的所有隐藏状态。递归地,hi 可以访问到距离为 W × k 个标记的输入层中的标记,如图所示。在最后一层,使用窗口大小 W = 4096,理论上的注意力跨度大约为131K个标记。在实践中,对于序列长度为16K且 W = 4096,对FlashAttention 和 xFormers 进行的修改使得相对于基准的普通注意力模型速度提升了2倍。

滚动缓存缓冲区。一个固定的注意力跨度意味着我们可以使用滚动缓冲区缩小缓存的大小。缓存的大小为 W,而在时间步 i 的键和值存储在缓存的位置 i mod W 中。因此,当位置 i 大于 W 时,缓存中的过去数值被覆盖,并且缓存的大小停止增加。下图中提供了一个以 W = 3 为例的说明。在32k个标记的序列长度上,这将使缓存的内存使用减少了8倍,而不影响模型的质量。

预先填充和分块。在生成序列时,我们需要逐个预测标记,因为每个标记都取决于前面的标记。然而,提示是预先知道的,我们可以使用提示来预先填充 (k, v) 缓存。如果提示非常大,我们可以将其分成较小的块,并使用每个块来预先填充缓存。为此,我们可以将窗口大小选择为我们的块大小。对于每个块,我们需要计算缓存和块上的注意力。图3展示了注意力掩码如何作用于缓存和块上。

部署与复现

首先安装所需要的依赖,推荐新建 conda 环境安装。

# 确保安装了 cuda 版的 pytorch, 如果已经安装了忽视这条
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r ./requirements.txt

须在 linux 环境下运行,因为 Windows 下 bitsandbytes 包为 bitsandbytes-windows 会造成 transfromers 包无法正常识别,且 Windows 没有 Flash Attention。

推理

此处下载模型,解压到 7b-v0.1-hf/1

运行 infer.py,输入你想使用的prompt,即可得到模型的回复。推理部分可在 Windows 下进行,速度稍慢些但可以正常走完。

python infer.py --prompt="As a data scientist, can you explain the concept of regularization in machine learning?"

微调

使用准备好的数据集(位于dataset,mlabonne/guanaco-llama2-1k)微调模型。你也可以使用自己的数据集,打开train.py 编辑dataset 的路径即可。

该数据的风格为指令由 <s>[INST] [/INST] 包围,进行微调后,模型便可以很好地处理类似的prompt。

运行train.py 。

python train.py

adapter 融合

微调后的模型可以使用 PeftModel 连接 adapter,重新进行推理。所有代码已经准备在adapter.py中,运行即可,输入数据集风格的 prompt。

python adapter.py --prompt="<s>[INST] How become a certified data professional [/INST]"

​​

### Qwen-7B 模型介绍 Qwen-7B 是一款高性能的大规模预训练语言模型,在多个评估指标上表现出色。特别是在C-Eval验证集上的准确率达到60.8%[^1],显著优于其他同类模型。 #### 技术特点 - **参数量**:拥有约7亿个参数,属于中等规模的语言模型。 - **性能表现**:在多项自然语言处理任务中展现出强大的泛化能力。 - **应用场景**:适用于文本生成、问答系统、对话机器人等多种场景。 ### 使用方法概述 为了方便开发者和研究人员使用Qwen-7B模型,提供了多种部署方式: #### 方法一:通过 llamafile 部署 llamafile 提供了一种简便的方法来部署Qwen-7B模型。这种方法允许用户将整个运行环境打包成单一可执行文件,极大地方便了跨平台的应用[^3]。 ```bash # 下载并安装llamafile工具 wget https://example.com/path/to/llamafile chmod +x llamafile # 执行命令启动Qwen-7B模型服务 ./llamafile run qwen_7b_model ``` #### 方法二:基于 Anaconda 的 Python 环境配置 对于希望更灵活控制开发环境的用户来说,可以在Linux服务器(如Ubuntu)上利用Anaconda创建专门用于Qwen-7B的Python虚拟环境[^4]。 ```bash # 安装Miniconda或Anaconda curl -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh # 创建新的Conda环境 conda create --name qwen_env python=3.9 conda activate qwen_env # 安装必要的依赖包 pip install torch transformers requests ``` #### 方法三:调用 API 实现特定功能 如果目标是集成某些具体应用,则可以直接调用已封装好的API接口完成相应操作。例如,下面展示了如何让Qwen-7B模型查询实时天气数据[^2]。 ```python import openai openai.api_key = 'your_api_key' response = openai.ChatCompletion.create( model="qwen-7b", messages=[ {"role": "system", "content": "You are a weather assistant."}, {"role": "user", "content": "What's the current temperature in Beijing?"}, {"role": "assistant", "content": ""} ] ) print(response['choices'][0]['message']['content']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值