Data Science

LLM テクニックの習得: データの前処理

Reading Time: 2 minutes

大規模言語モデル (LLM) の出現は、企業が AI を活用して業務とサービスを強化する方法に大きな変化をもたらしました。LLM は日常的な作業を自動化し、プロセスを合理化することで、人的リソースをより戦略的な取り組みに割り当てることで、全体的な効率性と生産性を向上させます。

LLM を高精度にトレーニングおよびカスタマイズするには、高品質なデータが必要となるため、多くの課題を伴います。データの質が低く、量が十分でないと、モデルの精度が大幅に低下する可能性があるため、AI 開発者にとってデータセットの準備は重要な作業の 1 つとなっています。

データセットには往々にして重複したドキュメント、個人を特定できる情報 (PII)、フォーマットに関する問題が存在します。データセットの中には、ユーザーにリスクをもたらす有害な情報や不適切な情報が含まれているものさえあります。適切な処理を行わずにこういったデータセットでモデルをトレーニングすると、トレーニング時間が長引いたり、モデルの品質が低下する場合があります。もう 1 つの大きな課題はデータの不足です。モデル開発者はトレーニング用の公開データを使い果たしつつあり、多くの人々がサードパーティのベンダーに依頼したり、高度な LLM を使用して合成データを生成したりするようになっています。

この記事では、トレーニング用のデータの品質を向上することで LLM のパフォーマンスを最適化するためのデータ処理テクニックとベスト プラクティスについて説明します。また、NVIDIA NeMo Curator の概要および前述した課題への対処方法を説明し、LLM の実際のデータ処理のユース ケースもご紹介します。

テキスト処理パイプラインとベスト プラクティス

大規模データの前処理は容易ではありません。特に、データセットが主にWeb スクレイピングされたデータで構成されており、大量の不適切なフォーマットの低品質データが含まれている可能性が高い場合はなおさらです。

図 1. NeMo Curator を使用して構築できるテキスト処理パイプライン

図 1 は、以下の手順を含む包括的なテキスト処理パイプラインの概要を示しています。

  1. ソースからデータセットをダウンロードし、JSONL などの望ましいフォーマットで抽出します。
  2. Unicode の修正や言語による分類など、予備的なテキスト クリーニングを適用します。
  3. 特定の品質基準に基づいて、標準的なフィルターとカスタム定義のフィルターの両方をデータセットに適用します。
  4. さまざまなレベルの重複排除 (厳密、曖昧、意味的) を実行します。
  5. モデルベースの品質フィルタリング、個人情報 (PII) の削除、(分散処理による) データ分類、下流タスクの汚染除去などの高度な品質フィルタリングを必要に応じて選択的に適用します。
  6. 複数のソースから収集され、精選されたデータセットを一体化し、統合したデータセットを作成します。

以下のセクションでは、これらの各段階について詳しく説明します。

テキストをダウンロードして抽出

データ キュレーションの最初のステップでは、 Common Crawl のような、さまざまな一般的なソース、arXiv や PubMed などの専門的なコレクション、自社保有のプライベート データなどからデータセットをダウンロードして準備します。これらのデータセットには、それぞれテラバイト単位のデータが含まれている可能性があります。

この重要なフェーズでは、保存形式と抽出方法を慎重に検討する必要があります。一般に公開されホストされているデータセットは圧縮形式 (例: .warc.gz、tar.gz、zip ファイル) で提供されることが多いため、後続の処理のためにより扱いやすい形式 (.jsonl や .parquet など) に変換する必要があります。

予備的なテキスト クリーニング

Unicode の修正と言語による分類は、特に大規模な Web スクレイピングによるテキスト コーパスを扱う場合、データ キュレーション パイプラインの重要な初期ステップです。このフェーズでは、不適切にデコードされた Unicode 文字と、データセット内に複数の言語が存在するという 2 つの基本的な課題に対処します。

Unicode 形式に関する問題は、多くの場合、文字エンコードの誤りや、エンコード/デコード サイクルが複数回実行されることによって発生します。よくある問題としては、特殊文字が文字化けした文字列 (例:「café」が「café」と表示される) として表示されることが挙げられます。言語の識別と分類は、特に単一言語のデータセットのキュレーションに関心のある開発者にとっては同様に重要です。さらに、ヒューリスティック フィルタリング、モデルベースの品質分類器などのデータ キュレーションのステップの一部は言語に依存しています。

この予備的な前処理ステップでは、識別された言語で適切にエンコードされたクリーンなテキストが確保され、その後のキュレーションステップの基盤となります。

ヒューリスティック フィルタリング

ヒューリスティック フィルタリングでは、ルールベースの評価指標と統計的尺度を使用して、低品質なコンテンツを特定し、削除します。

このプロセスは通常、ドキュメントの長さ、繰り返しパターン、句読点の分布、テキストの構造的整合性など、複数の品質基準で評価されます。一般的なヒューリスティック フィルターには以下のようなものがあります。

  1. 単語数フィルター: 意味をなさないほど短すぎる、または疑わしいほどに長すぎるテキストをフィルタリングします。
  2. 定型文フィルター: 過剰な定型文を含むテキストを特定し、削除します。
  3. N-gram 反復フィルター: 異なる長さで繰り返されるフレーズを特定し、低品質または人工的に生成されたコンテンツである可能性がある過剰な反復を含む文書を削除します。

ヒューリスティック フィルタリングの場合は、カスケード アプローチを採るのが最善の方法です。これにより、フィルタリング プロセスの透明性を維持しながら、より繊細な品質管理が可能になります。処理パフォーマンスを向上させるために、バッチ フィルタリングを採用して複数のドキュメントを同時に処理すると大規模なデータセットを扱う際の計算時間を大幅に短縮することができます。

重複排除

重複排除は、モデルのトレーニング効率の向上、計算コストの削減、データの多様性の確保に不可欠です。繰り返し出現するコンテンツにモデルが過剰適合するのを防ぎ、汎用性を高めます。このプロセスは、厳密、曖昧、意味という 3 つの主な重複排除アプローチを通じて実装できます。これらは、同一のコピーから概念的に類似したコンテンツまで、大規模データセット内の異なるタイプの重複を処理する包括的な戦略を形成します。

厳密な重複排除

厳密な重複排除は、完全に同一のドキュメントを識別し、削除することに重点を置いています。この方法では、ドキュメントごとにハッシュ署名を生成し、ハッシュごとにドキュメントをグループ化してバケットに格納し、バケットごとに 1 つのドキュメントのみを残します。この方法は計算効率が高く、高速かつ信頼性が高いのですが、完全に一致するコンテンツの検出に限定されるため、意味的には同等なのにわずかに異なる文書を見逃す可能性があります。

曖昧な重複排除

曖昧な重複排除は、MinHash 署名と局所性鋭敏型ハッシュ化 (LSH: Locality-Sensitive Hashing) を使用して、類似したドキュメントを識別し、ほぼ重複するコンテンツに対処します。

このプロセスには、以下のステップが含まれます。

  1. ドキュメントの MinHash 署名を計算します。
  2. LSH を使用して、類似したドキュメントをバケットにグループ化します。1 つのドキュメントが 1 つ以上のバケットに属する場合もあります。
  3. 同じバケット内のドキュメント間で Jaccard 類似度を計算します。
  4. Jaccard 類似度に基づいて、類似度行列をグラフに変換し、グラフ内の連結成分を特定します。
  5. 連結成分内のドキュメントは曖昧な重複と見なされます。
  6. 特定した重複をデータセットから削除します。

この方法は、軽微な変更が加えられたコンテンツの特定、部分的なドキュメントの重複の検出、異なるフォーマットであるが類似したコンテンツを持つドキュメントの検索に特に有用です。計算効率と重複検出能力のバランスが取れています。

意味的な重複排除

意味的な重複排除は、最も洗練されたアプローチであり、高度な埋め込みモデルを使用してセマンティックな意味を捉え、クラスタリング技術と組み合わせて意味的に類似したコンテンツをグループ化します。研究では、意味的な重複排除は、モデルのパフォーマンスを維持または改善しながら、データセットのサイズを効果的に縮小できることが示されています。言い換えられたコンテンツ、同じ素材の翻訳版、概念的に同一の情報を特定するのに特に有用です。

意味による重複排除は、以下のステップで構成されます。

  1. 各データ ポイントが、事前学習済みモデルを使用して埋め込まれます。
  2. 埋め込みは、k-means を使用して k 個のクラスターにグループ化されます。
  3. 各クラスター内で、ペアごとのコサイン類似度が計算されます。
  4. 閾値を超えるコサイン類似度を有するデータ ペアは、意味の重複と見なされます。
  5. クラスター内の意味的な重複の各グループから、1 つの代表的なデータポイントが保持され、残りは削除されます。

モデルベースの品質フィルタリング

モデルベースの品質フィルタリングでは、さまざまな種類のモデルを使用して、品質指標に基づいてコンテンツを評価してフィルタリングします。モデルの種類の選択は、フィルタリングの有効性と必要な計算リソースの両方に大きな影響を及ぼすため、特定のユース ケースに適切なモデルを選択することが重要です。

品質フィルタリングに使用できるモデルには、以下の種類があります。

  1. N-gram ベースの分類器: 最も単純なアプローチは、fastText のような N-gram ベースの Bag-of-Words 分類器を使用する方法です。必要なトレーニング データ (10 万~100 万サンプル) が最も少なく済むため、効率性と実用性に優れています。
  2. BERT スタイルの分類器: BERT スタイルの分類器は中間的なアプローチであり、Transformer ベースのアーキテクチャを通じてより質の高い評価を提供します。より複雑な言語パターンや文脈上の関係を捉えることができ、品質評価に効果的です。
  3. LLM: LLM は、テキストの品質評価に幅広い知識を活用し、最も洗練された品質評価機能を提供します。コンテンツの品質をより深く理解できますが、計算要件も高いため、ファインチューニング用のデータセットなど、小規模なアプリケーションに向いています。
  4. 報酬モデル: 報酬モデルは、会話データの品質を評価に特化し設計された専門カテゴリです。これらのモデルは複数の品質基準を同時に評価できますが、LLM と同じく高い計算要件が求められます。

最適な品質フィルタリング モデルの選択には、データセットの規模と利用可能な計算リソースの両方を考慮する必要があります。大規模な事前学習データセットの場合、初期フィルタリングには軽量なモデルを使用し、最終的な品質評価には高度なモデルを組み合わせることで、効率性と有効性のバランスが得られます。品質が重要となる小規模で専門的なデータセットの場合は、LLM や報酬モデルなどのモデルを使用することが、より実現的で有益となります。

PII の削除

個人を特定できる情報 (PII) の削除には、個人のプライバシーを保護し、データ保護規制に対する遵守を確実にするために、データセット内の機密情報を識別および削除することが含まれます。

このプロセスは、氏名や社会保障番号などの直接的な識別子から、他のデータと組み合わせることで個人を識別できる間接的な識別子まで、個人情報を含むデータセットを扱う場合には特に重要です。

最新の PII 削除では、機密情報を保護するために、以下を含むさまざまな技術が用いられています。

  1. データ形式と構造を維持しながら、機密情報を記号に置き換える (たとえば、米国社会保障番号の場合 XXX-XX-1234 に置き換える)。
  2. 分析の目的で参照整合性を維持しながら、機密データを機密でない同等のデータに置き換える。
  3. 下流タスクに必要でない場合、その機密情報を削除する。

全体として PII の削除は、データのプライバシーを保護し、規制を遵守し、トレーニングと分析の目的でデータセットの有用性を維持しながら、ユーザーと信頼関係を構築するのに役立ちます。

(分散処理による) データ分類

データ分類は、データ キュレーションにおいて重要な役割を果たします。このプロセスでは、ドメインや品質など多様な属性に基づいてデータを整理し、分類することでデータのバランスを取り、さまざまな知識ドメインを代表するものとなるようにします。

ドメイン分類は、主題に基づいてコンテンツを識別してカテゴリー分けすることで、LLM が入力テキストのコンテキストや特定のドメインを理解するのに役立ちます。ドメイン情報は、開発者が潜在的に有害または不要なコンテンツを特定し、フィルタリングしながら、より多様なトレーニング データセットを構築することを可能にする貴重な補助的情報となります。たとえば、コンテンツを 13 の重大なリスク カテゴリに分類する AEGIS Safety Model を使用することで、開発者はトレーニング データから有害なコンテンツを効果的に識別し、フィルタリングすることができます。

数十億ものドキュメントが含まれていることが多い事前学習コーパスを扱う場合、分類を行うための推論を実行するのに多くの計算処理と時間が必要となります。したがって、これらの課題を克服するには、分散処理が適用できるデータ分類が必要です。これは、データセットを複数の GPU ノードに分割することで、分類タスクを高速化することによって実現されます。

下流タスクの汚染除去

トレーニングの後、LLM は通常、見えないテスト データで構成される下流タスクのパフォーマンスによって評価されます。下流タスクの汚染除去は、テスト データがトレーニング データセットに混入、漏洩する可能性に対処するステップです。これは意図しない評価結果をもたらすリスクを抑えます。汚染除去プロセスには、通常、以下の主要なステップが含まれます。

  1. 潜在的な下流タスクとそのテスト セットを特定します。
  2. テスト データを N-gram 表現に変換します。
  3. トレーニング コーパスで一致する N-gram を検索します。
  4. ドキュメントの整合性を維持しながら、汚染されたセクションを削除または修正します。

この体系的なアプローチは、データの品質に対する意図しない影響を最小限に抑えながら、汚染除去の効果を確実なものにして、最終的には、より信頼性の高いモデルの評価と開発に貢献します。

ブレンドとシャッフル

データのブレンドとシャッフルは、データ キュレーション パイプラインにおける最終ステップであり、複数のキュレーションされたデータセットを組み合わせると同時に適切なランダム性を確保し、最適なモデル トレーニングを実現します。このプロセスは、モデルの一般化とパフォーマンスを向上させる、多様でバランスの取れたトレーニング データセットを作成する上で不可欠です。データのブレンドでは、複数のソースからのデータを統合して単一のデータセットに結合し、より包括的で多様なトレーニング データを作成します。ブレンド プロセスは、次の 2 つのアプローチを使用して実装されます。

  1. オンライン: トレーニング中にデータが結合される
  2. オフライン: トレーニング前にデータセットが結合される

それぞれのアプローチには、トレーニング プロセスの特定の要件と最終的なデータセットの使用目的に応じて異なる利点があります。

合成データの生成

前処理フェーズの複雑なプロセスを終えましたが、現在、LLM 開発の分野ではデータの不足という大きな課題に直面しています。LLM が学習用データセットを大量に必要とするのは、チューニングを目的とする場合でも同様であり、その飽くなき要求は、特定のドメインや言語に特化したデータの入手可能性を上回ることも少なくありません。この問題に対処する合成データ生成 (SDG: Synthetic Data Generation) は、LLM を活用して、プライバシーの保護とデータの有用性を確保しながら、現実のデータ特性を模倣した人工的なデータセットを生成する強力なアプローチです。このプロセスでは外部 LLM サービスを使用して、事前学習、ファインチューニング、他のモデルの評価に使用できる、高品質で多様かつ文脈的に関連性の高いデータを生成します。

SDG は、低リソース言語に LLM が適応できるようにすることで、ドメインの専門性をサポートし、モデル間の知識の抽出を促進し、モデル機能を拡張する汎用的なツールになります。SDG は、特に実データが不足していたり、機密であったり、取得するのが困難だったりするシナリオにおいて、重要な存在となっています。

図 2. NeMo Curator による一般的な合成データ生成アーキテクチャ

合成データ パイプラインには、生成、批評、フィルターの 3 つの主要なステップがあります。

  1. 生成: プロンプト エンジニアリングを使用して、さまざまなタスク用の合成データを生成します。Nemotron-4 を例にとると、SDG は、5 種類の異なるタスク (自由形式 QA、選択式 QA、記述式課題、コーディング、数学問題) のトレーニング データを生成するために適用されます。 
  2. 批評: LLM Reflection、LLM-as-judge、報酬モデル推論、その他のエージェントなどの手法を使用して、合成データの品質を評価します。評価結果は SDG LLM へのフィードバックとして使用し、より良い結果を生成したり、低品質データをフィルタリングしたりすることができます。代表的な例は Nemotron-4-340B reward NIM です。これは、5 つの主要な属性、すなわち Helpfulness (有用性)、Correctness (正確性)、Coherence (一貫性)、Complexity (複雑性)、Verbosity (冗長性) を通じてデータの品質を評価します。これらの属性スコアに適切な閾値を設定することで、フィルタリング処理では、低品質または不適切なコンテンツを除外しながら、高品質な合成データのみが保持されるようになります。
  3. フィルター: 重複排除や PII の削除などのステップで、SDG データの品質をさらに向上させます。

ただし、SDG がすべてのケースに適しているわけではないことに注意してください。外部 LLM による幻覚は、信頼性の低い情報をもたらし、データの整合性を損なう可能性があります。加えて、生成されたデータの分布がターゲットの分布と一致しない可能性があり、現実世界のパフォーマンスに悪影響を及ぼす可能性があります。そのような場合は、SDG を使用することで、システムの効率性を改善するどころか、むしろ低下させる可能性があります。

ソブリン AI LLM 構築のためのデータ処理

オープンソース LLM は英語では優れていますが、その他の言語、特に東南アジアの言語では苦戦しています。この主な原因は、これらの言語のトレーニング データの不足、現地の文化に対する理解が限られていること、独自の言語構造と表現を捉えるのに十分なトークンが不足していることです。

英語圏以外の国々の企業は、顧客のニーズを完全に満たすため、汎用モデルにとどまらず、現地の言語のニュアンスを捉えるためにモデルをカスタマイズし、シームレスでインパクトのある顧客体験を確保する必要があります。例えば、Viettel Solutions は、NeMo Curator を使用して、高品質なベトナム語データを処理し、精度を 10% 向上させ、データセットのサイズを 60% 削減し、トレーニングを 3 倍高速化しました。

このユース ケースの主な手順は次のとおりです。

  1. いくつかのベトナム語および多言語データセット (Wikipedia、ベトナム語ニュース コーパス、OSCAR、C4) をダウンロードし、大規模なデータセットを効率的に処理するために、Parquet に変換します。
  2. 複数のデータセットを結合、標準化し、単一のデータセットにシャードします。
  3. Unicode の再フォーマット、厳密な重複排除、品質フィルタリング (ヒューリスティックおよび分類器ベース) を適用します。

詳細は、このチュートリアルを参照してください。

NVIDIA NeMo Curator によるデータの品質向上

ここまで、LLM の精度向上におけるデータ品質の重要性について、そしてさまざまなデータ処理手法について説明してきました。開発者は、 NeMo Curator を介して直接これらの手法を試すことができます。NeMo Curator は、カスタマイズ可能なモジュール式のインターフェイスを提供しているため、開発者はそれをベースに簡単に構築することができます。

NeMo Curator は、cuDF、cuML、cuGraph、Dask などの NVIDIA RAPIDS GPU で高速化されたライブラリを使用して、マルチノード、マルチ GPU におけるワークロードを高速化し、必要に応じてスケールさせ、処理時間を削減できます。例えば、GPU を使用してデータ処理のパイプラインを高速化することで、Zyphra は総所有コスト (TCO) を 50% 削減し、データを 10 倍高速に処理しています (3 週間から 2 日間)。

まずは、NVIDIA/NeMo-Curator GitHub リポジトリと、以下のさまざまなデータ キュレーションのワークフローを網羅しているチュートリアルをご覧ください。

また、NeMo フレームワーク コンテナーを介してアクセスし、NVIDIA AI Enterprise ライセンスでエンタープライズ サポートをリクエストすることもできます。


関連情報

Tags