写点什么

搭个 ChatGPT 算法模型,离 Java 程序员有多远?

  • 2024-03-06
    北京
  • 本文字数:14530 字

    阅读完需:约 48 分钟


OpenAI 越来越火,结合着 OpenAI 的应用也越来也多,像是文生文、文生图、多模块的图转代码,都是非常不错的提效利器。但作为 Java 程序员始终觉得还差那么一点,编码习惯了,看到这些东西我们想上手试试,能不能自己走一遍训练和使用。


当我开始往算法模型训练里踏进一脚👣,漏个门缝检索点相关学习资料和案例代码,发现这个世界太庞大了。早在 4 年前,GPT-2 就已经发布了 openai 开源代码 https://github.com/openai/gpt-2也就是说我们就可以拿 GPT-2 的开源代码训练一个模型,哪怕是训练出个傻子,也应该比“xxx,我在,你说。”要更智能一些🤔。


接着检索我发现了,早在 2 年前有人已经基于 GPT-2 训练一版 GPT2 for Chinese chitchat/用于中文闲聊的 GPT2 模型。开源代码:https://github.com/yangjianxin1/GPT2-chitchat


基于这样的资料说干就干,看一看山⛰的那一边有多绚烂!

一、调研技术

不知道在做的兄弟们👬🏻你们激动不,看到这我是挺开心😄。这不是我想要的 demo 模型吗。把它给训练出来,也就能满足我对 ChatGPT 的深入了解了,并且基于我想做的任何类数据训练得到一个个小模型部署,也是可以帮助我来完成一些事情的。如;你把公司的一些文档数据进行训练,得到一份可以搜索检索就能获取相关数据的 ChatGPT 不挺爽吗?


越是检索越是开心,离我的目标也越来越近了。但作为一个量化算法训练的小白,其实我还是希望能找到一份 Java 的模型训练代码,这可以让我操作起来更加顺畅。没错,我找到了,也是 3 年前就有的一份资料;https://github.com/SimiaCryptus/tf-gpt-2 这是一个基于 Tensorflow 的 GPT-2 文本模型的 Java 库。—— 别着急,这个时候我也不知道 Tensorflow 是啥。



这还说啥,这有 pom 配置,还有代码案例。引入一下就能跑,上车🚗吧!



好家伙,跑起代码才知道。这货上来就下了 1 个多 G 的 pb 模型数据,之后有报错 Mac M1 兼容性问题。折腾一大堆,最后又报错;Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.2 AVX AVX2 FMA —— 要是你咋整,你再坚持坚持,还是放弃!

二、都是知识

本来以为 ChatGPT 嘛、Python 嘛、跑个数据模型吗!这能几道墙阻挡我的去路,不就是换个工具写代码吗?但当我逐步进入后发现,这距离好像比想象的大的多!


想玩 ChatGpt 玩到模型训练,得先进入 Gpt-2 开源代码。基于想自己训练一个小模型,需要使用 TensorFlow 创建生产级机器学习模型。而 TensorFlow 需要在本地安装一系列 Python 工具并下载模型和数据样本。而这里就像安装 JDK 一样,是傻子都会和傻子都不会。Mac M1 天生骄傲,安装了 2 天,才测试出可以使用的模型训练环境。之后开始跑第一个模型,线性回归。再了解什么是线性回归。



这是 TensorFlow 的官网,用于创建生产级机器学习模型。也就是说想要完成一个简单的 ChatGPT 得从这开始。—— 死鬼,不要在想了,你总是得从 HelloWorld 开始。


但在检索的过程中,我又找到了一个名叫 huggingface.co 的网站;Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,他们本来打算创业做聊天机器人,然后在 Github 上开源了一个 Transformers 库。虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超 100,000 个预训练模型,10,000 个数据集,变成了机器学习界的 Github。


在 Hugging face 社区中可以找到相关的模型训练资源以及提供好的模型使用接口,比如像中文分词、聊天对话、图片分析也都有,当然也包括一些公司训练出来的 gpt-2 模型。



在 Models 中提供了大量的算法模型,你可以把自己需要的模型点个 like 关注起来。同时这些模型还提供好了调用接口,例如【api key 可以在网站申请】;


curl https://api-inference.huggingface.co/models/microsoft/CodeGPT-small-java \  -X POST \  -d '{"inputs": "Can you please let us know more details about your "}' \  -H "Authorization: Bearer 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"
复制代码


你可以通过接口对模型进行访问,当然这些模型训练的数据并不是很大,只是作为测试使用。不会像 ChatGPT 那么智能的返回你所检索的信息。不过这至少可以让你了解和体验不同模型所带来的数据返回是什么样。

三、环境配置

一口不能呲个胖子,为了更好的为以后能训练出一个自己可以玩的小体量的 ChatGPT 模型,总得要从头开始。



这里的目标是带着搭建先在本地搭建起一个 TensorFlow 的基础环境,来跑个 Python 的简单算法模型。为此我们需要进行一下环境配置。2 台机器已验证没问题,分别是 Mac Intel/M1,机器配置 4 核 16G。

1. Python 环境

  • 下载 Python:https://www.python.org/downloads/macos/ 3.6 版本以上。一般 Mac 上会带一个 2.x 版本的 Python,这个版本不够用,需要升级下。

  • 配置 Python:

  • 安装 Python 完成后,搜索地址 which python3

  • 打开 vi ~/.bash_profile 文件,写入环境配置 alias python="/Library/Frameworks/Python.framework/Versions/3.10/bin/python3"

  • 生效配置 source .bash_profile

  • VSCode 中开启的 terminal 里,输入:which python 返回的是/usr/local/bin/python,版本是 python2。所以需要改成 python3.7

  • 操作步骤:

  • 快捷键(cmd+,) 打开 settings

  • 然后搜索“terminal.integrated.env.osx”

  • 点击 编辑"settings.json"文件,最后一个"}"之前,添加:


    "terminal.integrated.env.osx": {      "PATH": ""    }
复制代码

2. pip 指令安装

  • 安装 pip:以下需要用到 pip 指令,如果没有需要安装 curl https://bootstrap.pypa.io/get-pip.py | python3

3. Tensorflow

官网安装指导:https://www.tensorflow.org/install?hl=zh-cn



但这里有个问题,没有说明 Mac M1 怎么安装。如果按照这个代码在 M1 的机器是安装不上的。所以在的一顿折腾后找到了对应的按照指令。步骤如下;


  • 下载代码【可选】:https://github.com/mycname/TensorFlow-Tutorial - 用于后续测试模型训练代码

  • 配置 Visual Studio【你也可以是其他的】,打开以后需要安装 python 插件以及配置登录 github,这样会更利于后续的操作。之后在 Visual Studio 的终端下,查看下 python -V 的版本,如果不是最新安装的 3.x 版本,可以刷新下配置 source .bash_profile

  • Mac 电脑安装 Tensorflow:python3 -m pip install tensorflow-macos —— 安装比较耗时,需要等待。如果失败了就继续执行这条指令。



  • 安装后测试:python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))" —— 只要能输出结果为即可。

四、跑个模型

可能很多伙伴不知道什么是算法模型,简单描述比如;为啥给你推荐你喜欢看的美女,为啥给你发送一个键盘购物券、为啥看你小子有钱就总给你推荐豪车。这都是根据你身上的标签进行模型训练的结果,在众多的人群中找到目标用户。另外像我在腾讯做量化算法的小伙伴说,决策树就是一种简单的算法模型。


代码详见https://github.com/mycname/TensorFlow-Tutorial



测试结果


fuzhengwei@MacBook-Pro TensorFlow-Tutorial % /usr/local/bin/python3 /Users/fuzhengwei/1024/github/TensorFlow-Tutorial/codes/linear_regression.pyEpoch 1/5001/1 [==============================] - 0s 3ms/step - loss: 0.0150Epoch 500/5001/1 [==============================] - 0s 2ms/step - loss: 0.01501/1 [==============================] - 0s 76ms/step[[-0.19686729]]1/1 [==============================] - 0s 29ms/step[[-1.0953956]]1/1 [==============================] - 0s 29ms/step[[-1.9939239]]1/1 [==============================] - 0s 31ms/step[[-2.8924522]]1/1 [==============================] - 0s 30ms/step[[-3.7909803]]1/1 [==============================] - 0s 30ms/step[[-8.283622]]
复制代码



  • 这是一个训练了 500 次的线性回归预测模型;

  • 线性回归可以预测房价、预测股票、预测天气和评估经济。


不过到这还啥也不是!离 ChatGPT 十万八千里!

五、傻狗机器聊天

在基于前文的学习基础之上,以 OpenAI 开源的 GPT-2 和相关的 GPT2-chitchat 模型训练代码,部署了这个会喷人的傻狗机器人。但由于训练数据的问题,这个聊天机器人对起话来,总感觉很变态。—— 不过不影响我们做算法模型训练的学习。


六、基础配置环境

OpenAI GPT2 的模型训练和服务使用,需要用到 Python、TensorFlow 机器学习等相关配置,并且这些环境间有些版本依赖。所以为了顺利调试尽可能和我保持一样的版本。以下是所需的基本环境、代码和数据。推荐购买京东云


1 环境依赖

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install gcc -y
yum -y install libffi-devel
make
make altinstall
复制代码

2. openssl + 结合 3 使用

# 1. 卸载openssl
whereis openssl |xargs rm -frv
# 2. 官网下载openssl编译安装
wget http://www.openssl.org/source/openssl-1.1.1.tar.gztar zxf openssl-1.1.1.tar.gzcd openssl-1.1.1./config --prefix=/usr/local/openssl shared zlibmake && make install
# 3. 设置环境变量 LD_LIBRARY_PATH
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> /etc/profilesource /etc/profile
# 4. 卸载重新编译安装python3
whereis python3 |xargs rm -frvrm -rf /usr/local/bin/python3 /usr/local/bin/pip3mkdir /usr/local/python3./configure --prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/local/opensslmake -j8 && make install
复制代码

3. Python 3.10

cd ~
# 1.下载Python安装包wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz
# 2.将安装包移动到/usr/local文件夹下mv Python-3.10.8.tgz /usr/local/
# 3.在local目录下创建Python3目录mkdir /usr/local/python3
# 4.进入的Python安装包压缩包所在的目录cd /usr/local/
# 5.解压安装包tar -xvf Python-3.10.8.tgz
# 6.进入解压后的目录cd /usr/local/Python-3.10.8/
# 7.配置安装目录./configure --prefix=/usr/local/python3
# 8.编译源码make
# 9.执行源码安装make install
# 10.创建软连接ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# 11. 测试python3 -V
复制代码

4. 安装 pip3

cd ~
# 1.下载wget https://bootstrap.pypa.io/get-pip.py
# 2.安装;注意咱们安装了 python3 所以是 pyhton3 get-pip.pypython3 get-pip.py # 3.查找pip安装路径find / -name pip # 4.将pip添加到系统命令ln -s /usr/local/python/bin/pip /usr/bin/pip # 5.测试pip -V # 6.更换源,如果不更换那么使用 pip 下载软件会很慢pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip config set install.trusted-host mirrors.aliyun.compip config list # pip国内镜像源:
# 阿里云 http://mirrors.aliyun.com/pypi/simple/# 中国科技大学  https://pypi.mirrors.ustc.edu.cn/simple/# 豆瓣 http://pypi.douban.com/simple# Python官方 https://pypi.python.org/simple/# v2ex http://pypi.v2ex.com/simple/# 中国科学院  http://pypi.mirrors.opencas.cn/simple/# 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
复制代码

5. 安装 git

cd ~
# 1.安装前首先得安装依赖环境yum install -y perl-devel
# 2.下载源码包到 CentOS 服务器后进行解压wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
tar -zxf git-2.9.5.tar.gz
cd git-2.9.5
# 3.执行如下命令进行编译安装
./configure --prefix=/usr/local/git
make && make install
# 4.添加到系统环境变量vim ~/.bashrc
export PATH="/usr/local/git/bin:$PATH"
# 5.使配置生效source ~/.bashrc
# 6.测试git version
# 7. 使用
git clone https://github.com/yangjianxin1/GPT2-chitchat
复制代码

6. 安装宝塔

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh 12f2c1d72
复制代码


  1. 安装后登录宝塔提示的地址,默认它会使用 8888 端口,因此你需要在服务器上开启 8888 端口访问权限。

  2. 宝塔的安装是为了在服务端部署一个网页版聊天界面,使用到了 Nginx 服务。这里用宝塔操作更加容易。

七、模型运行环境

模型训练需要用到 transformers 机器学习服务,以及 pytorch、sklearn 等组件;以下内容需要分别安装;


transformers==4.4.2pytorch==1.7.0sklearntqdmnumpyscipy==1.2.1
复制代码

1. transformers

pip install transformers==4.4.2
复制代码

2. pytorch

pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
复制代码


  • 这个 torch 版本+cpu 与 torchvision 需要匹配。

3. 其他安装

剩余的按照使用指令 pip install 就可以,另外在运行 GTP2-chitchat 时,如果提示缺少了某些组件,直接使用 pip 按照即可。

八、聊天页面配置

这里先把给你准备好的 websocket 页面代码,通过宝塔创建站点后部署起来。代码:https://github.com/yangjianxin1/GPT2-chitchat


之后通过打开你的宝塔地址,创建站点和上传 Web 代码。



注意:目前的这份代码中访问 websocket 的配置在 index.js 中,你需要修改成你的服务器地址。


if(!window.WebSocket){  alert("您的浏览器不支持WebSocket协议!推荐使用谷歌浏览器进行测试。");  return;}socket = new WebSocket("ws://120.48.169.252:7397");
复制代码

九、模型训练部署

1. 下载代码

cd /home
git clone https://github.com/yangjianxin1/GPT2-chitchat
复制代码


你需要修改下 interact.py 代码,变更这里有 Websocket 的 IP 和端口配置;


async def start_server():    try:        async with websockets.serve(server, "192.168.0.4", 7397):            print("Starting server at ws://localhost:7397")            await asyncio.Future()  # run forever    except OSError as e:        print(f"Error starting server: {e}")    except Exception as e:        print(f"Unexpected error: {e}")
复制代码

2. 上传模型

下载模型:https://pan.baidu.com/s/1iEu_-Avy-JTRsO4aJNiRiA#list/path=%2F - 密码:ju6m


上传模型:这里你需要在本机安装一个 SFTP 工具,或者使用 IntelliJ IDEA 提供的工具进行链接。链接后就可以把解压的模型上传到 /home/GPT2-chitchat/model 下。


async def start_server():    try:        async with websockets.serve(server, "192.168.0.4", 7397):            print("Starting server at ws://localhost:7397")            await asyncio.Future()  # run forever    except OSError as e:        print(f"Error starting server: {e}")    except Exception as e:        print(f"Unexpected error: {e}")
复制代码


修改这部分代码的 IP 和端口,以及在云服务上开启 7397 的访问权限。另外为了安全起见,可以在云服务的防火墙 IP 来源中授权,只有你当前的台机器才可以链接到 websocket 上。

3. 启动服务

这里通过 mac nuoshell 连接工具,进行模型启动;模型路径:/home/GPT2-chitchat/model/model_epoch40_50w


python3 interact.py --no_cuda --model_path /home/GPT2-chitchat/model/model_epoch40_50w
复制代码



  • 启动后就可以把你的 websocket 页面打开了,它会自动的链接到这个 websocket 服务上。

  • 如果你还需要 Socket 或者命令行的服务,也可以修改 interact.py 代码进行处理。


虽然能运行出一个傻狗,但仍然只是开胃小菜,接下来我们要玩点大的。ChatGLM-6B


ChatGLM-6B 是清华开源的一个小型对话模型,让大家可以在自己部署起来跑一跑看看效果。但对于本身不是从事此类工作的其他研发伙伴来说,部署这个东西多半都会卡在环境上。

十、模型简述

ChatGLM 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B 中注入了代码预训练,通过有监督微调(Supervised Fine-Tuning)等技术实现人类意图对齐。2022 年 11 月,斯坦福大学大模型中心对全球 30 个主流大模型进行了全方位的评测,GLM-130B 是亚洲唯一入选的大模型👍🏻



同时 ChatGLM 团队为与社区一起更好地推动大模型技术的发展,清华开源了 ChatGLM-6B 模型。它是一个初具中文问答和对话功能的小型模型,可以让大家即使在本地和一些小型的服务器上就可以部署体验。


十一、基础环境

1. 服务配置

ChatGLM-6B 虽然已经是很温馨提供的,能最佳支持对话的最小模型了,但实际部署的时候仍需要一个不小的服务器32G内存配置或者有较好的16G NVIDIA显卡。可能就怕大家部署起来,所以官网上也提供了更低成本的部署方案,INT8 和 INT4 数据模型。整体所需空间如下;



自己也是在 Mac M1轻量云主机,还有一个专门用于测试AIGC的服务器上,都做了测试验证,这样也能避免大家走弯路。就像我在一款 8G 内存的轻量云主机上,部署 INT4 模型,报错如下;



😂 所以别买一些配置不佳的机器,否则你根本跑不起来,还浪费钱。

2. 工程代码


源码https://github.com/THUDM/ChatGLM-6B - 无论你使用哪种部署方式,都需要把代码下载到对应的服务上。

3. 算法模型

在 ChatGLM-6B 中有一段代码是配置模型地址的,除了说明的 Mac 电脑,理论上来说它可以自动下载。但这些模型太大了,所以最好是提前下载到本地使用。


// web_demo2.py 部分代码tokenizer = AutoTokenizer.from_pretrained("/Users/xfg/develop/github/chatglm-6b", trust_remote_code=True)model = AutoModel.from_pretrained("/Users/xfg/develop/github/chatglm-6b", trust_remote_code=True).half().cuda()
复制代码



官网https://huggingface.co/ - 提供模型下载,按照你的需要下载对应的测试模型到服务器上;



镜像:https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2F&mode=list - 镜像的下载速度比较快。注意:镜像中没有基础的内容,需要从官网下载。


4. 软件版本


5. 软件卸载

# 1. 卸载 python3/python 注意先看下版本 python -V 确认下名称是 python 还是 python3 以及 pipwhereis python3 |xargs rm -frvrm -rf /usr/local/bin/python3 /usr/local/bin/pip3# 2. 卸载 openssl - 如果安装了老版本的python,又安装新的,可能需要卸载 ssl 重新安装whereis openssl |xargs rm -frv
复制代码


  • 如果你的电脑或者服务器之前已经安装了 python 那么可以先把它卸载掉。

十二、环境配置 - 服务器版本

以能运行起 ChatGLM-6B 只需要以下 5 个步骤;



只要你能按照顺序,正确的执行这些步骤,就可以运行起 ChatGLM-6B 模型,接下来就跟着的步骤执行吧。注意如果你需要绘图能力,可以在本文学习后。按照官网介绍,替换下模型重新启动即可;https://github.com/THUDM/ChatGLM-6B - [2023/05/17] 发布 VisualGLM-6B 一个支持图像理解的多模态对话语言模型。

步骤 1:环境安装

1. openssl

# 1. 卸载openssl
whereis openssl |xargs rm -frv
# 2. 官网下载openssl编译安装
wget http://www.openssl.org/source/openssl-1.1.1.tar.gztar zxf openssl-1.1.1.tar.gzcd openssl-1.1.1./config --prefix=/usr/local/openssl shared zlibmake && make install
# 3. 设置环境变量 LD_LIBRARY_PATH
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> /etc/profilesource /etc/profile
# 4. 卸载重新编译安装python3
whereis python3 |xargs rm -frvrm -rf /usr/local/bin/python3 /usr/local/bin/pip3mkdir /usr/local/python3./configure --prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/local/opensslmake -j8 && make install
复制代码

2. Python 3.10

cd ~
# 1.下载Python安装包wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz
# 2.将安装包移动到/usr/local文件夹下mv Python-3.10.8.tgz /usr/local/
# 3.在local目录下创建Python3目录mkdir /usr/local/python3
# 4.进入的Python安装包压缩包所在的目录cd /usr/local/
# 5.解压安装包tar -xvf Python-3.10.8.tgz
# 6.进入解压后的目录cd /usr/local/Python-3.10.8/
# 7.配置安装目录./configure --prefix=/usr/local/python3
# 8.编译源码make
# 9.执行源码安装make install
# 10.创建软连接ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# 11. 测试python3 -V
复制代码

3. 安装 pip3

cd ~
# 1.下载wget https://bootstrap.pypa.io/get-pip.py
# 2.安装;注意咱们安装了 python3 所以是 pyhton3 get-pip.pypython3 get-pip.py # 3.查找pip安装路径find / -name pip # 4.将pip添加到系统命令ln -s /usr/local/python/bin/pip /usr/bin/pip # 5.测试pip -V # 6.更换源,如果不更换那么使用 pip 下载软件会很慢pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip config set install.trusted-host mirrors.aliyun.compip config list # pip国内镜像源:
# 阿里云 http://mirrors.aliyun.com/pypi/simple/# 中国科技大学  https://pypi.mirrors.ustc.edu.cn/simple/# 豆瓣 http://pypi.douban.com/simple# Python官方 https://pypi.python.org/simple/# v2ex http://pypi.v2ex.com/simple/# 中国科学院  http://pypi.mirrors.opencas.cn/simple/# 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
复制代码

4. 安装 git

cd ~
# 1.安装前首先得安装依赖环境yum install -y perl-devel
# 2.下载源码包到 CentOS 服务器后进行解压wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
tar -zxf git-2.9.5.tar.gz
cd git-2.9.5
# 3.执行如下命令进行编译安装
./configure --prefix=/usr/local/git
make && make install
# 4.添加到系统环境变量vim ~/.bashrc
export PATH="/usr/local/git/bin:$PATH"
# 5.使配置生效source ~/.bashrc
# 6.测试git version
复制代码

步骤 2:代码下载

在 Linux 服务器,可以直接在 cd ~ 目录下执行;git clone git://github.com/THUDM/ChatGLM-6B.git

步骤 3:模型下载

可以从官网:https://huggingface.co/THUDM/chatglm-6b/tree/main 或者清华的镜像仓库下载 https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/ - 如果你需要其他模型,可以在目录:基础环境中找到。


本地直接环境直接下载,网络环境可以通过 SFTP - Termius 传到一个 ChatGLM-6B/data 目录下。或者直接通过 wget http://... 这样的命令方式直接下载模型。会需要较长的耗时

步骤 4:安装配置

# sudo su - 切换到root 或者通过 sudo 执行。镜像可以换一换,看看哪个快用哪个。sudo pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
# 执行成功案例 - 过程较长 Looking in indexes: https://mirror.baidu.com/pypi/simpleCollecting protobuf Downloading https://mirror.baidu.com/pypi/packages/06/38/e72c556c25aaaaafca75018d2d0ebc50c5ab80983dd4def086624fba43f2/protobuf-4.23.0-cp37-abi3-manylinux2014_x86_64.whl (304 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 304.5/304.5 KB 19.4 MB/s eta 0:00:00Collecting transformers==4.27.1 Downloading https://mirror.baidu.com/pypi/packages/6d/9b/2f536f9e73390209e0b27b74691355dac494b7ec8154f3012fdc6debbae7/transformers-4.27.1-py3-none-any.whl (6.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.7/6.7 MB 10.4 MB/s eta 0:00:00
复制代码


  • 对于本地的网络和普通的服务器,这个步骤会执行较长的时间。如果执行失败了,在此继续执行就可以,直至得到上天的眷顾,你成功了!!!

步骤 5:启动执行

# 切换到 ChatGLM-6B 工程目录,执行python3 -m streamlit run ./web_demo2.py --server.port 7397 --server.address 0.0.0.0
# 执行结果 - 成功后有这样的效果Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.

You can now view your Streamlit app in your browser.
URL: http://0.0.0.0:7397
Explicitly passing a `revision` is encouraged when loading a model with custom code to ensure no malicious code has been contributed in a newer revision.Explicitly passing a `revision` is encouraged when loading a configuration with custom code to ensure no malicious code has been contributed in a newer revision.Explicitly passing a `revision` is encouraged when loading a model with custom code to ensure no malicious code has been contributed in a newer revision.Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [01:30<00:00, 11.35s/it]
复制代码


  • 你可以指定端口,并对端口开放访问权限。之后就可以反问地址;http://你的服务器地址:端口

  • 初次使用的时候,会进行模型的启动,也就是这个阶段,很多配置不佳的服务器是没法启动成功的。

十三、环境配置 - AIGC 版本

这是一个钞能力版本,你只需要花钱到位,体验个几小时,那么这个是最节省成本的。你可以通过我的邀请链接进入,这样会得到一些使用配额,可能不需要花钱。

1. 注册服务

地址:https://www.lanrui-ai.com/register?invitation_code=3931177594


后台:https://www.lanrui-ai.com/console/workspace

2. 选择服务


  • ¥1.90/时,不确定一直有。同配置的 4.9 元每小时。从你购买启动开始计费,安装环境较好时,整个过程需要大概需要 20 元左右,能体验到。

3. 配置环境


  • 创建服务后,运行镜像选择;pytorch -> cuda 最后这个版本。

  • 预训练模型选择 chatglm-6b 这样你也不需要自己下载模型数据了。

4. 控制平台



  • 从工作空间进入到控制台,你可以分别从 data 看到 ChatGLM-6B 的代码 在imported_models 看到预训练模型 chatglm-6b



  • 检查工程 web_demo2.py 中加载模型的路径是否正确,如果不对需要修改。

  • 如果你的服务中,没有默认下载或者需要重新下载。那么你可以安装 git 指令,下载代码到 data 仓库即可。

5. 初始配置


user@lsp-ws:~/data$ sudo suroot@lsp-ws:/home/user/data# cd ChatGLM-6B/root@lsp-ws:/home/user/data/ChatGLM-6B# pip install -r requirements.txt
复制代码


  • 这个安装速度会非常快,几乎不需要太久的等待。

6. 启动服务


python3 -m streamlit run ./web_demo2.py --server.port 27777 --server.address 0.0.0.0
复制代码


  • 另外 ChatGLM-6B 还提供了命令行测试 python cli_demo.py 和 API 启动 python api.py


curl -X POST "http://127.0.0.1:8000" \     -H 'Content-Type: application/json' \     -d '{"prompt": "你好", "history": []}'
复制代码

7. 访问服务


  • 回到控制台复制调试地址,即可访问;



  • 如果你报错了,那么在控制台执行安装即可。

  • control + c 停止服务,执行 pip install icetk

  • 再次执行步骤 6 启动服务,现在在访问。python3 -m streamlit run ./web_demo2.py --server.port 27777 --server.address 0.0.0.0



  • 初次运行,它会加载模型。在控制台可以看到加载的模型进度,大概几分钟就加载好了。



  • 看到控制台的模型加载完毕后,再次点击下发送 好了,到你也可以测试下发送其他的内容,进行体验。

十四、环境配置 - Docker 版本

在官网的地址中还看到了一个 Docker 的配置方式,我把它引入过来,方便有需要的伙伴进行操作。原文地址:https://www.luckzym.com/posts/e95da08c/

1. 编写DockerFile文件

# 设置基础映像FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
# 定义构建参数# 例如ARG USER=test为USER变量设置默认值"test"。ARG USER=testARG PASSWORD=${USER}123$
# 处理讨厌的 Python 3 编码问题ENV LANG C.UTF-8ENV DEBIAN_FRONTEND noninteractiveENV MPLLOCALFREETYPE 1
# 更新软件包列表并安装软件属性通用包RUN apt-get update && apt-get install -y software-properties-common
# 添加Python ppa,以便后续安装Python版本RUN add-apt-repository ppa:deadsnakes/ppa
# 安装Ubuntu的常用软件包,包括wget、vim、curl、zip、unzip等RUN apt-get update && apt-get install -y \ build-essential \ git \ wget \ vim \ curl \ zip \ zlib1g-dev \ unzip \ pkg-config \ libgl-dev \ libblas-dev \ liblapack-dev \ python3-tk \ python3-wheel \ graphviz \ libhdf5-dev \ python3.9 \ python3.9-dev \ python3.9-distutils \ openssh-server \ swig \ apt-transport-https \ lsb-release \ libpng-dev \ ca-certificates &&\ apt-get clean &&\ ln -s /usr/bin/python3.9 /usr/local/bin/python &&\ ln -s /usr/bin/python3.9 /usr/local/bin/python3 &&\ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py &&\ python3 get-pip.py &&\ rm get-pip.py &&\ # 清理APT缓存以减小Docker镜像大小 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# 设置时区ENV TZ=Asia/SeoulRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 为应用程序创建一个用户RUN useradd --create-home --shell /bin/bash --groups sudo ${USER}RUN echo ${USER}:${PASSWORD} | chpasswdUSER ${USER}ENV HOME /home/${USER}WORKDIR $HOME
# 安装一些Python库,例如numpy、matplotlib、scipy等RUN python3 -m pip --no-cache-dir install \ blackcellmagic\ pytest \ pytest-cov \ numpy \ matplotlib \ scipy \ pandas \ jupyter \ scikit-learn \ scikit-image \ seaborn \ graphviz \ gpustat \ h5py \ gitpython \ ptvsd \ Pillow==6.1.0 \ opencv-python
# 安装PyTorch和DataJoint等其他库# 其中torch==1.13.1表示安装版本为1.13.1的PyTorchRUN python3 -m pip --no-cache-dir install \ torch==1.13.1 \ torchvision==0.14.1 \ torchaudio==0.13.1 \ 'jupyterlab>=2'
RUN python3 -m pip --no-cache-dir install datajoint==0.12.9
# 设置环境变量LD_LIBRARY_PATH,以便支持性能分析库ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:${LD_LIBRARY_PATH}
# 启动ssh服务器,打开22号端口USER root
RUN mkdir /var/run/sshdEXPOSE 22CMD ["/usr/sbin/sshd", "-D"]
复制代码

2. 编写Docker-Compose文件

version: "3.9"services:  nvidia:    build: .        # 告诉Docker Compose在当前目录中查找Dockerfile并构建镜像    runtime: nvidia # 启用nvidia-container-runtime作为Docker容器的参数,从而实现对GPU的支持    environment:      - NVIDIA_VISIBLE_DEVICES=all  # 设置所有可用的GPU设备    ports:      - "22:22"         # port for ssh      - "80:80"         # port for Web      - "8000:8000"     # port for API    tty: true           # 创建一个伪终端以保持容器运行状态
复制代码

3. 搭建步骤

3.1 准备 Docker 容器 &AI 模型文件

  • 修改Docker Compose文件,添加volumes路径


version: "3.9"services:  nvidia:    build: .        # 告诉Docker Compose在当前目录中查找Dockerfile并构建镜像    runtime: nvidia # 启用nvidia-container-runtime作为Docker容器的参数,从而实现对GPU的支持    environment:      - NVIDIA_VISIBLE_DEVICES=all  # 设置所有可用的GPU设备    ports:      - "22:22"         # port for ssh      - "80:80"         # port for Web      - "8000:8000"     # port for API    tty: true           # 创建一个伪终端以保持容器运行状态    # 添加一个和宿主机连接的路径    volumes:      - ./:/data
复制代码


  • 下载对应的 AI 模块文件


Hugging Face Hub下载所需要的模型,由于我使用的显卡只有8G显存,所以直接下载了INT4量化后的模型。


AI 模型下载地址:


这里推荐使用Git工具进行拖拽对应的仓库,在拖拽前记得给Git工具安装上Git LFS


仓库存储的地方就放在我当前创建Docker Compose文件目录下,这样刚好可以利用volumes将其映射进容器中。


# Make sure you have git-lfs installed (https://git-lfs.com)git lfs installgit clone https://huggingface.co/THUDM/chatglm-6b-int4
# if you want to clone without large files – just their pointers# prepend your git clone with the following env var:GIT_LFS_SKIP_SMUDGE=1
复制代码

3.2 准备 ChatGLM-6B 并运行

  • 拉取官方ChatGLM-6B项目仓库文件


git clone https://github.com/THUDM/ChatGLM-6B.git
复制代码


仓库存储的地方依旧是当前创建Docker Compose文件目录。如果大家不希望存放在该目录下可以自行修改一下Docker Compose中的volumes映射路径。


  • 拉起该深度学习Docker容器


docker-compose up --build -d
复制代码


  • 进入容器中


# 查看刚刚启动的深度学习容器的ID号docker ps
# 进入容器内部docker exec -it xxxxxxx /bin/bash # xxxxxxx 是PS后容器的CONTAINER ID号
复制代码


  • 安装项目依赖


# cd到刚刚拖拽下来的项目仓库中
cd /data/ChatGLM-6B
# 安装项目依赖文件
pip install -r requirements.txt
复制代码


  • 修改本地 AI 模型路径


在这里我们使用官方提供的命令行 Demo 程序来做测试。


# 打开cli_demo.py文件对其进行修改VI cli_demo.py
# 修改第6、第7行的代码,将原有的模型名称修改为本地AI模型路径# 修改结果如下,其中/data/chatglm-6b-int4为你本地AI模型的路径地址tokenizer = AutoTokenizer.from_pretrained("/data/chatglm-6b-int4", trust_remote_code=True)model = AutoModel.from_pretrained("/data/chatglm-6b-int4", trust_remote_code=True).half().cuda()
复制代码


  • 运行仓库中命令行 Demo 程序:


python cli_demo.py
复制代码


不出意外,在命令执行完之后你将可以体验到清华开源的 ChatGLM-6B 自然语言模型了。

发布于: 刚刚阅读数: 6
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
搭个ChatGPT算法模型,离Java程序员有多远?_京东科技开发者_InfoQ写作社区