ChatGLM3-6B部署+高效微调

2024/3/18

一、部署流程

1,创建conda 虚拟环境:conda create -n chatglm3_test python=3.11

      激活进入虚拟环境:conda activate chatglm3_test

(删除虚拟环境:conda env remove -n 虚拟环境的名称)

2,查看cuda版本:nvidia-smi

3,在虚拟环境中安装pytorch

        进入pytorch官网找到对应的版本,复制安装指令至终端执行

此处安装的是:conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.3 -c pytorch -c conda-forge

        检查安装(python环境中):import torch

                                                       print(torch.cuda.is_available())

        显示true则表示成功安装GPU版本的pytorch并可以使用cuda

4,下载chatGLM3项目文件

(可以创建文件夹用来存放文件:mkdir /mnt/workspace/chatglm3

进入文件夹下:cd chatglm3)

对应Github地址:GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型

克隆:git clone GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型

》》下载项目文件后进入目录ChatGLM3

5,升级pip版本:python -m pip install --upgrade pip

6,安装项目运行依赖:pip install -r requirements.txt

7,模型下载:git clone https://huggingface.co/THUDM/chatglm3-6b

        下载前需要先安装git-lfs工具(拉取大文件):apt-get install git-lfs

        初始化:git lfs install

!注意:由于模型文件较大加之需要科学上网,下载速度较慢且容易下载失败,此时有两种解决方式

        法一:针对.bin文件点击进入模型权重页面后,鼠标右击download选择复制链接地址,进入终端后使用wget 链接地址方式下载

        法二:直接通过浏览器下载到本地再移动到chatglm3-6b文件夹 

8,启动cli_demo

     进入basic_demo: cd basic_demo/

     修改模型加载路径:vim cli_demo.py

                将THUND/chatglm3-6b修改为../chatglm3-6b     

     语句 python cli_demo.py出现交互式对话界面即启动成功  

具体也可以参考ChatGLM3官方给出的使用方式

二、高效微调(官方微调地址:https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo/lora_finetune.ipynb

1,相关概念解释

全量微调:对原始模型的所有参数进行调整,消费级显卡上无法实现。

高效微调:在原有参数上调整少量参数或者额外增加参数调整。

2,主流的微调方式

        Freeze

        Prefix-Tuning:在微调模型的过程中只优化加入的一小段可学习的向量(virtual tokens)作为prefix(训练的时候只更新Prefix部分的参数)(具体论文地址:https://arxiv.org/abs/2101.00190

        Prompt-Tuning:Prompt Tuning与Prefix Tuning类似,都是通过修改输入来引导模型的输出。但Prompt Tuning更加强调利用上下文信息,通过使用预设的词汇表或字典来引导模型的输出。这种方法在生成型任务中表现出了优越的性能,例如文本生成、摘要等。

        P-Tuning:P-tuning是一种新型的微调方法,它通过改变模型中的注意力分布来调整模型的关注点。这种方法能够在不同的任务中改变模型对输入的关注程度,从而提高模型的性能

        P-Tuning v2:P-tuning的升级版,它在原版的基础上增加了更多的灵活性。除了能够改变注意力分布,P-tuning v2还能够调整模型的层数、节点数等,使得模型能够更好地适应不同的任务。

3,微调操作:

        3.1

        在目录ChatGLM3下进入finetune chatmodel demo:    cd finetune_chatmodel_demo/

        进入scripts:cd scripts/

      

        3.2

        数据集下载并上传到finetune_chatmodel_demo路径下(也可以在终端使用wget命令下载:wget - 0 数据集名称 链接地址,这样下载的是个安装包需要解压使用:tar -xvf 包名)

        3.3

        修改数据集格式:python format_advertise_gen.py --path 'AdvertiseGen/train.json'

        执行后得到的是.jsonl的文件

        3.3

        进入finetune_pt.sh修改:vim finetune_pt.sh

        3.4

        执行P-Turning v2微调脚本:bash finetune_pt.sh

        3.5

        使用微调模型进行推理:

### 如何在AutoDL平台上部署微调ChatGLM3-6B大语言模型 #### 准备工作 为了顺利进行后续操作,在`autodl-tmp`文件夹下创建一个新的名为`models`的文件夹用于存储下载的模型权重文件[^1]。 ```bash mkdir -p ~/autodl-tmp/models/ cd ~/autodl-tmp/models/ ``` #### 获取模型资源 通过Git命令从Hugging Face仓库克隆`chatglm3-6b`的相关参数、配置以及预训练好的权重文件到本地环境中[^2]: ```bash git clone https://huggingface.co/THUDM/chatglm3-6b ``` 这一步骤确保了拥有最新的官方版本,同时也方便日后更新维护。 #### 部署API服务 对于希望快速搭建起能够提供对外接口的服务而言,可以考虑利用现有的硬件设施——例如配备有RTX 4090 GPU的机器来加速整个过程。具体来说,就是先按照正常流程启动相应的Python应用程序,并监听特定端口等待外部请求的到来[^4]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch tokenizer = AutoTokenizer.from_pretrained("path_to_your_model_directory") model = AutoModelForCausalLM.from_pretrained("path_to_your_model_directory").to('cuda') def generate_response(prompt_text): inputs = tokenizer(prompt_text, return_tensors="pt").input_ids.to('cuda') outputs = model.generate(inputs) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response ``` 请注意替换上述代码中的路径变量为实际保存位置。 #### 数据准备与模型微调 针对具体的任务需求收集整理一批高质量的数据集作为输入给定至算法内部参与迭代优化的过程当中去;这里以广告文案生成为例说明如何基于已有的基础之上进一步提升性能表现。首先获取所需语料库并将其转换成适合框架读取的形式之后再执行正式的学习环节。 ```bash # 假设已经获得了AdvertiseGen数据集压缩包advertise_gen.zip unzip advertise_gen.zip -d ./data/ # 使用transformers库提供的工具类处理原始文本序列使之成为可用于训练的有效样本 python preprocess.py --dataset_path=./data/ --output_dir=./processed_data/ ``` 接着定义好超参设置后就可以正式启动finetune程序啦! ```bash CUDA_VISIBLE_DEVICES=0 python run_clm.py \ --train_file=./processed_data/train.json \ --validation_file=./processed_data/dev.json \ --do_train \ --do_eval \ --per_device_train_batch_size=8 \ --learning_rate=5e-5 \ --num_train_epochs=3 \ --save_steps=500 \ --output_dir=./results/ ``` 最后当一切就绪以后便可以通过简单的CLI交互方式来进行效果评估测试了。 ```bash echo "请描述一款科技感十足的新产品..." | python cli_inference.py --checkpoint_path=./results/checkpoint-best/ ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值