新納 浩幸
(5)最新刊
LLMのファインチューニングとRAG ーチャットボット開発による実践ー
(2024/05/24)※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字だけを拡大することや、文字列のハイライト、検索、辞書の参照、引用などの機能が使用できません。 ※この電子書籍は紙版書籍のページデザインで制作した固定レイアウトです。 ローカルLLMでファインチューニングとRAGを学ぼう! 本書は、公開されている大規模言語モデル(LLM: Large Language Model)を使ってローカル環境に独自のチャットボットを構築することを目標に、LLM のファインチューニングと RAG (Retrieval Augmented Generation) の基礎と、そのプログラミングについて学ぶものです。 ChatGPTの台頭により、高性能なチャットボットへの期待が急速に高まっています。しかし、そのチャットボットの核となるLLMは基本的に言語モデルであるために、幻覚(誤った情報)を生成してしまいます。とくに、LLMはローカルな情報や最新の情報は持っていないため、それらに関する質問に対しては正しい回答が期待できません。また、ChatGPTのようにLLMが外部のサーバにある場合、自社データや顧客データを入力することには抵抗があると思います。 本書では、そういった課題を解決するために、公開LLMをファインチューニングしたり、公開LLMを使ったRAGを構築したりすることで、よりニーズに沿ったチャットボットを構築します。こういった調整を行って構築したチャットボットは、特定の分野について深く正確に回答してくれるようになります。 ・LLMについての基本事項を学べます。 ・LLMのファインチューニングの方法とRAGの構築方法を学べます。 ・解説したプログラムをウェブサイトで配布します。 はじめに/目次 第1章 大規模言語モデル 1.1 言語モデルとは 1.2 言語モデルとチャットボット 1.3 日本語特化のLLM 1.4 LLMの利用 1.5 この章で使用した主なプログラム 第2章 ファインチューニング:言語モデルの追加学習 2.1 基本的な学習の処理 2.2 Trainerの利用 2.3 訓練データをDatasetへ 2.4 collator 2.5 保存されたモデルからの文生成 2.6 Early Stoppingの導入 2.7 この章で使用した主なプログラム 第3章 Instruction Tuning:指示に基づくファインチューニング 3.1 Instruction Tuningとは 3.2 Instruction Tuningの学習データ 3.3 Instruction Tuningの学習データの作成 3.4 Instruction Tuningの実行 3.5 Instruction Tuningモデルによる文生成 3.6 この章で使用した主なプログラム 第4章 大規模言語モデルのファインチューニング 4.1 LoRA:低ランク行列によるファインチューニング 4.2 PEFT:効率的にファインチューニングするためのライブラリ 4.3 LoRAモデルによる文生成 4.4 QLoRA:LoRAに量子化を利用する 1 量子化とは 2 bitsandbytesの利用 4.5 Prompt Tuning:プロンプトの効率的なチューニング法 4.6 この章で使用した主なプログラム 第5章 RAG:検索を併用した文生成 5.1 RAGとは 5.2 FAISSによるデータベースの構築 1 パッセージの作成 2 パッセージのベクトル化 3 ベクトルデータベースの構築 5.3 RetrievalQAとOpenAIのLLMによるRAGの構築 5.4 RetrievalQAと公開LLMによるRAGの構築 1 プロンプトの作成 2 HuggingFacePipelineを利用したLLMの設定 3 プロンプトの変更 5.5 RAGの各種パーツの変更 1 WikipediaRetrieverクラスの利用 2 Wikipediaからの自前データベースの作成 3 Document LoaderとDocument transformersによるデータベースの作成 4 キーワードデータベースの検索 5 量子化モデルの利用 5.6 HyDE:仮想的文書作成による検索法 5.7 RAGの性能向上のために検討するべき要素 5.8 この章で使用した主なプログラム 第6章 ChainlitによるGUIのチャットボット 6.1 インストール 6.2 Chainlitの基本プログラム 6.3 OpenAIのLLMを使ったチャットボットのGUI 6.4 公開LLMを使ったチャットボットのGUI 6.5 RAGを利用したチャットボットのGUI 6.6 Chainlitのサーバでの稼働 6.7 この章で使用した主なプログラム あとがき/索引/奥付