はじめに
前回のブログではFineTuningにより精度が向上するかどうかを検証した。 FineTuning実施前の精度は62%,FineTuning実施後の精度は100%ととなり精度が大幅に向上させることができた。 今回はDruppal Conosoleのコマンドを学習させてDrupal Consoleのコマンドに特化したモデルを作成する。 また、ベースとなるモデルを変えてモデルごとにどのような特徴が出るかも確認する。
Drupal Consoleとは
Drupal Consoleについて簡単に紹介する。 Drupal ConsoleはDrupalを管理するためのCLIツールとなる。 DrupalはCMS(content management system)の1つとなりwebサイトの構築の際に使用される。 コンテンツの作成、編集、ユーザアカウントの管理などWebサイトを構築するために必要な機能を提供する。
目的
今回はDrupal Consoleのコマンドに特化したモデルを作成する。 このモデルでは「Drupal」、「Console」、「Drupal Console」といった単語を入力しなくてもDrupal Consoleのコマンドを出力するようにする。 具体的な例を以下に示す。
- 入力: 「キャッシュを削除する方法を教えてください」
- 出力: 「drupal cache rebuild」
FineTuning実施前の精度
FineTuning実施前は以下の条件で目的のDrupal Consoleのコマンドが出力されるかどうかを確認する。
- 使用するモデル: curie
- max_tokens: 10
FIneTuning実施前の結果
FineTuning実施前のため入力に「Drupal Console」という単語を含めた結果以下のような出力となった。 また入力を与えた時の期待する回答も示す。
入力 | 出力結果 | 期待する回答 |
---|---|---|
Drupal Consoleでキャッシュを削除する方法を教えてください | \n\n環境\n\n | drupal cache rebuild |
Drupal Consoleでコントローラを作成する方法を教えてください | \n\ntaki0\n\nチャット | drupal generate:controller |
Drupal Consoleでモジュールを作成する方法を教えてください | \n\ncomposer global require "fb- | drupal generate module |
Drupal Consoleでフォームを作成する方法を教えてください | \n\nお願いしま | drupal generate form |
Drupal Consoleでルートの一覧を表示する方法を教えてください | \n\nこの質問 | drupal debug router |
FineTuning実施前は全ての入力で期待する回答が出力されないことが判明した。
FineTuning
同じ学習データを使用して以下の3つのモデルに対してFineTuningを実施した。
- curie
- babbage
- ada
学習データについて
Drupal Consoleのコマンドは全部で180個近くあり数が多いため今回は以下の5つのコマンドを対象としてFineTuningを実施した。
- drupal cache rebuild
- drupal generate:controller
- drupal generate module
- drupal generate form
- drupal debug router
FineTuningで使用した学習データの例を以下に示す。
{"prompt":"cacheを削除するコマンド\/n\/n###\/n\/n","completion":" drupal cache rebuild END"}
{"prompt":"cacheを削除するコマンドを教えてください\/n\/n###\/n\/n","completion":" drupal cache rebuild END"}
{"prompt":"キャッシュを削除するコマンド\/n\/n###\/n\/n","completion":" drupal cache rebuild END"}
{"prompt":"キャッシュを削除するコマンドを教えて\/n\/n###\/n\/n","completion":" drupal cache rebuild END"}
学習データは同じ内容で「cache」を を「キャッシュ」に変えるなど表現を変えて複数用意した。 また、openAIの公式ドキュメントでは以下のことを推奨しているためそれに従って学習データを用意した。
- promptの最後に区切り文字を使用する
- completionの最初に空白を追加する
- completionの末尾に「 END」を追加する。
学習データは全部で81件で1コマンドあたり8~20件となる。
FineTuning実施後の精度
学習データに存在する入力を行いFineTuningの精度を確認する。 FineTuningを実施した3つのモデルで以下のような入力を行ったところ全てのモデルで期待する回答が出力された。
入力 | curieをベースにしたモデル | babbageをベースにしたモデル | adaをベースにしたモデル | 期待する出力 |
---|---|---|---|---|
キャッシュを削除する方法を教えてください | drupal cache rebuild | drupal cache rebuild | drupal cache rebuild | drupal cache rebuild |
コントローラを作成する方法を教えてください | drupal generate:controller | drupal generate:controller | drupal generate:controller | drupal generate:controller |
モジュールを作成する方法を教えてください | drupal generate module | drupal generate module | drupal generate module | drupal generate module |
フォームを作成する方法を教えてください | drupal generate form | drupal generate form | drupal generate form | drupal generate form |
ルートの一覧を表示する方法を教えてください | rupal debug router | rupal debug router | rupal debug router | rupal debug router |
いろいろな入力を試してみる
以下のような入力を行った場合、どのような結果になるかやモデルごとにどのような違いが現れるかの確認を行った。
- 学習させてないコマンド
- 入力に誤字があった時の挙動
- 学習データに含まれていない言語(英語、関西弁)で入力した時の挙動
- 入力を省略した時の挙動
- 入力と出力を逆にする
3つのモデルで期待する回答が得られた項目
今回FineTuningを実施した3つのモデル全てで期待する出力が得られたものを以下にまとめる。
No | 入力 | curieをベースにしたモデル | babbageをベースにしたモデル | adaをベースにしたモデル | 期待する出力 | notes |
---|---|---|---|---|---|---|
1 | キャッシュ削除 | drupal cache rebuild | drupal cache rebuild | drupal cache rebuild | drupal cache rebuild | 入力する文字数を省略したときの挙動を確認するため |
2 | コントローラーを作成する方法を教えてください | drupal generate:controller | drupal generate:controller | drupal generate:controller | drupal generate:controller | 「コントローラ」と「コントローラーの違いを確認するため」 |
3 | moduleを作成する方法を教えてください | drupal generate module | drupal generate module | drupal generate module | drupal generate module | 「module」と「モジュール」の違いを確認するため |
4 | モジュール | drupal generate module | drupal generate module | drupal generate module | drupal generate module | 入力する文字数を省略したときの挙動を確認するため |
5 | How to create form | drupal generate form | drupal generate form | drupal generate form | drupal generate form | 英語で入力したときの挙動を確認するため |
6 | フォームって作るにはどうすればいいん? | drupal generate form | drupal generate form | drupal generate form | drupal generate form | 関西弁で入力したときの挙動を確認するため |
7 | formを作製する方法 | drupal generate form | drupal generate form | drupal generate form | drupal generate form | 「作成」を誤入力した時の挙動を確認するため |
8 | Formの作り方 | drupal generate form | drupal generate form | drupal generate form | drupal generate form | 入力する文字数を省略したときの挙動を確認するため |
モデルごとに違う出力になった項目
以下の入力ではモデルごとに違う出力となった。 期待する出力とは別の結果になったものを太字で示す。
No | 入力 | curieをベースにしたモデル | babbageをベースにしたモデル | adaをベースにしたモデル | 期待する出力 | notes |
---|---|---|---|---|---|---|
9 | cace削除 | drupal debug router | drupal cache rebuild | drupal cache rebuild | drupal cache rebuild | 「cache」と「cace」の違いを確認するため |
10 | moudleを作成する方法を教えてください | drupal generate form | drupal generate module | drupal generate:controller | drupal generate module | 「module」を誤入力した時の挙動を確認するため |
11 | モシュールを作成する方法 | drupal generate:soliloquy | drupal generate form | drupal generate module | drupal generate module | 「モジュール」を誤入力したときの挙動を確認するため |
12 | Fromを作成する方法を教えてください | drupal generate:add | drupal generate form | drupal generate form | drupal generate form | 「form」を誤入力した時の挙動を確認するため |
13 | ロールを作成する方法を教えてください | drupal generate form | drupal generate:controller | drupal generate form | drupal role:new | 学習データに存在しないコマンドが入力された時の挙動を確認するため |
14 | 「drupal generate form」は何をする? | drupal generate form | drupal generate form | drupal generate form | drupal generate formはフォームを作成するコマンドです。 | 学習データには存在しない |
まとめ
最初にcurieを使用してFineTuning実施前の精度を測定した。その結果すべての入力に対して期待する回答が得られなかった。
その後curie,babbage,adaに対して同じトレーニングデータを使用してFineTuningを実施し、FineTuningの効果の確認やモデルごとの違いを検証した。
その結果、どのモデルでも「Drupal」や「Console」などのキーワードを入力しなくてもDrupalConsoleのコマンドを出力することができ、FineTuningの効果を確認することができた。
次にcurie,babbage,adaをベースにしたモデルに対して様々な入力を行いモデルごとの違いを確認した。
その結果以下のような入力では期待する出力を得ることができた
- 入力の文を省略した状態で入力
- トレーニングデータにない言語や言葉で入力
- 英語、関西弁
一方、次のような入力を行ったときに期待する出力が得られなかった。
- 学習データにないコマンドを出力するような入力
- 学習データの入力と出力を逆にする
- 入力に誤字があるとき
入力に誤字があるときにモデルごとの違いが見られた。
curieは入力に誤字がある場合は期待する結果を出力することがなかった。
babbage,adaは入力に誤字があっても3/4は期待する出力となった。
今回は検証に使用した入力の数が少ないため時間があるときに入力を増やしてどうなるかを検証していきたい。
- 閲覧数 32
コメントを追加