LLM-04 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(准备环境) 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调

简介: LLM-04 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(准备环境) 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调

背景介绍

ChatGLM3是由智谱AI和清华大学KEG实验室联合开发的一款新一代对话预训练模型。这个模型是ChatGLM系列的最新版本,旨在提供更流畅的对话体验和较低的部署门槛。ChatGLM3-6B是该系列中的一个开源模型,它继承了前两代模型的优秀特性,并引入了一些新的功能和改进。


基础模型性能提升:ChatGLM3-6B基于更多样的训练数据、更充分的训练步数和更合理的训练策略,使得其基础模型性能得到显著提升。例如,ChatGLM3-6B-Base在10B以下的基础模型中表现最佳。

功能支持:ChatGLM3-6B支持多轮对话、工具调用(Function Call)、代码执行(Code Interpreter)和Agent任务。这些功能使得模型不仅能进行普通的对话,还能执行更复杂的任务,如代码解释和工具调用。

开源和部署:ChatGLM3-6B作为一个开源模型,鼓励开发者和社区共同推动大模型技术的发展。模型的部署相对简单,支持多种部署方式,包括在本地或云端部署。

安全和合规性:尽管模型在训练各阶段都尽力确保数据的合规性和准确性,但由于其规模较小且受概率随机性影响,无法保证输出内容的准确性。开发者需要注意模型输出可能被用户输入误导的风险。

项目地址

# github
https://github.com/THUDM/ChatGLM3

# huggingface
https://huggingface.co/THUDM/chatglm3-6b

配置要求

官方推荐

我们仅提供了单机多卡/多机多卡的运行示例,因此您需要至少一台具有多个 GPU 的机器。本仓库中的默认配置文件中,我们记录了显存的占用情况:


SFT 全量微调: 4张显卡平均分配,每张显卡占用 48346MiB 显存。

P-TuningV2 微调: 1张显卡,占用 18426MiB 显存。

LORA 微调: 1张显卡,占用 14082MiB 显存。

实机配置

目前我有三个方案:


方案1:MacBookProM1 16GB(平常用的机器,可以支撑起 LoRA…勉强跑 不推荐)

方案2:找算法组借的 2070 Super 8GB * 2 一共16GB显存(但是不能微调,后续说)

方案3:租的 3090 24GB * 1(完美,ChatGLM3-6B的微调任务都在该机器上完成的)

微调选择

方案1,可以作为学习可以,但是由于本身MPS的问题,运行速度并不快,而且M1最高配置只有16GB,非常难受。

方案2,虽然我们的总量够了 16GB,达到了 LoRA 和 P-TuningV2 的要求,但是要求每张显卡都有可以完整放下模型的空余,也就是说,我们单卡的 8GB 是不满足的。具体需要13GB,可看上章节 LLM-02 中的实机运行内容。

方案3,虽然不便宜,但是是主力机了。后续的微调都在这里完成。


由于 全量 SFT 要求的显存买不起··· 所以选择了 LoRA 和 P-TuningV2。


准备工作

更新系统

先更新下操作系统,等等内容,CUDA版本等等。

udo apt update
sudo apt install -y build-essential libbz2-dev libssl-dev libffi-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

Pyenv

配置一个新的环境,确保安装3.10版本,避免版本问题。

# 安装
pyenv install 3.10
# 配置全局,也可以使用 local 配置当前目录
pyenv global 3.10
# 测试
python

venv

独立的包环境,防止依赖之间互相干扰。

python -m venv env
source env/bin/active

克隆项目

这里直接GitHub走起!

克隆项目之后,我还安装了依赖。

pip install -r requirements.txt

下载模型

模型的目录是(我发现好多人找不到自己下载的模型在哪里···)

~/.cache/huggingface/

如果你有下载到指定目录的需求,可以使用如下的代码帮助你:

from transformers import AutoTokenizer, AutoModel
model_name = "THUDM/chatglm3-6b"
model_path = "/root/autodl-tmp/model/chatglm3-6b"
tokenizer = AutoTokenizer.from_pretrained(model_name,trust_remote_code=True)
model = AutoModel.from_pretrained(model_name,trust_remote_code=True)
tokenizer.save_pretrained(model_path,trust_remote_code=True)
model.save_pretrained(model_path,trust_remote_code=True)
print("done!")

我的下载目录是这里:

# 以后可以用这个路径
/root/autodl-tmp/model/chatglm3-6b

启动测试

我的模型地址:

python /root/autodl-tmp/ChatGLM3/basic_demo/cli_demo.py

正常启动(注意模型的位置,可以vim查看cli_demo.py中的MODEL_PATH)

微调依赖

# 官方准备的微调示例
cd /root/autodl-tmp/ChatGLM3/finetune_demo/
# 安装依赖
pip install -r requirements.txt

等待依赖安装完毕

本章小结

到此,环境的准备工作已经完成!下一节我们开始微调!

目录
相关文章
|
14天前
|
人工智能 自然语言处理 测试技术
有没有可能不微调也能让大模型准确完成指定任务?(少样本学习)
对于我这种正在从0到1构建AI产品的一人公司来说,Few Shots学习的最大价值在于:用最少的资源获得最大的效果。我不需要大量的标注数据,不需要复杂的模型训练,只需要精心设计几个示例,就能让大模型快速理解我的业务场景。
140 43
|
3月前
|
机器学习/深度学习 数据采集 人工智能
微调之后还能做什么?大模型后训练全链路技术解析
本文探讨了后训练的重要性、方法以及最新进展。文章将包含理论分析与实际操作指南,适合希望深入了解并应用这些技术的开发者。
535 18
微调之后还能做什么?大模型后训练全链路技术解析
|
5月前
|
机器学习/深度学习 数据采集 存储
大模型微调知识与实践分享
本文详细介绍了大型语言模型(LLM)的结构、参数量、显存占用、存储需求以及微调过程中的关键技术点,包括Prompt工程、数据构造、LoRA微调方法等。
1021 72
大模型微调知识与实践分享
|
3月前
|
机器学习/深度学习 自然语言处理 搜索推荐
SingLoRA:单矩阵架构减半参数量,让大模型微调更稳定高效
SingLoRA是一种创新的低秩适应方法,通过单矩阵对称更新策略,有效提升模型微调的训练稳定性与参数效率。相比传统LoRA,其结构更简洁,参数更少,且无需复杂超参数调整,适用于大模型高效部署。
107 3
SingLoRA:单矩阵架构减半参数量,让大模型微调更稳定高效
|
3月前
|
数据采集 编解码 人工智能
Gemma 3n正式版开源:谷歌全新端侧多模态大模型,2GB 内存就能跑,重点提升编码和推理能力!
6月底,Google正式开源发布了全新端侧多模态大模型 Gemma 3n!相较此前的预览版,最新的 Gemma 3n 完整版进一步提升性能表现,支持在 2GB 内存的硬件上本地运行,重点提升了编码和推理方面的能力。
421 1
|
4月前
|
缓存 自然语言处理 监控
基于通义大模型的智能客服系统构建实战:从模型微调到API部署
本文详细解析了基于通义大模型的智能客服系统构建全流程,涵盖数据准备、模型微调、性能优化及API部署等关键环节。通过实战案例与代码演示,展示了如何针对客服场景优化训练数据、高效微调大模型、解决部署中的延迟与并发问题,以及构建完整的API服务与监控体系。文章还探讨了性能优化进阶技术,如模型量化压缩和缓存策略,并提供了安全与合规实践建议。最终总结显示,微调后模型意图识别准确率提升14.3%,QPS从12.3提升至86.7,延迟降低74%。
1104 14
|
4月前
|
机器学习/深度学习 存储 缓存
大模型推理显存和计算量估计方法
最近做吞吐量调试涉及到输入batch_size的设置,为了把算力和显存用起来,同时不触发out of memory,需要提前估计大模型推理过程中的显存占用
528 5
|
7月前
|
人工智能 自然语言处理 物联网
S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现
选择性自我监督微调(S3FT)是一种创新的大语言模型微调方法,通过语义等价性判断器识别模型生成的正确响应,并结合标准答案优化模型。相比传统监督微调,S3FT在特定任务上表现更优,显著提升跨域泛化能力,有效缓解灾难性遗忘问题。实验结果显示,S3FT在多个基准测试中表现出色,尤其在阅读理解和领域外任务上优势明显。
190 70
S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现

热门文章

最新文章