AWS实例上本地部署ChatGLM2-6B

 此篇博客主要介绍如何在AWS上创建带GPU的instance,并在instance上部署ChatGLM大模型。

AWS上申请带GPU的instance

ChatGLM虽然也支持在CPU的instance上部署,但这里选择在GPU的instance上部署。所以,先在AWS上选择带GPU的instance。AWS上区分了不同型号的instance type,这里都是支持NVIDIA Driver的带GPU的instance,至于不同instance的类型,详细信息可查看aws官网说明

这里在创建instance的时候,我选择的是G4dn类型,内存是32G的instance,选择了instance类型后,操作系统选择的是Ubuntu,版本是22.04,选定instance类型后,创建instance的过程和创建通用instance一样。instance创建成功后,就可以通过ssh命令从本地电脑连接到instance上。

连接后,还可以通过命令 lspci | grep -i nvidia,查看该instance是否带了GPU,可以看到这里查询到了GPU类型是Tesla T4型号。

NVIDIA Driver 安装

成功创建instance并连接后,就需要安装NVDIA的Driver了,安装Driver即可以手动下载安装,也可以通过apt-get命令进行安装。如果要手动下载安装,那么需要在NVIDIA网站查询下载Driver。GPU是T4系列,操作系统是Ubuntu 22.4,可以看到下面检索到了带不同CUDA Tookit的Driver包。

除了手动下载安装Driver外,也可以通过命令安装,并且Nvidia官网给出了详细的安装步骤。总结下来Pre-Installing有如下内容需要检查:

1.Verify the system has a CUDA-capable GPU。
前面已经用命令进行了检查,检查命令:lspci | grep -i nvidia

2.Verify the system is running a supported version of Linux.
检查操作系统Linux的版本信息,检查命令:uname -m && cat /etc/*release

3.Verify the system has gcc installed.
检查系统是否已经安装了gcc,检查命令:gcc --version。新申请的instance是没有gcc的,这里通过apt-get命令进行安装,安装命令sudo apt-get update && apt-get install gcc

4.Verify the system has the correct kernel headers and development packages installed.
检查系统是否已经安装了kernel headers and development packages,检查命令:uname -r,aws上新申请的instance,默认是已经安装好了的。

前置检查完成后,需要进行安装包管理,即生成相应的key,以后在安装Nvidia的相关包时,会进行安全相关的检查,保证安装的包是受到官网认证的包。具体命令如下所示:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb

distribution实际就是获取操作系统的版本号,wget命令获取操作系统响应版本号对应的deb文件,dpkg命令是Debian系统中用于管理软件包的工具,它可以用来安装、卸载、配置和管理软件包。cuda-keyring_1.0-1_all.deb文件:包含CUDA密钥环,CUDA密钥环包含了与NVIDIA的CUDA软件包相关的数字签名密钥,用于验证这些软件包的真实性和完整性。通过运行这个命令,就安装了 CUDA 密钥环,在以后安装与 CUDA 相关的软件包时,系统可以使用这些密钥来验证软件包的签名,从而确保软件包是来自官方源或受信任的源。

安装包管理完成后,就可以通过apt-get命令安装driver了,命令如下

sudo apt-get update && sudo apt-get -y install cuda-drivers.

通过以上步骤就完成了在aws instance上nvidia driver的安装。

部署大模型ChatGLM

大模型的部署步骤官网也给出了详细的信息,具体命令如下:

下载代码
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
安装依赖:instance上默认没有安装pip3,通过sudo apt-get install pip进行安装
pip install -r requirements.txt

执行model.py文件,启动命令: python3 ./model.py. python文件内容如下所示

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)

执行model.py文件过程中,可以看到会下载模型的参数文件,参数文件总共有7个,大概需要12G的磁盘空间,在创建instance时,保证磁盘空间是够用的。模型参数文件可看官网信息

参数下载完成后,文件执行后,会返回大模型返回的内容,具体如下所示。上面的代码中在加载模型时,AutoModel.from_pretrained()方法中,指定了device是cuda,如果安装的instance没有准备好cuda的环境,这里启动就会报错。如果想在CPU上部署,可以把device='cuda'参数取消掉即可。

外网访问大模型的UI界面

模型部署完成后,官网还提供了api部署和web ui部署。web ui的部署很简单,python3 ./web_demo.py即可启动。这里是在aws的instance上启动的,如果想在外网自己电脑上访问,需要修改web_demo.py中lunch命令参数,默认public=False,修改成True即可。UI启动成功后,会显示访问UI 地址,具体如下图所示:

在自己电脑上输入上面的public url地址,即可打开大模型的UI界面了,输入问题,大模型可以顺利回答相关的问题,如下图所示:

上面是UI的部署,官网也提供了api部署,命令很简单,执行python3 ./api.py即可通过api与大模型进行交互了。

以上就是在AWS上部署ChatGLM的过程说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Linux上部署ChatGLM-6B,您需要进行以下步骤: 1. 下载ChatGLM-6B模型文件。可以从GitHub上的官方库中下载模型文件,也可以使用命令行工具下载。例如,您可以使用以下命令从官方库中下载模型文件: ``` wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-xl-1.5B/pytorch_model.bin ``` 2. 安装PyTorch。ChatGLM-6B是基于PyTorch的,因此您需要安装PyTorch。可以使用pip命令或conda命令来安装PyTorch。例如,您可以使用以下命令安装PyTorch: ``` pip install torch ``` 3. 安装依赖项。ChatGLM-6B使用了许多Python库,您需要安装这些库。可以使用pip命令来安装这些库。例如,您可以使用以下命令安装依赖项: ``` pip install transformers numpy ``` 4. 编写Python脚本。您需要编写Python脚本来加载ChatGLM-6B模型并与之交互。可以使用以下示例代码: ``` from transformers import GPT2LMHeadModel, GPT2Tokenizer # 加载模型 tokenizer = GPT2Tokenizer.from_pretrained('gpt2-xl') model = GPT2LMHeadModel.from_pretrained('gpt2-xl') # 与模型交互 prompt = "Hello, how are you?" inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") outputs = model.generate(inputs, max_length=1024, do_sample=True, temperature=0.7) text = tokenizer.decode(outputs[0], skip_special_tokens=True) print(text) ``` 更多示例代码可以在GitHub上的官方库中找到。 5. 运行Python脚本。可以使用以下命令运行Python脚本: ``` python your_script.py ``` 然后您就可以与ChatGLM-6B模型进行交互了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值