質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

意見交換

クローズ

5回答

2062閲覧

大規模言語モデル ファインチューニングの方法

pochiko

総合スコア4

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

0グッド

1クリップ

投稿2023/05/30 07:25

0

1

大規模言語モデルのファインチューニングについて

大規模言語モデルに製品マニュアルの内容をファインチューニングして、基礎知識を与え、
その後、質問応答できるようなシステムを作りたい。

背景、状況

私の会社では自社製品を作っており、その製品Xに対して、日本語マニュアルがあります。
さらに、客先からの質問に回答した内容がデータとして蓄積されています。

ここで、rinnna, Bert GPTなどのモデルに1.日本語マニュアルをファインチューニングして、製品Xに対する基礎知識を学習させ、
さらに2.QAタスクができるようにQA集をファインチューニングさせることは可能でしょうか?
1.の場合、どんなモデルを用いたらよいでしょうか?
例えば、rinnaであれば、汎用モデルと対話モデルがありますが、汎用モデルにチューニングしたらよいですか?

※ChatGPTのGUIではなく、固有の自社のGUIでシステムを作りたいため、
GPTのプラグインではなくファインチューニングをしたいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答5

#1

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/05/30 12:02

編集2023/05/31 21:45

これ意見交換だとコメントができないんですね。
古めですがGPT2の段階でTesla V4のファインチューニングで一カ月ぶん回した、と記事にあります。

あればコメント欄で聞きたかったこと(環境はありますか?)

どういうモデルを使うか、も大事ですが、それが乗っかるGPU(というか専用のサーバーですよね…)を持っているか、一カ月ぶん回せるか、電気代は大丈夫か、とかそういう話になってくるような気がします。

この辺のことがポッと頭をよぎる人であれば投稿する前にもう少しハードの制約だとか学習データのボリューム感だとかもセットで頭をよぎると思うのです。

この辺のことは検討に入っていますか?モデルが巨大なので(私は試したことすらないですが)普通のGPUではまともに学習できないだろうと思います。普通のGPUではミニバッチを極小にしたり、ネットワーク自体をだいぶ浅くしないと動作すらままならないと察します。そういうスペックだと学習どころか推論もままならない、というのがニューラルネットワークの世界です。

このあたりの事情は解決積みの上での質問ということでよろしいでしょうか?
もし「DGXが足元に転がってらぁ!」というのでしたら余計なお世話ですが…。

代替策

無理に深層学習を用いなくても、質問中に含まれる単語からどういう意図の質問かを解析して、それを元にQ&Aに促すようなシステムの方が現実的かと思います。チャットでしたら音声認識のような不確かさは(デジタル入力な分)ずいぶん減ると思いますし、そういったシステムであればMecabやベイズな方法であれこれすれば普通のノートPCでもシステム構築できるくらいのモデルができそうです。

余計なお世話かもしれませんが、深層学習を使った場合にいくらハードにお金がかかって、データ集めに時間がかかって、学習に時間がかかって、維持に時間がかかって、それを使うユーザーが年間何人いるか考えた方が良いように思います。私があなたであれば、もっとシンプルな方法でやり過ごす方法を検討します。

追記

この質問の続きだと明記した方が良いように思います

追記2

タイムリーな記事発見。「めんどくさいなぁ、自社のデータを検索してAIに回答させるシステムを社外に投げよう」をした場合参千九百蔓延也~だそうです。

今回の件に関しては「AIに自然言語で回答させる」のか「統計的に必要そうな資料を割り出し、その資料を投げる(資料の中を見るのは自分でやってくれ)」のかでコストがだいぶ違ってきますね。UXはだいぶ近そうですが、技術的には天と地の差があり、実現にかかるコストも数百から数千倍は違うだろうと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

PondVillege

総合スコア1579

投稿2023/05/31 18:09

あらかじめ断っておくと,LLMに学習させたからといって,学習させた内容が出力されることを期待しない方が良いでしょう.データとして与えられる数がそもそも少なかった情報を吐き出させると,誤りがあることがよく知られています.

対して「じゃあ何度も学習させればいいじゃん」は#1 のコストの話に戻ってしまいますし,
製品マニュアルの性質上,製品型番の仕様をLLMに問い合わせたところで型番が似ている別の製品の情報が吐き出されることが予測されます(Top KとかTop Pが大きいとよりそうなりがち).内容がほとんど同じ場合,同一のものと解釈されることを防ぎようが無いからです.

そこで前回,プロンプトエンジニアリングテクニックの1つであるReActによる解決を提案しました.これであればone-shotではあるものの,渡された情報を正しく返答に使うことが期待できます.ChatGPTの盛り上がりの要因となったzero-shot promptingも魅力的ですが,本件のような単語の曖昧さが強い状態で精度を要求される場面ではfew-shotにする必要性を訴えたいと思います.

さて,どうしても

  1. 日本語マニュアルをファインチューニングして、製品Xに対する基礎知識を学習させ、
  2. QAタスクができるようにQA集をファインチューニングさせること

としたいということですが,2に対して不足があります.
QAタスクに特化させるためにInstructGPTと同様,RLHF(Reinforcement Learning from Human Feedback)をどのように執り行うかの計画が必要です.

たとえrinnaの対話モデルとはいえRLHFを実行するにあたってrinna/japanese-gpt-neox-3.6b-instruction-sftに使われたデータは公開されておらず,参考になる情報がまだ少なすぎます.

ファインチューニングを前提としている場合,私なら次のような検討を行います.

  1. rinna/japanese-gpt-neox-3.6b-instruction-sftに対して保持しているQA集を学習させ,評価する.
  2. 意図した出力を出してくれない,もしくは有害な結果を出すようであればrinna/japanese-gpt-neox-3.6b-instruction-sftに対してQA集を合わせてRLHFによるチューニングを行い,評価する.
  3. それでもだめなら汎用モデルをマニュアルでチューニング,その後rinnaがRLHF等のファインチューニングに用いたデータセットと同等のデータセット+QA集でチューニングし,評価する.

等々,レベルを徐々に変える形で検討を進めます.rinnaが非公開にしているファインチューニングに使われたデータセットを作るところから始めましょう.

ちなみにCALM3Bのモデルを使った感想ですがrepetitionが多かったりzero-shotで示す内容が正しくないなど,実務に耐えうるかあやしいといった具合でした.

※ChatGPTのGUIではなく、固有の自社のGUIでシステムを作りたいため、GPTのプラグインではなくファインチューニングをしたいと思っています。

まぁこればっかりは仕方ありませんが,プラグインを扱えるAPIが出るのを待つ方が早い気がします.
繰り返しになってしまいますが,ファインチューニングでなくてもプロンプトエンジニアリングで実現可能なので対話モデルをどうにかしてReActの形態をとるようにした方が良さそうです.

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

pochiko

総合スコア4

投稿2023/06/01 13:11

ご回答ありがとうございます。
勉強不足で申し訳ありませんでしたが、
私の今の状況では非現実的だということが理解できました。
しかし、今、小さなモデルでも動かしてみてその性能を確かめてみると
おっしゃる通り思っていたイメージと違うな・・という印象です。

やろうと思っている、その方向性はあっているのか?
そのやり方では技術的にできるのか?
できたとしてもコストはいかほどか?
などいろいろご教授いただきましてありがとうございます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/06/01 16:28

やろうと思っている、その方向性はあっているのか?
そのやり方では技術的にできるのか?

よくあることと思いますが、

  • やろうと思っていること(自分の希望)
  • やらないといけないこと(会社の希望)
  • やってほしいこと(顧客の希望)

は、普通それぞれが微妙にずれています。

そして、大体の場合において、「やりたいこと」は、

  • 顧客目線から離れていて
  • (使い古された安定感のないという意味で)最新の手法だったり
  • コスト度外視の方法だったり
  • 自分の技量に見合わない方法だったり
  • 学術的には面白いけれども産業上どうよ

という手段になりがちです。

恐らくですが、ここに投稿する前の段階で潜在的な課題として、

  • サポートセンターの人件費がー
  • サポートセンターに電話をするまでもなく(多少の融通の利く検索システムがあれば)解決できるのに

というような課題がゴロゴロしていたのではないでしょうか。そして、「これなら学習させれば万能なAIに学習させればなんとかなる」という流れがあったのだろうと思います。

この私の仮説の下の話ではありますが、この課題の解決に必要なものは「万能なAI(どこにもない、できない、そんな技量のある人はトップランナーしかありえない、仮に販売されていても法外に高い、サポートセンターのパートさんを何人雇うんだ?という額になる)」ではなく「チャットで会話するまで気が利かなくてもいいし、そこそこの結果が得られれば満足」な回答ができるシステムだろうと私は考えました。

勝手な仮説に対する架空の顧客に対する想像ですが、顧客が求めているのは、

  • サポートセンターに電話をかけてまで聞きたくない、だから自分で手軽に調べたい
  • WEB検索のように情報を引き出せればそれでいい
  • 1,2分くらい調べるのに時間を割いてもいいし、パンフレットみたいなものか表みたいなもののPDFがダウンロードできればそれでいい

のようなものが大半ではないでしょうか。

既に気付いておられると思いますが、誰もサーバーにあるGPUと製品についての会話をしたいわけではないんですね。そして、そのサーバーにあるGPUと会話を楽しむのには莫大なコストと工数、設備投資級のハードウエアが必要になります。

であれば、「チャットの風を装って、『調べたいものは1○○、2○○、3○○』というような分岐構造を持った検索システムでも十分で、どれでもなかったらその時だけサポートセンターに誘導orメールへ誘導」でも事足りるように思った次第です。これには#1に書いた日本語の文法解析と単語の組み合わせから何についての会話か文脈を理解させる処理があれば十分機能する、という回答でした。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

PondVillege

総合スコア1579

投稿2023/06/07 05:35

参考までに

BingAIくんはMicrosoftのマニュアルを隅から隅まで読んでいるっぽくて、MS製品の使い方を訊いたときの精度がめちゃくちゃ高い。これだけで、俺の中でMS製品の魅力が1.5倍くらいになっている。

https://twitter.com/rootport/status/1666129110962429952

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問