搜尋
首頁科技週邊人工智慧本地合成數據生成

您已經聽說英國數學家克萊夫·亨比(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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具