GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

人工智能时代,大型 AI 模型已成为获得人工智能应用程序的关键。但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务。从云产品性能上来看,GPU 云主机是最适合的工具之一,对于业务方或者个人开发者来讲,使用 GPU 云主机搭建 AI 大语言模型有以下优势:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・高性能计算:GPU 云主机提供了高性能 GPU 处理器,加速模型的训练和推理;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・高性价比:灵活资源管理、可扩展性、弹性伸缩等云计算优势,根据业务或个人训练的需要,快速调整计算资源,满足模型的训练和部署需求;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・开放性:云计算的开放性让用户更容易进行资源的共享和协作,为 AI 模型的研究和应用提供了更广泛的合作机会;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・丰富的 API 和 SDK:云计算厂商提供了丰富的 API 和 SDK,使得用户能够轻松地接入云平台的各种服务和功能,进行定制化开发和集成。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

在本文中,我们将以 chatglm-6b 为例详细介绍 GPU 云主机搭建 AI 大语言模型的过程,并使用 Flask 构建前端界面与该模型进行对话。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

整个流程也比较简单:配置 GPU 云主机 → 搭建 Jupyterlab 开发环境 → 安装 ChatGLM → 用 Flask 输出模型 API文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

一、Start:配置 GPU 云主机

GPU 云主机(GPU Cloud Virtual Machine )是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,在深度学习、科学计算、图形图像处理、视频编解码等场景被广泛使用。GPU 驱动,提供大量的 GPU 内存和强悍的计算性能,非常适合运行深度学习应用程序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

相对于实体卡,一张售价一般都是几万左右,而 GPU 云主机费用门槛很低,按时计费,一小时才十几元,可以根据自己的需求调配。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・本次选取的是 P40 卡: https://www.jdcloud.com/cn/calculator/calHost文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

・系统环境:Ubuntu 20.04 64 位文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

二、搭建 Jupyterlab 开发环境

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

下载 Anaconda 包需要在终端里执行以下命令:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

mkdir anaconda # 创建文件夹cd anaconda # 进入文件夹wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh # 下载安装包bash Anaconda3-2023.03-Linux-x86_64.sh # 安装

也可以用清华源,速度更快:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

接下来进行环境变量设置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

cd /root/anaconda3/binvim ~/.bashrc在.bashrc下添加以下内容:#Anacondaexport PATH="/root/anaconda3/bin:$PATH"然后退出编辑source ~/.bashrcconda create -n jabari python=3.8  安装python3.8版本# 创建环境jupyter lab --generate-config# 生成配置文件Writing default config to: /root/.jupyter/jupyter_lab_config.py[root@lavm-ba6po1r9fh bin]# vim /root/.jupyter/jupyter_lab_config.py # 编辑配置文件c.ServerApp.ip = '*' # 设置访问的IP地址c.ServerApp.open_browser = False  # 不自动打开浏览器c.ServerApp.port = 6888   #(自己可以自己设置端口,这里设置了6888)# ServerApp的端口号c.MappingKernelManager.root_dir = '/root/jupyter_run' # 设置Jupyter Notebook的根文件夹c.ServerApp.allow_remote_access = True # 允许远程访问c.ServerApp.password = '' # 不设置登录密码c.ServerApp.allow_origin='*' # 允许任何来源的请求c.ServerApp.password_required = False # 不需要密码c.ServerApp.token = ''# 不设置验证token

jupyter lab --allow-root # 启动 JupyterLab文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

之后,在本地浏览器输入 "服务器 ip: 端口号" 访问即可:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

也可以安装汉化软件:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab-language-pack-zh-CN
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

三、重点来了:开始安装 ChatGLM 语言模型

https://huggingface.co/THUDM/chatglm-6b文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

先安装语言依赖文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

然后在 jupyter 运行代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

from transformers import AutoTokenizer, AutoModeltokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()response, history = model.chat(tokenizer, "你好", history=[])print(response)response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)print(response)

这里会直接从 huggingface.co 下载文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

最终下载完后,再次运行,提示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

这里需要安装显卡驱动同时还要安装 nvidia-cuda-toolkit文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

NVIDIA CUDA Toolkit 提供了一个开发环境,用于创建高性能 GPU 加速应用程序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

apt install nvidia-cuda-toolkit文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

再次运行,已经 ok 了,出现模型回复内容文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

这里在命令行输入 nvidia-smi 也看下显卡类型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

四、用 Flask 输出模型 API

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

app.py 的代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

from gevent import pywsgifrom flask import Flaskfrom flask_restful import Resource, Api, reqparsefrom transformers import AutoTokenizer, AutoModelfrom flask_cors import CORSapp = Flask(__name__)CORS(app, resources={r"/api/*": {"origins": "*"}})api = Api(app)tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()parser = reqparse.RequestParser()parser.add_argument('inputs', type=str, help='Inputs for chat')parser.add_argument('history', type=str, action='append', help='Chat history')class Chat(Resource):    def post(self):        args = parser.parse_args()        inputs = args['inputs']        history = args['history'] or []        response, new_history = model.chat(tokenizer, inputs, history)        return {'response': response, 'new_history': new_history}api.add_resource(Chat, '/api/chat')if __name__ == '__main__':    server = pywsgi.WSGIServer(('0.0.0.0', 80), app)    server.serve_forever()

最后在 Terminal 里 执行 python 目录地址 /app.py文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

客户端,开发者可以通过 API 来获取数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

五、前端效果:问问五一去哪玩!

你可以自定义 UI 效果,比如胡老师用 5 分钟搞定的 Demo——文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html

GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymzj/50654.html


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发