导读
在当今的人工智能时代,大型AI模型已成为取得人工智能应用程序的要害。然而,这些微小的模型须要宏大的计算资源和存储空间,因而搭建这些模型并对它们进行交互须要弱小的计算能力,这通常须要应用云计算服务。从云产品性能上来看,GPU云主机是最适宜的工具之一,对于业务方或者集体开发者来讲,应用GPU云主机搭建AI大语言模型有以下劣势:
•高性能计算:GPU云主机提供了高性能GPU处理器,减速模型的训练和推理;
•高性价比:灵便资源管理、可扩展性、弹性伸缩等云计算劣势,依据业务或集体训练的须要,疾速调整计算资源,满足模型的训练和部署需要;
•开放性:云计算的开放性让用户更容易进行资源的共享和合作,为AI模型的钻研和利用提供了更宽泛的单干机会;
•丰盛的API和SDK:云计算厂商提供了丰盛的API和SDK,使得用户可能轻松地接入云平台的各种服务和性能,进行定制化开发和集成。
在本文中,咱们将以chatglm-6b为例具体介绍GPU云主机搭建AI大语言模型的过程,并应用Flask构建前端界面与该模型进行对话。
整个流程也比较简单:配置GPU云主机 → 搭建Jupyterlab开发环境 → 装置ChatGLM → 用Flask输入模型API
一、Start:配置GPU云主机
GPU 云主机(GPU Cloud Virtual Machine )是提供 GPU 算力的弹性计算服务,具备超强的并行计算能力,在深度学习、科学计算、图形图像解决、视频编解码等场景被宽泛应用。GPU驱动,提供大量的GPU内存和强悍的计算性能,非常适合运行深度学习应用程序。
绝对于实体卡,一张售价个别都是几万左右,而GPU云主机费用门槛很低,按时计费,一小时才十几元,能够依据本人的需要调配。
•本次选取的是P40卡: https://www.jdcloud.com/cn/calculator/calHost
•零碎环境:Ubuntu 20.04 64位
二、搭建Jupyterlab开发环境
下载Anaconda包须要在终端里执行以下命令:
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
接下来进行环境变量设置
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
之后,在本地浏览器输出"服务器ip:端口号"拜访即可:
也能够装置汉化软件:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab-language-pack-zh-CN
三、重点来了:开始装置ChatGLM语言模型
https://huggingface.co/THUDM/chatglm-6b
ChatGLM-6B 是一个开源的、反对中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具备 62 亿参数。联合模型量化技术,用户能够在生产级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 应用了和 ChatGLM 雷同的技术,针对中文问答和对话进行了优化。通过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 曾经能生成相当合乎人类偏好的答复。
先装置语言依赖
pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels
而后在jupyter运行代码
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下载
最终下载完后,再次运行,提醒
这里须要装置显卡驱动同时还要装置nvidia-cuda-toolkit
NVIDIA CUDA Toolkit 提供了一个开发环境,用于创立高性能 GPU 减速应用程序。
apt install nvidia-cuda-toolkit
再次运行,曾经ok了,呈现模型回复内容
这里在命令行输出nvidia-smi 也看下显卡类型:
四、用Flask输入模型API
app.py的代码如下:
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
客户端,开发者能够通过API来获取数据:
五、前端成果:问问五一去哪玩!
你能够自定义UI成果,比方胡老师用5分钟搞定的Demo——