赞
踩
代码:加载模型的py代码,ChatGLM2已经封装好了多种加载和对话的方式,支持窗口对话、WEB页面对话、Socket对话、HTTP接口对话等方式。
安装了docker
16G以上显卡
先查看显卡是否已经安装,没有安装再进行安装,已安装就跳过此步
nvidia-smi # 如下图是已安装
如果没有相关信息,再进行显卡的安装。
# Linux查看显卡信息:(ps:若找不到lspci命令,可以安装 yum install pciutils)
lspci | grep -i vga
# 使用nvidia GPU可以:
lspci | grep -i nvidia
# 查看显卡驱动
cat /proc/driver/nvidia/version
yum install kernel-devel gcc -y
ls /boot | grep vmlinu
rpm -aq | grep kernel-devel
Nouveau
# 查看命令:
lsmod | grep nouveau
# 修改dist-blacklist.conf文件:
vim /lib/modprobe.d/dist-blacklist.conf
# 将nvidiafb注释掉:
blacklist nvidiafb
# 然后添加以下语句:
blacklist nouveau
options nouveau modeset=0
可以在屏蔽之后重启系统并在命令行中输入lsmod | grep nouveau
查看命令观察是否已经将其屏蔽。
Initramfs Image
步骤mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
systemctl set-default multi-user.target
reboot
网址:https://www.nvidia.cn/Download/index.aspx?lang=cn
点击搜索即可弹出对应的下载软件包
chmod +x NVIDIA-Linux-x86_64-525.105.17.run
./NVIDIA-Linux-x86_64-525.105.17.run
nvidia-smi
到此CentOS7已完成NVIDIA
显卡驱动的安装
在开始之前我们需要确保已经安装好了Docker
的环境,并且也安装了Docker Compose
。
需要注意的是,因为
NVIDIA-Docker
软件的存在,我们不需要在宿主机上安装CUDA工具包,这样我们可以根据不同的需要选择合适的版本。
NVIDIA
容器工具包对应的Github
代码仓库地址:https://github.com/NVIDIA/nvidia-docker
# 获得当前操作系统的发行版和版本,以便下载适用于NVIDIA Docker Toolkit的正确仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
# 下载NVIDIA Docker Toolkit仓库,并将其保存为文件到/etc/yum.repos.d/目录中,使得包管理器够定位并安装工具包
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
# 使用yum安装nvidia-container-toolkit软件包
sudo yum install -y nvidia-container-toolkit
# 重新启动Docker守护程序,以便它识别通过安装NVIDIA Docker Toolkit进行的新配置更改
sudo systemctl restart docker
# 在现有的GPU上启动启用GPU的容器,并运行nvidia-smi命令
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
# 在两个GPU上启动启用GPU的容器,并运行nvidia-smi命令
docker run --gpus 2 nvidia/cuda:10.0-base nvidia-smi
# 在特定的GPU上启动启用GPU的容器,并运行nvidia-smi命令
docker run --gpus '"device=1,2"' nvidia/cuda:10.0-base nvidia-smidocker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:10.0-base nvidia-smi
# 这个命令演示了如何为容器指定能力(图形、计算等)
# 请注意,这种方式很少使用
docker run --gpus all,capabilities=utility nvidia/cuda:10.0-base nvidia-smi
链接:https://pan.baidu.com/s/1RhoYQ6wL5eJM8Qd0K4BYAg?pwd=zws4
提取码:zws4
解压完成后的目录如下
注意:在线环境直接使用以下代码启动即可,离线环境需要先手动下载和加载woshikid/chatglm2-6b镜像,然后在使用docker进行启动
docker run --gpus all --runtime=nvidia \
-p 7860:7860 \
-p 8000:8000 \
-p 8501:8501 \
-p 80:80 \
-v ./ChatGLM2-6B:/ChatGLM2-6B \
-v ./model/chatglm2-6b:/chatglm2-6b \
--name chatglm2-webdemo \
-dit woshikid/chatglm2-6b \
python web_demo.py
其中,-p表示端口映射,物理机的7860端口会映射容器的7860端口,这个端口是web页面的端口
-v后跟的参数表示将物理机上的对应目录映射进入docker容器中
以下是启动的不同的访问方式和端口信息:
woshikid/chatglm2-6b python cli_demo.py
-p 8000:8000 woshikid/chatglm2-6b python api.py
-p 8000:8000 woshikid/chatglm2-6b python openai_api.py
-p 7860:7860 woshikid/chatglm2-6b python web_demo.py
-p 8501:8501 woshikid/chatglm2-6b streamlit run web_demo2.py
http://ip:7860即可进入对话页面
通过nvidia-smi命令可以查看显卡使用情况
另外,如果是自己从github上下载的官方代码,需要修改下web_demo.py代码允许远程访问,否则默认会只允许本机访问。
通常,本地的代码开发机器性能不足以支持ChatGLM2-6B的运行,但是在服务器上去编辑代码又十分的不方便,因此使用一种可以远程开发的方法来进行开发。下面是对这种方法的步骤介绍:
各种开发工具基本上都有这种功能,这里以Idea或者PyCharm开发工具来说明,其原理是本地开发后,利用SFTP将代码推送到远程服务器来进行对应的调试。
1)首先打开IDEA或PyCharm开发工具,打开我们的代码。
2)打开开发环境配置。
3)新建一个SFTP配置,并在Connection中填写服务器连接配置信息。
4)点击Mappings,将本地的代码地址和服务器上的代码地址做映射,这里服务器上的代码地址是我们ChatGLM-6B的地址,用于映射到容器内部,然后点击确认。
5)代码推送。
6)这样,就可以实现本地编写代码,推送到远程进行调试了,十分的便捷。
报错的信息不用管,因为本地没有环境,所以只能当编辑器使用。
请先学习一篇文章,以了解什么是微调以及如何进行微调:https://zhuanlan.zhihu.com/p/641047705?utm_id=0
基础镜像:woshikid/chatglm2-6b
docker run --gpus all --runtime=nvidia \
-p 7860:7860 \
-p 8000:8000 \
-p 8501:8501 \
-p 80:80 \
-v ./ChatGLM2-6B:/ChatGLM2-6B \
-v ./model/chatglm2-6b:/chatglm2-6b \
--name chatglm2-6b \
-dit woshikid/chatglm2-6b \
python web_demo.py
以下是启动的不同的访问方式和端口信息:
woshikid/chatglm2-6b python cli_demo.py
-p 8000:8000 woshikid/chatglm2-6b python api.pyW
-p 8000:8000 woshikid/chatglm2-6b python openai_api.py
-p 7860:7860 woshikid/chatglm2-6b python web_demo.py
-p 8501:8501 woshikid/chatglm2-6b streamlit run web_demo2.py
vim web_demo.py
curl -X POST "http://127.0.0.1:8000" \
-H 'Content-Type: application/json' \
-d '{"prompt": "你好", "history": []}'
回复的内容:
{
"response":"你好声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/507635
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。