Kaggleではじめる大規模言語モデル入門 を読んだ


TL;DR

  • 献本で頂いた Kaggleではじめる大規模言語モデル入門 を読んだ
  • Kaggleを軸に書いており、実際のコンペに基づく実践的知見が豊富でためになったが、本書だけでは理解が難しいところもある
  • 大規模言語モデルの技術的な要素を実践に活かしたい人にお勧め

著者の upura0 さんから献本で頂いた「Kaggleではじめる大規模言語モデル入門」をざっと読んだ(精読はできていない)ので感想を書いておく。

感想はある程度率直に書きますと伝えていて、それで了承も得た上で献本してもらっていますが、あくまで献本してもらった本のレビューであるというバイアスがあることを最初に述べておきます。

この本は、大きく基礎編と応用編に分かれている。 基礎編では、自然言語処理タスクや典型的手法、コンペの基礎、大規模言語モデルの性能改善や高速化などが書かれている。 応用編では、 8 つの自然言語処理のコンペにおける上位解法の解説に加えて、実際に上位を獲得した人が寄稿して自分たちの手法を解説している。 前半の基礎編においても Kaggle にどう繋がっているかという観点での記述が多く、本のタイトルにもあるように全体を通して Kaggle を念頭に置いているのが特徴的である。

自分は Kaggle をやらないが、自然言語処理タスクの性能改善を目指さねばならない時が来たら、本書で紹介されている内容を足がかりに進めていくのが間違いなく有用になると感じた。

面白かったところ

繰り返しになるが、本のタイトルにもある通り Kaggle と紐づけているというのは本書の特徴だし面白いところだった。

前半の基礎編においても、例えば表1.4には Kaggle で使用される機会が多いローカルモデルとそれらが応用編のどこで登場されるかが記載されており、様々な技術が使われる場として Kaggle と紐づけられているのは、書籍として独自性が高いのと同時に実践的でもある。 また、Kaggle への架け橋と題して、Kaggle との関連性を解説している項が散りばめられているのも象徴的である。

第 4 章の大規模言語モデルの性能改善において 4.4 節でモデルマージとかが解説されているのも、この本ならではというか Kaggle で使うことを念頭に置いてる意図を明確に感じて良いなと思った。

実践的という意味では、第 5 章の大規模言語モデルの軽量化・高速化・省メモリ化も、Kaggle のみならず自分で大規模言語モデルを扱う場合には参考になる人が多いだろう。

応用編は実際に上位を獲得した人が寄稿していて、どれも面白い。 ページ数の関係もあり十分に深く語られていないところもあるが、実際にそのタスクに深く取り組んだ人の実践的知見が詰め込まれているので、参考になる点が多い。 テキストとしてはさらっと書かれているが、この裏には数多くの試行錯誤があったのだろうなという含蓄を感じる。

個人的には、第 8 章の LLM Science Exam は、タスク概要や上位陣の採用している要素の整理、そして RAG の retrieval/reranking の工夫なども含んでいて、よく書けていて参考になった。

また、コンペの後の LLM の発展に伴って後日再検証をしているケースもあり、学びを深めようとする姿勢も素晴らしいなと感じた。

初歩的な話になるが、自分は Kaggle をやってないので、具体的にどういう内容のコンペをやってるんだというのが知れたのも学びになった。

イマイチだったところ

基礎編は多くの技術要素をギュッとまとめてくれているが、この説明だと理解が難しいなと思う部分が多かった。 数式は定義されていない要素が結構あったりして、自分は読めば分かるけどそういう人にとっては特に新しいことはないし、この本で理解しようとする人にとってはこの記述だと難しいだろうなと思う。

また、数式レベルで説明するところと概念的なレベルで説明するところが混在していて、どこまでは数式で理解させたくてどこからは概念だけ押さえさせようとしてるのかなどの指針が読んでいて分からなかった(本の前書きや対象読者などを読んでもよく分からなかった)。 Kaggle を全面に押し出している本なので、Kaggle で使うにはこのレベルで理解しておくべし、のような基準で統一されていると読者としては嬉しいのではないかと思う。

論文の図を引っ張ってきているが十分な説明がないまま使っているものが多いのは読者としては辛い。 例えば、5.3.1 項の FlashAttention では本文でブロック単位分割の話に少し触れて概念図として論文の図を紹介しているが、これで理解できるのは元々理解してる人だけな気がする。

多くの人が寄稿しているのでやむを得ない部分ではあるが、人によって書き方のスタイル(文章の構成やコードの説明に重点を置く、など)が異なっているので、本としての統一感にやや欠けるという印象も受けた。 ただ、これは別にそれぞれの章が面白ければいいという話もあるだろうし、自分で本を書いたが故に気になってしまうというだけの話かもしれない。

まとめ

久しぶりに技術書のレビューをウェブ上に書いた。 献本された本なのでレビューにバイアスがかかってしまうことを恐れた結果、ちょっと殊更にイマイチだったところを書いてしまったかも知れない。

全体的に Kaggle を軸に実践的な知見が多くまとめられているので、大規模言語モデルの技術的な要素を実践に活かしたいという人には間違いなくお勧めできる本である。 書かれている技術的要素の理解が難しい場合は、別の情報源で学ぶとよいだろう。