Chip Huyen 著、加賀谷諒、菅野憲也訳『AIエンジニアリング』を読みました。
本書では、いわゆる生成 AI (Artificial Intelligence) 自体および、生成 AI を組み込んだ IT システム開発全般について解説しています。AI 分野は変化が激しいですが、本書は全体的に普遍的で陳腐化しにくそうな内容で、具体的な研究論文などの引用も充実している点が良かったです。
なお、厳密には違いますが、本記事では Large Language Model (LLM)、Large Multimodal Model (LMM)、基盤モデル、生成 AI を大まかに同じ概念として扱います。
1章 基盤モデルを用いた AI アプリケーション開発入門
AI エンジニアリングの概要について。
2章 基盤モデルを理解する
基盤モデル(LLM)の基本的な仕組みについて。
現在の基盤モデル・生成 AI は基本的には LLM のことを指しています。LLM の代表的なアーキテクチャが Transformer であり、その核となる技術にアテンション機構(attention mechanism)があります。
素人目線では現在の LLM は、従来のディープラーニングから明らかに非連続なブレイクスルーやパラダイムシフトによって生まれたというより、研究開発を通して順当に進化を重ねていった結果のように感じられます。
もちろん詳細は全然理解していませんが、基本概念は自分のような素人でもある程度理解できるような仕組みで LLM は作られていると感じます。
抽象的な意味において、実際の推論時に AI がどのように思考(?)しているのかを理解するのは困難です。しかし、従来のディープラーニングの延長であり、ある程度理解できるような仕組みで作られた AI があれほどまでに賢く振る舞うことは非常に不思議です。
3章 評価方法論
AI モデルの性能などを評価する方法や技術について。
生成 AI の出力は、分類タスクの結果などではなく自由形式のテキストでオープンエンドです。よって、生成 AI の出力には明確な正解が存在せず評価が難しいという課題があります。本章では、このような課題に対処する方法や技術が解説されています。
4章 AI システムの評価
実際の IT システムに AI モデルを組み込む際のモデル選定方法や、AI システムの評価・改善を繰り返す評価パイプラインの設計などについて。
現在、あらゆる分野で AI を利用するようになっていますが、AI の生成物には良いものと悪いものがあります。よって AI を使う場合は、AI による生成物の良し悪しを適切な観点で評価することが極めて重要です。
AI の出力に対する評価基準としては、事実整合性、安全性、指示追従能力などがあり、これらはベンチマーク化されています。モデル選定時には用途に応じて必要なベンチマークを決め、これらのベンチマーク性能の高いモデルを選択することになります。また、モデルごとに推論・利用コスト、レイテンシー、ライセンスなども異なるため、これらを総合的に判断する必要があります。
AI モデルがますます賢くなってきている現状、その賢さや出力品質を評価することはより重要かつ難しくなっているように思います。
5章 プロンプトエンジニアリング
AI モデルへの入力テキストであるプロンプトについて。
プロンプトエンジニアリングというと、AI に入力するテキストを工夫することでモデルの出力品質を改善する小細工的な手法が思い浮かびます。
もちろんこのような手法は重要ですが、モデルの仕様変更や進化などにより陳腐化しやすく、ここに力を入れすぎるのは筋が悪そうです。
本章ではこのようなテクニックへの言及もありますが、プロンプト自体のバージョン管理やプロンプトインジェクションなどセキュリティの話が勉強になりました。
6章 RAG とエージェント
Retrieval-Augmented Generation (RAG) と AI エージェントについて。
RAG は、AI システムに Web や DB など外部リソースへの検索機能を付与し、コンテキストを拡張する技術です。
モデル内部では情報をベクトル化し、行列演算を行うため、RAG を有効に機能させる上ではベクトルデータに関する技術が特に重要そうです。
最近流行りの AI エージェントは、特定のリソースに対する読み取り、書き込み、実行などのアクセス権限を AI アプリケーションに付与することで、より自律的にコンテキストを拡張し、ファイル編集や設定変更などを含むより高度なタスクをこなせるようになるというものです。エージェントは、RAG をより一般化したようなものと捉えられるかもしれません。
基本的にモデル単体ではエージェントとして機能せず、モデルの周りにハーネスと呼ばれるソフトウェアを配置することでエージェントとして機能するようになります。そしてハーネスはコンテキスト管理、アクセス権管理、外部リソースアクセスなどの機能を担います。よって、AI エージェントではモデル単体だけでなく、ハーネスの機能や性能も全体の性能や利便性に大きく影響しそうです。
本書では触れられていませんが、Model Context Protocol (MCP) は本章の内容に関連しそうです。
7章 ファインチューニング
事前学習済みのモデルを調整するファインチューニング(事後学習の一種)について。
雑に言えば、大量のあらゆる知識を詰め込むのが事前学習で、どの知識をどのように使い、人間が扱いやすい形でどう表現するかを調整するのがファインチューニングと言えそうです。
事前学習にはとんでもない量の学習データセットと計算資源(GPU や電力など)が必要です。よって、ほとんどの人や企業にとって、モデルを学習・カスタマイズする方法としてはファインチューニングが主要な選択肢になります。
まずはプロンプトエンジニアリングを試してみて、それでもモデルの出力が要件を満たさない場合、ファインチューニングが選択肢になるイメージです。
8章 データセットエンジニアリング
モデルの学習データセットをどのように選定し、用意するかについて。
モデルの学習データセットとしては、Web 上の記事や書籍など人間が作成したもの以外に AI が生成したテキストなども使えます。後者は合成データと呼ばれ、教師モデルの出力を学習データとして生徒モデルを作る蒸留でも重要になります。
9章 推論の最適化
モデル推論時のスループットとレイテンシーを改善するために、推論の仕組みをどのように最適化するかについて。
現在主流の LLM は自己回帰言語モデルであり、推論時にプレフィルとデコードという 2 段階があります。プレフィルはチップの演算性能がボトルネックになるためコンピュートバウンド領域で、デコードはメモリから演算ユニットへのデータ転送速度がボトルネックになるためメモリバウンド領域です。
また、自己回帰言語モデルの推論では、モデルが出力したトークンを次の出力トークンを生成するための入力として再帰的に利用します。よって、出力トークンを生成していくデコードは逐次処理にならざるを得ず、出力が長くなるほどレイテンシーが増加するという原理的な弱点があります。
ただし、出力トークン生成を並列化する工夫などこの弱点を部分的に解消する手法も研究されているようで興味深いです。
10章 AI エンジニアリングのアーキテクチャとユーザーフィードバック
AI システムのアーキテクチャ設計と、ユーザーからのフィードバックを基に AI システムをどのように改善していくかについて。







