环境要求

  • win11
  • git
  • Ryzen AI

下载Llama2模型

我了解到的Llama2模型的下载有两种方式,一种是官方申请,然后使用脚本下载,另一种是通过huggingface下载。下面将对两种方式进行阐述。

官网下载

官网申请

通过官网填写表单申请,内容可以随便填,但注意地区不要选择China,否则会直接报错。之后会向你的邮箱中发送一个连接,这个链接在下载的时候会用到。

得到下载脚本文件

在拿到链接后,我们还不能直接下载,需要使用llama提供的下载脚本进行下载,这个脚本在llama的github网站上有,单独将其下载下来即可。
在这里插入图片描述

git bash配置

但是我们下载得到的是.sh脚本,它是linux平台的脚本文件,windows下不可直接执行。因此我们可以借助git的bash环境来进行下载(前提是电脑中已安装git软件)。

在github的描述中我们可以看到,该脚本文件的运行还需要依赖wget和md5sum两个工具。其中bash已经带有md5sum,我们还需要另外安装wget工具。具体方法如下:

  • 首先需要在wget网站上下载对应平台的wget.exe文件。
  • 将下载得到的wget.exe文件复制到git安装目录的“\mingw64\bin\”子目录下。
    在这里插入图片描述

下载模型

在晚上以上步骤后,我们就能够在git bash中运行download.sh脚本进行模型的下载了。在下载的过程中需要提供之前我们邮箱中收到的链接。具体下载流程我没截图,按照脚本的提示一步步来就好啦!这里我只下载了7b和7b-chat模型,因为后面可能到。

在下载完成后,我们得到的是原始模型文件,如果要使用Ryzen AI对其进行量化,则还需要对模型进行转换,该步骤我将在后文中进行阐述。

huggingface下载

由于我没用到这种下载方式,因此在这里不做过多阐述,免得给大家挖坑。

其中需要注意的是下载huggingface的模型文件时需要设置TOKEN环境变量,否则会提示没有权限。具体方法如下:

  • 首先在网站的个人中心找到Access Tokens,添加具有read权限的token
  • 设置环境变量。注意cmd和terminal设置环境变量的方式不同
    • $env:HUGGING_FACE_HUB_TOKEN=“****************” (terminal)
    • set HUGGING_FACE_HUB_TOKEN=**************** (cmd)

Ryzen AI transformers环境配置

注意:官方的教程需要使用cmd,不能使用terminal,否则环境变量设置会有问题。

Setup Transformers

  1. 下载RyzenAI-SW
    首先我们需要将github上的RyzenAI-SW克隆到本地,并安装配置其中“example\transformers”下的虚拟环境。
git clone https://github.com/amd/RyzenAI-SW.git
cd RyzenAI-SW\example\transformers
conda env create --file=env.yaml
conda activate ryzenai-transformers
  1. 下载AWQ Model zoo提供的预权重。(不知道不下载有什么影响,建议还是下载一下)
cd .\RyzenAI-SW
git lfs install
cd .\example\transformers\ext
git clone https://huggingface.co/datasets/mit-han-lab/awq-model-zoo awq_cache
  1. 设置环境变量
    由于脚本中设置环境使用的是set命令,该命令在terminal里不起作用。如果是在terminal环境中,下一步pip安装的时候会报错。不过应该也可以参考前面设置Huggingface Token时的命令,我还没进行尝试。
cd ..\ 
setup.bat
  1. 安装依赖包
    运行下面这个命令将会在python环境中安装名为RyzenAI的包。这个包不能单独使用,如果使用的话还需要进行第三步的设置环境变量,否则在导入包的时候会报错。
pip install ops\cpp --force-reinstall

由于我们使用的Llama2使用的是pytorch,因此我们跳过安装onnx环境步骤。

Llama 2 - Pytorch

通过以上的步骤,我们就已经完成运行Llama2的所有前置步骤啦。下面就能够开始进行我们的模型量化和部署测试了。

组织模型文件

由于我是从官网获取链接下载的模型,因此模型木能够直接使用,需要先进行转换。

首先,我们需要在transformers文件夹下新建llama-2-wts文件夹和llama-2-wts-hf文件夹。其中llama-2-wts文件夹用于存放我们下载的原始模型,llama-2-wts-hf文件夹用于存放下一步我们转换得到的模型.。之后将我们下载的模型文件放入llama-2-wts文件夹中,并将其中的模型文件夹名称改为7B。(我这里使用的是7B-chat,因此我的7B文件夹是7B-chat更改过来的)
在这里插入图片描述

模型转换

执行如下语句对模型进行转换,其中C:\Users\zxfeng.conda\envs\ryzenai-transformers需要修改为你自己的ryzenai-transformers虚拟环境安装的目录。

python C:\Users\zxfeng\.conda\envs\ryzenai-transformers\Lib\site-packages\transformers\models\llama\convert_llama_weights_to_hf.py --input_dir ./llama-2-wts/ --model_size 7B --output_dir ./llama-2-wts-hf/7B

转换完成后,就能够在llama-2-wts-hf文件夹下看到对应的模型了。
在这里插入图片描述

模型量化

官方提供了多种的量化方式,分别如下:

4-bit AWQ

#AWQ - lm_head runs in BF16 
python run_awq.py --w_bit 4 --task quantize 

#AWQ - lm_head runs in BF16 
python run_awq.py --w_bit 4 --task quantize --flash_attention

#AWQ + Quantize lm_head 
python run_awq.py --w_bit 4 --task quantize --lm_head

#AWQ + Quantize lm_head
python run_awq.py --w_bit 4 --task quantize --lm_head --flash_attention

3-bit AWQ

#AWQ - lm_head runs in BF16 
python run_awq.py --w_bit 3 --task quantize 

#AWQ - lm_head runs in BF16 
python run_awq.py --w_bit 3 --task quantize --flash_attention

#AWQ + Quantize lm_head 
python run_awq.py --w_bit 3 --task quantize --lm_head

#AWQ + Quantize lm_head
python run_awq.py --w_bit 3 --task quantize --lm_head --flash_attention

量化完成后会在llama2文件夹下生成相应的权重文件。

模型测试

量化完成后,我们就能够对量化后得到的模型进行测试啦!

python run_awq.py --task decode --target aie --w_bit 4

****************************************
prompt: What is the meaning of life?
Setting `pad_token_id` to `eos_token_id`:2 for open-end generation.
response: What is the meaning of life? This is a question that has puzzled philosophers, theologians, scientists, and many others for
****************************************
prompt: Tell me something you don't know.
Setting `pad_token_id` to `eos_token_id`:2 for open-end generation.
response: Tell me something you don't know.
The only thing I can think of is that I don't know how to make you disappear
****************************************
*
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐