Datawhale AI冬令营(第一期)task2--微调玩法攻略

news2024/12/16 9:01:19

 目录

1.微调玩法攻略

1.1.微调思路 

1.2.什么是大模型人格化?

1.3. 大模型人格化的应用场景

1.4 构建对应格式的数据集

1.4.1 选择数据格式

1.4.2 Alpaca 格式要求

1.4.3 构建数据集

1.4.4 没有剧本怎么办

1.4.5 整理成 json 格式


1.微调玩法攻略

1.1.微调思路 

我找了三个火枪手的txt文件作为本次的主题

1.2.什么是大模型人格化?

以语言表达风格的人格化为例,可以包括:

  • 语气和措辞 :模仿人类在不同场景下的语气,如正式、亲切、幽默等。在回答问题时,使用符合人类语言习惯的措辞,使交流更自然流畅。

  • 语言风格的多样性 :根据不同的应用场景和用户需求,展现出不同的语言风格。比如在文学创作领域,能够模仿不同作家的文风进行创作;在客服场景中,使用专业、耐心的语言风格为用户解答问题。

更多相关研究内容可见:

Human Simulacra: Benchmarking the Personification of Large Language Models

ChatHaruhi: Reviving Anime Character in Reality via Large Language Model

Chat凉宫春日

1.3. 大模型人格化的应用场景

大模型人格化具有丰富的应用场景,如:

  • 智能客服 :以更亲切、自然的方式与客户交流,提高客户满意度。例如,当客户咨询问题时,智能客服可以用友好的语气回答问题,并根据客户的情绪做出相应的安抚,让客户感受到更贴心的服务 。

  • 教育领域 :作为AI老师,根据不同的教学风格和学生的特点进行个性化教学。比如,有的AI老师可以是幽默风趣的,通过讲笑话、举例子等方式让学生更容易理解知识;有的AI老师则可以是严谨认真的,注重知识的系统性和逻辑性 。

  • 情感陪伴 :扮演朋友、家人等角色,与用户进行情感交流和陪伴,缓解用户的孤独感和压力。例如,当用户晚上睡不着觉时,可以和大模型聊天,分享自己的心事,大模型则可以给予安慰和鼓励 。

  • 内容创作 :根据用户的需求和指定的人格化特点,生成具有不同风格和情感色彩的文本内容,如小说、诗歌、文案等。比如,为广告文案生成亲切、有感染力的内容,吸引消费者的注意力;为小说创作不同性格的人物对话,使故事更加生动有趣 。

1.4 构建对应格式的数据集

1.4.1 选择数据格式

对于语言模型来说,微调数据必须是文本。如果你的数据源是WORD、PDF等格式,需要使用专门的解析工具,提取其中的文本。如python的docx、PyPDF2包。

其次,微调数据除了当前对话的输入和输出之外,还有一些其他的属性,如想要大模型扮演的角色、对话历史等等。因此,为了更好地对数据进行处理,通常会对数据进行结构化,并以json或者jsonl的格式进行存储。

具体来说,目前主流的数据集有两种格式: Alpaca 格式和 ShareGPT 格式,其主要特点如下表所示。

 

图一、 Alpaca 格式和 ShareGPT 格式主要区别

1.4.2 Alpaca 格式要求

此部分内容为讯飞用户手册描述的格式要求

  • instruction列对应的内容会与input列对应的内容拼接后作为模型输入,即为instruction\input。

  • output列对应的内容为模型回答。

  • 如果指定,system列对应的内容将被作为系统提示词。

  • history列是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。

1.4.3 构建数据集

确定了数据格式,接下来就是数据集的构建了。 一种构建人格化数据的大致思路是:

  1. 从原始数据中提取出角色和对话

  2. 筛选出我们关注的角色的对话

  3. 将对话转换成我们需要的格式

def extract_dialogues(file_path):
    result = []
    current_act_dialogues = []
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        for line in lines:
            line = line.strip()
            if line.startswith("("): # 过滤旁白行
                continue
            if line.startswith("第") and line.endswith("幕"): # 解析新的一幕
                if current_act_dialogues:
                    result.append(current_act_dialogues)
                    current_act_dialogues = []
            elif ":" in line: # 按:切分角色和对话内容
                role, content = line.split(":", 1)
                role = role.strip()
                content = content.strip()
                current_act_dialogues.append({"role": role, "content": content})
        if current_act_dialogues: # 保存最后一幕
            result.append(current_act_dialogues)
    return result

file_path = '三个火枪手.txt'
dialogues = extract_dialogues(file_path)
print(dialogues)

 图二、构建人格化数据集

 对于这样格式比较规整的数据,我们可以使用正则表达式或者其他方法进行快速的提取,并抽取出我们关注的角色的对话。

def extract_huoqiangshou_dialogues(dialogues):
    result = []
    huoqiangshou_dialogues = []
    for act in dialogues:
        for i, dialogue in enumerate(act):
            if "达达尼昂" in dialogue["role"] and i > 0:
                huoqiangshou_dialogues.append(act[i-1])
                huoqiangshou_dialogues.append(dialogue)
                result.append(huoqiangshou_dialogues)
                huoqiangshou_dialogues = []
    return result

huoqiangshou_dialogues = extract_huoqiangshou_dialogues(dialogues)
print(huoqiangshou_dialogues)

 图三、使用正则表达式或者其他方法进行快速的提取,并抽取出达达尼昂的对话

1.4.4 没有剧本怎么办

对于这种数据,推荐通过 讯飞星辰MaaS平台 的问答对抽取功能,直接进行数据构建。

直达链接:星火大模型精调平台

 就可以看到抽取出来的数据啦~

1.4.5 整理成 json 格式

对话抽取完成后,再将其整理成 json 格式的数据

import json

def build_json_data(dialogues, json_file):
    result = []
    for act in dialogues:
        sample = {
            "instruction": act[0]["content"],
            "input": "",
            "output": act[1]["content"]
        }
        result.append(sample)

    with open(json_file, 'w', encoding='utf-8') as f:
        json.dump(result, f, ensure_ascii=False, indent=4)

build_json_data(huoqiangshou_dialogues, 'huoqiangshou.jsonl')

 

图四、对话抽取完成后,再将其整理成 json 格式的数据结果

 

图五、参照task1构建出完整的模型

 图六、体验结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VQ-VAE和VAE 的区别是什么?

第一行所展示的就是普通的VAE,它的核心是通过encoder和decoder,将像素空间的图像压缩到一个提取了核心特征的隐变量向量。VQ-VAE的思想是,即使VAE中压缩的这个隐变量中的向量提取了图片中的核心特征信息,但是这些信息仍然可能存在冗余&#x…

Redis--高并发分布式结构

目录 一、引言 二、redis 1.什么是redis? 三、基础概念 1.什么是分布式? 2.应用服务和数据库服务分离 3.负载均衡 4.分库分表 5.微服务架构 四、总结 一、引言 本篇文章就简单介绍一下什么是redis,以及一些关于高并发和分布式结构的…

188-下翻便携式6U CPCI工控机箱

一、板卡概述 下翻式CPCI便携工控机,系统采用6u cpci背板结构,1个系统槽,7个扩展槽, 满足对携带的需求,可装标准6U8槽CPCI主板,8个扩展槽, 满足客户对空间扩展的需求.可宽温服务的工作产品,15高亮度液晶显示屏,超薄88键笔记本键盘,触摸式鼠标,加固型机箱结构,使它能够适应各种复…

Linux 磁盘满了怎么办?快速排查和清理方法

当 Linux 磁盘满了,会导致系统无法正常运行,比如无法写入文件、服务停止、甚至系统崩溃。因此,快速排查并清理磁盘空间是非常重要的。以下是详细的排查和解决步骤: 一、快速定位磁盘占用原因 1. 检查磁盘使用情况 使用 df 命令查…

OpenGL ES详解——多个纹理实现混叠显示

目录 一、获取图片纹理数据 二、着色器编写 1. 顶点着色器 2. 片元着色器 三、绑定和绘制纹理 1. 绑定纹理 2. 绘制纹理 四、源码下载 一、获取图片纹理数据 获取图片纹理数据代码如下: //获取图片1纹理数据 mTextureId loadTexture(mContext, R.mipmap.…

对话小系统(智能图书助手)

对话小系统(智能图书助手) 文章说明核心代码效果展示源码下载 文章说明 现在GPT的功能十分强大,是否可以利用开源的接口来实现自己的智能小助手呢,我想到可以提供一些能力接口,然后对问询内容进行意图识别,…

微服务-01

1.认识微服务 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项目…

WebView2教程(基于C++)【一】环境初始化

创建一个VisualStudio C项目,通过NuGet包管理器安装两个包: 注意,在项目属性页设置项目使用:C 20,子系统设置成窗口(相应的预处理器也要改变),DPI识别设置成每个监视器高DPI识别。 …

KMP算法图解解析(C语言)

文章目录 一.引言二.KMP算法解析三.代码实现1.对目标子串的处理(创建next数组)二.寻找子串的KMP算法实现 一.引言 kmp算法是由三位大牛共同研究提出的,全称为Knuth-Morris-Pratt算法,简写为KMP算法。 kmp算法用来解决子串的问题&a…

数据冒险、控制冒险、结构冒险

计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户(所有程序员)可见:PSW、PC、通用寄存器 PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)PC(跳转指令需要…

Python机器学习笔记(七、深度学习-神经网络)

深度学习算法经过精确调整,只适用于特定的使用场景。先学习较为简单的深度学习算法,用于分类和回归的多层感知机(multilayer perceptron,MLP),它可以作为研究更复杂的深度学习方法的起点。MLP 也被称为&…

Kylin麒麟操作系统 | Nginx服务部署

目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器&#xff…

【html网页页面012】html+css制作品牌主题宏宝莱网页含视频、留言表单(7页面附效果及源码)

品牌主题宏宝莱网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果完整效果(7页):代码目录结构:page1、首页page2、衍生品page3、包装设计page4、视频介绍page5、留言板page6、联系我们page7、详情页(三层页…

机器学习之交叉熵

交叉熵(Cross-Entropy)是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数,特别是在分类任务中非常常见。它源于信息论,反映了两个概率分布之间的距离。 交叉熵的数学定义 对于分类任务,假设我们有&#…

0001.基于springmvc简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习,虽然版本比较老但是部署方便,tomcat环境即可启用;代码简洁,前后端代码提供可统一学习;祝愿您能成尽快为一位合格的程序员,愿世界没有BUG; …

无限次使用 cursor pro

github地址 cursor-vip 使用方式 在 MacOS/Linux 中,请打开终端; 在 Windows 中,请打开 Git Bash。 然后执行以下命令来安装: 部分电脑可能会误报毒,需要关闭杀毒软件/电脑管家/安全防护再进行 方式1:通过…

AI 语言模型产业的投资困境与发展困境分析

https://benn.substack.com/p/do-ai-companies-work 巨额投资与成本困境 大型语言模型(LLM)的开发成本惊人。根据报道,OpenAI 正在筹集 65 亿美元资金,每年约消耗 70 亿美元用于研究、开发新的 AI 服务和扩充团队。Anthropic 预计…

tryhackme——Pre Security(安检前)-Offensive Security(进攻性安全)

这里我用的edge的插件闪击翻译。这里我英语不好,所以用这个可以顺便学习下英语。 任务一:What is Offensive Security?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…

[论文阅读] |智能体长期记忆与反思

写在前面:10月份的时候,联发科天玑9400发布,搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步,这些智能体或许便能…

CQRS Design Pattern in Microservices - CQRS模式

原文链接 CQRS Design Pattern in Microservices - GeeksforGeeks 【文章看起来像是AI写的。。。 😂😂😂】 简介 实现步骤 1,识别有界上下文:(Identify Bounded Contexts:) 2,命…