扫码阅读
手机扫码阅读

AIGC|手把手教你进行ChatGLM模型部署实践

119 2024-03-14

本期摘要

随着人工智能技术的不断进步,大模型已成为行业关注的焦点。如何将这些强大的模型应用于实际场景,打造出真正符合需求的定制化助手,是我们迫切的需求。

本篇文章将以ChatGLM模型部署为例,试着演示如何在医疗场景下进行定制化模型部署实践,希望能为大家提供一个参考与启示。

作者

江宇豪 | 神州数码云基地

01

背景介绍

模型部署基本步骤分为模型选择、模型部署、运行,如果需要在特定的场景下定制化模型,则还需要进行数据集的选择、数据集格式转换、微调。

根据上述的步骤本教程选取如下的开源模型、数据集,来对医疗场景下进行定制化模型部署。当然模型部署对GPU要求非常高,所以本教程将使用AutoDL提供的服务器资源。

  • 地址:https://www.autodl.com/home

ChatGLM-6B(模型):清华开源的、支持中英双语对话的语言模型,具有62亿参数。

  • 地址:https://github.com/THUDM/ChatGLM-6B

HuatuoGPT-sft-data-v1(数据集):医疗数据集,拥有333M庞大数据。

  • 地址:https://huggingface.co/datasets/FreedomIntelligence/HuatuoGPT-sft-data-v1

ChatGLM Efficient Tuning(微调):针对ChatGLM-6B进行微调,集成多个微调框架。

  • 地址:https://github.com/hiyouga/ChatGLM-Efficient-Tuning/blob/main/README_zh.md

02

创建服务器资源

进入AutoDL官网申请一台服务器资源,可以按如下图步骤操作:

进入后选择社区镜像,在红框处输入:

WhaleOps/dolphinschedulerllm/dolphinscheduler-llm-0521

这个镜像集成了基础的模型运行环境,可以方便以后部署。

创建完成后等待服务器创建完成即可。创建完成后可以参考下图:

至此服务器资源已创建完成。

03

模型部署

点击JupyterLab进入服务器的控制台。

进入终端,正式开始模型部署。

//3.1 下载ChatGLM模型

首先进入/root/autodl-tmp目录,在这里创建一个文件夹用来保存ChatGLM模型,文件目录可以参考下图用git_project来存放模型。

进入git_project目录输入git clone https://huggingface.co/THUDM/chatglm-6b 命令下载模型,模型文件比较大可能要等一段时间。下载完成后可以进入chatglm-6b目录,目录内容参考下图,后面运行就需要依赖下图的模型。

//3.2 下载ChatGLM运行依赖

回到git_project目录输入git clone https://github.com/THUDM/ChatGLM-6B.git 命令,下载完成后进入ChatGLM-6B目录,可以看到如下目录:

我们使用pip install -r requirements.txt 命令下载脚本依赖的库。等待命令跑完即可。

//3.3  ChatGLM运行

运行模型需要配置一下模型的文件位置,输入vim web_demo.py ,修改内容参考下图红框处。

把红框处的内容改成我们刚刚下载好的模型地址。上图是已经改过的,可以参考下。

现在已经可以运行了,输入 python web_demo.py 试试看。

运行后可以看到只能够在本地自己使用,为了让运行的模型可以分享给大家使用,可以修改参数share=True,参数位置位于web_demo.py最底部。可以参考下图:

再尝试输入 python web_demo.py 后可以看到控制台打印了url地址,参考下图:

复制 public URL的地址,放到浏览器中体验一下部署好的模型吧。

这是部署好的界面:

04

数据集

虽然基础模型在各个方面都了解,但一旦深入就开始胡言乱语了。下面我们开始对模型微调,使它在医疗方面表现的更好一些。

//4.1 下载数据集

AutoDL服务器下载HuggingFace内容比较慢,所以先在本地下载好数据集后,再上传到服务器。

进入这个网址,按下图步骤进行操作:

//4.2 数据集环境配置

进入git_project目录,下载微调框架,输入 git clone :

https://github.com/hiyouga/ChatGLM-Efficient-Tuning.git。

进入ChatGLM-Efficient-Tuning目录后可以看到如下子目录:

我们进入data目录,在data目录下新建huatuo_gpt文件夹用来存放我们的数据集和数据集格式转换脚本。

把下载好的数据集放到huatuo_gpt下,并新增一个脚本文件。参考图如下:

脚本可以参考链接,具体脚本编写参考这个网址:

https://huggingface.co/docs/datasets/dataset_script

回到data目录,编辑dataset_info.json文件,对刚才新增的数据集进行配置。把dataset_info.json划到最后面,新增如下红框内容:

至此数据集环境已经配置好了。

05

微调

环境已经配置完成了,现在可以进行微调,具体步骤如下。

回到ChatGLM-Efficient-Tuning目录,输入命令:


CUDA_VISIBLE_DEVICES=0 python src/train_sft.py \ --do_train \ --model_name_or_path /root/autodl-tmp/git_project/chatglm-6b \ --dataset huatuo_gpt \ --finetuning_type lora \ --output_dir /root/autodl-tmp/train_model \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --save_steps 1000 \ --learning_rate 5e-5 \ --num_train_epochs 3.0 \ --fp16 > output.log &

对部分参数讲解一下:

--model_name_or_path:基础模型的文件位置。

--dataset:刚才在dataset_info中设置的名称。

--finetuning_type:微调模型的类型。

--output_dir:训练后模型的文件位置。

具体模型参数可以参考这个地址:

https://github.com/hiyouga/ChatGLM-Efficient-Tuning/wiki/%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95#%E5%BE%AE%E8%B0%83%E8%AE%AD%E7%BB%83

运行这个脚本大概需要40小时左右。

06

运行

微调结束后进入ChatGLM-Efficient-Tuning目录,输入vim src/utils/config.py命令修改一下基础模型的文件位置,具体参考如下:

为了可以在浏览器中访问,我们回到ChatGLM-Efficient-Tuning目录输入vim src/web_demo.py, 划到最下面修改参数为share=True,参考如下:

现在可以运行微调后的模型了,输入python src/web_demo.py  --checkpoint_dir 训练后模型的文件位置 命令。可以在控制台看见如下红框的地址。复制到浏览器上就可以体验了。

07

训练前后对比

微调前的效果:

微调后的效果:

可以看到微调前的对医疗的回答结果比较浅显,微调后回答结果专注治疗、解决办法。

到此就结束了,大家可以自己动手尝试一下。

原文链接: http://mp.weixin.qq.com/s?__biz=Mzg5MzUyOTgwMQ==&mid=2247527294&idx=1&sn=b539f493c1ae1e24f3e7b25bfb9bb15d&chksm=c02f50d8f758d9cee8a2ce812d82a6e042014117c842ff7d78c335d9fdc85c492ef0327d86c8#rd