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

导读

在当今的人工智能时代,大型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位

保姆级教程:用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包需要在终端里执行以下命令:

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

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

接下来进行环境变量设置

cd /root/anaconda3/bin
vim ~/.bashrc

在.bashrc下添加以下内容:#Anaconda
export PATH="/root/anaconda3/bin:$PATH"

然后退出编辑

source ~/.bashrc


conda 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

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

之后,在本地浏览器输入"服务器ip:端口号"访问即可:

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

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

也可以安装汉化软件:

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

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

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

先安装语言依赖

pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels

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

然后在jupyter运行代码

from transformers import AutoTokenizer, AutoModel
tokenizer = 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下载

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

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

最终下载完后,再次运行,提示

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

这里需要安装显卡驱动同时还要安装nvidia-cuda-toolkit

NVIDIA CUDA Toolkit 提供了一个开发环境,用于创建高性能 GPU 加速应用程序。

apt install nvidia-cuda-toolkit

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

再次运行,已经ok了,出现模型回复内容

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

这里在命令行输入nvidia-smi 也看下显卡类型:

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

四、用Flask输出模型API

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

app.py的代码如下:

from gevent import pywsgi
from flask import Flask
from flask_restful import Resource, Api, reqparse
from transformers import AutoTokenizer, AutoModel
from flask_cors import CORS

app = 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

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

客户端,开发者可以通过API来获取数据:

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

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

你可以自定义UI效果,比如胡老师用5分钟搞定的Demo——

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

原文链接:https://www.cnblogs.com/jingdongkeji/p/17358091.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • keras API的使用,神经网络层,优化器,损失函数,查看模型层数,compile和fit训练

    layers介绍     Flatten和Dense介绍     优化器       损失函数     compile用法       第二个是onehot编码     模型训练 model.fit      两种创建模型的方法 from tensorflow.python.keras.preprocessing.image import load_img,…

    2023年4月6日
    00
  • 运行caffe自带的mnist实例教程

    运行caffe自带的mnist实例教程 本文结合几篇博文总结下来的,附上其中一篇原博文链接以供参考:http://blog.sina.com.cn/s/blog_168effc7e0102xjr1.html   1、先进入caffe文件目录,(指令:cd ./caffe),再用data/mnist下的get_mnist.sh下載MNIST数据集,代码如下: …

    2023年4月5日
    00
  • FMT 与 子集(逆)卷积

    本文参考了 Dance of Faith 大佬的博客 我们定义集合并卷积 \[h_{S} = \sum_{L \subseteq S}^{} \sum_{R \subseteq S}^{} [L \cup R = S] f_{L} * g_{R} \] 最暴力的时候只能 \(O(4^n)\) 完成,进行 一些优化 可以在 \(O(3^n)\) 内完成,当然我…

    卷积神经网络 2023年4月8日
    00
  • TensorFlow在windows10上的安装与使用(一)

    随着近两年tensorflow越来越火,在一台新win10系统上装tensorflow并记录安装过程。华硕最近的 Geforce 940mx的机子。 TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(t…

    2023年4月8日
    00
  • 我的卷积神经网络学习

    https://www.zhihu.com/question/39022858   CNN原理 CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经…

    2023年4月7日
    00
  • 计算卷积神经网络中特征图大小的公式

    最近复习了一下卷积神经网络,好久没看都搞忘了。 计算特征图的公式如下:    其中n表示原来图像的大小,p表示padding的大小,f表示filter的大小,s表示stride,计算完成之后向下取整,就可以了。这里记录一下这个公式,以免自己搞忘了。同时,还有一个容易搞忘的地方是,在图像的卷积当中,一组filter的channel数量一定和图像的channel…

    2023年4月6日
    00
  • 线性卷积与圆周卷积

      转载自:       http://blog.sina.com.cn/s/blog_892508d5010120dn.html      前两天看了下线性卷积和圆周卷积,并对他们之间的关系作出验证。。     线性卷积与圆周卷积     离散线性卷积的定义:设长度为N1的序列x(n)和长度为N2的序列h(n)进行线性卷积,得到长度为N1+N2-1的y(n…

    2023年4月8日
    00
  • 深度学习者的入门福利-Keras深度学习笔记

    Keras深度学习笔记 最近本人在github上发现一个不错的资源,是利用keras来学习深度学习的笔记,笔记内容充实,数据完善,本人亲自实操了里面的所有例子,深感收获颇丰,今天特意推荐给大家,希望能给大家带来帮助。文末有彩蛋哦 前提说明     本资源作者:ErhWen Kuo     本篇微文编辑:自然语言处理遇上深度学习    如需转载请联系本公众号小…

    2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部