大規模モデルトレーニング完全ガイド:監督学習からデータ前処理まで

モデルトレーニング手法

監督学習

監督学習:AIモデルはラベル付きのデータサンプルを使用して学習し、サンプルの実際の値と予測値から損失(Loss)値を計算します。監督学習ではデータサンプルにラベル付けが必要なため、データ量が少ないシナリオにのみ適用されます。

MPモデルの論理ゲートが最も基本的な監督学習のトレーニング例です。

非監督学習

非監督学習:AIモデルはタスクのラベルが付与されていないデータサンプルを使用して学習し、クラスタリング分析、主成分分析などのアルゴリズムを用いて分類と次元削減を行います。非監督学習の損失値は実際の値と予測値から計算されるのではなく、データの内在構造規則に基づいて定義され、モデルがデータの内在構造にどれだけ適合しているかを示します。

例えば:K-means動的クラスタリングアルゴリズムはn個のサンプル点を自動的にKクラスに分類でき、その目標は同じクラスター内のサンプルを可能な限り密集させ、異なるクラスターを可能な限り分離させることです。したがって、K-meansの損失(SSE)値はすべてのサンプルが所属するクラスター中心までの距離の二乗和(Sum of Squared Errors)です。例えば、クラスター内離差平方和、ユークリッド距離の二乗和などです。

非監督学習の核心的な目標はモデルがデータの分布、クラスタの密集性、特徴の相関性を学習することにあるため、データサンプルにラベル付けする必要がなく、データ量が非常に大きいシナリオにも適用できます。しかし、非監督学習過程での自動クラスタリングは制御が難しく、監督学習の人間によるラベル付けと比較して、後者には明確な最適化目標があり、人為的にモデルの収束方向を制御できます。

自己監督学習

自己監督学習:データサンプルにラベルを付与しないため、自己監督学習は非監督学習のサブセットです。しかし、核心的な違いは自己監督学習が「擬似ラベル(Pseudo-Labelling)」を自動的に構築し、データの内在構造と規則から「ラベル」を自動的に生成し、このラベルを使用して損失を計算しモデルの収束を駆動することです。典型的な自己監督学習の例はGPTシリーズのCLM(Causal Language Model、因果言語モデル)事前トレーニングタスクです。

GPT CLMタスクのトレーニング目標は「与えられた前の文脈から次の単語の確率を予測する」ことで、この過程では人間によるラベル付けは不要です。具体的な手順は以下の通りです:

  1. 入力処理:大量の無ラベルテキスト(例えば書籍、ウェブページ)から連続したテキストを抽出し、それをトークン化して入力シーケンスを構築します。
原文:私は自然言語処理が好きです
入力シーケンス分解:私 → は → 自然言語処理 → が → 好きです
  1. 擬似ラベルの自動生成:入力シーケンスの次の単語を「ラベル」とします。ここでの擬似ラベルはテキスト自体の順序から完全に生成され、「自己監督」の核心的な特徴を表しています。
  2. 予測値の出力:モデルは前の文脈入力からForward Passを実行し、語彙表に基づいて次の単語の確率分布を出力します。例えば語彙表に10万語がある場合、10万次元の確率ベクトルが出力され、各単語が次の単語である可能性(予測)を示します。
  3. 損失の計算と逆伝播:出力予測値と擬似ラベルから損失を計算し、交差エントロピー損失アルゴリズムを使用して予測されたトークンの確率分布と実際のトークンの差異を測定し、モデルのパラメータを最適化して損失を最小化します。

その後Backward Passを実行でき、収束プロセスは監督学習と同様です。

以上からわかるように、自己監督学習は非監督学習の低コストと監督学習の明確な最適化目標の両方の特徴を兼ね備えています。

  • 大量のデータが十分な学習信号を提供:単一のテキストの擬似ラベルは非常に単純ですが、超大規模な無ラベルコーパスには言語のすべての規則(例えば「太陽」の後に「昇る」が続く、「食事」の前に「私」が来ることが多いなど)が含まれています。モデルは大量のサンプルを通じてこれらの一般的な言語パターンを捕捉し、最終的に安定したパラメータ状態に収束します。
  • 事前トレーニング + 微調整のパラダイム:GPT-1の事前トレーニングは自己監督的であり、一般的な言語表現を学習することを目的としています。一方、GPT-3の微調整は監督的であり、「一から十を類推する」能力を備えています。具体的なタスク(分類、質応答など)に対しては、少量のラベル付きデータで微調整するだけで、一般的な能力を下流タスクに適用できます。これが自己監督事前トレーニングの価値です。

半教師あり学習

半教師あり学習(semi-supervised learning):監督学習、非監督学習、自己監督学習の折衷案であり、大量の無ラベルデータと少量のラベル付きデータを使用してトレーニングします(ラベル付きデータの割合は通常非常に低く、1%~10%程度です)。同時に、少量のラベル付きデータを使用して無ラベルデータに「擬似ラベル」を付与します。

半教師あり学習では、ラベルなしデータの分布規則を効果的に活用し、少量のラベル付きデータの学習効果を向上させ、ラベル付けのコストとモデル性能のバランスを取ります。その具体的なトレーニングフローは以下の通りです:

  1. 限られたラベル付きデータ上でモデルをトレーニングし、このときモデルはラベル付きデータから最適化目標を学習します。
  2. 次にモデルを使用してラベルなしデータに「擬似ラベル」を作成し、高い信頼度の擬似ラベルを既存のラベル付きデータセットに目標として追加し、追加のトレーニングデータを作成します。
  3. 最後にラベル付きデータと「擬似ラベル」データを使用してトレーニングし、2つの損失が得られます。1)監督損失:ラベル付きデータの予測値と人間によるラベルの差;2)非監督損失:ラベルなしデータの予測結果とデータ分布規則の差(例えば、一貫性正則化モデル)。
  4. 最終的な損失の計算方法は2つの損失の加重和です。

強化学習

強化学習(Reinforcement Learning)は上記の学習方法とは異なる別の機械学習手法であり、主に知能体が複雑で不確実な環境で獲得できる報酬を最大化する方法について議論します。

以下の図に示すように、強化学習は主に2つの部分で構成されます:知能体と環境。強化学習の過程で、知能体は継続的に行動し、環境からフィードバックを得、そのフィードバックに基づいて自身の行動方針を調整します。

強化学習には以下の2つの主な特徴があります:

  1. データサンプル:強化学習は「環境との相互作用による報酬信号」を動的なデータサンプルとして使用し、静的なデータセット(ラベル付き、ラベルなし、擬似ラベル付き)ではありません。
  2. 学習パラダイム:監督、非監督、自己監督、半教師あり学習の学習パラダイムは損失の最小化(データ/ラベル/構造への適合)ですが、強化学習の学習パラダイムは「長期的な累積報酬の最大化」(最適な意思決定方略を見つけること)です。

データセットタイプ

データの役割に基づいて分類:

  • 一般テキストデータ:基礎事前トレーニング段階で使用され、モデルの基本的な文字理解能力をトレーニングします。
  • 領域テキストデータ:増分事前トレーニング段階で使用され、モデルの専門分野の知識理解能力をトレーニングします。例えば金融分野、医療分野などです。
  • プライベートドメインテキストデータ:微調整段階で使用され、モデルの企業内部プライベートな知識理解能力をトレーニングします。

データの特性に基づいて分類:

  • 無ラベルデータ:自己監督事前トレーニング段階で使用され、大量かつ多様な無ラベルテキストデータを使用します。規模は通常兆トークンレベル(例えばGPT-3のトレーニングデータは約45TBのテキスト)であり、書籍、ウェブページ、論文、ニュースなどをカバーし、モデルが広範囲な言語現象と知識に触れることを保証します。これらのデータを通じて、モデルは文法、意味、論理関係、世界の常識を自動的に捕捉できます。
  • ラベル付きデータ:監督微調整段階で使用され、人間によるラベル付けされた高品質なデータを使用して特定タスク下で最適化します。データ量は数万~数百万レベルです。

無ラベルデータセット

一般的な無ラベルデータソースには以下のものがあります:

  1. ウェブページ:例えばCommonCrawlには大規模なウェブクローラーデータが含まれています。
  2. 対話テキスト:書式化された対話、チャット履歴、フォーラム投稿、ソーシャルメディアコメントなどを含みます。
  3. 書籍&ニュース:例えばBookCorpusには多くの公開利用可能な書籍テキストが含まれています。
  4. 科学テキスト:教科書、論文、百科事典、その他関連リソースを含みます。例えばWikipediaには多言語の百科事典テキストが含まれています。
  5. コード:例えばGithubには多くのオープンソースコードが提供されています。
  6. 多言語データ:大規模言語モデルの多言語理解能力と多言語生成能力を強化する上で極めて重要です。

以下の図は異なる大規模モデルが使用するデータタイプの比率を示しています。

自己監督事前トレーニングデータセットの例:

  • テキスト:https://huggingface.co/datasets/Salesforce/wikitext。事前トレーニング時には、text列の内容(つまりdocument)のみがモデルトレーニングに使用されます。
  • コード:https://huggingface.co/datasets/codeparrot/codeparrot-clean-train

ラベル付きデータセット

SFTデータセットの例:

強化学習データセットの例:

データ品質がモデル性能に与える影響

以下の図はサンプルデータ品質がモデル性能に与える影響を示しています。

  • モデル性能:Lossを通じて体現され、損失が低いほどモデルのテキスト予測能力が強く、性能が良いことを示します。
  • 3つのタスクシナリオのテスト:Wikitext103単語予測、Curation Corpus要約、Lambada書籍レベル単語予測
  • OpenWebText / C4:自然な高品質データセット(元々はフィルタリング、重複除去された高品質テキスト)で、ベンチマーク対象として使用されます。
  • MassiveWeb Unfiltered:低品質の生データ(フィルタリング、重複除去されていない大量のウェブページテキストで、ノイズ、重複内容を含む)で、Lossの表现が最も悪いです。
  • Quality Filter / Exact Deduplication / Fuzzy Deduplication:MassiveWeb Unfilteredに対して一連のデータ品質向上操作(低品質コンテンツのフィルタリング、正確な重複除去、あいまいな重複除去)を実行した後、Lossの表现が段階的に改善されます。以下の図は高品質データでトレーニングされたモデルが自然言語生成と自然言語理解タスクでより良い表现をすることを示しています。高品質な事前トレーニングコーパスは言語モデルの生成能力に極めて重要です。

データ多様性がモデル性能に与える影響

研究によれば、LLMが習得する知識の大部分は事前トレーニング過程で学習されるため、トレーニングされたLLMが可能な限り広範囲な知識をカバーできるようにするため、事前トレーニングコーパスは多様なソースのデータを組織し、一定の割合で混合する必要があります。異なる分野、言語、シナリオからのトレーニングデータは異なる言語特徴を持ち、異なる意味的知識を含んでいます。データ多様性を保証することで、大規模言語モデルはより広範囲な知識を得ることができます。例えば、中国語データは品質の差を補うために高い割合の英語データを必要とすることが多いです。一般的に、中:英:コード=4:4:2です。

したがって、トレーニング時にはデータセットのサンプリング比率の問題を考慮し、異なるタイプのデータ(ニュース、百科事典、コードなど)を合理的な割合で混合する必要があります。分類器を使用してデータをカテゴリ別に分け、カテゴリに基づいて異なるクリーニングと重複除去基準を設定し、各データがトレーニングセットに合理的に分布していることを保証します。

以下の図はLlama型が多くの異なるソースのデータを混合し、各データセットのサンプリング確率を示しており、これによりデータサンプルの多様性を保証しています。ウェブページ、コード、論文、書籍などが含まれます。異なるテキスト品質に対して、Llamaモデルのトレーニングでは異なる品質と重要性のデータセットに対して異なるサンプリング確率が設定されており、表中には1.4兆個のトークントレーニング完了時における各データセットのサンプリング回数が示されています。

さらに、データの順序もモデルの学習効果に影響を与え、「カリキュラム学習」に似ています。データのトレーニング順序を合理的に配置することで、モデルの知識吸収と応用能力を向上させることができます。LLamaの研究は、類似性に基づいて関連文書を連結して文脈の一貫性を強化することを提案していますが、実際の操作では具体的なニーズに応じて調整する必要があります。

データ前処理

データフィルタリング

データフィルタリングはトレーニングデータの品質を保証する上で重要です。一般的なデータフィルタリング方法には2つのタイプがあります。

  1. 分類器に基づく方法:データ品質スコアリングとフィルタリングに特化したモデルをトレーニングします。一般的にはtransformer-encoderのBERTシリーズモデルを使用してデータにスコア付けし、その表現能力はtransformer-decoderモデルよりも優れています。また、選択されたテキスト(ウィキペディア、書籍、および選定されたいくつかのウェブサイト)を使用してトレーニングし、スコアラーの品質基準として正のサンプルとして使用します。スコアラーは不適切な内容や低品質データを含むサンプルを負のサンプルとして選別できます。しかし、コード、Markdownなどの形式のデータに対してはスコアが低いため、個別に処理する必要があります。
  2. ヒューリスティックルールに基づく方法:慎重に設計されたルールを使用して低品質データを特定して除外します。例えば:
  • 言語フィルタリング:特定の対象言語のモデルをトレーニングするために、他の言語のテキストをフィルタリングできます。
  • 指標フィルタリング:データ長などの指標に基づいてフィルタリングします。困惑度(Perplexity)などのテキスト生成評価指標を使用して不自然な表現の文を検出して削除します。
  • 統計的特徴フィルタリング:統計的特徴を使用してテキスト品質を測定します。例えば単語比率で、ウェブデータの場合、100以上の重複単語または文を含むドキュメントをフィルタリングし、記号とトークンの比率が0.1を超えるドキュメントをフィルタリングします。フォーラムデータの場合、いいね数が3未満のユーザーコメントをフィルタリングします。
  • キーワードフィルタリング:キーワードセットを使用してフィルタリングします。ウィキペディアデータの場合、25未満のUTF-8単語を持つページをフィルタリングします。ウェブデータの場合、HTMLタグをフィルタリングし、the, be, to, of, and, that, have, withという語彙を含まないドキュメントをフィルタリングします。

データ重複除去

重複コンテンツがトレーニング効果に影響するのを避けます。重複データは大規模言語モデルの多様性を低下させ、トレーニングプロセスを不安定にする可能性があります。例えば、重複単語や短いフレーズを含む文は言語モデリングで重複パターンを導入する可能性が高く、これは言語モデルに非常に深刻な影響を与え、モデルが予測時に重複のループに陥りやすくなります。

HadoopやSparkなどの大規模データフレームを使用し、MinHashやSimHashなどの技術を用いて効率的な重複除去を実現します。重複除去の粒度はトレーニング要件に応じて柔軟に調整し、データの多様性と品質を保証する必要があります。

  • 文レベル重複除去:ドキュメント間の一定長を超える同じ文字列を抽出してフィルタリングします。
  • ドキュメントレベル重複除去:ドキュメント間の表面的な特徴の類似度に基づいて、類似ドキュメントを検出して削除します。
  • データセットレベル重複除去:多くの大規模言語モデル事前トレーニングデータセットにはGitHub、Wikipediaが含まれています。

以下にSimHashによるバッチ重複除去の例を示します:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np

# 1. トークン化:「再現不可能なソフトウェアはオープンソースソフトウェアではない」を「再現不可能」「な」「ソフトウェア」「は」「オープンソース」「ソフトウェア」「ではない」に分割
words = ['再現不可能', 'な', 'ソフトウェア', 'は', 'オープンソース', 'ソフトウェア', 'ではない']

def encode_word(hash_int):
    # 3. 2進数化:取得したハッシュ値を2進数に変換し、md5標準の128bitに0でパディングし、1はそのまま、0は-1に変換することで、simhashアルゴリズムにおける単語のベクトル表現を得る
    bin_hash_value = bin(hash_int)[2:].zfill(128)
    # 2進数列の長さが厳密に128ビットであることを保証(長すぎる部分は切り捨て、ハッシュ値が128ビットを超えないようにする)
    bin_hash_value = bin_hash_value[-128:]
    # 各ビットを1または-1の埋め込みベクトルに変換
    embedding = np.array([1 if bit == '1' else -1 for bit in bin_hash_value])
    return embedding

# 2. ハッシュ:各単語のハッシュ値を計算
word_embeddings = [encode_word(hash(word)) for word in words]
# すべての埋め込みベクトルをビット単位で合計
sum_embeddings = sum(word_embeddings)
print(sum_embeddings)

実行出力:

[-6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6
-6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6
-6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6  2 -4  6 -2  2 -4  2
-2  2  2  0 -6 -2  0  0  4  0 -4  2  4  2 -2  2  2 -6 -2 -4  0 -2  0 -2
-4  0 -4  2 -2 -2  0  2  2 -2  4  0  2  0  2 -2 -2  0 -2  2 -2 -2  4  2
-6  0  4 -2  0  2  0  2]

0より大きい値を1に、小さい値を0に変換:

print(np.clip(sum(word_embeddings), 0, 1))
'''
[0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0
0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0]
'''

これで、2つのドキュメントベクトルのハミング距離(どのビットが異なるかの数)を比較するだけで、2つのドキュメントの類似性を比較できます。

トークン化(Tokenization)

トークン化はテキストをベクトルとして表現するプロセスであり、NLPの基礎です。通常、分词とサブワード分割が含まれます。

  • 分词:分词は語彙表を構築するために行われ、語彙表は分词器がテキストをトークンシーケンスに変換する方法を決定します。したがって、大規模モデルのWord Embedding(単語埋め込み)段階は語彙表に依存し、モデルは語彙表中に存在する単語のみを処理できますが、語彙表にはすべての単語を網羅することは不可能です。そのため「未登录词」が存在します。大規模モデルは未登录词に対応する単語ベクトルを生成できず、これらの未登录词にデフォルトの一般的な表現[UNK](unknown)を単語ベクトルとして与えるしかありません。
  • サブワード分割:サブワード分割はUNKの問題を解決するために行われ、サブワード表を構築します。ここには完全な単語だけでなく、英語の単語の語根や接辞のようなサブワードも存在します。例えば:「何も不可能ではない」はサブワードに「何も」「不可能」「ではない」と分割されます。

上記の作業を完了するために分词器を選択できます。一般的なものにはBPE(Byte-Pair Encoding)、SentencePiece、WordPieceがあります。BPEを例に取ると、まずすべての単語を単一の文字に分割し、次に一般的な文字ペアを結合してより長いサブワードを形成します。頻度の高い文字ペアを反復的に結合することで語彙表を段階的に構築し、語彙表のサイズは通常128の整数倍です。

効率的な読み込みと前処理のために、実際の事前トレーニングコーパスはトレーニング前にTokenizerで分詞され、Binary(バイナリ)またはHDF5形式のファイルに変換され、並列読み取りをサポートするためにチャンク(sharding)も行われます。実際のデータ量は非常に大きいため、一度にメモリに読み込むことは現実的ではなく、各チャンクは通常1B、2B、4Bのサイズに分割されます。

データセット品質評価

  1. 関連性:データはタスクと密接に関連している必要があります。例えば、法律AIのデータには「契約が有効になる要件は何ですか?」のような正確な法律の質問と回答が含まれている必要があります。
  2. 正確性:回答は正確で権威のあるものでなければなりません。レシピで砂糖を塩と間違えた結果を想像してみてください!同様に、医療AIのトレーニングデータは専門医によってレビューされる必要があります。例えば:「糖尿病の原因は何ですか?」の回答は科学的事実に基づいており、噂に基づいてはなりません。
  3. 多様性:データは多様なシナリオ表現方法をカバーする必要があります。カスタマーサービスAIの場合、データには「どのように返品しますか?」のような多様な質問方法、例えば「返品できますか?」や「返品手順は何ですか?」を含める必要があり、モデルの柔軟性を向上させます。
  4. 一貫性:データのトーンと形式は統一されている必要があります。プロフェッショナルなトーンが目標の場合、回答はスラングを避けるべきです。例えば「あなたのアカウント詳細を提供してください」は「ねえ、君の情報くれ」より適切です。
  5. 清潔さ:データはノイズ、例えばスペルミス、無関係な内容、重複データを除外する必要があります。ユーザー生成コンテンツ(フォーラム投稿など)は特に広告や無関係な情報をフィルタリングする必要があります。
  6. 適量:データ量が少なすぎるとモデルが「栄養不足」になり、過少な低品質データは性能を低下させます。数千件の高品質なQAペアは、大量の低品質データよりも効果的です。

Scaling Laws三要素のバランス拡張

OpenAIは2020年の論文でScaling Laws(拡張則)を提案し、大規模言語モデルの性能(交差エントロピー損失で測定)が一定の数学的なべき乗則関係(Power-law)に従うことを証明しました。つまり、大規模言語モデルの損失(損失関数)値はモデルのパラメータ量(N)、トレーニングデータ量(D)、計算リソース量(C)の3者間に安定して予測可能な数学関係が存在します。

  • L:損失関数、N、D、Cの影響を受けます。
  • α、β、γ:定数係数、α≈0.076、β≈0.095、γ≈0.05、実際の値はタスクによって多少調整されます。上図に示すように:
  1. モデルパラメータ量(N):モデルの総パラメータ規模が大きいほど、Lossは低くなります。例えば、パラメータ量を1億から10億に増やすと、損失の低下は線形増加予想を超えます。
  2. 計算リソース量(C):トレーニングに使用される浮動小数点演算量(FLOPs)とLossは逆のべき乗関係にあり、より多くの計算リソースはモデル効果を著しく向上させることができます。
  3. トレーニングデータ量(D):以下の図に示すように、LLaMAはDの増加に伴い、モデルは2つのカテゴリに属する6つのデータセット上で性能が安定して向上することを示しています。Dの増加とトレーニング時間の延長により、より小さなモデルでも良好な性能を発揮できます。モデルに対して10M~100M個のトークンのみでトレーニングすることで、信頼できる文法と意味的特徴を得ることができます。しかし、十分な常識知識やその他のスキルを得るには、より多くのトレーニングデータが必要であり、典型的な下流自然言語理解タスクで良好な結果を得るには十分なトレーニングデータが必要です。

しかし注意すべきは、Scaling LawはNCDの3者間に微妙なバランス関係があることを示しています。もし3つのうち1つだけを拡大し、他の2つが制限されている場合、収益は著しく低下します。DeepMindの研究によれば、モデルのトレーニングが計算最適(Compute-optimal)に達するためには、モデルサイズとトレーニングトークン数は等比例でスケーリングすべきであり、つまりモデルサイズが2倍ならトレーニングトークン数も2倍にすべきです。例えば、Nを8倍増やす場合、過学習を避けるためにDを少なくとも5倍増やす必要があります。

さらに、CとNが固定されている場合、Dを増やすと過学習を緩和できますが、限界逓減効果があります。以下の図に示すように、Cが固定されている場合、Lossの変化には最適なDが存在し、単純に多いほど良いというわけではありません。したがって、大規模モデルのトレーニングでは3要素のバランス拡張に注意する必要があります。もし3つのうち1つだけを拡大し、他の2つが制限されている場合、収益は著しく低下します。

以下は主流モデルのN、D比率の例です:GPTは1.7倍と考えており、175BのGPT-3には300Bトークンを使用して事前トレーニングする必要があります。

オープンデータセット

Hugging Face(https://huggingface.co/)と魔塔社区(https://www.modelscope.cn/home)は著名な2つのオープンソースモデルとオープンソースデータセットのウェブサイトです。またOpenDataLab(https://opendatalab.com/)、智源データ平台(https://data.baai.ac.cn/dataset)などもあり、これらのサイトから多くの著名なオープンソースデータセットをダウンロードできます。

Pile:大規模言語モデルトレーニング用の多様な大規模テキストデータベースで、22の異なる高品質サブセットから構成され、既存のものと新しく構築されたものが含まれ、主に学術または専門分野から取得されます。(https://huggingface.co/datasets/Skywork/SkyPile-150B)ROOTS(Responsible Open-science Open-collaboration Text Sources):46の自然言語と13のプログラミング言語、合計59の言語を含み、データセット全体のサイズは約1.6TBです。RefinedWeb:データソースはCommonCrawlで、初期データ総量は1PBを超えます。ドキュメント準備、フィルタリング、冗長性除去後、約11.67%のデータのみが保持されています。SlimPajama:元のRedPajamaは1.21兆トークンを含みますが、クリーニングと重複除去後のSlimPajamaデータセットには6270億トークンが含まれます。

  • NFC正規化(NFC Normalization):非Unicode文字をフィルタリングします。
  • 短いドキュメントのフィルタリング(Filter Short Documents):200文字未満のドキュメントをフィルタリングし、非常に短い内容はモデルトレーニングに役立ちません。
  • 全体重複除去(Deduplication):データベース内とデータベース間の重複除去を含み、複数の段階があります。例えばMinHashLSHインデックスの構築、インデックス内でのクエリによる重複項目の特定、重連結成分を決定するためのグラフ表現の構築、最後に各成分内の重複項目のフィルタリングなどです。
  • ドキュメントの interleaving 並べ替え(Interleave & Shuffle):大規模言語モデルのトレーニングはほとんどが多ソースデータセット上で行われるため、指定された重みでこれらのデータソースを混合する必要があります。
  • トレーニングセットとホールドアウトセットへの分割(Split Dataset into Train and Holdout):このステップは主に2回目のランダムな並べ替えとホールドアウトセットの作成を完了します。
  • トレーニングセットとホールドアウトセット間の類似データ重複除去(Deduplicate Train against Holdout):最後のステップはトレーニングセットとホールドアウトセット間に重複がないことを保証することです。

タグ: 大規模言語モデル 機械学習 データ前処理 深層学習 AIトレーニング

5月19日 16:11 投稿