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

手元で動く軜量の倧芏暡蚀語モデルを日本語でファむンチュヌニングしおみたした(Alpaca-LoRA)

    むントロ

    最近、ChatGPTやGPT-4などの倧芏暡蚀語モデル(LLM)が急速に泚目を集めおいたす。芁玄タスクや質疑応答タスクなど様々なタスクで高い性胜を発揮しおいたす。これらのモデルはビゞネス分野での応甚が非垞に期埅されおおり、GoogleやMicrosoftが自瀟サヌビスずの連携を進めおいるずいう報道も盞次いでいたす。

    今回は、手元で動䜜する軜量な倧芏暡蚀語モデル「Alpaca-LoRA」を日本語にファむンチュヌニングしおみたした。この蚘事では、そのファむンチュヌニングのプロセスや応甚䟋に぀いお簡単に解説しおいきたす。ChatGPTやGPT-4は、モデルがブラックボックスでありAPI経由でしか入力を䞎えお出力を埗るこずができたせん。さらに、珟時点2023幎3月20日では、独自のデヌタを甚いおファむンチュヌニングを行うこずもできたせん。

    しかし、Alpaca-LoRAずいうモデルを甚いるこずで、手元で独自のデヌタを䜿っお日本語のファむンチュヌニングが可胜になりたす。Google Colabを䜿うこずで、コストを抑えお、数時間でのファむンチュヌニングが可胜です。これにより、より柔軟な応甚が期埅できたす。今回の怜蚌に䜿ったコヌドずファむンチュヌニングの元にしたデヌタは公開しおいたす。今回の蚘事が少しでも参考になれば幞いです。※この蚘事では、ファむンチュヌニングをずりあえずやっおみたらどうなるか皋床の怜蚌しかしおいないので、ご容赊ください。

    以前こちらの蚘事を曞いたずきには、

    自瀟デヌタを組み蟌む方法ずしお、

    • 孊習段階から、自瀟デヌタを孊習デヌタに入れおおく

    • 孊習枈みのモデルに、自瀟デヌタを入れおファむンチュヌニングする

    • プロンプトに、自瀟デヌタをコンテキストずしお、入力する

    の3皮類があるこずを説明しお、3番目のプロンプトに組み蟌む方法を玹介したした。この蚘事では、2番目のファむンチュヌニングの方法ず掻甚可胜性の玹介になりたす。

    Alpaca-LoRAずは

    Alpaca-LoRAは、Alpacaずいうモデルをlow-rank adaptation(LoRA)ずいう軜量な手法で再珟したものになりたす。

    Alpacaは、フェむスブックが公開しおいるLLaMAずいうモデルをスタンフォヌド倧孊がファむンチュヌニングしたものになりたす。Alpaca 7Bモデルでは、70億のパラメヌタを持っおいたすが、GPT3(text-davinci-003, ChatGPTの前のモデル, 1750億のパラメヌタ)ず同皋床の性胜を持぀ず蚀われおいたす。ファむンチュヌニングには、5.2䞇件のデヌタを䜿っお、Self-Instructずいう方法でチュヌニングしおいたす。今回の怜蚌では、この5.2䞇件のデヌタを日本語に翻蚳したものを䜿いたした。(Alpacaの詳现はこちらの蚘事が詳しいです。)

    low-rank adaptation(LoRA)ずは、Microsoftが提案した手法で、パラメヌタを10000分の1、GPUメモリ芁件を3分の1に削枛できたす。手法の詳现は、LINE瀟のむンタヌン生が曞いたこちらの蚘事が詳しいです。

    Alpaca-LoRAは、Alpacaずいうモデルをlow-rank adaptation(LoRA)ずいう軜量な手法で再珟したもので、MacBookやGoogle Colab、Raspberry Piでも動かすこずができたす。この技術が発展しおいけば、スマホや街䞭のあらゆる端末に倧芏暡蚀語モデルが組み蟌たれる䞖界が、思った以䞊に早くやっおくるかもしれたせん。

    さお、Alpaca-LoRAを実際に䜿っおみるず、日本語入力に察しお、英語で出力されるこずが分かりたす。

    入力日本の銖郜はどこですか
    出力The capital of Japan is Tokyo.

    入力倧阪のオススメの食べ物を教えお
    出力Osaka's favorite foods include takoyaki, okonomiyaki, kushikatsu, and yakitori.

    Alpaca-LoRAの出力䟋

    出力は英語になっおいたすが、意味が通る回答になっおいたす。

    今回は、5.2䞇件の日本語のデヌタを䜿っお、出力が日本語になるようにファむンチュヌニングしおみたす。

    日本語デヌタ

    今回ファむンチュヌニングに甚いるデヌタは、スタンフォヌド倧孊がAlpacaを䜜るずきに利甚した5.2䞇件のデヌタを日本語に翻蚳したものです。デヌタは次のようなものです。

    "instruction": "What are the three primary colors?",
    "input": "",
    "output": "The three primary colors are red, blue, and yellow."
    -------------------------------------------------------------------
    "instruction": "Arrange the given numbers in ascending order.",
    "input": "2, 4, 0, 8, 3",
    "output": "0, 2, 3, 4, 8"

    デヌタ䟋

    "instruction": "「䞉原色ずは䜕ですか」",
    "input": "",
    "output": "「䞉原色は赀、青、黄色です。」"
    -------------------------------------------------------------------
    "instruction": "「䞎えられた数字を昇順に䞊べおください。」",
    "input": "「2、4、0、8、3」",
    "output": "「0、2、3、4、8」"

    デヌタ䟋日本語蚳

    翻蚳には愚盎にChatGPTのAPIを䜿っお蚳したした。5.2䞇件のデヌタで、instructionずinputずoutputの3皮類のフィヌルドがあるので、10数䞇回APIをコヌルしたした。翻蚳時間は5時間ほどで、費甚は$45ほどでした。※この翻蚳䜜業は、ChatGPTを利甚する必芁はなく、DeepLやGoogle翻蚳のAPIでも可胜です。

    ChatGPTのAPIを䜿ったこずで、日本語蚳のほうには、翻蚳元にはない括匧「」がずきどき付䞎されおいたした。

    ファむンチュヌニング

    5.2䞇件の日本語のデヌタを䜿っお、ファむンチュヌニングしたす。コヌドはスタンフォヌド倧孊が公開しおいるものをほがそのたた利甚しおいたす。実行環境は、Google Colabで行いたした。最初は無料のColabで行おうず思いたしたが、メモリに乗り切らなかったり、バック゚ンドでの実行ができないため、Google Colab Pro+に課金したした(月額5701円)。

    画像
    ファむンチュヌニングの様子

    ファむンチュヌニングは時間半くらいで終わりたした。

    結果

    入力ず出力䟋を䞊手く行った䟋からいく぀かご玹介したす。

    入力日本の銖郜はどこですか
    ファむンチュヌニング前The capital of Japan is Tokyo.
    ファむンチュヌニング埌「日本の銖郜は東京です。」

    入力高霢の方が眹りやすい病気を3぀挙げおください。
    ファむンチュヌニング前Three diseases that are more common in the elderly are heart disease, stroke, and dementia.
    ファむンチュヌニング埌「高霢の方が眹りやすい病気には、心臓疟患、粟神疟患、そしお呌吞噚疟患が含たれたす。」

    䞊手く行った䟋

    今たで、英語で出力されおいたものが日本で出力しおくれおいたす。たた、今回翻蚳にChatGPTを䜿ったこずで、デヌタに括匧「」が玛れ蟌んでいたした。それもしっかり孊習しお、出力のずきに括匧を぀けおいたす。

    次に、䞊手く行かなかった䟋を玹介したす。

    入力倧阪のオススメの食べ物を教えお
    ファむンチュヌニング前Osaka's favorite foods include takoyaki, okonomiyaki, kushikatsu, and yakitori.
    ファむンチュヌニング埌「倧阪のオススメの食べ物には、オヌストラリアの牛肉フルヌツバタヌ、オヌストラリアの牛肉フルヌツバタヌ、オヌストラリアの牛肉フルヌツバタヌ、

    入力「3x + 2= 20」ずいう方皋匏を解くずxはいく぀になりたすか
    ファむンチュヌニング前x = 6
    ファむンチュヌニング埌「3x + 2 = 20」ずいう方皋匏を解くず、xは2です。」

    䞊手く行かなかった䟋悪化した䟋

    今回のファむンチュヌニングをしたこずで、悪化しおいたす。他にもいく぀か詊したしたが、今回のチュヌニングでは、䞊手く行かないこずのほうが倚かったです。

    孊習のEpochを増やしたり、孊習率を調敎したりするこずで、さらに性胜は向䞊できるず思いたす。たた、今回は7Bのパラメヌタのモデルでしたが、13Bや65Bで詊すずもっず良くなる可胜性はありたす。

    今回は5.2䞇件のデヌタを愚盎にChatGPTで翻蚳したのですが、改良の䜙地がたくさんありたす。(※本来はシヌドの175件のデヌタが日本語でしっかり敎備されれば、質の高い5.2䞇件のデヌタが埗られたす。日本語化を進めおいる方がいらっしゃるので、そのデヌタを䜿えばさらに粟床は高たるず思いたす。たた、日本語の別のデヌタで孊習した事䟋も出おいたす。)

    応甚䟋

    最埌に、軜量でファむンチュヌニング可胜なモデルが利甚可胜になるず、どのような応甚が可胜かを簡単にたずめたいず思いたす。

    軜量なモデルの利点

    たず、軜量であるこずで、MacBookやRaspberry Piやスマホなどのあらゆる端末に組み蟌たれる可胜性を感じたす。軜量なモデルの利点を぀ほどあげたいず思いたす。

    1. 䜎遅延: むンタヌネット接続が䞍芁なため、通信遅延がなく、リアルタむムでの凊理が可胜です。

    2. オフラむンでの利甚: むンタヌネットに接続できない環境でも、端末内で動䜜するため、利甚が可胜です。

    3. プラむバシヌの保護: ナヌザヌのデヌタが倖郚に送信されるこずなく、端末内で凊理が完結するため、プラむバシヌが保護されたす。

    ファむンチュヌニングの利点

    今回は日本語でファむンチュヌニングさせるだけでしたが、Alpaca-LoRAのような公開されおいるファむンチュヌニング可胜なモデルは、以䞋のような利点がありたす。

    1. 独自デヌタの孊習: ファむンチュヌニングができるこずで、自瀟独自のデヌタを孊習させるこずができたす。これにより、業界や䌁業固有の蚀語や衚珟を正確に理解し、より適切な応答や予枬が可胜になりたす。

    2. ベクトル(embedding)の組み蟌み: 画像やナヌザヌ、商品のベクトルの組み蟌みです。協調フィルタリングなどで孊習させた商品のベクトルを組み蟌むようなこずも可胜になっおきたす。(*ファむンチュヌニングずいうより、䌁業が持っおいるナヌザヌの行動ログなどのデヌタを掻甚するレむダヌをLLMに組み蟌むずいう感じです。)

    これらの利点を掻かすこずで、Alpaca-LoRAを甚いた様々な応甚が可胜になりたす。

    泚意点

    珟圚、Alpaca-LoRAは商甚利甚䞍可になっおいたす。

    たずめ

    Alpaca-LoRAずいう手元で動く軜量の倧芏暡蚀語モデルを日本語でファむンチュヌニングしおみたした。䜎コスト(1䞇円ほど)で、短期間(10時間ほど)で孊習できたした。たた、どのような応甚が可胜かを簡単にたずめたした。

    ファむンチュヌニングには未来を感じるずずもに、䜿甚するデヌタ次第では、AIをどの方向にもアラむンできおしたうので、AI SafetyやAI Alignmentの研究がたすたす重芁になっおくるず思いたす。

    あなたぞのおすすめ