17 ポイント 投稿者 xguru 2024-09-13 | 2件のコメント | WhatsAppで共有
  • Jina AIは2024年4月、WebページのURLをLLMに適したMarkdownへ変換するAPIであるJina Readerをリリースした
  • Jina ReaderはChromeブラウザでWebページのソースを取得し、Readabilityパッケージでメインコンテンツを抽出したうえで、regexとTurndownライブラリを使って整形済みHTMLをMarkdownへ変換する
  • しかし、Readabilityのフィルタが誤って必要なコンテンツを除去したり、Turndownが特定のHTMLをMarkdownに変換するのに苦労したりするなど、改善の余地があった
  • そこでJina AIは、小規模言語モデル(SLM)を使ってHTMLをend-to-endでMarkdownへ変換する方法を検討することになった

Reader-LMの特徴

  • HTMLをMarkdownに変換する作業は、一般的なLLMタスクほど創造的でも複雑でもなく、主に入力から出力への選択的コピー(selective-copy)が必要となる
  • そのため、必要なtransformer block数を減らした浅いモデルアーキテクチャが可能になる
  • ただし実際のHTMLはノイズが多く、トークン長も長いため、最大256Kトークンを扱える長文脈(long-context)対応が必要になる
  • Jina AIはこれに対応するため、「shallow-but-wide」なSLMであるreader-lm-0.5bとreader-lm-1.5bを発表した。これらはそれぞれ494M、1.54Bのパラメータを持つ

Reader-LMの使い方

  • Google Colabでreader-lmを試すことができる。Hacker NewsのWebサイトをMarkdownに変換する過程を示すノートブックが提供されている
  • 商用環境では高性能GPUの利用が推奨される。T4よりもRTX 3090/4090クラスが適している
  • Reader-LMはまもなくAzure MarketplaceとAWS SageMakerでも提供される予定
  • 商用ライセンスはCC BY-NC 4.0であり、商用利用についてはJina AIへ問い合わせること

Reader-LMのベンチマーク結果

  • GPT-4o、Gemini、LLaMAなど複数のLLMと比較評価を実施した
  • ROUGE-L、Token Error Rate(TER)、Word Error Rate(WER)などの指標を使用した
  • reader-lm-1.5bはROUGE-L 0.72、WER 1.87を記録し、最も優れた性能を示した
  • 実際の出力Markdownを目視で確認すると、reader-lm-1.5bはヘッダー抽出、メインコンテンツ抽出、構造保持、Markdown構文の使用といったすべての面で優れている

Reader-LMの学習プロセス

  • Jina Reader APIでHTMLとMarkdownのペアを作成し、学習データとして使用した。合成HTMLも一部追加した
  • 65Mから3Bパラメータまで、さまざまなサイズのモデルを試験した
  • 2段階の学習プロセスを経た。第1段階では短く単純なHTMLを32Kトークン系列で学習し、第2段階では128Kトークンまで拡張して学習した
  • 繰り返しやループに陥る退化(degeneration)問題を解決するため、contrastive searchと反復停止基準を適用した
  • OOM問題を解決するため、chunk-wise model forwardingを実装し、データパッキングの実装も改善した
  • エンコーダ専用モデルで問題を解決することも試みたが、トークン分類タスクとして扱うには難しさがあった

結論

  • Reader-LMは、Webデータの抽出と整形のために設計された新しいSLMである
  • HTMLをMarkdownに変換する作業は、思った以上に簡単ではない。position-awareで文脈に基づく推論が必要なため、大きなパラメータ規模が求められる
  • SLMをゼロから学習させるのは非常に難しい。事前学習済みモデルから始めるほうがはるかに効率的である
  • 今後も、文脈長の拡張、デコード速度の向上、入力における命令対応など、多くの改善の余地が残されている

2件のコメント

 
ragingwind 2025-01-21

こういうのを作りたいです。

 
xguru 2024-09-13

Jina AI Reader - URLをLLMフレンドリーな入力に変えてくれるツール

これを便利に使っているのですが、もっと小さくしてブラウザに内蔵してくれるといいなと思いますね(笑)