首页 > 其他分享 >超详细的glm-4微调过程和代码之最强落地经验总结

超详细的glm-4微调过程和代码之最强落地经验总结

时间:2024-06-15 10:33:21浏览次数:7  
标签:glm -- 模型 9b dataset 最强 swift response 经验总结

GLM-4是智谱AI在2024年推出的新一代基座大语言模型,该模型在整体性能上相比上一代有显著提升,接近GPT-4的水平。

GLM-4具有多项先进特性,包括更强的多模态处理能力、支持更长上下文输入(最长可达128k)等,展示了国产大模型在技术和创新应用方面的最新进展。

微调(Fine-tuning)是自然语言处理领域常用的一种技术,通过在预训练模型的基础上,使用特定领域的数据集对其进行进一步训练,使得模型能够适应特定任务的需求,从而提高模型在该任务上的表现。

对于GLM-4这样的大型语言模型而言,微调尤为重要,因为它允许模型在保留广泛知识和语言理解能力的同时,学习针对特定场景或行业的专业语言习惯、术语和要求。

在实践层面,GLM-4提供了如LoRA、sift等微调方法,这是一种轻量级的微调技术,能够在不显著增加模型参数量的前提下,有效地调整模型权重以适应下游任务。

一、swift微调

1、原理:swift微调是一种针对大型预训练模型的微调技术,它旨在提高模型在特定下游任务上的性能。Swift微调的核心原理是利用少量的可训练参数来调整模型,以适应新任务,而不是对整个模型进行完整的微调。同时swift是魔搭社区的大模型训练框架,github项目地址:https://github.com/modelscope/swift。

2、环境安装

  git clone https://github.com/modelscope/swift.git
  cd swift
  pip install -e '.[llm]'

3、下载glm-4模型

这里主要以glm-4-9b-chat和glm-4-9b-chat为例。

(1)GLM-4-9B-Chat模型下载命令:

git clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat.git

(2)GLM-4V-9B模型下载命令:

git clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat.git

4、自定义数据集

swift支持支持直接命令行传参、添加数据集到dataset_info.json、注册数据集等三种自定义数据集的方法,这里主要介绍直接命令行传参的方式。

(1)直接命令行传参的方式。

用户可以通过命令行参数--dataset灵活指定数据来源,可接受dataset_id或dataset_path。

其中,dataset_id用于引用已注册的数据集,默认访问'default'子集,并设定split为'train'模式。

如果数据集已注册,将沿用注册时的配置,包括子集、分割方式和预处理函数。

dataset_path接受相对或绝对路径指向本地数据文件,为数据集的自托管提供了便利。

允许混合使用数据集ID和路径,并为每个数据源指定采样数量。

例如,可以同时从某个dataset_name的默认子集中抽取20000条记录,从另一个已注册dataset_id的特定子集(subset1和subset2)各抽取20000条,或者从本地路径指定的文件中抽取10000条数据。

脚本兼容五种数据集格式,并特别指出支持csv、json、jsonl等文件类型。这覆盖了常见的数据交换格式,便于用户直接利用现有数据资源。

数据格式样例如下

(a)预训练数据样例

预训练数据通常关注于独立的响应或文本块,用于学习语言的一般规律。下面的样例去除了不一致的格式,并统一为JSON对象列表,每个对象包含一个明确的响应字段。

[{"response": "11111"},{"response": "aaaaa"},{"response": "AAAAA"}]

(b)单轮对话数据样例

单轮对话数据格式应当清晰地划分系统提示(如果存在)、查询和响应。所有行应遵循同一结构,以保持数据一致性。这里,我们统一采用JSON格式,并确保每条记录都包含“system”、“query”和“response”字段。

[{"system": "00000", "query": "11111", "response": "22222"},{"system": "00001", "query": "aaaaa", "response": "bbbbb"},{"system": "00002", "query": "AAAAA", "response": "BBBBB"}]

(c)多轮对话数据样例

多轮对话数据不仅包含查询和响应,还包括历史对话记录(history)。历史记录应明确表示为一系列的问答对。这里,我们将所有记录统一为JSON对象列表,并确保历史记录的格式正确无误。

[{"system": "00000","query": "55555","response": "66666","history": []},{"query": "eeeee","response": "fffff","history": []},{"query": "EEEEE","response": "FFFFF","history": [["AAAAA", "BBBBB"],["CCCCC", "DDDDD"]]}]

(2)添加数据集到dataset_info.json中。

相较于直接通过命令行指定数据集,此方法允许用户对数据集应用更细致的配置,特别是能够指定两种预处理器(RenameColumnsPreprocessor与ConversationsPreprocessor)及它们的参数。

默认情况下,会使用智能预处理器SmartPreprocessor来优化数据处理流程。

尽管第二种方法在操作上可能略显复杂,但它通过允许用户深度定制数据集处理逻辑、灵活选择预处理器及参数,并支持内外部dataset_info.json的灵活运用,极大地增强了数据集管理的灵活性和项目的可扩展性。

(3)注册数据集的方式。

第三种方法通过允许用户自定义预处理函数并在代码层面进行深度集成或利用外部脚本扩展,实现了前所未有的数据集处理灵活性。

尽管这可能需要更多的开发工作,但对于追求极致定制化和功能拓展的项目来说,这是一种极为有力的工具。

5、swift微调指令

对于glm4v-9b-chat模型进行微调的指令如下:

CUDA_VISIBLE_DEVICES=0 swift sft \--model_type glm4v-9b-chat \--dataset my_dataset \#DDPNPROC_PER_NODE=2 \CUDA_VISIBLE_DEVICES=0,1 swift sft \--model_type glm4v-9b-chat \--dataset my_dataset  \--ddp_find_unused_parameters true \

7、swift微调后模型推理验证

下面以第一张显卡推理为例:

(1)直接推理:

CUDA_VISIBLE_DEVICES=0 swift infer \--ckpt_dir glm4v-9b-chat/swift/checkpoint \--load_dataset_config true \

(2)merge-lora并推理:

CUDA_VISIBLE_DEVICES=0 swift export \--ckpt_dir glm4v-9b-chat/swift/checkpoint \--merge_lora trueCUDA_VISIBLE_DEVICES=0 swift infer \--ckpt_dir glm4v-9b-chat/swift/checkpoint-merged \--load_dataset_config true

、lora微调

未完......

更多详细的欢迎关注:杰哥新技术

标签:glm,--,模型,9b,dataset,最强,swift,response,经验总结
From: https://blog.csdn.net/m0_71062934/article/details/139689660

相关文章

  • 一文读懂多模态大模型的LLM主干(1):ChatGLM系列
    〔探索AI的无限可能,微信关注“AIGCmagic”公众号,让AIGC科技点亮生活〕本文作者:AIGCmagic社区  刘一手前言AI多模态大模型发展至今,每年都有非常优秀的工作产出,按照当前模型设计思路,多模态大模型的架构主要包括以下几个部分:模态编码器(ModalityEncoder,ME):负责将不同......
  • 隐语课程学习笔记6-逻辑回归LR与广义线性模型GLM开发实践
    隐语第6课,开始介绍具体的机器学习算法以及使用隐语模型进行真实数据的建模实验。首先介绍广义线性模型,广义线性模型(GLM)是线性模型的扩展,通过联系函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。它的特点是不强行改变数据的自然度量,数据可以具有非线性和非......
  • 史上最强!华为交换机常用命令大全,网络工程师收藏!
    华为作为全球领先的信息与通信解决方案供应商,其交换机产品在全球市场占据了重要位置。华为交换机以高性能、高可靠性和丰富的功能著称,广泛应用于企业、数据中心、运营商网络等各类环境中。无论是中小企业的局域网,还是大型数据中心的核心网络,华为交换机都能提供灵活、稳定的......
  • Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API调用和WebUI对话机器人
    阿里巴巴通义千问团队发布了Qwen2系列开源模型,该系列模型包括5个尺寸的预训练和指令微调模型:Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B以及Qwen2-72B。对比当前最优的开源模型,Qwen2-72B在包括自然语言理解、知识、代码、数学及多语言等多项能力上均显著超越当前领先的Lla......
  • 聊聊GLM-4-9B开源模型的微调loss计算
    概述Github官方地址:GLM-4网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述。我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都是关心如何使用之类的应用层,而不是其具体的底层逻辑,当然咱也说不清太底层的计算。可了解其......
  • 2024最强Java面试八股
    Java基础八股文(背诵版)Java语言具有哪些特点?Java为纯面向对象的语言。它能够直接反应现实生活中的对象。具有平台无关性。Java利用Java虚拟机运行字节码,无论是在Windows、Linux还是MacOS等其它平台对Java程序进行编译,编译后的程序可在其它平台运行。Java为解释型......
  • AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘
    AttributeError:‘ChatGLMModel‘objecthasnoattribute‘prefix_encoder‘:全面解析问题概述当您使用ChatGLM模型或相关库时遇到AttributeError:‘ChatGLMModel‘objecthasnoattribute‘prefix_encoder‘错误时,这意味着ChatGLMModel类中不存在prefix_encod......
  • 打败GPT-4的最强开源中文大模型GLM-4终于亮相了(附:超详细搭建过程)
    GLM-4是由智谱AI推出的新一代基座预处理大模型,具有与GPT-4相近的性能,尤其在中文能力上可以比肩GPT-4。它在多个方面进行了优化和提升,包括支持更长的上下文长度、更快的推理速度、降低推理成本,以及增强了智能体能力。GLM-4能够处理128k的上下文窗口长度,单次提示词可以处理的文......
  • 本地部署GLM-4-9B清华智谱开源大模型方法和对话效果体验
    GLM-4-9B是清华大学和智谱AI推出的最新一代预训练模型GLM-4系列中的开源版本。在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B及其人类偏好对齐的版本GLM-4-9B-Chat均表现出较高的性能,其通用能力评测结果甚至超越了Llama-3-8B开源大模型,多模态版本也与GPT-4版本齐......
  • 史上最强 AI 翻译诞生了!拳打谷歌,脚踢 DeepL
    CoT推理范式默认情况下,大语言模型通常是直接给出问题的最终答案,中间推理过程是隐含的、不透明的,无法发挥出大模型最极致的理解能力。如果你用它来充当翻译,可能效果和传统的机器翻译也差不了太多。如果我们给大模型设计一个合理的提示词,控制大模型的思考方式,就能发挥出大模型的......