イギリスの数学者Clive Humbyによる有名な引用「データは新しいオイル」を聞いたことがあります。これは、21世紀のデータの重要性を説明する最も影響力のある引用ですが、大規模な言語モデルの爆発的な発達とそのトレーニングの後、私たちが持っていないものはデータです。 LLMモデルの開発速度とトレーニング速度は、人間のデータ生成速度をほぼ上回るためです。解決策は、データをより洗練され、タスクまたは合成データ生成に固有のものにすることです。前者はより多くのドメインの専門家ロードされたタスクですが、後者は今日の問題の大きな飢erにより顕著です。
高品質のトレーニングデータは、重要なボトルネックのままです。このブログ投稿では、Llama 3.2とOllamaを使用して合成データを生成するための実用的なアプローチを調査します。プログラムで構造化された教育コンテンツを作成する方法を示します。
学習成果
- 機械学習モデルトレーニングを強化するためのローカル合成データ生成の重要性と技術を理解します。
- プライバシーとセキュリティを維持しながら、高品質のデータセットを作成してローカル合成データ生成を実装する方法を学びます。
- データ生成パイプラインで堅牢なエラー処理と再試行メカニズムの実装に関する実用的な知識を得る。
- JSONの検証、クリーニングテクニック、および一貫した信頼性の高い出力を維持する上での役割を学びます。
- データスキーマの整合性を確保するために、Pydanticモデルの設計と利用に関する専門知識を開発します。
目次
- 合成データとは何ですか?
- 今日、合成データが必要なのはなぜですか?
- LLMおよび小さなLMパフォーマンスへの影響
- プロジェクト構造と環境のセットアップ
- プロジェクトの実装
- 堅牢な生成
- 自動化のテスト
- 結論
- よくある質問
合成データとは何ですか?
合成データとは、必須パターンと統計的特性を保存しながら、実際のデータの特性を模倣する人為的に生成された情報を指します。アルゴリズム、シミュレーション、またはAIモデルを使用して作成され、プライバシーの懸念に対処し、制限されたデータを制御されたシナリオでテストシステムを増強します。実際のデータとは異なり、合成データは特定の要件に合わせて調整し、多様性、バランス、およびスケーラビリティを確保できます。機械学習、ヘルスケア、金融、自律システムなどの分野で広く使用されており、モデルを訓練したり、アルゴリズムを検証したり、環境をシミュレートしたりします。合成データは、倫理的およびコンプライアンスリスクを減らしながら、データ不足と現実世界のアプリケーションの間のギャップを橋渡しします。
今日、合成データが必要なのはなぜですか?
合成データの需要は、いくつかの要因により指数関数的に増加しました
- データプライバシー規制:GDPRおよび同様の規制により、合成データは開発とテストのための安全な代替品を提供します
- コスト効率:実際のデータの収集と注釈は、高価で時間がかかります。
- スカラリビリティ:合成データは、制御されたバリエーションで大量に生成できます
- エッジケースのカバレッジ:自然に収集するのが難しいかもしれないまれなシナリオのデータを生成できます
- 迅速なプロトタイピング:実際のデータ収集を待つことなく、MLモデルの迅速な反復。
- 偏りが少ない:現実の世界から収集されたデータは、エラーが発生しやすく、性別バイアス、人種差別的なテキストに満ちている可能性があり、子供の言葉が安全ではないため、このタイプのデータを使用してモデルを作成するために、モデルの動作は本質的にこれらのバイアスを備えています。合成データを使用すると、これらの動作を簡単に制御できます。
LLMおよび小さなLMパフォーマンスへの影響
合成データは、大小の言語モデルの両方を改善する上で有望な結果を示しています
- 微調整効率:高品質の合成データで微調整されたモデルは、多くの場合、実際のデータでトレーニングされたものと同等のパフォーマンスを示します。
- ドメイン適応:合成データは、専門アプリケーションのドメインギャップをブリッジするのに役立ちます
- データ増強:合成データと実際のデータを組み合わせると、どちらかを使用してより良い結果が得られます。
プロジェクト構造と環境のセットアップ
次のセクションでは、プロジェクトのレイアウトを分類し、必要な環境を構成することをガイドします。
プロジェクト/ ├·ックス。Main.py ├├)。要件。txt ├├。Readme.md └··ックス。English_qa_new.json
次に、Condaを使用してプロジェクト環境を設定します。以下の手順に従ってください
コンドラ環境を作成します
$ conda create -n Synthetic -Data Python = 3.11 #新しく作成されたenvをアクティブにします $ condaは合成データをアクティブにします
Conda envにライブラリをインストールします
ピップインストールPydantic Langchain Langchain-community ピップインストールlangchain-ollama
これで、コード実装を開始するためにすべて設定されています
プロジェクトの実装
このセクションでは、各ステップを詳細にカバーするプロジェクトの実際の実装を掘り下げます。
ライブラリのインポート
プロジェクトを開始する前に、プロジェクトルートでファイル名main.pyを作成し、そのファイルのすべてのライブラリをインポートします。
Pydantic Import Basemodel、Field、VaridationErrorから from langchain.prompts Import prompttemplate langchain_ollamaインポートOllamallmから インポートリストの入力から JSONをインポートします uuidをインポートします Reをインポートします Pathlibインポートパスから 睡眠を輸入してから
今こそ、main.pyファイルでコード実装パーツを継続する時が来ました
まず、データスキーマの実装から始めます。
EnglishQuestion Data Schemaは、生成されたデータが必要なフィールドと自動ID生成を伴う一貫した構造に従うことを保証するPydanticモデルです。
コード実装
クラス英語質問(BASEMODEL): ID:str = field( default_factory = lambda:str(uuid.uuid4())、 説明= "質問の一意の識別子"、 )) カテゴリ:str = field(...、description = "質問タイプ") 質問:str = field(...、description = "英語の質問") 回答:str = field(...、description = "質問に対する正解")) Thought_Process:str = field( ...、説明=「答えに到達する推論プロセスの説明」 ))
これで、EnglishQuestionデータクラスを作成しました。
第二に、Questiongeneratorクラスの実装を開始します。このクラスは、プロジェクトの実装の中核です。
Questiongeneratorクラス構造
クラスQuestiongenerator: def __init __(self、model_name:str、output_file:path): 合格 def clean_json_string(self、text:str) - > str: 合格 def parse_response(self、result:str) - >英語question: 合格 def generate_with_retries(self、category:str、retries:int = 3) - > inglishquestion: 合格 def generate_questions( 自己、カテゴリ:リスト[str]、iterations:int ) - > list [EnglishQuestion]: 合格 def save_to_json(self、quuctions:inglishquestion): 合格 def load_existing_data(self) - > list [dict]: 合格
重要な方法を段階的に実装しましょう
初期化
言語モデル、プロンプトテンプレート、出力ファイルでクラスを初期化します。これにより、Model_Nameを使用してOllamallmのインスタンスを作成し、厳密なJSON形式でQAを生成するためのPromptTemplateを設定します。
コード実装:
def __init __(self、model_name:str、output_file:path): self.llm = ollamallm(model = model_name) self.prompt_template = prompttemplate( input_variables = ["category"]、 テンプレート= "" " 理解と使用をテストする英語の質問を生成します。 {category}に焦点を当てます。質問は、ブランク、1つのライナー、MUTがMCQタイプではないようなものです。この厳格なJSON形式で出力を書き込みます。 {{ 「質問」:「」、 「答え」:「」、 「Thought_Process」:「」 }} JSONオブジェクトの外にテキストを含めないでください。 "" "、 )) self.output_file = output_file self.output_file.touch(esclow_ok = true)
JSONクリーニング
生成プロセス中にLLMから得られる応答には、生成されたデータを倒す可能性のある多くの不要な特徴があります。したがって、これらのデータをクリーニングプロセスに渡す必要があります。
ここでは、Regexを使用してJSON Keys/Valuesで共通のフォーマット問題を修正し、Newlineや特殊文字などの問題のある文字を置き換えます。
コード実装:
def clean_json_string(self、text:str) - > str: "" "不正なJSONまたは不完全なJSONを処理するための改善されたバージョン。" "" start = text.find( "{") end = text.rfind( "}") start == -1またはend == -1の場合: Raise ValueError(f "no jsonオブジェクトが見つかりません。応答は{text}") json_str =テキスト[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辞書に変換し、辞書をEnglishQuestionオブジェクトにマッピングします。</p><p><strong>コード実装:</strong></p><pre class="brush:php;toolbar:false"> def parse_response(self、result:str) - >英語question: "" "LLM応答を解析し、スキーマに対して検証します。" "" cleaned_json = self.clean_json_string(result) parsed_result = json.loads(cleaned_json) return EnglishQuestion(** parsed_result)
データの持続性
永続的なデータ生成の場合、このためにいくつかのNOSQLデータベース(MongoDBなど)を使用できますが、ここでは、生成されたデータを保存するために簡単なJSONファイルを使用します。
コード実装:
def load_existing_data(self) - > list [dict]: "" "jsonファイルから既存の質問を読み込む。" "" 試す: open(self.output_file、 "r")がf: json.load(f)を返します を除いて(filenotfounderror、json.jsondecodeerror): 戻る []
堅牢な生成
このデータ生成フェーズには、2つの最も重要な方法があります。
- 再試行メカニズムで生成します
- 質問生成方法
再試行メカニズムの目的は、障害の場合に自動化に応答を生成するように強制することです。質問を複数回生成し(デフォルトは3回)、エラーを記録し、レトリの間に遅延を追加します。また、すべての試みが失敗した場合、例外が発生します。
コード実装:
def generate_with_retries(self、category:str、retries:int = 3) - > inglishquestion: 範囲での試みの場合(再試行): 試す: result = self.prompt_template | self.llm response = result.invoke(input = {"category":category}) self.parse_response(応答)を返す eとしての例外を除く: 印刷( f "redise {pirice 1}/{retries} category '{category}':{e}"で失敗しました} )) 睡眠(2)#再試行前の小さな遅延 Raise ValueError( f「{retries}試行後にカテゴリ '{category}'を処理できませんでした。 ))
質問生成方法は、カテゴリのリストに対して複数の質問を生成し、それらをストレージに保存します(ここではJSONファイル)。カテゴリを反復し、各カテゴリのGenerating_with_retriesメソッドを呼び出します。そして最後に、Save_To_jsonメソッドを使用して、正常に生成された各質問を保存します。
def generate_questions( 自己、カテゴリ:リスト[str]、iterations:int ) - > list [EnglishQuestion]: "" "カテゴリのリストに複数の質問を生成する" "" all_questions = [] _ in range(iterations): カテゴリのカテゴリの場合: 試す: 質問= self.generate_with_retries(category) self.save_to_json(質問) all_Questions.Append(質問) print(f "カテゴリの質問に正常に生成された質問:{category}") eとして(validationError、valueError)を除く: 印刷(f "エラー処理カテゴリ '{category}':{e}") all_questionsを返します
端子に結果が表示されます
ここでLLMから生成される応答が何であるかを知るために、単純な印刷機能があります。
dif display_questions(question:list [englishquestion]): print( "\ ngenerated英語の質問:") 質問の質問について: print( "\ n ---") print(f "id:{question.id}") 印刷(f "question:{question.question}") print(f "Answer:{question.answer}") print(f "思考プロセス:{question.thought_process}")
自動化のテスト
プロジェクトを実行する前に、プロジェクトルートにEnglish_Qa_new.jsonファイルを作成します。
__name__ == "__main__"の場合: output_file = path( "English_qa_new.json") generator = questiongenerator(model_name = "llama3.2"、output_file = output_file) カテゴリ= [ 「単語の使用」、 「句ver」、 "語彙"、 「イディオム」、 ] イテレーション= 2 generated_questions = generator.generate_questions(カテゴリ、反復) display_questions(generated_questions)
次に、ターミナルに移動して入力します。
python main.py
出力:
これらの質問は、プロジェクトルートに保存されます。保存された質問は次のように見えます:
このプロジェクトで使用されるすべてのコードはこちらです。
結論
合成データ生成は、AIおよびLLMSの急速な進歩の時代における高品質のトレーニングデータセットの需要の高まりに対処するための強力なソリューションとして浮上しています。 Llama 3.2やOllamaなどのツールを活用することにより、Pydanticなどの堅牢なフレームワークを作成することで、特定のニーズに合わせた構造化、スケーラブル、およびバイアスフリーのデータセットを作成できます。このアプローチは、費用と時間のかかる現実世界のデータ収集への依存を減らすだけでなく、プライバシーと倫理的コンプライアンスを保証します。これらの方法論を改良すると、合成データは、イノベーションの推進、モデルのパフォーマンスの向上、多様な分野での新しい可能性のロックを解除する上で極めて重要な役割を果たし続けます。
キーテイクアウト
- ローカル合成データ生成により、プライバシーを損なうことなくモデルの精度を改善できる多様なデータセットを作成できます。
- ローカル合成データ生成を実装することで、実際の機密データへの依存を最小限に抑えることにより、データセキュリティを大幅に強化できます。
- 合成データは、プライバシーを保証し、バイアスを削減し、データ収集コストを削減します。
- カスタマイズされたデータセットは、多様なAIおよびLLMアプリケーション全体で適応性を向上させます。
- 合成データは、倫理的、効率的、革新的なAI開発への道を開きます。
よくある質問
Q 1。なぜAPIベースのモデルの代わりにOllamaを使用するのですか?A. Ollamaはローカルの展開機能を提供し、コストと待ち時間を削減しながら、生成プロセスをより強化します。
Q 2。生成された質問の品質をどのように確保できますか?A.品質を維持するために、実装はPydantic検証、再試行メカニズム、およびJSONクリーニングを使用します。追加のメトリックと維持検証を実装できます。
Q 3。このアプローチの制限は何ですか?A.ローカルLLMは、より大きなモデルと比較して低品質の出力を持っている可能性があり、ローカルコンピューティングリソースによって生成速度を制限できます。
Q4。合成データは安全で倫理的ですか?A.はい、合成データは、識別可能な情報を削除することによりプライバシーを保証し、データバイアスに対処し、実際の感受性データへの依存を減らすことにより、倫理的AI開発を促進します。
Q5。合成データを使用することの重要な課題は何ですか?A.課題には、データリアリズムの確保、ドメインの関連性の維持、効果的なモデルトレーニングのための実世界のユースケースと合成データ特性の調整が含まれます。
以上がローカル合成データ生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

自宅で大規模な言語モデルを簡単に実行する:LM Studioユーザーガイド 近年、ソフトウェアとハードウェアの進歩により、パーソナルコンピューターで大きな言語モデル(LLM)を実行することが可能になりました。 LM Studioは、このプロセスを簡単かつ便利にするための優れたツールです。この記事では、LM Studioを使用してLLMをローカルに実行する方法に飛び込み、重要なステップ、潜在的な課題、LLMをローカルに配置することの利点をカバーします。あなたが技術愛好家であろうと、最新のAIテクノロジーに興味があるかどうかにかかわらず、このガイドは貴重な洞察と実用的なヒントを提供します。始めましょう! 概要 LLMをローカルに実行するための基本的な要件を理解してください。 コンピューターにLM Studiをセットアップします

Guy Periは、McCormickの最高情報およびデジタルオフィサーです。彼の役割からわずか7か月後ですが、ペリは同社のデジタル能力の包括的な変革を急速に進めています。データと分析に焦点を当てている彼のキャリアに焦点が当てられています

導入 人工知能(AI)は、言葉だけでなく感情も理解し、人間のタッチで反応するように進化しています。 この洗練された相互作用は、AIおよび自然言語処理の急速に進む分野で重要です。 th

導入 今日のデータ中心の世界では、競争力と効率の向上を求める企業にとって、高度なAIテクノロジーを活用することが重要です。 さまざまな強力なツールにより、データサイエンティスト、アナリスト、開発者が構築、Deplを作成することができます。

今週のAIの風景は、Openai、Mistral AI、Nvidia、Deepseek、Hugging Faceなどの業界の巨人からの画期的なリリースで爆発しました。 これらの新しいモデルは、TRの進歩によって促進された電力、手頃な価格、アクセシビリティの向上を約束します

しかし、検索機能を提供するだけでなくAIアシスタントとしても機能する同社のAndroidアプリは、ユーザーをデータの盗難、アカウントの買収、および悪意のある攻撃にさらす可能性のある多くのセキュリティ問題に悩まされています。

会議や展示会で何が起こっているのかを見ることができます。エンジニアに何をしているのか尋ねたり、CEOに相談したりできます。 あなたが見ているところはどこでも、物事は猛烈な速度で変化しています。 エンジニア、および非エンジニア 違いは何ですか

Rocketpy:A包括的なガイドでロケット発売をシミュレートします この記事では、強力なPythonライブラリであるRocketpyを使用して、高出力ロケット発売をシミュレートすることをガイドします。 ロケットコンポーネントの定義からシミュラの分析まで、すべてをカバーします


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
