本文来自社区投稿,作者书生大模型实战营第4期助教 Alannikos

当前,大模型的微调数据制作过程繁琐复杂,涉及数据收集、清洗、标注等多个环节,尤其是人工标注不仅成本高昂,而且效率较低,难以满足大规模、高质量的数据需求。为了解决这一问题,越来越多的方法开始利用大模型本身来生成数据,通过合成数据、自动标注、知识增强等方式,降低人工干预,提高数据生产效率,从而更快速、高效地优化模型性能。

本文将详细介绍如何基于 EDG4LLM,使用书生·浦语3.0(InternLM3)大模型,高效生成用于微调大语言模型的高质量数据集,为模型优化提供强有力的数据支持。

InternLM3介绍

1月15日,上海人工智能实验室对书生大模型进行重要版本升级,书生·浦语3.0通过精炼数据框架,大幅提升了数据效率,并实现思维密度的跃升。仅使用4T训练数据的InternLM3-8B-Instruct,其综合性能超过了同量级开源模型,节约训练成本75%以上;同时,书生·浦语3.0首次在通用模型中实现了常规对话与深度思考能力融合,可应对更多真实使用场景。

体验页面:https://chat.intern-ai.org.cn

GitHub 链接:https://github.com/InternLM/InternLM

HuggingFace 链接:https://huggingface.co/collections/internlm/internlm3-67875827c377690c01a9131d

在这里插入图片描述

EDG4LLM介绍

EDG4LLM 是一款专为利用大语言模型生成微调数据而设计的 Python 库,旨在帮助用户高效创建高质量的微调数据集。目前,该工具主要支持 文本数据生成,生成的数据类型包括但不限于:

  • 问题数据(如开放式问题等)
  • 答案数据(提供精准或多样化的回答)
  • 对话数据(提供高质量问答对数据)

在这里插入图片描述

EDG4LLM 核心优势:

易于使用:提供简洁直观的 API,用户无需复杂配置即可快速上手。 ✅ 轻量级:依赖项少,资源消耗低,高效且便于部署和使用。 ✅ 高度灵活:支持 多种数据格式不同生成选项,可根据需求自定义微调数据。 ✅ 强力调试支持:提供 详细的日志输出,便于用户 追踪和优化 生成的数据质量。

通过 EDG4LLM,用户可以 大幅提升微调数据生成的效率,确保模型在特定任务中具备更精准、更优质的表现,同时降低人工标注的成本。

GitHub 链接:

https://github.com/alannikos/edg4llm

快速使用

安装库

pip install -U edg4llm

安装完成后,您可以使用以下命令查看 EDG4LLM 支持的模型:

usage: edg4llm-cli [-h] [--list-providers] [--list-models PROVIDER]

View the list of supported models.

options:
  -h, --help            show this help message and exit
  --list-providers      List all supported providers.
  --list-models PROVIDER
                        View the list of models for a specific provider.

选项说明

  • -h, --help :显示帮助信息并退出。
  • --list-providers :列出所有支持的模型提供商。
  • --list-models PROVIDER :查看指定提供商支持的模型列表(需要提供 PROVIDER 名称)。

导入库

from edg4llm import DataGenerator

设置参数

api_key = "YOUR API_KEY"
base_url = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions"

# 设置system_prompt(角色控制)
system_prompt = """你是一个精通中国古代诗词的大师"""

# 设置user_prompt(数据要求)
user_prompt = '''
    目标: 1. 请生成过春节为场景的连续多轮对话记录
            2. 提出的问题要多样化。
            3. 要符合人类的说话习惯。
            4. 严格遵循规则: 请以如下格式返回生成的数据, 只返回JSON格式,json模板:  
                [
                    {{
                        "input":"AAA","output":"BBB" 
                    }}
                ]
                其中input字段表示一个人的话语, output字段表示专家的话语
'''

num_samples = 1  # 只生成一个对话样本

使用 IntenLM API 初始化生成器

IntenLM API 链接:https://internlm.intern-ai.org.cn/api/document

edg = EDG4LLM(model_provider='internlm', model_name="internlm3-latest", base_url=base_url, api_key=api_key)

生成数据**(****以**对话数据为例)

data = edg.generate(
    task_type="dialogue",
    system_prompt=system_prompt,
    user_prompt=user_prompt,
    num_samples=num_samples
)

完整示例代码如下:

from edg4llm.core.interface import EDG4LLM

api_key = "YOUR API_KEY"
base_url = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions"

# 1. 实例化对象
edg = EDG4LLM(model_provider='internlm', model_name="internlm3-latest", base_url=base_url, api_key=api_key)

# 2. 设置system_prompt(角色控制)
system_prompt = """你是一个精通中华传统文化的大师"""

# 3. 设置user_prompt(数据要求)
user_prompt = '''
    目标: 1. 请生成过春节为场景的连续多轮对话记录
            2. 提出的问题要多样化。
            3. 要符合人类的说话习惯。
            4. 严格遵循规则: 请以如下格式返回生成的数据, 只返回JSON格式,json模板:  
                [
                    {{
                        "input":"AAA","output":"BBB" 
                    }}
                ]
                其中input字段表示一个人的话语, output字段表示专家的话语
'''

num_samples = 1  # 只生成一个对话样本

# 4. 调用 generate 方法生成对话
data = edg.generate(
    task_type="dialogue",
    system_prompt=system_prompt,
    user_prompt=user_prompt,
    num_samples=num_samples
)

# 5. 查看数据
print(data)

生成的部分数据:

[
    {
        "conversation": 
        [
            {
                "input": "嘿,春节快到了,你打算怎么过?", 
                "output": "啊,春节啊,我打算和家人一起过,准备做一些传统的年夜饭,然后看看春晚,享受一下团圆的时光。", 
                "instruction": "你是一个精通中华传统文化的大师"
            }, 
            {
                "input": "听起来真温馨,那你们会做哪些传统的年夜饭呢?", 
                "output": "我们通常会做鱼,象征着年年有余,还有饺子,因为它的形状像元宝,寓意着财富。当然,还有很多其他的菜,比如红烧肉、年糕等,都是家常菜,但每道菜都有它的寓意。"
            }, 
            {
                "input": "说到饺子,我今年想尝试自己包饺子,有什么技巧吗?", 
                "output": "自己包饺子确实很有趣!首先,馅料要调味好,搅拌均匀;其次,饺子皮要擀得薄厚适中,太厚会影响口感;还有,包饺子的时候要注意捏紧边缘,防止煮的时候露馅。最后,煮饺子时要等水开了再下锅,这样煮出来的饺子才饱满。"
            }, 
            {
                "input": "对了,春节期间还有什么传统活动吗?", 
                "output": "除了年夜饭,还有很多传统活动。比如贴春联、放鞭炮、拜年、给红包等。贴春联是为了驱邪迎祥,放鞭炮则是为了驱赶年兽,拜年是向亲朋好友表达祝福,给红包则是给晚辈或者朋友的新年祝福。"
            },
            ...
            {
                "input": "听起来你们家的春节过得非常有意义!最后,你有什么新年愿望吗?", 
                "output": "我的新年愿望很简单,希望家人健康平安,工作顺利,也希望自己在新的一年里能实现一些个人目标,比如学习一项新技能,或者完成一个长期的计划。"
            }
        ]   
    }
]

通过上述步骤,您可以轻松地利用 EDG4LLM 工具与 InternLM3 的强大能力,快速生成并保存用于微调大语言模型的高质量数据集,提高数据生产效率,从而更快速、高效地优化模型性能。

Logo

一站式 AI 云服务平台

更多推荐