当前位置:AIGC资讯 > AIGC > 正文

LLama大模型初体验——Linux服务器部署LLama注意事项

LLama大模型初体验——Linux服务器部署LLama注意事项

一、基本步骤

基本步骤可以参考这个链接:超详细Llama2部署教程——个人gpt体验攻略!

llama开源仓库:https://github.com/facebookresearch/llama

二、注意事项

这里提一些教程链接中没有提及的注意点。

1、Request access to the next version of Llama

在“Request access to the next version of Llama”网页中,Country选择China的话会显示“Sorry, the download is not available in your region”,选择其他选项即可。

2、安装Llama2运行依赖

# 国内环境可以使用清华源加速
 pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

使用这条命令,下载速度更快。

3、下载模型权重

bash download.sh

教程链接中,这条命令有两个“bash”,在linux里面写一个“bash”即可。

我选择下载的是7B-chat,大小约12G,下载耗时大约50min。

下载进度到达99%时,可能报错(大概意思是download.sh文件最后一行运行出错)。重新运行此命令即可(重新运行此命令不会耗费很长时间)。

4、运行模型前,检查torch是否可用

检查方法:进入python环境,依次输入如下命令:

>> import torch
>> torch.cuda.is_available()

如果返回为True,表示torch可用;

如果返回为False,做如下步骤:

①检查安装的pytorch版本与cuda版本是否匹配(可在官网或搜索引擎查找与服务器配置的cuda版本对应的pytorch版本进行下载);

通过nvidia-smi查看cuda版本;通过python中torch.__version__查看pytorch版本

②确认pytorch版本与cuda版本匹配情况下返回仍为False时,使用conda list命令检查安装的pytorch是否为cpu版本。如果是,使用conda uninstall pytorch命令卸载pytorch,然后根据官网提供的安装命令重新安装gpu版本。

参考:torch.cuda.is_available函数总返回False

5、运行模型demo的参数配置

在llama文件夹里有2个py文件,分别用于展示Llama的文本补充(example-text-completion.py)和对话能力(example_chat_completion.py)。

在运行命令的时候,一些参数的配置需要注意,直接按照教程链接的写法会报一些错。

(1)运行example-text-completion.py

可运行的命令:

torchrun --nproc_per_node 1 example_text_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --temperature 0.6 --top_p 0.9 --max_gen_len 64 --max_seq_len 128 --max_batch_size 4

--nproc_per_node 1表示每个训练节点只使用1个GPU;

example_text_completion.py表示运行的py文件;

--ckpt_dir表示使用的模型的路径。注意:需要根据自己下载、使用的模型进行更改。如果打算使用的是7B模型,那么ckpt_dir参数是llama-2-7b/;如果打算使用的是7B-chat模型,那么ckpt_dir参数是llama-2-7b-chat/;其他模型同理。

--tokenizer_path表示使用的tokenizer的路径;

--temperature--top_p--max_gen_len--max_seq_len--max_batch_size都是需要配置的参数。此处的参数取值参考了仓库中generation.py中generate()函数的参数默认值。

教程中只配置了--max_seq_len--max_batch_size这两个参数,是会报错的。

运行成功后,虽然没有交互功能,但是会直接显示写在该py文件中的一些prompt的输出:

如果想要获取其他问题的输出,可以修改该py文件中的prompts变量。

因为有限制max_seq_len,所以输出长度有限,部分回答看起来并不完整。

(2)运行example-chat-completion.py

可运行的命令:

torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --temperature 0.6 --top_p 0.9 --max_seq_len 512 --max_batch_size 4

参数解释同上。

教程中只配置了--max_seq_len--max_batch_size这两个参数,是会报错的。

另外,直接运行此命令可能会在assert bsz <= params.max_batch_size, (bsz, params.max_batch_size)这里报错。max_batch_size经人为设置为4,而bsz对应的是该py文件中dialogs这个列表变量的长度,在文件未被改动的情况下是6,所以会报错。

有两种解决方法:

①调大max_batch_size,大于6即可。但是这种做法可能面临CUDA out of memory.的问题而运行失败;

②删减dialogs列表元素,使其元素剩余个数小于4。

运行成功后,虽然没有交互功能,但是会直接显示写在该py文件中的一些dialogs的输出:

如果想要获取其他问题的输出,可以修改该py文件中的dialogs变量。

因为有限制max_seq_len,所以输出长度有限,部分回答看起来并不完整。

更新时间 2023-11-20