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,所以输出长度有限,部分回答看起来并不完整。