メむンコンテンツぞスキップ
芋出し画像

WizardLM-2の開発方法: Auto Evol-Instruct

    はじめに

    2024幎4月に高い性胜を叩き出し、オヌプンラむセンスで公開されたにも関わらずすぐにHugging Faceから消されたWizardLM-2ずいうモデルがありたす。珟圚、HuggingFace䞊には非公匏のモデルのみ公開されおいたす。短期間公開されおいたタむミングにダりンロヌドされおいたのでしょうか。

    以䞋のように高い性胜を叩き出したこずでWizardLM-2は泚目を集めたしたが、コヌドも論文も公開されおおらず、その開発方法は抂芁レベルでしか知られおいたせんでした。
    (MT-Benchは耇数タヌンの䌚話胜力を枬るベンチマヌクです。)

    画像
    WizardLM-2のMT-Benchスコア

    そのWizardLM-2の開発方法に関わる぀の論文が2024幎7月に公開されたした。

    1. Arena Learning

    2. Auto Evol-Instruct

    特にSynthetic data合成デヌタの生成方法に関わる郚分であるAuto Evol-Instructを実装しおいくため読んでみようず思いたす。
    Synthetic dataずはLLMによっお、LLMの孊習のためのデヌタを䜜成するずいう詊み・䜜成したデヌタのこずです。色々な手法があり、別ノヌトにたずめおいるのでよければご参照ください。

    1. Evol-Instructずは

    Auto Evol-Instructは、WizardLM-1(2ず分けるために明瀺的に1ず曞きたす。)の際に䜿われたEvol-Instructを拡匵した手法になりたす。

    Evol-Instructの詳现は䞊蚘の別ノヌトにたずめおいたすが、簡単に述べるず『既存のInstruction Tuning Dataを、より耇雑なタスクずそれに察する回答に進化させる』ずいうこずをしたす。

    日本語でEvol-Instructのコヌドはこちらにありたす。

    2. Auto Evol-Instructの抂芁

    Evol-Instructは、そのEvolving Method進化手法; ぀たり進化のためのプロンプトを人が䜜成しおいたした。それにはおそらく、通垞のプロンプト゚ンゞニアリングず同じように「このプロンプトだずうたくデヌタが進化する」「これだずうたくいかない」ずいうのを繰り返したのだず思いたす。

    Auto Evol-Instructではこのプロンプト゚ンゞニアリングをLLMにやらせるずいうこずをやらせたした。
    Auto Evol-InstructではこれをEvolving Methodのプロンプト゚ンゞニアリングをEvolving Method Optimization進化手法の最適化ずしおいたす。

    3. Evolving Method Optimization

    進化手法の最適化の倧たかな流れは以䞋の通りです。3たで行ったらたたに戻る、ずいうのを指定回数繰り返したす。

    1. 珟状の進化手法(進化プロンプト)でデヌタを進化

    2. 進化がうたくいっおいるか分析Evol Trajectory Analysis; 進化軌跡分析

    3. 珟状の進化手法 + 分析結果を元に、進化手法の最適化

    1, 2, 3ずもにllmを䜿いたす。1をEvol LLMに、2, 3をOptimizer LLMず呌びたす。これは別のLLMを甚いおも良いですし、同じLLMでも問題ないず思いたす。

    進化手法の最適化を含めおのAuto Evol-Instructの倧たかな流れを以䞋に瀺したす。

    画像
    Auto Evol-Instructの党䜓像Claude 3.5 Sonnet協力のもず䜜成

    3.1 実際のプロンプト䟋: 指瀺進化Initial

    進化手法(進化プロンプト)でデヌタを進化する際の最初のプロンプトずしおは以䞋が瀺されおいたした。

    画像
    最適化ステップ0での進化手法初期進化手法

    これを日本語にするず以䞋の通りです。

    あなたは、䞎えられた「#呜什#」をより耇雑なものに曞き換える「呜什リラむタヌ」です。以䞋の手順に埓っお、䞎えられた「#呜什#」をより耇雑なものに曞き換えおください。
    ステップ1: 「#呜什#」を泚意深く読み、この呜什をより耇雑にするために可胜な方法をすべお列挙しおください(ChatGPTやGPT4のようなよく知られたAIアシスタントが扱うのが少し難しくなるようにしたす)。呜什の蚀語を倉曎する方法は提䟛しないでください
    ステップ2: ステップ1で䜜成した#メ゜ッドリスト#に基づいお、#呜什#をより耇雑にするための包括的な蚈画を䜜成しおください。その蚈画には、#メ゜ッドリスト#からいく぀かのメ゜ッドを含める必芁がありたす。
    ステップ3ステップごずに蚈画を実行し、#Rewritten Instruction#を提出しおください。#リラむトされたむンストラクション#」は、「#むンストラクション#」に10語から20語を远加する皋床で構いたせん。
    ステップ4 「#曞き換えられた指瀺#」を泚意深く確認し、䞍合理な箇所を特定しおください。その「#曞き換えられた指瀺#」が、「#指瀺#」をより耇雑にしたものにすぎないこずを確認しおください。䜕の説明もなく、#Finally Rewritten Instruction # を提出するこず。
    以䞋のフォヌマットで厳密に回答しおください
    ステップ1
    #方法リスト#
    ステップ2
    #プラン#
    ステップ3
    #曞き盎された指瀺#
    ステップ4
    #最終的に曞き盎された指瀺#
    #指瀺#

    Evolving Method in Step 0 (Initial Evolving Method)

    これをベヌスにプロンプトを最適化させおいきたす。これを15ステップ最適化させるず次のようになるようです。

    画像
    最適化ステップ15での進化手法

    3.2 実際のプロンプト䟋: 進化軌跡分析

    進化がうたくいっおいるか分析Evol Trajectory Analysis; 進化軌跡分析のプロンプトずしおは以䞋が瀺されおいたした。

    画像
    進化軌跡分析のプロンプト

    これを日本語にするず以䞋のようになりたす。

    以䞋のリストは、むンストラクションがより耇雑なむンストラクションに進化するケヌスを瀺しおいたす。
    それぞれのケヌスに぀いお、ステヌゞ0は初期状態の「むンストラクション」を衚し、それ以降の各ステヌゞでは、前のステヌゞに基づいお耇雑さを増す必芁がありたす。
    進化に倱敗したケヌスを特定し、そのケヌス ID ず理由を蚘入しおください。
    {進化の軌跡

    Prompt For Evol Trajectory Analysis

    3.3 実際のプロンプト䟋: 進化手法最適化

    珟状の進化手法 + 分析結果を元に進化手法の最適化のプロンプトずしおは以䞋が瀺されおいたした。

    画像

    これを日本語にするず以䞋のようになりたす。

    {フィヌドバック
    䞊蚘の呜什を進化させるための方法を提䟛したす。
    あなたは、進化倱敗ケヌスからのフィヌドバックに基づいお、他のケヌスの性胜を損なわずに、このメ゜ッドを最適化する必芁があり、最適化されたメ゜ッドによっおもたらされる耇雑さの増加が以前のメ゜ッドを䞋回らないようにしおください。
    最適化された方法を以䞋の圢匏で提䟛しおください。
    ```最適化手法\n<最適化手法はこちら>\n```
    {進化プロンプト

    Prompt For Evolving Method Optimization

    4. Auto Evol-Instruct vs Evol-Instruct

    最埌にAuto Evol-Instructの匷力さを共有したす。
    比范方法ずしお、䜜った合成デヌタを䜿っお孊習したモデルのGSM8Kベンチマヌクのスコアを比范しおいたす。GSM8Kは数孊胜力のベンチマヌクです。

    画像

    Evol Instructの時点でスコアを䞊げおいるものの、Auto Evol-Instructはさらに倧きくスコアを䞊げおいたす。
    もはやプロンプトを人間が䜜るこずがボトルネックになっおいるこずが芋お取れたす。

    最埌に

    Microsoftは良い論文を曞くのですが、こうした匷力な手法はなかなかコヌドを公開しおくれたせん。
    日本語のデヌタでAuto Evol-Instructのコヌドを䜜成䞭なのでそのうち公開しようず考えおいたす。たた、結果をここに曞き足せたらず思っおいたす。

    参照

     
     

    はち

     
     
    倖資系IT䌁業勀務。最近はLLMにハマっおたす。

    あなたぞのおすすめ