ChatGPTのようなサービスは触ってみたものの、自社の資料や顧客の情報を外部のサーバに送るのは気が引ける。かといって、ローカルでLLMを動かして自分のデータを覚えさせる方法は、断片的な記事を読んでもつながらない。このままだと、デモの段階で止まって、業務で使えるチャットボットにたどり着けない。『LLMのファインチューニングとRAG: チャットボット開発による実践』は、公開されているLLMを使って、ファインチューニングとRAGの両方をプログラムを書きながら学ぶ一冊だ。
まず「そもそもLLMはどう使うのか」から確認できる
第1章は、言語モデルとは何か、チャットボットとの関係、日本語に強いLLMにどんなものがあるか、という土台の話から入る。いきなりコードが出てくるわけではないので、LLMを使い始めたばかりでも、その後の章で何をしているのかが追いやすい。公開モデルを使う理由も、ここで腹落ちする。
追加学習の流れを、Trainerからデータの用意まで順に追える
第2章では、Trainerの使い方、訓練データをDatasetにする方法、collator、保存したモデルからの文生成、Early Stoppingの導入までを扱う。第3章はInstruction Tuningで、指示に答えるモデルにするための学習データの作り方と、その実行がテーマだ。「ファインチューニングをやってみたいが、どんなデータをどう渡せばいいのか」という最初の壁が、手順として見えてくる。
手元のマシンで回すための工夫が、章としてまとまっている
第4章は、LoRAとPEFT、QLoRA、Prompt Tuningを取り上げる。大きなモデルを普通のマシンで調整するには、学習するパラメータをどう減らすかが肝になる。量子化を使った方法も含めて、考え方とコードがセットで確認できる。
RAGは、データベース作りから性能の見直しまでを通せる
第5章では、FAISSでのデータベース構築、RetrievalQAを使ったRAGの組み立て、OpenAIのLLMと公開LLMでの違い、パーツの差し替え、HyDEによる検索の工夫、性能を上げるために考えたい要素まで進む。そのうえで第6章では、Chainlitを使って、チャットボットを画面付きで動かすところまでたどり着く。
読んでおきたい理由
- 自社データを外に出さない前提で、チャットボットを作る道筋が一通りつかめる
- ファインチューニングのために用意するデータの形と、Trainerまわりの流れを、自分で再現できるようになる
- LoRAやQLoRAがなぜ軽くなるのかを知っておくと、手元のマシンで試す範囲を見積もれる
- RAGの検索部分を差し替えたり、HyDEを試したりして、回答の変化を自分の目で比べられる
- 解説されたプログラムをウェブサイトで配布しているので、写経の手間を減らして実験に時間を使える
まとめ
PythonでHugging Faceなどのライブラリを動かした経験があると、読み進めやすい構成だ。まずは第5章のRAGから、手元のドキュメントを1つ入れて動かしてみてほしい。動いたら第2章以降に戻ってファインチューニングを試すと、両者の違いが実感できる。