著者 | クリスチャン・S・ペローネ 編纂者:岳陽 エリック・デスマジエールの『バベルの図書館』。 1997年。 長年、言語モデル(LM)の学習は続けられてきましたが、大規模モデルの学習に必要なデータセットを構築するための一般的なデータパイプラインに関する情報はほとんどなく、そのような情報を見つけることは非常に困難です。これは、大規模言語モデルの学習に必要なデータセットは必ず存在する(あるいは少なくともかつては存在していた)と想定していることが原因かもしれません。単に、これらのデータセットを再現することがますます困難になっているだけです。しかし、そのようなデータパイプラインの作成には多くの決定事項を考慮する必要があり、それぞれの決定事項は、LLaMA(LLaMA: Open and Efficient Foundation Language Models[1])の再現を試みたときに遭遇したように、最終的なモデルの品質に大きな影響を与えます。大規模モデルは今では十分にスケーリングでき、モデル構造はあまり変わっていないため、データパイプラインがモデルパイプラインよりも重要になったと主張する人もいるかもしれません。しかし、実際には、モデルがどのように進化しても、データは常に重要です。 本稿では、LLaMA学習データの作成に使用したパイプラインについて簡単に紹介します。このパイプラインには様々なバリエーションが存在するため、本稿ではRefinedWeb (The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only[2])やThe Pile (The Pile: An 800GB Dataset of Diverse Text for Language Modeling[3])といった関連文献における、それぞれの手法の詳細についても紹介します。 本論文は、MetaのCCNet (CCNet: Webクロールデータからの高品質モノリンガルデータセットの抽出[4])およびLLaMA論文で説明されているプロセスに基づいています。CCNetは、品質の観点から規模は大きいものの、最も困難なデータソースであるCommon Crawl [5]向けに設計されています。 01概要 全体像CCNetワークフロー全体(LLaMA論文で若干の修正を加えたもの)を以下に示します。これには、データソースからのデータ取得、重複除去、言語認識、モデルフィルタリング、そしてLLaMAで追加された「is-reference」フィルタリングといった段階が含まれます。以下では、これらの各段階について詳しく説明します。 LLaMA における修正された CCNet 処理フローの概要画像 02コモンクロールCommon Crawl(CC)データセットは、同名の非営利団体[5]による大規模なインターネットクロールであり、寛大な条件で公開されています。このデータセットの作成は容易ではありません。スパムのフィルタリング、クロールするURLの決定、複数のサーバーからの大量のデータの取得など、様々な作業が必要です。そのため、このデータセットを使用する場合は、CCの活動を支援するために寄付[6]をご検討ください。 Common Crawlでは、利用可能なデータセット形式が複数提供されています。現在、インデックス以外に主な形式はWARC、WAT、WETの3つです。 WARC/WAT/WET形式1) WARCフォーマット WARC形式は、クロール後の生の未加工データを含むため、データ量が最も多くなります。この形式はHTTPレスポンスヘッダーを巧みに記録するため、クロールしたサーバーの情報をすべて取得することさえ可能です。データ量が非常に多く、大規模な言語モデルの学習に不要なデータも含まれているため、自然言語処理(NLP)ではほとんど利用されていません。しかし、Common Crawlの主要データ形式の一つとして、その豊富なコンテンツはマルチモーダルデータセットの作成に非常に役立ちます。そのため、WARCとWAT(後述)は今後数年間で広く普及する可能性が高いと考えています。 2) WATとWET形式 これら2つのデータセット形式は、Common Crawlの二次データソースであり、どちらも処理済みデータです。これらの形式は言語モデルの学習に頻繁に使用され、データ処理ワークフローの違いが現れ始めるのはここからです。これらの形式には異なる種類のレコードが含まれており、 WATにはWETよりも多くのメタデータ(HTMLタグの内容やリンクなど)が含まれています。WETは主にプレーンテキスト形式です。 [訳注:本文で言及されている「レコード」とは、データレコードまたはデータ項目を指します。これらは特定の形式で記述された個々のエントリまたはデータ単位です。この段落では、「レコード」はWAT形式とWET形式で保存される異なる種類のデータを指します。「メタデータ」とは、データを記述するデータであるメタデータを指します。この場合、「メタデータ」とは、レコードの出所、作成日時、作成者など、レコードに関する追加情報を指します。] WARC/WAT/WETのユースケースをご覧になりたい方は、こちらのリンク[7]をご覧ください。簡潔にするためにここでは例は省略していますが、これらのデータ形式はどれも非常に興味深く、実際に使用する場合でも、読み込みや解析方法を理解する場合でも、一見の価値があります。 現在、 CCNet (CCNet: Webクロールデータからの高品質モノリンガルデータセットの抽出[8])ではプレーンテキストのWET形式が採用されており、注目に値する。しかし、高品質なテキストデータを抽出するには、WETではなくWAT(CommonCrawl処理をバイパスしてテキストを抽出)を使用する必要があるとの考えから、WATを採用している処理ワークフローも存在する。WET形式のファイルを使用しない例としては、 jusText [10]を採用したThe Pile(The Pile: 言語モデル化のための多様なテキストの800GBデータセット[9])が挙げられる。彼らは、この手法はWET形式のファイルを使用する場合と比較して、より高品質なテキストを抽出できると述べている。 ご存知のとおり、CCの検討はまだ始まったばかりですが、既に様々なデータ抽出方法があります。最近では、RefinedWeb[11]と呼ばれる別の処理フロー(Falconで使用)もWARCを直接使用し、CCフローにおけるテキスト抽出ステップ(つまりWETファイルの生成)を省略しています。RefinedWebはテキスト抽出にjusTextではなくtrafilatura [12]を使用しています。 03 URLフィルタリングCCNetでは言及されていませんが、多くのプロセスでは、URLフィルタリングにアダルトサイト、暴力サイト、悪意のあるサイトなどのウェブサイトの公開ブロックリストを使用しています。例えば、RefinedWebは460万のドメインを含むブロックリストを使用し、単語ベースのURLフィルタリングも採用しています。このステップでは、工夫を凝らして、異なるソースから複数のブロックリストを集約することも可能です。 04重複排除さて、ここで議論の余地のあるステップである重複排除について議論しましょう。関連する研究結果は、「トレーニングデータの重複排除は言語モデルを改善する」[13]という論文で理解できます。しかし、「Pythia:トレーニングとスケーリングにわたる大規模言語モデル分析スイート」[14]では、「…トレーニングデータの重複排除は言語モデルのパフォーマンスに大きなメリットをもたらさない」と主張しています。したがって、本論文では重複排除プロセスは依然として議論すべき問題であると考えていますが、LLaMAによって達成された優れた成果を考慮すると、新しいモデルトレーニングプロセスにおいて重複排除ステップを無視すべきではなく、近い将来、さらに優れた関連研究が見られるようになるかもしれません。 それでは、CCNetがどのように重複データを削除するのかを見ていきましょう。CCスナップショットファイルは非常に大きく、例えば2023年3月/4月のWETファイルは8.7TiB、WATファイルは21.1TiBです(どちらのファイルも既に圧縮されています)。CCNetはまずこれらのWETスナップショットファイルを5GBのセグメントに分割し、JSON形式で保存します。各エントリはクロールされたウェブページに対応しています。 セグメンテーションの次のステップは段落の正規化です。重複排除は段落レベルで行われるためです。各段落を小文字に変換し、数字をプレースホルダーに置き換え、Unicode句読点[15](置換も選択可能)とアクセント記号をすべて削除することで正規化します。 [訳者注:アクセント記号は、音節の発音における強勢や特別な注釈を示すために使用される句読点です。フランス語、スペイン語、ドイツ語などの言語では、アクセント記号は文字の発音方法を変えたり、特定の音節を強調したりするために使用されます。アクセント記号は、形、大きさ、または位置を変えることで示すことができます。例えば、フランス語のアクセント記号には、分音記号(´)、ユーフォニアム(`)、囲み分音記号(ˆ)などがあります。テキスト正規化中にアクセント記号を削除すると、テキストの表現が統一され、比較、マッチング、重複排除の精度が向上します。 次に、各セグメントのSHA1ハッシュが計算され、最初の64ビットが重複排除に使用されます。その後、すべてのセグメントを比較するか、一定数のセグメントを比較することで重複排除を実行できます。このステップの詳細にご興味がある場合は、論文[16]を参照してください。 注目すべきは、RefinedWebデータセットは、あいまい重複除去と「厳密な設定」を用いて、より積極的に処理されているように見えることです。その結果、「他のデータセットよりも削除率が大幅に高い」結果となっています( CCNetのレポートによると、テキストの70%に重複が含まれているとのことです)。これは間違いなく、データセットの多様性に大きな影響を与えています。 CCNetの論文では、重複排除のもう一つの重要な側面について説明されています。このステップにより、ナビゲーションメニュー、Cookieリマインダー、連絡先情報など、多くのテンプレートコンテンツを削除できます。さらに、他言語のページから英語コンテンツを削除することで、後述する言語識別プロセスの信頼性を高めることができます。 このステップの概要は次のとおりです。 ご覧のとおり、このプロセスの最初のステップは、スペースを削除し、テキストを小文字に変換し、数字をプレースホルダー(ゼロなど)に置き換えることです。次に、Unicodeの句読点を削除(または置き換え)し、テキストのSHA1ハッシュを実行し、最初の8バイトを重複排除比較(段落ごと)に使用します。重複排除プロセスとトレーニングプロセスを混同しないことが重要です。このプロセスは最終的なハッシュ値と重複排除されたデータの計算にのみ使用され、モデルのトレーニングには使用されません。 RefinedWebでは、重複除去を行う前にGopher [17]と同様の手法を用いて、文書中の余分な行、段落、または繰り返されるnグラムシーケンス(nグラム繰り返し)を削除した。 (訳者注:連続するn個の単語または文字のシーケンスが文書中の複数の場所で繰り返し出現する場合、それはnグラム繰り返しとみなされる。)次に、 MinHashアルゴリズム[18]を用いて、このアルゴリズムがSEOテンプレート(複数のウェブサイトで繰り返し出現するSEOテキスト)の削除に非常に効果的であることを発見した。この手法でも正確な重複除去が行われたが、CCのデータが膨大であったため、CCNetが提案した、まずデータを断片に分割し、各断片に対して重複除去を行う代替手法を採用した。 05言語認識それでは、言語識別、スコアリング、フィルタリングについて詳しく説明しましょう。CCNetでは、 fastText [19](効率的なテキスト分類のためのトリックパッケージ[20])を使用し、Wikipedia、Tatoeba、SETimesのデータを用いて学習させました。fastTextは176言語をサポートし、各言語のスコアを生成します。 CCNet では、アルゴリズムによって識別される可能性が最も高い言語のスコアが 0.5 (50%) 未満の場合、Web ページは破棄されます。それ以外の場合、Web ページは、さらに処理する可能性が高い言語として識別されます。 LLaMAデータセットはCCデータセットから英語以外のデータを除外しますが、他の言語のコンテンツを含むデータセット(Wikipediaなど)を使用して学習されている点に留意することが重要です。私の経験では、LLaMAはポルトガル語などの他の言語でも良好なパフォーマンスを発揮します。 CCNetと同様に、RefinedWebも言語認識にfastTextを使用しています。重要な違いは、RefinedWebではスコアリングしきい値が0.5ではなく0.65と異なる点と、重複除去と言語認識の順序を調整し、最初に言語認識を行い、次に重複除去を行う点です。 06 LMフィルタリング:モデルフィルタリングの使用ここまでで、データの重複除去、言語認識、そして最初のフィルタリングが完了しました。しかし、これらのステップを踏んだからといって、必ずしもデータ品質が良好であるとは限りません。そのため、CCNetではさらにフィルタリングステップを実行する必要があります。CCNetは、対象ドメイン言語でトレーニングされた言語モデルのパープレキシティを、比較的優れた品質評価指標として使用しています。彼らは、対象ドメインと同じ言語を含むWikipediaデータセットで5グラムのKneser-Neyモデルをトレーニングし、これらのモデルを用いて各段落のパープレキシティを計算しました。 パープレキシティ値を取得した後、閾値を決定する必要があります。CCNetの論文では、言語によってパープレキシティ分布が大きく異なるため、各言語のパープレキシティ分布から3つの均等な部分(先頭、中間、末尾)をどのように算出したかが説明されています。(訳者注:パープレキシティとは、言語モデルによる段落の理解度と一貫性の評価を指します。異なる段落のパープレキシティを計算することで、一連のパープレキシティ値が得られます。このセットの分布を分析し、段落の品質や信頼性を判断するための閾値やその他の統計特性を決定することができます。)以下は、論文の重要なセクションからの抜粋です。
つまり、どのように行うかはアプリケーションドメインによって異なります。Wikipediaでトレーニングされた言語モデルを単純にブラインド閾値処理に利用すると、重要なデータが失われる可能性があります。RefineWebでは、フィルタリングに言語モデルを用いることを避け、シンプルなルールとヒューリスティックのみに依存しています。彼らはGopherで使用されているものと非常によく似たプロセスを採用しており、「文書全体の長さ、記号と単語の比率、そして文書が本物の自然言語であることを保証するためのその他の基準」に基づいて外れ値をフィルタリングしています。彼らは、言語特性に関するヒューリスティックへの過度の依存はしばしば問題を引き起こすため、言語ごとに特別な処理が必要であることを強調しています。 07 「参考文献」フィルタリング(これは参考文献ですか?)この部分はCCNetでは言及されていませんが、LLaMAデータセットでは追加の補足ステップとして記載されています。そのため、ここでも説明することにしました。LLaMAの論文ではこのステップの詳細は説明されていませんが、Wikipediaで参考文献として引用されているページとランダムにサンプリングされたページを分類する単純な線形分類器(どの特徴量が使用されているかは不明)を学習させ、「引用されていない参考文献」と分類されたページを破棄するようです。 一見、このステップは単純に見えるかもしれませんが、データセットの品質に大きな影響を与えます。ただし、閾値の設定にも依存します。LLaMAデータセットは、主に関連データの削除を避けるため、フィルタリングにおけるLMの使用においてより保守的であるため、潜在的な品質問題に対処するためにこの追加ステップを追加したと考えられますが、これはあくまで私の推測に過ぎません。 付録08: 改良されたWeb図RefinedWeb の論文には、非常に美しい Sankey 処理フローチャートが掲載されています。 画像出典:Falcon LLM向けRefinedWebデータセット:Webデータのみ、およびWebデータのみでキュレーションされたコーパスを凌駕する性能。Guilherme Penedo他、2023年。 これは、どれだけのデータが破棄されたかを示す非常に有益なグラフです。個人的には、重複排除の段階で削除されたデータの量には非常に感銘を受けました。 09結論この記事を楽しんでいただけたでしょうか。この記事の主な目的は、大規模言語モデル(LLM)の学習前に必要なデータ処理手順と意思決定について、簡潔に概説することです。もちろん、異なる割合のデータセットの混合やトークン化など、他にも重要な側面は数多くあります。CCデータセットはLLM学習ドメインにおいて一般的に最大のデータセットであるため、トークン化前のこの特定のデータセットに直接関連するデータ処理手順に焦点を当てることにしました。 データ前処理ワークフローでは、CCデータセットの大規模なデータブロックを考慮し、多くの設計と戦略がパフォーマンス要件を考慮して策定されています。私の意見では、特にLLMの学習コストを考慮すると、より多くの計算リソースを割り当てることで、データの観点からより良いバランスが得られる可能性があります。しかし、データ処理ワークフローにおける様々な決定が学習済みのLLMモデルにどのような影響を与えるかを予測することは困難です。そのため、小規模な実験、手動によるデータ検査、そして探索的なデータ分析が、詳細を理解する上で不可欠です。 つまり、各企業は自社のニーズに合ったデータセットを持っているということです。これは長期的な投資であり、綿密な実験、エンジニアリング、細部へのこだわり、そして不確実な状況で判断を下すための直感を必要とします。しかし同時に、これは長期的に大きなリターンをもたらす投資でもあります。 終わり |