搜索
首页科技周边人工智能本地合成数据生成

您已经听说英国数学家克莱夫·亨比(Clive Humby)著名的报价“数据是新石油”,这是最有影响力的报价,描述了21世纪数据的重要性,但是在大型语言模型的爆炸性开发之后,我们没有正确的数据是数据。因为LLM模型的开发速度和训练速度几乎超过了人类的数据生成速度。该解决方案是使数据更加精致,并且特定于任务或合成数据生成。前者是较大的域专家加载任务,但后者对当今问题的渴望更为突出。

高质量的培训数据仍然是关键的瓶颈。这篇博客文章探讨了一种使用Llama 3.2和Ollama生成合成数据的实用方法。它将展示我们如何以编程方式创建结构化的教育内容。

学习成果

  • 了解局部合成数据生成对增强机器学习模型培训的重要性和技术。
  • 了解如何实施本地合成数据生成以创建高质量数据集,同时保留隐私和安全性。
  • 在数据生成管道中实施强大的错误处理和重试机制方面获得实践知识。
  • 了解JSON验证,清洁技术及其在保持一致可靠的产出中的作用。
  • 开发设计和利用Pydantic模型来确保数据模式完整性的专业知识。

目录

  • 什么是合成数据?
  • 为什么我们今天需要合成数据?
  • 对LLM和小型LM性能的影响
  • 项目结构和环境设置
  • 项目实施
  • 强大的一代
  • 测试自动化
  • 结论
  • 常见问题

什么是合成数据?

综合数据是指人为生成的信息,这些信息模仿了现实世界数据的特征,同时保留基本模式和统计属性。它是使用算法,仿真或AI模型创建的,以解决受控方案中的隐私问题,增强有限数据或测试系统。与实际数据不同,合成数据可以根据特定要求量身定制,以确保多样性,平衡和可扩展性。它被广泛用于机器学习,医疗保健,金融和自治系统等领域,以训练模型,验证算法或模拟环境。合成数据弥合了数据稀缺和现实世界应用之间的差距,同时降低了道德和合规风险。

为什么我们今天需要合成数据?

由于几个因素,对合成数据的需求呈指数增长

本地合成数据生成

  • 数据隐私法规:使用GDPR和类似法规,合成数据为开发和测试提供了安全的选择
  • 成本效率:收集和注释真实数据是昂贵且耗时的。
  • 可及性:可以大量生成具有控制变化的合成数据
  • 边缘案例覆盖范围:我们可以生成可能难以自然收集的稀有情况的数据
  • 快速原型: ML模型上的快速迭代,而无需等待实际数据收集。
  • 不太偏见:从现实世界中收集的数据可能是错误的,并且充满了性别偏见,种族主义文本,并且对儿童的单词不安全,因此要与这种类型的数据制作模型,模型的行为也与这些偏见同在。借助合成数据,我们可以轻松控制这些行为。

对LLM和小型LM性能的影响

合成数据显示出有希望的结果,可以改善大型和小语言模型

本地合成数据生成

  • 微调效率:在高质量合成数据上进行微调的模型通常表现出与经过实际数据培训的型号相当的性能
  • 域的适应性:合成数据有助于桥接域间隙
  • 数据增强:合成和真实数据的结合通常可以单独使用任何一个单独产生更好的结果。

项目结构和环境设置

在下一节中,我们将分解项目布局,并指导您配置所需的环境。

项目/
├─-main.py
├ - ─txt
├├前
└ - ─英语_qa_new.json

现在,我们将使用Conda建立我们的项目环境。按下以下步骤

创建Conda环境

$ conda create -n合成data python = 3.11

#激活新创建的Env

$ conda激活合成数据

在Conda Env中安装库

PIP安装Pydantic Langchain Langchain-Community
PIP安装Langchain-Collama

现在我们都设置了以开始代码实现

项目实施

在本节中,我们将深入研究项目的实际实施,详细介绍每个步骤。

导入库

在启动项目之前,我们将在项目root中创建一个文件名main.py,并在该文件上导入所有库:

来自Pydantic Import Basemodel,field,validationError
来自langchain.prompts导入提示网板
从langchain_ollama进口ollamallm
从输入导入列表
进口JSON
导入uuid
导入
从pathlib导入路径
从时间进口睡眠

现在是时候继续在main.py文件上继续执行代码

首先,我们从实施数据架构开始。

EnglishQuestion Data Schema是一个Pydantic模型,可确保我们的生成数据遵循具有所需字段和自动ID生成的一致结构。

代码实现

班级英语Question(basemodel):
    id:str = field(
        default_factory = lambda:str(uuid.uid4()),
        描述=“问题的唯一标识符”,
    )
    类别:str =字段(...,描述=“问题类型”)
    问题:str =字段(...,description =“英语问题”)
    答案:str = field(...,description =“问题的正确答案”)
    think_process:str = field(
        ...,description =“解释得出答案的推理过程”
    )

现在,我们创建了英语问题数据类。

其次,我们将开始实现QuestionGenerator类。该课程是项目实施的核心。

问题加生子类结构

班级询问器:
    def __init __(self,model_name:str,output_file:path):
        经过

    def clean_json_string(self,text:str) - > str:
        经过

    def parse_response(self,result:str) - >英语标语:
        经过


    def generate_with_retries(自我,类别:str,reteries:int = 3) - >英语标语:
        经过

    def generate_questions(
        自我,类别:列表[str],迭代:int
    ) - >列表[英语标语]:
        经过

    def save_to_json(self,问题:英语提议):
        经过

    def load_existing_data(self) - > list [dict]:
        经过

让我们逐步实现关键方法

初始化

使用语言模型,提示模板和输出文件初始化类。这样,我们将使用model_name创建一个Ollamallm的实例,并设置一个以严格的JSON格式生成质量检查的提示网格。

代码实施:

 def __init __(self,model_name:str,output_file:path):
        self.llm = ollamallm(model = model_name)
        self.prompt_template = strightemplate(
            input_variables = [“类别”],
            模板=“”“”
            产生一个英语问题,以测试理解和用法。
            专注于{category}。问题将就像填写空白一样,一个衬里,一个不是MCQ类型。以这种严格的JSON格式编写输出:

            {{
                “问题”:“ ”,
                “答案”:“ ”,
                “ think_process”:“ ”
            }}}

            请勿在JSON对象之外包含任何文本。
            ”“”,
        )
        self.output_file = output_file
        self.output_file.touch(equent_ok = true)

JSON清洁

在生成过程中,我们将从LLM中获得的响应将具有许多不必要的额外字符,这些字符可能会使生成的数据有序,因此您必须通过清洁过程传递这些数据。

在这里,我们将使用REGEX在JSON键/值中修复常见的格式问题,替换有问题的字符,例如Newline和特殊字符。

代码实施:

 def clean_json_string(self,text:str) - > str:
        “”“改进的版本来处理错误或不完整的JSON。”“”
        start = text.find(“ {”)
        end = text.rfind(“}”)

        如果开始== -1或end == -1:
            提高ValueError(f“未找到json对象。响应是:{text}”)

        json_str = text [start:end 1]

        #删除任何可能打破JSON解析的特殊字符
        json_str = json_str.replace(“ \ n”,“”).replace(“ \ r”,“”)
        json_str = re.sub(r“ [^\ x20- \ x7e]”,“”,json_str)

        #解决常见的JSON格式问题
        json_str = re.sub(
            r'(?<h3 id="反应解析">反应解析</h3><p>解析方法将使用上述清洁过程清除LLM的响应,验证响应以保持一致性,将清洁的JSON转换为Python词典,然后将字典映射到英语标语对象。</p><p><strong>代码实施:</strong></p><pre class="brush:php;toolbar:false"> def parse_response(self,result:str) - >英语标语:
        “”“解析LLM响应并对模式进行验证。
        cleaned_json = self.clean_json_string(结果)
        parsed_result = json.loads(cleaned_json)
        返回英语标题(** parsed_result)

数据持久性

对于持续的数据生成,尽管我们可以使用一些NOSQL数据库(MongoDB等)为此,但在这里我们使用一个简单的JSON文件来存储生成的数据。

代码实施:

 def load_existing_data(self) - > list [dict]:
        “”“加载JSON文件中的现有问题。”“”
        尝试:
            用fling(self.output_file,“ r”)作为f:
                返回JSON.LOAD(F)
        除(Filenotfounderror,json.jsondecodeerror):
            返回 []

强大的一代

在这个数据生成阶段,我们有两种最重要的方法:

  • 生成重试机制
  • 问题生成方法

重试机制的目的是强迫自动化在失败时产生响应。它尝试多次生成一个问题(默认值为3次),并将记录错误并在重试之间添加延迟。如果所有尝试失败,它也会引起例外。

代码实施:

 def generate_with_retries(自我,类别:str,reteries:int = 3) - >英语标语:
        尝试进行范围(检索):
            尝试:
                结果= self.prompt_template | self.llm
                响应= result.invoke(input = {“ category”:category})
                返回self.parse_response(响应)
            除例外为E:
                打印(
                    f“尝试{尝试1}/{retry}因类别'{category}':{e}
                )
                睡眠(2)#重试之前的小延迟
        提高价值Error(
            f“未能处理{retry}尝试后处理类别'{category}'。”
        )

问题生成方法将为类别列表生成多个问题,并将其保存在存储中(这里JSON文件)。它将在类别上迭代并调用每个类别的呼叫generating_with_retries方法。最后,它将使用save_to_json方法保存每个成功生成的问题。

 def generate_questions(
        自我,类别:列表[str],迭代:int
    ) - >列表[英语标语]:
        “”“为类别列表生成多个问题。“”
        all_questions = []
        对于_范围(迭代):
            类别类别:
                尝试:
                    问题= self.generate_with_retries(类别)
                    self.save_to_json(问题)
                    all_questions.append(问题)
                    print(f“成功生成类别的问题:{类别}”)
                除了(验证Error,valueerror)为e:
                    print(f“错误处理类别'{类别}':{e}”)
        返回all_questions

在终端上显示结果

为了了解LLM产生的响应是一个简单的打印功能。

 def display_questions(问题:列表[英语标语]):
    打印(“ \ ngenerated英语问题:”)
    对于问题中的问题:
        打印(“ \ n ---”)
        打印(f“ id:{Question.id}”)
        打印(f“问题:{Question.Question}”)
        打印(f“答案:{Question.answer}”)
        打印(f“思考过程:{Question.thought_process}”)

测试自动化

在运行项目之前,请在项目根上创建English_QA_NEW.JSON文件。

如果__name__ ==“ __ -main __”:
    output_file =路径(“英语_qa_new.json”)
    Generator = QuestionGenerator(model_name =“ llama3.2”,output_file = output_file)

    类别= [
        “用法”,
        “短语”,
        “词汇”,
        “成语”,
    这是给出的
    迭代= 2

    generated_questions = generator.generate_questions(类别,迭代)
    display_questions(生成_questions)

现在,转到终端并输入:

 python main.py

输出:

本地合成数据生成

这些问题将保存在您的项目根源中。保存的问题看起来像:

本地合成数据生成

该项目中使用的所有代码都在这里。

结论

在AI和LLMS快速发展的时代,合成数据生成已成为解决对高质量培训数据集不断增长的需求的强大解决方案。通过利用诸如Llama 3.2和Ollama之类的工具,以及像Pydantic这样的强大框架,我们可以创建满足特定需求的结构化,可扩展性和无偏见的数据集。这种方法不仅降低了对昂贵和耗时的现实数据收集的依赖,而且还可以确保隐私和道德合规性。随着我们完善这些方法,合成数据将继续在推动创新,改善模型性能并解锁不同领域的新可能性方面发挥关键作用。

关键要点

  • 本地合成数据生成可以创建各种数据集,这些数据集可以提高模型准确性而不会损害隐私。
  • 实施本地合成数据生成可以通过最大程度地依赖对现实世界敏感数据的依赖来显着提高数据安全性。
  • 合成数据可确保隐私,减少偏见并降低数据收集成本。
  • 量身定制的数据集改善了各种AI和LLM应用程序的适应性。
  • 合成数据为道德,高效和创新的AI发展铺平了道路。

常见问题

Q 1。为什么要使用Ollama代替基于API的模型?

A. Ollama提供本地部署功能,降低成本和延迟,同时对生成过程提供更多控制。

2。我们如何确保产生的问题的质量?

答:为了保持质量,该实施使用了Pydantic验证,重试机制和JSON清洁。可以实施其他指标和维护验证。

3。这种方法有什么局限性?

答:与较大的模型相比,本地LLMS可能具有较低的质量输出,并且可以通过本地计算资源限制生成速度。

Q4。合成数据是否安全和道德使用?

答:是的,综合数据通过删除可识别信息并通过解决数据偏差并降低对现实世界敏感数据的依赖性来确保隐私。

Q5。使用合成数据的主要挑战是什么?

A.挑战包括确保数据现实主义,维持域相关性以及将合成数据特征与现实世界用例相结合,以进行有效的模型培训。

以上是本地合成数据生成的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
无法使用chatgpt!解释可以立即测试的原因和解决方案[最新2025]无法使用chatgpt!解释可以立即测试的原因和解决方案[最新2025]May 14, 2025 am 05:04 AM

ChatGPT无法访问?本文提供多种实用解决方案!许多用户在日常使用ChatGPT时,可能会遇到无法访问或响应缓慢等问题。本文将根据不同情况,逐步指导您解决这些问题。 ChatGPT无法访问的原因及初步排查 首先,我们需要确定问题是出在OpenAI服务器端,还是用户自身网络或设备问题。 请按照以下步骤进行排查: 步骤1:检查OpenAI官方状态 访问OpenAI Status页面 (status.openai.com),查看ChatGPT服务是否正常运行。如果显示红色或黄色警报,则表示Open

计算ASI的风险始于人类的思想计算ASI的风险始于人类的思想May 14, 2025 am 05:02 AM

2025年5月10日,麻省理工学院物理学家Max Tegmark告诉《卫报》,AI实验室应在释放人工超级智能之前模仿Oppenheimer的三位一体测试演算。 “我的评估是'康普顿常数',这是一场比赛的可能性

易于理解的解释如何编写和撰写歌词和推荐工具易于理解的解释如何编写和撰写歌词和推荐工具May 14, 2025 am 05:01 AM

AI音乐创作技术日新月异,本文将以ChatGPT等AI模型为例,详细讲解如何利用AI辅助音乐创作,并辅以实际案例进行说明。我们将分别介绍如何通过SunoAI、Hugging Face上的AI jukebox以及Python的Music21库进行音乐创作。 通过这些技术,每个人都能轻松创作原创音乐。但需注意,AI生成内容的版权问题不容忽视,使用时务必谨慎。 让我们一起探索AI在音乐领域的无限可能! OpenAI最新AI代理“OpenAI Deep Research”介绍: [ChatGPT]Ope

什么是chatgpt-4?对您可以做什么,定价以及与GPT-3.5的差异的详尽解释!什么是chatgpt-4?对您可以做什么,定价以及与GPT-3.5的差异的详尽解释!May 14, 2025 am 05:00 AM

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显着提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

解释如何使用chatgpt应用程序!日本支持和语音对话功能解释如何使用chatgpt应用程序!日本支持和语音对话功能May 14, 2025 am 04:59 AM

CHATGPT应用程序:与AI助手释放您的创造力!初学者指南 ChatGpt应用程序是一位创新的AI助手,可处理各种任务,包括写作,翻译和答案。它是一种具有无限可能性的工具,可用于创意活动和信息收集。 在本文中,我们将以一种易于理解的方式解释初学者,从如何安装chatgpt智能手机应用程序到语音输入功能和插件等应用程序所独有的功能,以及在使用该应用时要牢记的要点。我们还将仔细研究插件限制和设备对设备配置同步

如何使用中文版Chatgpt?注册程序和费用的说明如何使用中文版Chatgpt?注册程序和费用的说明May 14, 2025 am 04:56 AM

ChatGPT中文版:解锁中文AI对话新体验 ChatGPT风靡全球,您知道它也提供中文版本吗?这款强大的AI工具不仅支持日常对话,还能处理专业内容,并兼容简体中文和繁体中文。无论是中国地区的使用者,还是正在学习中文的朋友,都能从中受益。 本文将详细介绍ChatGPT中文版的使用方法,包括账户设置、中文提示词输入、过滤器的使用、以及不同套餐的选择,并分析潜在风险及应对策略。此外,我们还将对比ChatGPT中文版和其他中文AI工具,帮助您更好地了解其优势和应用场景。 OpenAI最新发布的AI智能

5 AI代理神话,您需要停止相信5 AI代理神话,您需要停止相信May 14, 2025 am 04:54 AM

这些可以将其视为生成AI领域的下一个飞跃,这为我们提供了Chatgpt和其他大型语言模型聊天机器人。他们可以代表我们采取行动,而不是简单地回答问题或产生信息

易于理解使用Chatgpt创建和管理多个帐户的非法性的解释易于理解使用Chatgpt创建和管理多个帐户的非法性的解释May 14, 2025 am 04:50 AM

使用chatgpt有效的多个帐户管理技术|关于如何使用商业和私人生活的详尽解释! Chatgpt在各种情况下都使用,但是有些人可能担心管理多个帐户。本文将详细解释如何为ChatGpt创建多个帐户,使用时该怎么做以及如何安全有效地操作它。我们还介绍了重要的一点,例如业务和私人使用差异,并遵守OpenAI的使用条款,并提供指南,以帮助您安全地利用多个帐户。 Openai

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具