以Llama 2为例进行大模型推理实践

立山  论坛元老 | 2025-3-31 00:09:31 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1974|帖子 1974|积分 5922

本节先简要先容了Llama2模型的根本信息,接着详述了怎样在GPU云主机中搭建模型运行情况。基于此,推出了预装 LLaMA2-7B-Chat大模型和模型运行情况的GPU云主机镜像,使您可以或许快速搭建Llama 2推理和微调情况。
什么是Llama2

Meta在7月18日发布了可以免费用于学术研究或贸易用途的Llama2开源大语言模型。


Llama的练习方法是先进行无监督预练习,再进行有监督微调,练习奖励模型,根据人类反馈进行强化学习。 Llama 2的练习数据比Llama 1多40%,用了2万亿个tokens进行练习,而且上下文长度是Llama 1的两倍。 目条件供7B 、13B、70B三种参数目的版本。


根据Meta公布的官方数据,Llama 2在许多基准测试上都优于其他开源语言模型,包罗推理、编程、对话本领和知识测试,在帮助性、安全性方面甚至比部门闭源模型要好。


Llama 2-Chat在Llama 2的基础上针对聊天对话场景进行了微调和安全改进,使用 SFT (监督微调) 和 RLHF (人类反馈强化学习)进行迭代优化,以便更好的和人类偏好保持同等,提高安全性。
Llama 2-Chat更专注于聊天机器人领域,主要应用于以下几个方面:


  • 客户服务:Llama 2-Chat可以用于在线客户服务,回答关于产品、服务的常见题目,并向用户提供帮助和支持。
  • 社交娱乐:Llama 2-Chat可以作为一个有趣的聊天伙伴,与用户进行随意、轻松的对话,提供笑话、谜语、故事等娱乐内容,增加用户的娱乐体验。
  • 个人助理:Llama 2-Chat可以回答一些日常生活中的题目,如天气查询、时间设置、提醒事项等,帮助用户办理简朴的任务和提供一些实用的功能。
  • 生理健康:Llama 2-Chat可以作为一个简朴的生理健康支持工具,可以与用户进行交换,提供情绪调治、压力缓解的建议和技巧,为用户提供安慰和支持。
在GPU云主机上搭建模型运行情况

步骤一:创建1台未设置驱动的GPU云主机


  • 进入创建云主机页面。
a.点击天翼云门户首页的“控制中央”,输入登录的用户名和暗码,进入控制中央页面。
b.单击“服务列表>弹性云主机”,进入主机列表页。
c.单击“创建云主机”,进入弹性云主机创建页。

  • 进行基础设置。
a.根据业务需求设置“计费模式”、“地域”、“企业项目”、“假造私有云”、“实例名称”、“主机名称”等。
b.选择规格。此处选择"CPU架构"为"X86"、"分类"为"GPU型"、"规格族"为"GPU计算加速型p2v"、"规格"为"p2v.4xlarge.8"。
注意
大模型推理场景须要处理大量的数据和参数,对显卡显存和云盘大小都有肯定要求。


  • 针对显存,加载全精度Llama-7B-chat模型时,模型将斲丧28G显存,除此之外也须要额外的显存用于存储中间激活和其他临时变量,因此,最低选择显存为32G的V100显卡。同时您也可以根据自身需求对模型进行量化,缩减模型大小,减少对显存的要求并提升计算速率。
  • 针对体系盘,为了存储模型文件、相关依靠、输入数据以及中间结果,最好将体系盘大小设置为100GB以上。
c.选择镜像。此处选择ubuntu 20.04的基础镜像进行推理实践。
注意
为了演示模型搭建的整个过程,此处选择未配备任何驱动和工具包的ubuntu基础模型。详细创建步骤请参见创建未配备驱动的GPU云主机-GPU云主机-用户指南-创建GPU云主机 - 天翼云。
终极我们生成了预装llama2模型和模型依靠的大模型镜像,并在成都4进行了加载,如您有相关须要可在订购时直接选择该镜像——大模型镜像 LLaMA2-7B-Chat(100GB)。
d.设置云盘范例和大小。

  • 网络及高级设置。设置网络,包罗"网卡"、"安全组",同时配备'弹性IP'用于下载模型和相关依靠;设置高级设置,包罗"登录方式"、"云主机组"、"用户数据"。
  • 确认设置并支付。
步骤二:下载模型并上传

从魔乐社区、魔搭社区等国内大模型社区及平台下载Llama-2-7b-chat-hf模型,如下图所示。下载完成后上传至GPU云主机/opt/llama路径下。


说明
怎样将当地文件上传到Linux云主机请参考当地文件怎样上传到Linux云主机。
步骤三:情况搭建


  • 上传并安装GPU驱动
从Nvidia官网下载GPU驱动并上传至GPU云主机,按照如下步骤安装驱动。
  1. # 对安装包添加执行权限
  2. chmod +x NVIDIA-Linux-x86_64-515.105.01.run
  3. # 安装gcc和linux-kernel-headers
  4. sudo apt-get install gcc linux-kernel-headers
  5. # 运行驱动安装程序
  6. sudo sh NVIDIA-Linux-x86_64-515.105.01.run --disable-nouveau
  7. # 查看驱动是否安装成功
  8. nvidia-smi
复制代码


说明
怎样选择驱动及相关库、软件版本请参见怎样选择驱动及相关库、软件版本。
TESLA驱动安装更详细说明请参见安装Tesla驱动-GPU云主机-用户指南-安装NVIDIA驱动 - 天翼云。

  • 安装Nvidia CUDA Toolkit组件
  1. wget http://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
  2. # 安装CUDA
  3. bash cuda_11.7.0_515.43.04_linux.run
  4. # 编辑环境变量文件
  5. vi ~/.bashrc
  6. #在当前行下新开一行并插入
  7. o
  8. # 增加环境变量
  9. export PATH=/usr/local/cuda/bin:$PATH
  10. export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  11. # 按Esc 键退出插入模式并保存修改
  12. :wq
  13. # 使环境变量生效
  14. source ~/.bashrc
  15. # 查看是否安装成功
  16. nvcc -V
复制代码

  • 安装Miniconda
  1. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  2. # 安装Miniconda3
  3. bash Miniconda3-latest-Linux-x86_64.sh
  4. # 配置conda环境变量
  5. vim /etc/profile
  6. #在当前行下新开一行并插入
  7. o
  8. # 添加环境变量
  9. export ANACONDA_PATH=~/miniconda3
  10. export PATH=$PATH:$ANACONDA_PATH/bin
  11. # 按Esc 键退出插入模式并保存修改
  12. :wq
  13. # 使环境变量生效
  14. source /etc/profile
  15. # 查看是否安装成功
  16. which anaconda
  17. conda --version
  18. conda info -e
  19. source activate base
  20. python
  21. # 查看虚拟环境
  22. conda env list
复制代码



  • 安装cuDNN
从cudnn-download下载cuDNN压缩包并上传至GPU云主机,按照如下步骤进行安装。
  1. # 解压
  2. tar -xf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
  3. # 进目录
  4. cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive
  5. # 复制
  6. cp ./include/*  /usr/local/cuda-11.7/include/
  7. cp ./lib/libcudnn*  /usr/local/cuda-11.7/lib64/
  8. # 授权
  9. chmod a+r /usr/local/cuda-11.7/include/* /usr/local/cuda-11.7/lib64/libcudnn*
  10. # 查看是否安装成功
  11. cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
  12. #返回根目录
  13. cd
复制代码



  • 安装依靠
a. 下载Llama模型代码
  1. git clone https://github.com/facebookresearch/llama.git
复制代码
b. 在线安装依靠
  1. # 创建python310版本环境
  2. conda create --name python310 python=3.10
  3. # 查看虚拟环境列表
  4. conda env list
  5. # 激活python310环境
  6. source activate python310
  7. # 切换到llama目录
  8. cd /opt/llama
  9. python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
  10. # 下载依赖
  11. pip install -e . -i  https://pypi.tuna.tsinghua.edu.cn/simple
  12. pip install transformers  -i  https://pypi.tuna.tsinghua.edu.cn/simple
  13. pip install numpy==1.23.1 -i  https://pypi.tuna.tsinghua.edu.cn/simple
  14. pip install torch==2.0.1 -i  https://pypi.tuna.tsinghua.edu.cn/simple
  15. pip install -U bitsandbytes -i  https://pypi.tuna.tsinghua.edu.cn/simple
  16. # 下载peft
  17. git clone https://github.com/huggingface/peft.git
  18. # 传到离线服务器上切换分支,安装特定版本peft
  19. cd peft
  20. git checkout 13e53fc
  21. # 安装peft
  22. pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
复制代码
注意
安装相关依靠的耗时较久请您耐烦等待。

  • 准备推理代码和启动脚本
a. 进入/opt/llama目录下
  1. cd /opt/llama
复制代码
b.下载推理代码
访问 github网站,下载推理代码inference_hf.py并上传至云主机。
c.新建启动脚本run.sh
  1. #新建空文件
  2. vim run.sh
  3. #文件内新增如下内容
  4. python inference_hf.py
  5. --base_model  7b-chat
  6. --tokenizer_path 7b-chat
  7. --with_prompt
  8. --gpus 0
复制代码
步骤四:镜像打包

为了使您能更快的搭建模型运行情况,在完成步骤一和步骤二的操作后,我们对GPU云主机的体系盘进行了打包,生成了标准的GPU云主机镜像。目前已经上传至天翼云成都4、海口2资源池,您可直接对该镜像进使用用。
镜像打包步骤如下:
  1. echo "nameserver 114.114.114.114" > /etc/resolv.conf
  2. echo "localhost" > /etc/hostname
  3. # 清除 machine-id。
  4. yes | cp -f /dev/null /etc/machine-id
  5. # 若有 /var/lib/dbus/machine-id,则:
  6. # rm -f /var/lib/dbus/machine-id
  7. # ln -s /etc/machine-id /var/lib/dbus/machine-id
  8. cloud-init clean -l  # 清理 cloud-init。若此命令不可用,则可尝试:rm -rf /var/lib/cloud
  9. rm -f /tmp/*.log  # 清除镜像脚本日志。
  10. # 清理 /var/log 日志。
  11. read -r -d '' script <<-"EOF"
  12. import os
  13. def clear_logs(base_path="/var/log"):
  14.     files = os.listdir(base_path)
  15.     for file in files:
  16.         file_path = os.path.join(base_path, file)
  17.         if os.path.isfile(file_path):
  18.             with open(file_path, "w") as f:
  19.                 f.truncate()
  20.         elif os.path.isdir(file_path):
  21.             clear_logs(base_path=file_path)
  22. if __name__ == "__main__":
  23.     clear_logs()
  24. EOF
  25. if [ -e /usr/bin/python ]; then
  26.     python -c "$script"
  27. elif [ -e /usr/bin/python2 ]; then
  28.     python2 -c "$script"
  29. elif [ -e /usr/bin/python3 ]; then
  30.     python3 -c "$script"
  31. else
  32.     echo "### no python env in /usr/bin. clear_logs failed ! ###"
  33. fi
  34. # 清空历史记录。
  35. rm -f /root/.python_history
  36. rm -f /root/.bash_history
  37. rm -f /root/.wget-hsts
复制代码
使用大模型镜像进行模型快速摆设

步骤一:创建GPU云主机

登录天翼云控制台,进入弹性云主机主机订购页,选择计算加速型GPU云主机,在公共镜像中选择大模型镜像 LLaMA2-7B-Chat。
大模型镜像 LLaMA2-7B-Chat最低规格推荐:p2v.2xlarge.4 8vCPU 32GB内存 单张v100 GPU。
步骤二:在线推理

登录GPU云主机,根据如下步骤实验推理任务。
  1. #进入/opt/llama目录并实验sh run.sh命令cd /opt/llama
  2. && sh run.sh#根据提示在  ”please input your question :” 后输入推理题目
复制代码


注意

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表