イギリスの数学者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 サイトの他の関連記事を参照してください。

法的技術革命は勢いを増し、法律専門家にAIソリューションを積極的に受け入れるように促しています。 受動的抵抗は、競争力を維持することを目指している人にとってはもはや実行可能な選択肢ではありません。 なぜテクノロジーの採用が重要なのですか? 法律専門家

多くの人は、AIとの相互作用が匿名であると仮定しており、人間のコミュニケーションとはまったく対照的です。 ただし、AIはすべてのチャット中にユーザーを積極的にプロファイルします。 すべてのプロンプト、すべての単語が分析および分類されます。 AI Revoのこの重要な側面を探りましょう

成功した人工知能戦略は、強力な企業文化サポートから分離することはできません。 Peter Druckerが言ったように、事業運営は人々に依存しており、人工知能の成功も依存しています。 人工知能を積極的に受け入れる組織の場合、AIに適応する企業文化を構築することが重要であり、AI戦略の成功または失敗さえ決定します。 ウェストモンローは最近、繁栄するAIに優しい企業文化を構築するための実用的なガイドをリリースしました。ここにいくつかの重要なポイントがあります。 1. AIの成功モデルを明確にする:まず第一に、AIがどのようにビジネスに力を与えることができるかについての明確なビジョンが必要です。理想的なAI操作文化は、人間とAIシステム間の作業プロセスの自然統合を実現できます。 AIは特定のタスクが得意であり、人間は創造性と判断が得意です

メタはAIアシスタントアプリケーションをアップグレードし、ウェアラブルAIの時代が来ています! ChatGPTと競合するように設計されたこのアプリは、テキスト、音声インタラクション、画像生成、Web検索などの標準的なAI機能を提供しますが、初めてジオロケーション機能を追加しました。これは、メタAIがあなたがどこにいるのか、あなたがあなたの質問に答えるときにあなたが何を見ているのかを知っていることを意味します。興味、場所、プロファイル、アクティビティ情報を使用して、これまで不可能な最新の状況情報を提供します。このアプリはリアルタイム翻訳もサポートしており、レイバンメガネのAIエクスペリエンスを完全に変更し、その有用性を大幅に改善しました。 外国映画への関税の賦課は、メディアや文化に対する裸の力の行使です。実装された場合、これはAIと仮想生産に向かって加速します

人工知能は、サイバー犯罪の分野に革命をもたらし、新しい防御スキルを学ぶことを強いています。サイバー犯罪者は、ディープフォーファリーやインテリジェントなサイバー攻撃などの強力な人工知能技術を、前例のない規模で詐欺と破壊に使用しています。過去1年間、グローバルビジネスの87%がAIサイバー犯罪の標的を絞っていると報告されています。 それでは、どうすればこの賢い犯罪の波の犠牲者になることを避けることができますか?リスクを特定し、個人および組織レベルで保護対策を講じる方法を探りましょう。 サイバー犯罪者が人工知能をどのように使用するか 技術が進むにつれて、犯罪者は、個人、企業、政府を攻撃する新しい方法を常に探しています。人工知能の広範な使用は最新の側面かもしれませんが、その潜在的な害は前例のないものです。 特に、人工知能

人工知能(AI)と人間の知能(NI)の複雑な関係は、フィードバックループとして最もよく理解されています。 人間はAIを作成し、人間の活動によって生成されたデータでそれをトレーニングして、人間の能力を強化または複製します。 このai

人類の最近の声明は、最先端のAIモデルを取り巻く理解の欠如を強調しており、専門家の間で激しい議論を引き起こしました。 この不透明度は本物の技術的危機ですか、それとも単により多くのソフへの道の一時的なハードルですか

インドは、言語の豊かなタペストリーを備えた多様な国であり、地域間のシームレスなコミュニケーションを持続的な課題にしています。ただし、SarvamのBulbul-V2は、高度なテキストからスピーチ(TTS)Tでこのギャップを埋めるのに役立ちます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
