🎆

機械翻訳を用いた、論理推論能力の向上を目指した日本語指示応答データセットの構築

2024/11/07に公開

GENIAC 松尾研 LLM開発プロジェクトメンバーのMitsuhashiです。
プロジェクト期間中に取り組んだ内容をまとめます。

概要

  • 本記事は、翻訳に基づいた日本語指示応答データセットの構築に関する記事です
  • そもそも日本語の指示応答データセットが少ない、という問題に対して、海外のデータセットを翻訳して日本語のデータセットを確実に増やすことを目的として取り組みました
  • 本記事で紹介するデータセットはOpen-Platypus-Japanese-maskedです

https://huggingface.co/datasets/weblab-GENIAC/Open-Platypus-Japanese-masked

プロジェクト当時の自分の役割

  • 事前学習されたTanukiモデルに対して、以下の条件を満たすデータセットの構築と学習を行うこと、が自分の役割でした
    • 多様な指示応答に追従させる
    • モデルの性能を向上させる
  • 抽象的な課題ではありますが、自分なりに噛み砕いて理解することで、データセットの構築に取り組むことにしました

プロジェクト当時の状況

※あくまで個人の目から見た当時の状況です

  • Phase1と比較して、より高性能なLLMを学習するための施策を検討している時期でした
  • 事後学習の手法の選定や、学習に使うデータセットを探索している時期であり、先行事例があればそれに倣ってまずは1サイクルを回したいという状況でした

OpenPlatypusデータセット

  • 先行事例の調査からOpenPlatypusデータセットを見つけました

https://huggingface.co/datasets/garage-bAInd/Open-Platypus

  • このデータセットはLLMの論理推論のスキルを向上させることに焦点を当てており、複数のデータセットで構成されています
  • また、複数のデータセットからデータを収集したという背景から、似た指示応答が含まれるという問題が懸念されますが、こちらはSentence Transformersを用いて類似度が80%以上の問題を削除する対応が取られており、類似した問題によってデータがかさ増しされているのではないか、という懸念に対策が打たれています
  • 論理推論能力と記載していますが、中身は高校数学のデータが多いです
    • 数学タスクは別途ありますが、このデータセットでは数学も論理推論能力が必要だと解釈され、論理推論データセットと記載されているのだと解釈しました
  • 先行事例の文献はこちらのNemotron-4-340B Technical Reportです

https://arxiv.org/abs/2406.11704

  • Nemotron-4-340B Technical Reportでは非常に丁寧にデータセットの構築が行われていました
    • 例えば、トピックリストを経由した合成データセットの生成手順や、複数ターン会話に対応した合成データセットの生成だけでなく、ユーザーの実際の入力もデータセットに取り込むことで、非常に広い範囲をカバーしたデータセットとなっていました
  • その中でも特に参考になったのが、海外の指示応答系のデータセットの内、確実に商用利用が可能なライセンスを持つデータセットを的確に指摘している点でした
  • ここで記載されたデータセットは今回のプロジェクトの翻訳対象にできる、と判断し、翻訳を行いました

OpenPlatypusデータセットの翻訳

  • 翻訳にはapache-2.0ライセンスであるcyberagent/calm3-22b-chatを使用させていただきました

https://huggingface.co/cyberagent/calm3-22b-chat

  • 翻訳には以下のソースコードを使用しました

https://github.com/matsuolab/nedo_project_code/blob/team_hatakeyama_phase2/team_hatakeyama_phase2/mitsuhashi/build_corpus/openplatypus_ja/generate_openplatypus_ja_batch.py

  • 開発環境はH100 80GB 1台、vllmのバッチ推論(バッチサイズ256)を用いて行いました
  • vllmはLLMの推論を高速化する手法の一つであり、他にもいろいろな高速化手法が提案されています。その中でも安定して高い推論速度を発揮しており、今回のプロジェクトでも大変助けられました
    • LLMの高速化の手法についての概要は以前にこちらの記事でも説明していますので、合わせてご参照ください

https://zenn.dev/kaeru39/articles/1ea73bfa40c7df#5.-vllm

OpenPlatypus-Jaの抜粋

  • 以下のフォーマットでデータを格納しています
{
    "idx": インデックス,
    "instruction_en": 英語の指示文,
    "response_en": 英語の応答文,
    "translation_model": 翻訳に使用したモデル名,
    "instruction": 翻訳された日本語の指示文,
    "response": 翻訳された日本語の応答文,
    "data_source": データセットの出所,
    "translation_prompt": 翻訳に使用したプロンプト,
},
  • データセットの抜粋は以下です
{
    "idx": 5341,
    "instruction_en": "A regular polygon has exterior angles each measuring 15 degrees. How many sides does the polygon have?",
    "response_en": "I know that the sum of the exterior angles of any polygon is 360 degrees, so if each exterior angle is 15 degrees, I can divide 360 by 15 to get the number of angles and sides. 360 divided by 15 is 24, so the polygon has 24 sides. ",
    "translation_model": "cyberagent/calm3-22b-chat",
    "instruction": "外角がそれぞれ15度の正多角形があります。この多角形は何辺ありますか?",
    "response": "正多角形の外角の和は常に360度であることを知っています。各外角が15度である場合、360度を15度で割ることで、多角形の辺の数を求めることができます。360度を15度で割ると24になるので、この多角形は24辺あります。",
    "data_source": "MATH/PRM-800K",
    "translation_prompt": "「### 質問 ### 答え」の形式で日本語に翻訳してください。\n### Question\n{record['input']}{record['instruction']}\n\n### Answer\n{record['output']}"
    },

確認できている課題

構築したデータセットで確認できている課題を整理します

課題 詳細
LaTeX表記の翻訳乱れ LaTeX表記まで正確に翻訳ができず、出力が乱れている事例を確認しています
正答の確認 答えが一意に定まる問いについては、本当に正しい答えとなっているかの確認が十分に行えていません
思考過程の欠落 思考過程が含まれている問いもありますが、問いに対して記号だけ、最終的な数値だけを記載されている事例を確認しています。これは翻訳抜けというよりは、そもそも元のデータセットが問いと最終的な答えのみのペアになっている事が多いことを確認しています。これらの問いはモデルに問題文の丸暗記を強制させる恐れがあるため、可能であれば、思考過程を追加することで、学習させたいモデルの論理推論能力の向上に寄与する可能性があります。

Tanukiの学習に使用したか

  • 初期はTanukiの学習に使用していましたが、最終的なモデルの学習には使用されませんでした

まとめ

  • 本記事では、機械翻訳に基づく、論理推論能力の向上を目指した日本語指示応答データセットを構築する取り組みについて記載しました
  • 構築したデータセットに対して、現状確認できている課題を整理しました
  • 道半ばな点はありますが、日本語の指示応答データセットの構築の一助になれば幸いです
東大松尾・岩澤研究室 | LLM開発 プロジェクト[GENIAC]

Discussion