前回の記事はこちら
https://qiita.com/uaokit0905/items/4396d606b703372e25b3
【機材協力について】
本記事(および本連載プロジェクト)は、株式会社ハイレゾ様よりGPUクラウドサービス「GPUSOROBAN」の計算資源(NVIDIA A100 80GB)をご提供いただき、開発・検証を行っています。
0.はじめに
こんにちは!東京大学文科3類2年で、東大AI研究会 代表の青木です。
私たち東大AI研究会は東大で活動するサークルで、1年かけて0からGPT型モデルを開発するために、毎週水曜日に勉強会を開催しています。勉強会では初心者でも理解しやすいスライドと、充実したカリキュラムを用いて開発を進めています。
株式会社ハイレゾ様は自社でGPUデータセンターを運営し「GPUSOROBAN」 というGPUのクラウドサービスを提供する会社です。高性能GPUは非常に高価で、私たちのような学生サークルが簡単に手を出せるような代物ではありません。GPUSOROBANではクラウド上で必要な期間・量だけGPUを借りることができるため、初期投資を抑えてGPUを活用し開発を行うことができます。
現在株式会社ハイレゾ様の協力のもと、25億パラメーターのGPT型モデルの実装と訓練を行っています。その名もSGT(Scratch Generative Transformer)プロジェクト!前回に引き続き、SGTプロジェクトの様子をお伝えします。
1.性能の整理
前回の記事で見た検証結果は、ベースモデルやCPT後のモデルがいろいろ混ざったものでした。ここからは、検証に使用したモデルを明記します。(実験をするときは、ちゃんと記録しておきましょう(´;ω;`))
まず、事前学習を44000ステップ行ったモデルに対して、Continuous pre-trainingを1エポック加えます。このモデルと、「問題文の後にある選択肢が続く可能性」が最も高い選択肢を回答として扱う評価指標を使って性能検証を行います。
なお、選択肢を選ぶときは、選択肢の文字数でバイアスがかからないように、選択可能性の値を文字数で割ります。
検証結果は70/191です。この値がベースラインになります。
2.そろそろベンチマークを固定してください
Claudeに性能を向上させる方法を相談すると、いくつか良さげな方法を提案してくれました。
一つ目は、問題によって回答の判別方法を変える方法です。
どうやら私のモデルは「不適切なものを選ぶ」問題をうまく判別できないようです。問題文に関係なく、一番問題文に合いそうな選択肢を選びます。そこで、問題文を機械的に判別し、「不適切なものを選ぶ」問題の時は、モデルが最も選びにくい選択肢を回答にします。
この方法で正答数が80/191に上昇しました。
二つ目は、複数の指標の多数決です。
当初から、問題と4択の選択肢を同時に与えられたうえで、ある選択肢がその問題の後に続く可能性を計算して、その可能性が最も高い選択肢を回答として扱っていました。この指標に対して、問題と4択の選択肢を同時に与えられたうえで、その問題文がある選択肢の前に続く可能性を計算し、その可能性が最も高くなる選択肢を回答にする、という評価指標を導入します。
選択肢を見て、それが正答になる問題を作りやすいかどうか、を指標として扱います。
その結果正答数は76/191に減少しました。
さらに、正答を選ぶ確率を上げ、誤答を選ぶ確率を下げるように学習させたうえで検証させるなどの方法も試しました...
いや、検証方法とベンチマーク変えたら意味なくない????
もとはと言えば、検証用問題の191問の正答率を上げることが目的なのではなく、G検定に合格するレベルのモデルを作成することが目的なわけです。それで、検証方法を変えて、見かけの性能を上げることなんて何の意味もありません。
たとえるなら、東大に受かるために勉強しておきながら、見かけの学力を上げるために模試の難易度を下げているようなものです。
「グッドハートの法則」というものがあります。「ある指標が目標になると、その指標は良い指標ではなくなる」ということです。
G検定の正答率は、本来、モデルがG検定に必要な知識と回答能力を持っているかを測るための代理指標でした。ところが、191問の点数を直接上げることばかり考え始めた結果、「G検定に合格できるモデルを作る」という本来の目的から離れ、採点方法を最適化する作業になっていました。
今見返すと、「不適切なものを選ぶ」問題のときにだけ回答方法を変えるなんて、モデルに対して甘すぎます。可愛い子には旅をさせよ、じゃないですが、自分のモデルには頭が良くなってほしいので、厳しい方法で検証しなければなりません。
Claude君は私のために、この見かけの点数を上げる方法をいろいろ考えてくれましたが、残念ながら彼の役目はここまでです。
まずは改めて、モデルの目的に合ったベンチマークを決める必要があります。
ベンチマークはできるだけわかりやすい、シンプルなものである必要があります。
例えば、数学、歴史、法律、医学、コンピュータ科学など、57分野にわたる知識と問題解決能力を測るベンチマークであるMMLUは、4択形式で、モデルが選んだ選択肢と正答を照合し、全問題に対する正答率を計算します。
Instruction tuningに使用したSciQは各問題には正答1つと誤答3つが用意されており、多くの問題には正答の根拠となる文章も付属しています。 テストでは根拠となる文章を与えず、問題文と4つの選択肢から正答を選ばせ、その正答率でモデルを評価します。
この辺の有名なベンチマークを参考にして、ベンチマークを固定しなければなりません。
次回は、ベンチマークを固定したうえで、学習を進めていきます。
実はこの記事を執筆中に大学の研修プロジェクトで東南アジアに来ているので、今回は少し短めになります。次回をお楽しみに。
関連リンク
株式会社ハイレゾ公式サイト:
https://highreso.jp/
クラウドサービス「GPUSOROBAN」:
https://soroban.highreso.jp/